2023-01-24 15:29:31 +01:00
/ * Copyright ( c ) Cloud Software Group , Inc .
2013-06-24 13:41:48 +02:00
*
* Redistribution and use in source and binary forms ,
* with or without modification , are permitted provided
* that the following conditions are met :
*
* * Redistributions of source code must retain the above
* copyright notice , this list of conditions and the
* following disclaimer .
* * Redistributions in binary form must reproduce the above
* copyright notice , this list of conditions and the
* following disclaimer in the documentation and / or other
* materials provided with the distribution .
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES ,
* INCLUDING , BUT NOT LIMITED TO , THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED . IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT , INDIRECT , INCIDENTAL ,
* SPECIAL , EXEMPLARY , OR CONSEQUENTIAL DAMAGES ( INCLUDING ,
* BUT NOT LIMITED TO , PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES ; LOSS OF USE , DATA , OR PROFITS ; OR BUSINESS
* INTERRUPTION ) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY ,
* WHETHER IN CONTRACT , STRICT LIABILITY , OR TORT ( INCLUDING
* NEGLIGENCE OR OTHERWISE ) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE , EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE .
* /
2013-10-08 11:17:57 +02:00
using System.Linq ;
2013-06-24 13:41:48 +02:00
using NUnit.Framework ;
2013-08-28 15:44:46 +02:00
using XenAdmin.Controls.MainWindowControls ;
2013-06-24 13:41:48 +02:00
using XenAPI ;
using System.Collections.Generic ;
using XenAdmin ;
using XenAdmin.Controls ;
2018-10-19 11:24:14 +02:00
using XenAdmin.Core ;
2013-06-24 13:41:48 +02:00
using XenAdmin.Model ;
2015-11-06 10:36:19 +01:00
using XenAdmin.XenSearch ;
2013-06-24 13:41:48 +02:00
namespace XenAdminTests.TabsAndMenus
{
[TestFixture, Category(TestCategories.UICategoryB)]
public class TabsAndMenusBoston : TabsAndMenus
{
public TabsAndMenusBoston ( )
: base ( "boston-db.xml" )
{
}
[TestFixtureSetUp]
public void TestFixtureSetUp ( )
{
DisableAllPlugins ( ) ;
}
2013-09-02 18:00:47 +02:00
private string [ ] XenCenterTabs = new [ ] { "Home" , "Search" } ;
2013-10-08 11:17:57 +02:00
private string [ ] PoolTabs = new [ ] { "General" , "Memory" , "Storage" , "Networking" , "HA" , "WLB" , "Users" , "Search" } ;
private string [ ] HostTabs = new [ ] { "General" , "Memory" , "Storage" , "Networking" , "NICs" , "Console" , "Performance" , "Users" , "Search" } ;
private string [ ] VMTabs = new [ ] { "General" , "Memory" , "Storage" , "Networking" , "Console" , "Performance" , "Snapshots" , "Search" } ;
private string [ ] DefaultTemplateTabs = new [ ] { "General" , "Memory" , "Networking" , "Search" } ;
private string [ ] OtherInstallMediaTabs = new [ ] { "General" , "Memory" , "Storage" , "Networking" , "Search" } ;
private string [ ] UserTemplateTabs = new [ ] { "General" , "Memory" , "Storage" , "Networking" , "Search" } ;
private string [ ] SRTabs = new [ ] { "General" , "Storage" , "Search" } ;
private string [ ] SnapshotTabs = new [ ] { "General" , "Memory" , "Networking" , "Search" } ;
2016-10-18 09:53:23 +02:00
private string [ ] VDITabs = new [ ] { "General" , "Search" } ;
2013-10-08 11:17:57 +02:00
private string [ ] NetworkTabs = new [ ] { "Search" } ;
2013-09-02 18:00:47 +02:00
private string [ ] GroupingTagTabs = new [ ] { "Search" } ;
private string [ ] FolderTabs = new [ ] { "Search" } ;
2013-06-24 13:41:48 +02:00
[Test]
public void Tabs_XenCenterNode ( )
{
VerifyTabs ( null , XenCenterTabs ) ;
}
[Test]
public void Tabs_Pool ( )
{
VerifyTabs ( GetAnyPool ( ) , PoolTabs ) ;
}
[Test]
public void Tabs_Host ( )
{
foreach ( Host host in GetAllXenObjects < Host > ( ) )
{
VerifyTabs ( host , HostTabs ) ;
}
}
[Test]
public void Tabs_VM ( )
{
foreach ( VM vm in GetAllXenObjects < VM > ( v = > ! v . is_a_template & & ! v . is_control_domain ) )
{
VerifyTabs ( vm , VMTabs ) ;
}
}
[Test]
public void Tabs_DefaultTemplate ( )
{
EnsureChecked ( MainWindowWrapper . ViewMenuItems . TemplatesToolStripMenuItem ) ;
VerifyTabs ( GetAnyDefaultTemplate ( ) , DefaultTemplateTabs ) ;
}
[Test]
public void Tabs_OtherInstallMedia ( )
{
EnsureChecked ( MainWindowWrapper . ViewMenuItems . TemplatesToolStripMenuItem ) ;
VerifyTabs ( GetAnyDefaultTemplate ( v = > v . name_label = = "Other install media" ) , OtherInstallMediaTabs ) ;
}
[Test]
public void Tabs_UserTemplate ( )
{
EnsureChecked ( MainWindowWrapper . ViewMenuItems . TemplatesToolStripMenuItem ) ;
2017-09-03 04:33:29 +02:00
foreach ( VM vm in GetAllXenObjects < VM > ( v = > ! v . IsHidden ( ) & & v . is_a_template & & ! v . DefaultTemplate ( ) & & ! v . is_a_snapshot ) )
2013-06-24 13:41:48 +02:00
{
VerifyTabs ( vm , UserTemplateTabs ) ;
}
}
[Test]
public void Tabs_SR ( )
{
EnsureChecked ( MainWindowWrapper . ViewMenuItems . LocalStorageToolStripMenuItem ) ;
2017-09-03 04:33:29 +02:00
foreach ( SR sr in GetAllXenObjects < SR > ( s = > ! s . IsToolsSR ( ) ) )
2013-06-24 13:41:48 +02:00
{
VerifyTabs ( sr , SRTabs ) ;
}
}
[Test]
public void Tabs_Snapshot ( )
{
2013-08-28 15:44:46 +02:00
PutInNavigationMode ( NavigationPane . NavigationMode . Objects ) ;
2013-06-24 13:41:48 +02:00
try
{
foreach ( VM snapshot in GetAllXenObjects < VM > ( v = > v . is_a_snapshot ) )
{
VerifyTabs ( snapshot , SnapshotTabs ) ;
}
}
finally
{
2013-08-28 15:44:46 +02:00
PutInNavigationMode ( NavigationPane . NavigationMode . Infrastructure ) ;
2013-06-24 13:41:48 +02:00
}
}
[Test]
public void Tabs_VDI ( )
{
2013-08-28 15:44:46 +02:00
PutInNavigationMode ( NavigationPane . NavigationMode . Objects ) ;
2013-06-24 13:41:48 +02:00
try
{
2017-09-03 04:33:29 +02:00
VerifyTabs ( GetAnyVDI ( v = > v . name_label ! = "base copy" & & ! v . IsHidden ( ) ) , VDITabs ) ;
2013-06-24 13:41:48 +02:00
}
finally
{
2013-08-28 15:44:46 +02:00
PutInNavigationMode ( NavigationPane . NavigationMode . Infrastructure ) ;
2013-06-24 13:41:48 +02:00
}
}
[Test]
public void Tabs_Network ( )
{
2013-08-28 15:44:46 +02:00
PutInNavigationMode ( NavigationPane . NavigationMode . Objects ) ;
2013-06-24 13:41:48 +02:00
try
{
foreach ( XenAPI . Network network in GetAllXenObjects < XenAPI . Network > ( n = > n . name_label ! = "Host internal management network" ) )
{
VerifyTabs ( network , NetworkTabs ) ;
}
}
finally
{
2013-08-28 15:44:46 +02:00
PutInNavigationMode ( NavigationPane . NavigationMode . Infrastructure ) ;
2013-06-24 13:41:48 +02:00
}
}
[Test]
public void Tabs_GroupingTag ( )
{
2013-08-28 15:44:46 +02:00
PutInNavigationMode ( NavigationPane . NavigationMode . Objects ) ;
2013-06-24 13:41:48 +02:00
try
{
VirtualTreeNode n = GetAllTreeNodes ( ) . Find ( v = > v . Tag is GroupingTag ) ;
VerifyTabs ( ( GroupingTag ) n . Tag , GroupingTagTabs ) ;
}
finally
{
2013-08-28 15:44:46 +02:00
PutInNavigationMode ( NavigationPane . NavigationMode . Infrastructure ) ;
2013-06-24 13:41:48 +02:00
}
}
public void Tabs_Folder ( )
{
2013-08-28 15:44:46 +02:00
PutInNavigationMode ( NavigationPane . NavigationMode . Objects ) ;
2013-06-24 13:41:48 +02:00
try
{
2013-10-08 11:17:57 +02:00
var folders = GetAllXenObjects < Folder > ( ) . Where ( f = > ! ( string . IsNullOrEmpty ( f . ToString ( ) ) ) ) ;
foreach ( Folder folder in folders )
2013-06-24 13:41:48 +02:00
VerifyTabs ( folder , FolderTabs ) ;
}
finally
{
2013-08-28 15:44:46 +02:00
PutInNavigationMode ( NavigationPane . NavigationMode . Infrastructure ) ;
2013-06-24 13:41:48 +02:00
}
}
[Test]
public void ContextMenu_XenCenterNode_AllClosed ( )
{
2015-11-06 10:36:19 +01:00
VirtualTreeNode rootNode = FindInTree ( null ) ;
MW ( rootNode . Collapse ) ;
VerifyContextMenu ( null , new ExpectedMenuItem [ ] {
new ExpectedTextMenuItem ( "&Add..." , true ) ,
new ExpectedTextMenuItem ( "&New Pool..." , true ) ,
new ExpectedTextMenuItem ( "C&onnect All" , false ) ,
new ExpectedTextMenuItem ( "Di&sconnect All" , true ) ,
new ExpectedTextMenuItem ( "E&xpand All" , true )
} ) ;
2013-06-24 13:41:48 +02:00
}
[Test]
public void ContextMenu_XenCenterNode_RootOpen ( )
{
2015-11-06 10:36:19 +01:00
VirtualTreeNode rootNode = FindInTree ( null ) ;
MW ( delegate
{
rootNode . Collapse ( ) ;
rootNode . Expand ( ) ;
} ) ;
VerifyContextMenu ( null , new ExpectedMenuItem [ ] {
new ExpectedTextMenuItem ( "&Add..." , true ) ,
new ExpectedTextMenuItem ( "&New Pool..." , true ) ,
new ExpectedTextMenuItem ( "C&onnect All" , false ) ,
new ExpectedTextMenuItem ( "Di&sconnect All" , true ) ,
new ExpectedTextMenuItem ( "E&xpand All" , true )
} ) ;
2013-06-24 13:41:48 +02:00
}
[Test]
public void ContextMenu_XenCenterNode_PoolOpen ( )
{
2015-11-06 10:36:19 +01:00
VirtualTreeNode rootNode = FindInTree ( null ) ;
MW ( delegate
{
rootNode . Collapse ( ) ;
rootNode . Expand ( ) ;
} ) ;
VirtualTreeNode poolNode = FindInTree ( GetAnyPool ( ) ) ;
MW ( delegate
{
poolNode . Expand ( ) ;
} ) ;
VerifyContextMenu ( null , new ExpectedMenuItem [ ] {
new ExpectedTextMenuItem ( "&Add..." , true ) ,
new ExpectedTextMenuItem ( "&New Pool..." , true ) ,
new ExpectedTextMenuItem ( "C&onnect All" , false ) ,
new ExpectedTextMenuItem ( "Di&sconnect All" , true ) ,
new ExpectedTextMenuItem ( "E&xpand All" , true ) ,
new ExpectedTextMenuItem ( "&Collapse Children" , true )
} ) ;
2013-06-24 13:41:48 +02:00
}
[Test]
public void ContextMenu_XenCenterNode_AllOpen ( )
{
2015-11-06 10:36:19 +01:00
VirtualTreeNode rootNode = FindInTree ( null ) ;
MW ( delegate
{
rootNode . ExpandAll ( ) ;
} ) ;
VerifyContextMenu ( null , new ExpectedMenuItem [ ] {
new ExpectedTextMenuItem ( "&Add..." , true ) ,
new ExpectedTextMenuItem ( "&New Pool..." , true ) ,
new ExpectedTextMenuItem ( "C&onnect All" , false ) ,
new ExpectedTextMenuItem ( "Di&sconnect All" , true ) ,
new ExpectedTextMenuItem ( "&Collapse Children" , true )
} ) ;
2013-06-24 13:41:48 +02:00
}
[Test]
public void ContextMenu_Pool ( )
{
2015-11-06 10:36:19 +01:00
var pool = GetAnyPool ( ) ;
var expected = new List < ExpectedMenuItem >
{
new ExpectedTextMenuItem ( "New V&M..." , true ) ,
new ExpectedTextMenuItem ( "&New SR..." , true ) ,
new ExpectedTextMenuItem ( "&Import..." , true ) ,
new ExpectedSeparator ( ) ,
new ExpectedTextMenuItem ( "&High Availability..." , true )
} ;
expected . Add ( new ExpectedTextMenuItem ( "Manage &vApps..." , true ) ) ;
expected . Add ( new ExpectedTextMenuItem ( "Di&saster Recovery" , true , new ExpectedMenuItem [ ]
{
new ExpectedTextMenuItem (
"&Configure..." , true ) ,
new ExpectedTextMenuItem (
"&Disaster Recovery Wizard..." ,
true )
} ) ) ;
expected . AddRange ( new List < ExpectedMenuItem > {
new ExpectedSeparator ( ) ,
new ExpectedTextMenuItem ( "&Add Server" , true , false ,
new ExpectedMenuItem [ ]
{
new ExpectedTextMenuItem ( "&Add New Server..." , true )
} ) ,
new ExpectedTextMenuItem ( "&Disconnect" , true ) ,
new ExpectedTextMenuItem ( "Reconnec&t As..." , true ) ,
new ExpectedSeparator ( ) ,
new ExpectedTextMenuItem ( "E&xpand All" , true ) ,
new ExpectedTextMenuItem ( "P&roperties" , true )
} ) ;
VerifyContextMenu ( pool , expected . ToArray ( ) ) ;
2013-06-24 13:41:48 +02:00
}
[Test]
public void ContextMenu_Master ( )
{
2015-11-06 10:36:19 +01:00
VerifyContextMenu ( GetAnyHost ( IsMaster ) , new ExpectedMenuItem [ ] {
new ExpectedTextMenuItem ( "New V&M..." , true ) ,
new ExpectedTextMenuItem ( "&New SR..." , true ) ,
new ExpectedTextMenuItem ( "&Import..." , true ) ,
new ExpectedSeparator ( ) ,
new ExpectedTextMenuItem ( "&Enter Maintenance Mode..." , true ) ,
new ExpectedSeparator ( ) ,
new ExpectedTextMenuItem ( "Re&boot" , true ) ,
new ExpectedTextMenuItem ( "S&hut Down" , true ) ,
new ExpectedTextMenuItem ( "Restart Toolstac&k" , true ) ,
new ExpectedSeparator ( ) ,
new ExpectedTextMenuItem ( "E&xpand All" , true ) ,
new ExpectedTextMenuItem ( "P&roperties" , true )
} ) ;
2013-06-24 13:41:48 +02:00
}
[Test]
public void ContextMenu_Slave ( )
{
2015-11-06 10:36:19 +01:00
VerifyContextMenu ( GetAnyHost ( IsSlave ) , new ExpectedMenuItem [ ] {
new ExpectedTextMenuItem ( "New V&M..." , true ) ,
new ExpectedTextMenuItem ( "&New SR..." , true ) ,
new ExpectedTextMenuItem ( "&Import..." , true ) ,
new ExpectedSeparator ( ) ,
new ExpectedTextMenuItem ( "&Enter Maintenance Mode..." , true ) ,
new ExpectedSeparator ( ) ,
new ExpectedTextMenuItem ( "Re&boot" , true ) ,
new ExpectedTextMenuItem ( "S&hut Down" , true ) ,
new ExpectedTextMenuItem ( "Restart Toolstac&k" , true ) ,
new ExpectedSeparator ( ) ,
new ExpectedTextMenuItem ( "Remove Server from &Pool" , false ) ,
new ExpectedSeparator ( ) ,
new ExpectedTextMenuItem ( "E&xpand All" , true ) ,
new ExpectedTextMenuItem ( "P&roperties" , true )
} ) ;
2013-06-24 13:41:48 +02:00
}
[Test]
public void ContextMenu_VMWithTools ( )
{
2015-11-06 10:36:19 +01:00
foreach ( VM vm in GetAllXenObjects < VM > ( HasTools ) )
{
List < ExpectedMenuItem > expectedMenuItems = new List < ExpectedMenuItem > ( ) ;
expectedMenuItems . Add ( new ExpectedTextMenuItem ( "S&hut Down" , true ) ) ;
expectedMenuItems . Add ( new ExpectedTextMenuItem ( "S&uspend" , true ) ) ;
expectedMenuItems . Add ( new ExpectedTextMenuItem ( "Reb&oot" , true ) ) ;
expectedMenuItems . Add ( new ExpectedSeparator ( ) ) ;
expectedMenuItems . Add ( new ExpectedTextMenuItem ( "Force Shut Do&wn" , true ) ) ;
expectedMenuItems . Add ( new ExpectedTextMenuItem ( "Force Re&boot" , true ) ) ;
expectedMenuItems . Add ( new ExpectedSeparator ( ) ) ;
if ( vm . Connection . Resolve < Host > ( vm . resident_on ) . name_label = = "inflames" )
{
expectedMenuItems . Add ( new ExpectedTextMenuItem ( "M&igrate to Server" , true , false ,
new ExpectedMenuItem [ ]
{
new ExpectedTextMenuItem ( "&Home Server (Current server)" , false ) ,
new ExpectedTextMenuItem ( "inflames (Current server)" , false , false , true ) ,
new ExpectedTextMenuItem ( "incubus (INTERNAL_ERROR)" , false , false , true )
} ) ) ;
expectedMenuItems . Add ( new ExpectedSeparator ( ) ) ;
}
else if ( vm . IsOnSharedStorage ( ) = = string . Empty )
{
expectedMenuItems . Add ( new ExpectedTextMenuItem ( "M&igrate to Server" , true , false ,
new ExpectedMenuItem [ ]
{
new ExpectedTextMenuItem ( "&Home Server (Current server)" , false ) ,
new ExpectedTextMenuItem ( "inflames (INTERNAL_ERROR)" , false , false , true ) ,
new ExpectedTextMenuItem ( "incubus (Current server)" , false , false , true )
} ) ) ;
expectedMenuItems . Add ( new ExpectedSeparator ( ) ) ;
}
expectedMenuItems . Add ( new ExpectedTextMenuItem ( "Ta&ke a Snapshot..." , true ) ) ;
expectedMenuItems . Add ( new ExpectedTextMenuItem ( "Assign to vA&pp" , true , new ExpectedMenuItem [ ] { new ExpectedTextMenuItem ( "&New vApp..." , true ) } ) ) ;
expectedMenuItems . Add ( new ExpectedSeparator ( ) ) ;
expectedMenuItems . Add ( new ExpectedTextMenuItem ( "P&roperties" , true ) ) ;
VerifyContextMenu ( vm , expectedMenuItems . ToArray ( ) ) ;
}
2013-06-24 13:41:48 +02:00
}
[Test]
2015-11-06 10:36:19 +01:00
public void ContextMenu_VMWithoutTools ( )
2013-06-24 13:41:48 +02:00
{
2015-11-06 10:36:19 +01:00
foreach ( VM vm in GetAllXenObjects < VM > ( NoTools ) )
{
VerifyContextMenu ( vm , new ExpectedMenuItem [ ] {
new ExpectedTextMenuItem ( "Force Shut Do&wn" , true ) ,
new ExpectedTextMenuItem ( "Force Re&boot" , true ) ,
new ExpectedSeparator ( ) ,
new ExpectedTextMenuItem ( "Ta&ke a Snapshot..." , true ) ,
new ExpectedTextMenuItem ( "Assign to vA&pp" , true , new ExpectedMenuItem [ ] { new ExpectedTextMenuItem ( "&New vApp..." , true ) } ) ,
new ExpectedSeparator ( ) ,
2018-09-13 07:37:18 +02:00
new ExpectedTextMenuItem ( "Inst&all " + Branding . PV_TOOLS + "..." , true ) ,
2015-11-06 10:36:19 +01:00
new ExpectedSeparator ( ) ,
new ExpectedTextMenuItem ( "P&roperties" , true )
} ) ;
}
2013-06-24 13:41:48 +02:00
}
[Test]
2015-11-06 10:36:19 +01:00
public void ContextMenu_VMShutdown ( )
2013-06-24 13:41:48 +02:00
{
2015-11-06 10:36:19 +01:00
foreach ( VM vm in GetAllXenObjects < VM > ( IsShutdown ) )
{
VerifyContextMenu ( vm , new ExpectedMenuItem [ ] {
new ExpectedTextMenuItem ( "S&tart" , true ) ,
new ExpectedSeparator ( ) ,
new ExpectedTextMenuItem ( "Start on Ser&ver" , true , false ,
new ExpectedMenuItem [ ]
{
new ExpectedTextMenuItem ( "&Home Server (Home Server is not set)" , false ) ,
new ExpectedTextMenuItem ( "inflames (INTERNAL_ERROR)" , false , false , true ) ,
new ExpectedTextMenuItem ( "incubus (INTERNAL_ERROR)" , false , false , true )
} ) ,
new ExpectedSeparator ( ) ,
new ExpectedTextMenuItem ( "&Copy VM..." , true ) ,
new ExpectedTextMenuItem ( "&Export..." , true ) ,
new ExpectedTextMenuItem ( "Ta&ke a Snapshot..." , true ) ,
new ExpectedTextMenuItem ( "Co&nvert to Template..." , true ) ,
new ExpectedTextMenuItem ( "Assign to vA&pp" , true , new ExpectedMenuItem [ ] { new ExpectedTextMenuItem ( "&New vApp..." , true ) } ) ,
new ExpectedSeparator ( ) ,
new ExpectedTextMenuItem ( "&Delete VM..." , true ) ,
new ExpectedSeparator ( ) ,
new ExpectedTextMenuItem ( "P&roperties" , true )
} ) ;
}
}
[Test]
public void ContextMenu_SR ( )
{
EnsureChecked ( MainWindowWrapper . ViewMenuItems . LocalStorageToolStripMenuItem ) ;
2017-09-03 04:33:29 +02:00
foreach ( SR sr in GetAllXenObjects < SR > ( s = > ! s . IsToolsSR ( ) ) )
2015-11-06 10:36:19 +01:00
{
List < ExpectedMenuItem > expectedMenuItems = new List < ExpectedMenuItem > ( ) ;
if ( CanSetAsDefault ( sr ) )
{
expectedMenuItems . Add ( new ExpectedTextMenuItem ( "Set as Defaul&t" , true ) ) ;
expectedMenuItems . Add ( new ExpectedSeparator ( ) ) ;
}
if ( CanDetach ( sr ) )
{
expectedMenuItems . Add ( new ExpectedTextMenuItem ( "&Detach..." , true ) ) ;
}
if ( CanForget ( sr ) )
{
expectedMenuItems . Add ( new ExpectedTextMenuItem ( "&Forget" , true ) ) ;
}
if ( CanDestroy ( sr ) )
{
expectedMenuItems . Add ( new ExpectedTextMenuItem ( "Destr&oy..." , true ) ) ;
}
if ( expectedMenuItems . Count > 0 & & ! ( CanSetAsDefault ( sr ) & & expectedMenuItems . Count = = 2 ) )
{
expectedMenuItems . Add ( new ExpectedSeparator ( ) ) ;
}
expectedMenuItems . Add ( new ExpectedTextMenuItem ( "P&roperties" , true ) ) ;
VerifyContextMenu ( sr , expectedMenuItems . ToArray ( ) ) ;
}
2013-06-24 13:41:48 +02:00
}
[Test]
public void ContextMenu_UserTemplate ( )
{
EnsureChecked ( MainWindowWrapper . ViewMenuItems . TemplatesToolStripMenuItem ) ;
2017-09-03 04:33:29 +02:00
foreach ( VM vm in GetAllXenObjects < VM > ( v = > v . InstantTemplate ( ) ) )
2013-06-24 13:41:48 +02:00
{
VerifyContextMenu ( vm , new ExpectedMenuItem [ ] {
new ExpectedTextMenuItem ( "&New VM wizard..." , true ) ,
new ExpectedSeparator ( ) ,
new ExpectedTextMenuItem ( "&Export to File..." , true ) ,
new ExpectedTextMenuItem ( "&Copy" , true ) ,
new ExpectedSeparator ( ) ,
new ExpectedTextMenuItem ( "&Delete Template..." , true ) ,
new ExpectedSeparator ( ) ,
new ExpectedTextMenuItem ( "Properties" , true )
} ) ;
}
}
[Test]
public void ContextMenu_Snapshot ( )
{
2015-11-06 10:36:19 +01:00
try
{
var expectedForAll = new List < ExpectedMenuItem >
{
new ExpectedTextMenuItem ( "&New VM From Snapshot..." , true ) ,
new ExpectedTextMenuItem ( "&Create Template From Snapshot..." , true ) ,
new ExpectedTextMenuItem ( "&Export Snapshot As Template..." , true ) ,
new ExpectedTextMenuItem ( "&Delete Snapshot" , true ) ,
new ExpectedSeparator ( ) ,
new ExpectedTextMenuItem ( "P&roperties" , true )
} ;
PutInNavigationMode ( NavigationPane . NavigationMode . Objects ) ;
foreach ( VM snapshot in GetAllXenObjects < VM > ( v = > v . is_a_snapshot ) )
{
var expected = new List < ExpectedMenuItem > ( expectedForAll ) ;
VerifyContextMenu ( snapshot , expected . ToArray ( ) ) ;
}
PutInNavigationMode ( NavigationPane . NavigationMode . Tags ) ;
foreach ( VM snapshot in GetAllXenObjects < VM > ( v = > v . is_a_snapshot & & v . tags . Length > 0 ) )
{
var expected = new List < ExpectedMenuItem > ( expectedForAll ) ;
if ( snapshot . tags . Length > 0 )
expected . Insert ( 5 , new ExpectedTextMenuItem ( "Untag Ob&ject" , true ) ) ;
if ( Folders . GetFolder ( snapshot ) ! = null )
expected . Insert ( 5 , new ExpectedTextMenuItem ( "Remove from &folder" , true ) ) ;
VerifyContextMenu ( snapshot , expected . ToArray ( ) ) ;
}
PutInNavigationMode ( NavigationPane . NavigationMode . Folders ) ;
foreach ( VM snapshot in GetAllXenObjects < VM > ( v = > v . is_a_snapshot & & Folders . GetFolder ( v ) ! = null ) )
{
var expected = new List < ExpectedMenuItem > ( expectedForAll ) ;
if ( snapshot . tags . Length > 0 )
expected . Insert ( 5 , new ExpectedTextMenuItem ( "Untag Ob&ject" , true ) ) ;
if ( Folders . GetFolder ( snapshot ) ! = null )
expected . Insert ( 5 , new ExpectedTextMenuItem ( "Remove from &folder" , true ) ) ;
VerifyContextMenu ( snapshot , expected . ToArray ( ) ) ;
}
}
finally
{
PutInNavigationMode ( NavigationPane . NavigationMode . Infrastructure ) ;
}
}
[Test]
public void ContextMenu_VDI ( )
{
PutInNavigationMode ( NavigationPane . NavigationMode . Objects ) ;
try
{
2016-10-06 16:49:36 +02:00
var vdis = GetAllXenObjects < VDI > ( v = > v . name_label ! = "base copy" & & ! v . name_label . StartsWith ( "XenServer Transfer VM" ) & & ! v . is_a_snapshot ) ;
foreach ( VDI v in vdis )
2015-11-06 10:36:19 +01:00
{
2018-10-19 11:24:14 +02:00
var canBeMigrated = ! Helpers . FeatureForbidden ( v . Connection , Host . RestrictCrossPoolMigrate ) ;
var canBeMoved = v . GetVMs ( ) . All ( vm = > vm . power_state = = vm_power_state . Halted ) ;
2015-11-06 10:36:19 +01:00
VerifyContextMenu ( v , new ExpectedMenuItem [ ] {
2018-10-19 11:24:14 +02:00
new ExpectedTextMenuItem ( "&Move Virtual Disk..." , canBeMigrated | | canBeMoved ) ,
2015-11-06 10:36:19 +01:00
new ExpectedTextMenuItem ( "&Delete Virtual Disk" , v . allowed_operations . Contains ( vdi_operations . destroy ) ) ,
new ExpectedSeparator ( ) ,
new ExpectedTextMenuItem ( "P&roperties" , true ) ,
} ) ;
}
}
finally
{
PutInNavigationMode ( NavigationPane . NavigationMode . Infrastructure ) ;
}
}
[Test]
public void ContextMenu_Network ( )
{
PutInNavigationMode ( NavigationPane . NavigationMode . Objects ) ;
try
{
foreach ( XenAPI . Network network in GetAllXenObjects < XenAPI . Network > ( n = > n . name_label ! = "Host internal management network" ) )
{
VerifyContextMenu ( network , new ExpectedMenuItem [ ] {
new ExpectedTextMenuItem ( "P&roperties" , true )
} ) ;
}
}
finally
{
PutInNavigationMode ( NavigationPane . NavigationMode . Infrastructure ) ;
}
}
[Test]
public void ContextMenu_GroupingTag ( )
{
PutInNavigationMode ( NavigationPane . NavigationMode . Tags ) ;
try
{
var nodes = GetAllTreeNodes ( ) . Where ( n = > n . Parent ! = null ) ;
foreach ( VirtualTreeNode node in nodes )
{
GroupingTag gt = node . Tag as GroupingTag ;
if ( gt ! = null )
{
var expectedItems = new List < ExpectedMenuItem > ( ) ;
if ( gt . Grouping is PropertyGrouping < string > )
{
expectedItems . Add ( new ExpectedTextMenuItem ( "&Delete Tag..." , true ) ) ;
expectedItems . Add ( new ExpectedTextMenuItem ( "&Rename Tag..." , true ) ) ;
}
AddExpectedExpandAndCollapseItems ( node , expectedItems ) ;
VerifyContextMenu ( gt , expectedItems . ToArray ( ) ) ;
}
}
}
finally
{
PutInNavigationMode ( NavigationPane . NavigationMode . Infrastructure ) ;
}
}
[Test]
public void ContextMenu_Folder ( )
{
PutInNavigationMode ( NavigationPane . NavigationMode . Objects ) ;
try
{
foreach ( VirtualTreeNode node in GetAllTreeNodes ( ) )
{
Folder folder = node . Tag as Folder ;
if ( folder ! = null )
{
List < ExpectedMenuItem > expectedMenuItems = new List < ExpectedMenuItem > ( ) ;
expectedMenuItems . Add ( new ExpectedTextMenuItem ( "&New Folder..." , true ) ) ;
if ( ! folder . IsRootFolder )
{
expectedMenuItems . Add ( new ExpectedTextMenuItem ( "&Rename Folder..." , true ) ) ;
expectedMenuItems . Add ( new ExpectedTextMenuItem ( "&Delete Folder..." , true ) ) ;
}
AddExpectedExpandAndCollapseItems ( node , expectedMenuItems ) ;
VerifyContextMenu ( folder , expectedMenuItems . ToArray ( ) ) ;
}
}
}
finally
{
PutInNavigationMode ( NavigationPane . NavigationMode . Infrastructure ) ;
}
}
[Test]
public void ContextMenu_DefaultTemplate ( )
{
EnsureDefaultTemplatesShown ( ) ;
VerifyContextMenu ( GetAnyDefaultTemplate ( ) , new ExpectedMenuItem [ ] {
new ExpectedTextMenuItem ( "&New VM wizard..." , true ) ,
new ExpectedSeparator ( ) ,
new ExpectedTextMenuItem ( "&Export to File..." , true ) ,
new ExpectedTextMenuItem ( "&Copy..." , true ) ,
new ExpectedSeparator ( ) ,
new ExpectedTextMenuItem ( "P&roperties" , true )
} ) ;
}
[Test]
public void ContextMenu_UserTemplate_Instant ( )
{
EnsureDefaultTemplatesShown ( ) ;
2017-09-03 04:33:29 +02:00
foreach ( VM vm in GetAllXenObjects < VM > ( v = > v . InstantTemplate ( ) ) )
2015-11-06 10:36:19 +01:00
{
VerifyContextMenu ( vm , new ExpectedMenuItem [ ] {
new ExpectedTextMenuItem ( "&New VM wizard..." , true ) ,
new ExpectedTextMenuItem ( "&Quick Create" , true ) ,
new ExpectedSeparator ( ) ,
new ExpectedTextMenuItem ( "&Export to File..." , true ) ,
new ExpectedTextMenuItem ( "&Copy..." , true ) ,
new ExpectedSeparator ( ) ,
new ExpectedTextMenuItem ( "&Delete Template..." , true ) ,
new ExpectedSeparator ( ) ,
new ExpectedTextMenuItem ( "P&roperties" , true )
} ) ;
}
}
[Test]
public void ContextMenu_UserTemplate_NoInstant ( )
{
EnsureDefaultTemplatesShown ( ) ;
2017-09-03 04:33:29 +02:00
foreach ( VM vm in GetAllXenObjects < VM > ( v = > v . is_a_template & & ! v . DefaultTemplate ( ) & & ! v . is_a_snapshot & & ! v . InstantTemplate ( ) & & ! v . name_label . StartsWith ( "XenServer Transfer VM" ) ) )
2015-11-06 10:36:19 +01:00
{
VerifyContextMenu ( vm , new ExpectedMenuItem [ ] {
new ExpectedTextMenuItem ( "&New VM wizard..." , true ) ,
new ExpectedSeparator ( ) ,
new ExpectedTextMenuItem ( "&Export to File..." , true ) ,
new ExpectedTextMenuItem ( "&Copy..." , true ) ,
new ExpectedSeparator ( ) ,
new ExpectedTextMenuItem ( "&Delete Template..." , true ) ,
new ExpectedSeparator ( ) ,
new ExpectedTextMenuItem ( "P&roperties" , true )
} ) ;
}
2013-06-24 13:41:48 +02:00
}
[Test]
public void TestPowerStateChangeUpdatesToolBar ( )
{
// select a running VM
VM vm = GetAnyVM ( v = > v . power_state = = vm_power_state . Running ) ;
Assert . IsTrue ( SelectInTree ( vm ) , "Couldn't select VM" ) ;
// assert that start button is disabled (as VM is running.)
Assert . IsTrue ( ! MainWindowWrapper . MainToolStripItems . StartVMToolStripButton . Enabled , "Start button should be disabled." ) ;
// click the force-shutdown menu item from the VM menu.
MW ( delegate
{
MainWindowWrapper . VMMenu . ShowDropDown ( ) ;
MainWindowWrapper . VMMenuItems . StartShutdownMenu . ShowDropDown ( ) ;
MainWindowWrapper . VMMenuItems . StartShutdownMenuItems . ForceShutdownToolStripMenuItem . PerformClick ( ) ;
} ) ;
// assert it has halted and that the start-vm toolbar button has become enabled.
MWWaitFor ( ( ) = > vm . power_state = = vm_power_state . Halted & & MainWindowWrapper . MainToolStripItems . StartVMToolStripButton . Enabled , "Toolbar wasn't updated on VM shutdown." ) ;
// now restart VM.
MW ( MainWindowWrapper . MainToolStripItems . StartVMToolStripButton . PerformClick ) ;
MWWaitFor ( ( ) = > vm . power_state = = vm_power_state . Running , "Couldn't start VM." ) ;
}
}
}