From 4fd5d5371bab76f8a24a7daa60f95170cc5fe3b8 Mon Sep 17 00:00:00 2001 From: Jose Perez Carranza Date: Mon, 12 Aug 2019 11:18:40 -0500 Subject: [PATCH] [robot] Add test executed by the suite Enable a series of test cases that are executed by the test suite for Setup, Provision and Sanity. Depends-On : I34dfe1c01b27e5e8ce046de3305dd78c7f9d1383 Signed-off-by: Jose Perez Carranza Change-Id: Ia1e4e9ce011e1e527bd1109d1260bdc0b9a410b9 --- automated-robot-suite/Tests/Provision.robot | 257 ++++++++++++++++++ .../01-Instance-From-Image.robot | 163 +++++++++++ .../02-Instance-From-Volume.robot | 165 +++++++++++ .../03-Instance-From-Snapshot.robot | 174 ++++++++++++ .../04-Instance-From-Heat-Template.robot | 62 +++++ .../05-Measurements-For-Metric.robot | 95 +++++++ .../01-OpenStack-Pod-Healthy.robot | 56 ++++ .../Sanity-Platform/02-Host-Management.robot | 81 ++++++ automated-robot-suite/Tests/Setup.robot | 118 ++++++++ .../01-Stress-Instance-From-Image.robot | 184 +++++++++++++ .../02-Stress-Instance-From-Volume.robot | 202 ++++++++++++++ .../03-Stress-Instance-From-Snapshot.robot | 212 +++++++++++++++ 12 files changed, 1769 insertions(+) create mode 100644 automated-robot-suite/Tests/Provision.robot create mode 100644 automated-robot-suite/Tests/Sanity-Test/Sanity-OpenStack/01-Instance-From-Image.robot create mode 100644 automated-robot-suite/Tests/Sanity-Test/Sanity-OpenStack/02-Instance-From-Volume.robot create mode 100644 automated-robot-suite/Tests/Sanity-Test/Sanity-OpenStack/03-Instance-From-Snapshot.robot create mode 100644 automated-robot-suite/Tests/Sanity-Test/Sanity-OpenStack/04-Instance-From-Heat-Template.robot create mode 100644 automated-robot-suite/Tests/Sanity-Test/Sanity-OpenStack/05-Measurements-For-Metric.robot create mode 100644 automated-robot-suite/Tests/Sanity-Test/Sanity-Platform/01-OpenStack-Pod-Healthy.robot create mode 100644 automated-robot-suite/Tests/Sanity-Test/Sanity-Platform/02-Host-Management.robot create mode 100644 automated-robot-suite/Tests/Setup.robot create mode 100644 automated-robot-suite/Tests/Stress-Test/01-Stress-Instance-From-Image.robot create mode 100644 automated-robot-suite/Tests/Stress-Test/02-Stress-Instance-From-Volume.robot create mode 100644 automated-robot-suite/Tests/Stress-Test/03-Stress-Instance-From-Snapshot.robot diff --git a/automated-robot-suite/Tests/Provision.robot b/automated-robot-suite/Tests/Provision.robot new file mode 100644 index 0000000..4bec4a6 --- /dev/null +++ b/automated-robot-suite/Tests/Provision.robot @@ -0,0 +1,257 @@ +*** Settings *** + +Documentation Tests for provisioning and unlocking controllers, computes and +... storage hosts. +... Author(s): +... - Jose Perez Carranza +... - Juan Carlos Alonso + +Variables Variables/Global.py +Resource Resources/HostManagement.robot +Resource Resources/Utils.robot +Resource Resources/OpenStack.robot +Resource Resources/Provisioning.robot +Library Libraries/common.py +Library Collections +Suite Setup Run Keywords Utils.Stx Suite Setup +... provisioning.Assign Data Interfaces + +*** Variables *** +${master_controller} controller-0 +${second_controller} controller-1 +${backend_type} ceph +${physnet0} physnet0 +${physnet1} physnet1 +${mtu} 1500 +${publicnet} public-net0 +${privatenet} private-net0 +${internalnet} internal-net0 +${externalnet} external-net0 +${publicsubnet} public-subnet0 +${privatesubnet} private-subnet0 +${internalsubnet} internal-subnet0 +${externalsubnet} external-subnet0 +${publicrouter} public-router0 +${privaterouter} private-router0 +${lgv_name} nova-local +${nova_size} 100 +${nova_size_comp} True +${cgts_part_size} 20 +${app_tarball} ${APP_TARBALL_FILE} +${host_image_path} /home/${CLI_USER_NAME}/ +${clouds_yml} clouds.yml +${password} ${Config.credentials.STX_DEPLOY_USER_PSWD} + +*** Test Cases *** +Provisioning Simplex System + [Tags] Simplex + [Documentation] Validates provisioning of a simplex configuration + ... according to steps defined at + ... "https://wiki.openstack.org/wiki/StarlingX/Containers/Installation" + Configure OAM Interface ${master_controller} + Run Keyword If '${ENVIRONMENT}'=='baremetal' Run Keywords + ... Set NTP Server AND Configure Vswitch Type + Configure Data Interfaces ${master_controller} ${data0if} + ... ${data1if} ${physnet0} ${physnet1} ${mtu} + Enable Containerized Services ${master_controller} + Setup Partitions ${master_controller} ${lgv_name} ${nova_size} + ... ${cgts_part_size} + Configure Ceph ${master_controller} ${backend_type} + Unlock Master Controller ${master_controller} + Set Ceph Pool Replication + Wait Until Keyword Succeeds 5 min 5 sec + ... Check Ceph Status + Put File %{PYTHONPATH}/${app_tarball} + ... ${host_image_path}/${app_tarball} + Stage Application Deployment stx-openstack ${app_tarball} + Bring Up Services stx-openstack + Set Ceph Pool Replication + Put File %{PYTHONPATH}/Utils/${clouds_yml} + ... ${host_image_path}/${clouds_yml} + ${sed_cmd} Catenate + ... sed -i 's/PASS/${password}/' ${host_image_path}/${clouds_yml} + Run Command ${sed_cmd} + Set Cluster Endpoints ${clouds_yml} + Provider Network Setup ${physnet0} ${physnet1} + Tenant Networking Setup ${physnet0} ${physnet1} ${externalnet} + ... ${publicnet} ${privatenet} ${internalnet} ${publicsubnet} + ... ${privatesubnet} ${internalsubnet} ${externalsubnet} + ... ${publicrouter} ${privaterouter} + +Provisioning Duplex System + [Tags] Duplex + [Documentation] Validates provisioning of a duplex configuration + ... according to steps defined at + ... "https://wiki.openstack.org/wiki/StarlingX/Containers/ + ... InstallationOnAIODX" + Configure OAM Interface ${master_controller} + Configure MGMT Interface ${master_controller} + Run Keyword If '${ENVIRONMENT}'=='baremetal' Run Keywords + ... Set NTP Server AND Configure Vswitch Type + Configure Data Interfaces ${master_controller} ${data0if} + ... ${data1if} ${physnet0} ${physnet1} ${mtu} + Enable Containerized Services ${master_controller} + Setup Partitions ${master_controller} ${lgv_name} ${nova_size} + ... ${cgts_part_size} + Configure Ceph ${master_controller} ${backend_type} + Unlock Master Controller ${master_controller} + Wait Until Keyword Succeeds 5 min 5 sec + ... Check Ceph Status + # --- Installing Remaining Nodes --- + Run Keyword IF '${ENVIRONMENT}'=='virtual' + ... Install Remaining Nodes Virtual + ... ELSE Install Remaining Nodes Baremetal + # --- Controller-1 --- + Configure Data Interfaces ${second_controller} ${data0if} + ... ${data1if} ${physnet0} ${physnet1} ${mtu} + Enable Containerized Services ${second_controller} + Setup Partitions ${second_controller} ${lgv_name} ${nova_size} + ... ${cgts_part_size} + Configure Ceph ${second_controller} ${backend_type} + Unlock Second Controller ${second_controller} + Check Host Readiness ${second_controller} + Wait Until Keyword Succeeds 5 min 5 sec + ... Check Ceph Status + Put File %{PYTHONPATH}/${app_tarball} + ... ${host_image_path}/${app_tarball} + Stage Application Deployment stx-openstack ${app_tarball} + Bring Up Services stx-openstack + Set Ceph Pool Replication + Put File %{PYTHONPATH}/Utils/${clouds_yml} + ... ${host_image_path}/${clouds_yml} + ${sed_cmd} Catenate + ... sed -i 's/PASS/${password}/' ${host_image_path}/${clouds_yml} + Run Command ${sed_cmd} + Set Cluster Endpoints ${clouds_yml} + Provider Network Setup ${physnet0} ${physnet1} + Tenant Networking Setup ${physnet0} ${physnet1} ${externalnet} + ... ${publicnet} ${privatenet} ${internalnet} ${publicsubnet} + ... ${privatesubnet} ${internalsubnet} ${externalsubnet} + ... ${publicrouter} ${privaterouter} + +Provisioning Standard Non-Storage System + [Tags] MN-Local + [Documentation] Validates provisioning of a standard non storage + ... configuration according to steps defined at + ... "https://wiki.openstack.org/wiki/StarlingX/Containers/ + ... InstallationOnStandard" + # --- Controller-0 --- + Configure OAM Interface ${master_controller} + Configure MGMT Interface ${master_controller} + Run Keyword If '${ENVIRONMENT}'=='baremetal' Run Keywords + ... Set NTP Server AND Configure Vswitch Type + Enable Containerized Services ${master_controller} + Unlock Master Controller ${master_controller} + # --- Installing Remaining Nodes --- + Run Keyword IF '${ENVIRONMENT}'=='virtual' + ... Install Remaining Nodes Virtual + ... ELSE Install Remaining Nodes Baremetal + # --- Controller-1 --- + Enable Containerized Services ${second_controller} + Provide OAM Network Interface ${second_controller} + Setup Cluster Host Interfaces ${second_controller} + Unlock Second Controller ${second_controller} + Check Host Readiness ${second_controller} + ## TO DO : HERE KEYWORD TO CHECK QUORUM ON CEPH + # --- Computes --- + ${computes} = Get Compute Nodes + Sort List ${computes} + : FOR ${compute} IN @{computes} + \ Enable Containerized Services ${compute} + \ Run Keyword If '${compute}'=='compute-0' + \ ... Add Ceph Monitor ${compute} + \ Setup Partitions ${compute} ${lgv_name} ${nova_size_comp} + ... ${cgts_part_size} + \ Configure Data Interfaces ${compute} ${data0if} + ... ${data1if} ${physnet0} ${physnet1} ${mtu} + \ Setup Cluster Host Interfaces ${compute} + \ Unlock Compute ${compute} + \ Check Host Readiness ${compute} 1 + ## TO DO : HERE KEYWORD TO CHECK QUORUM ON CEPH + # - Enable ODS on Controllers + ${controllers} Create List controller-0 controller-1 + : FOR ${controller} IN @{controllers} + \ Add ODS To Tier ${controller} + # HERE KEYWORD TO CHECK QUORUM AND STATUS CEPH + Put File %{PYTHONPATH}/${app_tarball} + ... ${host_image_path}/${app_tarball} + Stage Application Deployment stx-openstack ${app_tarball} + Bring Up Services stx-openstack + Set Ceph Pool Replication + Put File %{PYTHONPATH}/Utils/${clouds_yml} + ... ${host_image_path}/${clouds_yml} + ${sed_cmd} Catenate + ... sed -i 's/PASS/${password}/' ${host_image_path}/${clouds_yml} + Run Command ${sed_cmd} + Set Cluster Endpoints ${clouds_yml} + Provider Network Setup ${physnet0} ${physnet1} + Tenant Networking Setup ${physnet0} ${physnet1} ${externalnet} + ... ${publicnet} ${privatenet} ${internalnet} ${publicsubnet} + ... ${privatesubnet} ${internalsubnet} ${externalsubnet} + ... ${publicrouter} ${privaterouter} + +Provisioning Standard Storage System + [Tags] MN-External + [Documentation] Validates provisioning of a standard storage + ... configuration according to steps defined at + ... "https://wiki.openstack.org/wiki/StarlingX/Containers/ + ... InstallationOnStandardStorage" + # --- Controller-0 --- + Configure OAM Interface ${master_controller} + Configure MGMT Interface ${master_controller} + Run Keyword If '${ENVIRONMENT}'=='baremetal' Run Keywords + ... Set NTP Server AND Configure Vswitch Type + Enable Containerized Services ${master_controller} + Unlock Master Controller ${master_controller} + # --- Installing Remaining Nodes --- + Run Keyword IF '${ENVIRONMENT}'=='virtual' + ... Install Remaining Nodes Virtual + ... ELSE Install Remaining Nodes Baremetal + # --- Controller-1 --- + Enable Containerized Services ${second_controller} + Provide OAM Network Interface ${second_controller} + Setup Cluster Host Interfaces ${second_controller} + Unlock Second Controller ${second_controller} + Check Host Readiness ${second_controller} + ## TO DO : HERE KEYWORD TO CHECK QUORUM ON CEPH + # --- Storage Nodes --- + # HERE CONTAINERIZED SERVICES + ${storages} = Get Storage Nodes + Sort List ${storages} + : FOR ${storage} IN @{storages} + \ Setup Cluster Host Interfaces Storage Node ${storage} + \ Add Storage OSD ${storage} /dev/sdb + \ Unlock Storage ${storage} + ## TO DO : HERE KEYWORD TO CHECK QUORUM ON CEPH + # --- Compute Nodes --- + ${computes} = Get Compute Nodes + Sort List ${computes} + : FOR ${compute} IN @{computes} + \ Enable Containerized Services ${compute} + \ Label Remote Storage ${compute} + ## TODO : According to the wiki comment "Why is this step different + ## than Standard?", so using storage keyword meanwhile + \ Setup Cluster Host Interfaces Storage Node ${compute} + \ Configure Data Interfaces ${compute} ${data0if} + ... ${data1if} ${physnet0} ${physnet1} ${mtu} + \ Setup Partitions ${compute} ${lgv_name} ${nova_size_comp} + ... ${cgts_part_size} True + \ Unlock Compute ${compute} + \ Check Host Readiness ${compute} 1 + ## TO DO : HERE KEYWORD TO CHECK QUORUM ON CEPH + Put File %{PYTHONPATH}/${app_tarball} + ... ${host_image_path}/${app_tarball} + Stage Application Deployment stx-openstack ${app_tarball} + Bring Up Services stx-openstack + Set Ceph Pool Replication + Put File %{PYTHONPATH}/Utils/${clouds_yml} + ... ${host_image_path}/${clouds_yml} + ${sed_cmd} Catenate + ... sed -i 's/PASS/${password}/' ${host_image_path}/${clouds_yml} + Run Command ${sed_cmd} + Set Cluster Endpoints ${clouds_yml} + Provider Network Setup ${physnet0} ${physnet1} + Tenant Networking Setup ${physnet0} ${physnet1} ${externalnet} + ... ${publicnet} ${privatenet} ${internalnet} ${publicsubnet} + ... ${privatesubnet} ${internalsubnet} ${externalsubnet} + ... ${publicrouter} ${privaterouter} diff --git a/automated-robot-suite/Tests/Sanity-Test/Sanity-OpenStack/01-Instance-From-Image.robot b/automated-robot-suite/Tests/Sanity-Test/Sanity-OpenStack/01-Instance-From-Image.robot new file mode 100644 index 0000000..59bbeb3 --- /dev/null +++ b/automated-robot-suite/Tests/Sanity-Test/Sanity-OpenStack/01-Instance-From-Image.robot @@ -0,0 +1,163 @@ +*** Settings *** +Documentation Create instances from image, perform different +... power status and set properties, using Cirros OS and Centos OS. +... Author(s): +... - Juan Carlos Alonso juan.carlos.alonso@intel.com + +Resource Resources/Utils.robot +Resource Resources/OpenStack.robot +Suite Setup Utils.Stx Suite Setup +Suite TearDown Run Keywords +... OpenStack.Openstack Cleanup All +... Utils.Stx Suite TearDown + +*** Variables *** +${cirros_image} ${CIRROS_FILE} +${cirros_image_name} cirros +${cirros_flavor_name_1} f1.small +${cirros_flavor_name_2} f2.small +${cirros_flavor_ram} 2048 +${cirros_flavor_disk} 20 +${cirros_flavor_vcpus} 1 +${cirros_instance_name} vm-cirros-1 +${centos_image} ${CENTOS_FILE} +${centos_image_name} centos +${centos_flavor_name} f1.medium +${centos_flavor_ram} 4096 +${centos_flavor_disk} 40 +${centos_flavor_vcpus} 2 +${centos_instance_name} vm-centos-1 +${network_name} network-1 +${subnet_name} subnet-1 +${disk_format} qcow2 +${subnet_range} 192.168.0.0/24 +${subnet_extras} --ip-version 4 --dhcp ${subnet_name} +${flavor_property_1} --property sw:wrs:guest:heartbeat='false' +${flavor_property_2} --property hw:cpu_policy='shared' +${instance_property_1} --property sw:wrs:auto_recovery +${instance_property_2} --property hw:wrs:live_migration_max_downtime +${instance_property_3} --property hw:wrs:live_migration_timeout +${host_image_path} /home/${CLI_USER_NAME}/ + +*** Test Cases *** +Create Flavors For Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Create flavors with or without properties to be used + ... to launch Cirros and Centos instances. + ${properties} Catenate ${flavor_property_1} ${flavor_property_2} + Create Flavor ${cirros_flavor_ram} ${cirros_flavor_vcpus} + ... ${cirros_flavor_disk} ${cirros_flavor_name_1} + Create Flavor ${centos_flavor_ram} ${centos_flavor_vcpus} + ... ${centos_flavor_disk} ${properties} ${centos_flavor_name} + +Create Images For Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Create images with or without properties to be used + ... to launch Cirros and Centos instances. + Put File %{PYTHONPATH}/${cirros_image} + ... ${host_image_path}/${cirros_image} + Put File %{PYTHONPATH}/${centos_image} + ... ${host_image_path}/${centos_image} + Create Image ${host_image_path}/${cirros_image} ${disk_format} + ... ${cirros_image_name} + Create Image ${host_image_path}/${centos_image} ${disk_format} + ... ${centos_image_name} + +Create Networks For Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Create networks to be used to launch Cirros and Centos + ... instances. + Create Network ${network_name} + Create Subnet ${network_name} ${subnet_range} ${subnet_extras} + +Launch Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Launch Cirros and Centos instances. + Create Instance ${network_name} ${cirros_instance_name} + ... ${cirros_image_name} ${cirros_flavor_name_1} + Create Instance ${network_name} ${centos_instance_name} + ... ${centos_image_name} ${centos_flavor_name} + +Suspend Resume Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Suspend and Resume Cirros and Centos instances. + Suspend Instance ${cirros_instance_name} + Resume Instance ${cirros_instance_name} + Suspend Instance ${centos_instance_name} + Resume Instance ${centos_instance_name} + +Set Error Active Flags Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Set 'Error' and 'Active' flags to Cirros and Centos + ... instances. + Set Error State Instance ${cirros_instance_name} error + Set Active State Instance ${cirros_instance_name} active + Set Error State Instance ${centos_instance_name} error + Set Active State Instance ${centos_instance_name} active + +Pause Unpause Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Pause and Unpause Cirros and Centos instances. + Pause Instance ${cirros_instance_name} + Pause Instance ${centos_instance_name} + Unpause Instance ${cirros_instance_name} + Unpause Instance ${centos_instance_name} + +Stop Start Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Stop and Start Cirros and Centos instances. + Stop Instance ${cirros_instance_name} + Stop Instance ${centos_instance_name} + Start Instance ${cirros_instance_name} + Start Instance ${centos_instance_name} + +Lock Unlock Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Lock and Unlock Cirros and Centos instances. + Lock Instance ${cirros_instance_name} + Lock Instance ${centos_instance_name} + Unlock Instance ${cirros_instance_name} + Unlock Instance ${centos_instance_name} + +Reboot Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Reboot Cirros and Centos instances. + Reboot Instance ${cirros_instance_name} + Reboot Instance ${centos_instance_name} + +Rebuild Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Rebuild Cirros and Centos instances. + Rebuild Instance ${cirros_instance_name} + Rebuild Instance ${centos_instance_name} + +Resize Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Resize Cirros instance. + Create Flavor ${cirros_flavor_ram} ${cirros_flavor_vcpus} + ... ${cirros_flavor_disk} ${cirros_flavor_name_2} + Resize Instance ${cirros_instance_name} ${cirros_flavor_name_2} + Resize Instance ${cirros_instance_name} ${cirros_flavor_name_1} + +Set Unset Properties Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Set Unset properties of Cirros and Centos instances. + ${properties} Catenate ${instance_property_1}='true' + ... ${instance_property_2}='500' ${instance_property_3}='180' + Set Instance Property ${cirros_instance_name} ${properties} + Set Instance Property ${centos_instance_name} ${properties} + ${properties} Catenate ${instance_property_1} + ... ${instance_property_2} ${instance_property_3} + Unset Instance Property ${cirros_instance_name} ${properties} + Unset Instance Property ${centos_instance_name} ${properties} + +Evacuate Instances From Hosts + [Tags] Duplex MN-Local MN-External + [Documentation] Evacuate all Cirros and Centos instances from computes + ... or controllers. + Run Keyword If '${CONFIGURATION_TYPE}' == 'Duplex' + ... Run Keywords Evacuate Instances controller-0 AND + ... Evacuate Instances controller-1 + ... ELSE IF '${CONFIGURATION_TYPE}' == 'MN-Local' or '${CONFIGURATION_TYPE}' == 'MN-External' + ... Run Keywords Evacuate Instances compute-0 AND + ... Evacuate Instances compute-1 diff --git a/automated-robot-suite/Tests/Sanity-Test/Sanity-OpenStack/02-Instance-From-Volume.robot b/automated-robot-suite/Tests/Sanity-Test/Sanity-OpenStack/02-Instance-From-Volume.robot new file mode 100644 index 0000000..fdc9c70 --- /dev/null +++ b/automated-robot-suite/Tests/Sanity-Test/Sanity-OpenStack/02-Instance-From-Volume.robot @@ -0,0 +1,165 @@ +*** Settings *** +Documentation Create instances from volume, perform different +... power status and set properties, using Cirros OS. +... Author(s): +... - Juan Carlos Alonso juan.carlos.alonso@intel.com + +Resource Resources/Utils.robot +Resource Resources/OpenStack.robot +Suite Setup Utils.Stx Suite Setup +Suite TearDown Run Keywords +... OpenStack.Openstack Cleanup All +... Utils.Stx Suite TearDown + +*** Variables *** +${cirros_image} ${CIRROS_FILE} +${cirros_image_name} cirros +${cirros_flavor_name_1} f1.small +${cirros_flavor_name_2} f2.small +${cirros_flavor_ram} 2048 +${cirros_flavor_disk} 20 +${cirros_flavor_vcpus} 1 +${cirros_instance_name_1} vm-cirros-1 +${cirros_instance_name_2} vm-cirros-2 +${cirros_volume_size} 20 +${cirros_volume_name_1} vol-cirros-1 +${cirros_volume_name_2} vol-cirros-2 +${network_name} network-1 +${subnet_name} subnet-1 +${disk_format} qcow2 +${subnet_range} 192.168.0.0/24 +${subnet_extras} --ip-version 4 --dhcp ${subnet_name} +${flavor_property_1} --property sw:wrs:guest:heartbeat='false' +${flavor_property_2} --property hw:cpu_policy='shared' +${instance_property_1} --property sw:wrs:auto_recovery +${instance_property_2} --property hw:wrs:live_migration_max_downtime +${instance_property_3} --property hw:wrs:live_migration_timeout +${host_image_path} /home/${CLI_USER_NAME}/ + +*** Test Cases *** +Create Flavors For Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Create flavors with or without properties to be used + ... to launch Cirros instances. + ${properties} Catenate ${flavor_property_1} ${flavor_property_2} + Create Flavor ${cirros_flavor_ram} ${cirros_flavor_vcpus} + ... ${cirros_flavor_disk} ${cirros_flavor_name_1} + +Create Images For Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Create images with or without properties to be used + ... to launch Cirros instances. + Put File %{PYTHONPATH}/${cirros_image} + ... ${host_image_path}/${cirros_image} + Create Image ${host_image_path}/${cirros_image} ${disk_format} + ... ${cirros_image_name} + +Create Networks For Instance + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Create networks to be used to launch Cirros + ... instances. + Create Network ${network_name} + Create Subnet ${network_name} ${subnet_range} ${subnet_extras} + +Create Volume For Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Create volumes with or without properties to be used to + ... to launch Cirros instances. + Create Volume ${cirros_volume_size} ${cirros_image_name} + ... --bootable ${cirros_volume_name_1} + Create Volume ${cirros_volume_size} ${cirros_image_name} + ... --bootable ${cirros_volume_name_2} + +Launch Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Launch Cirros instances. + Create Instance From Volume ${network_name} ${cirros_instance_name_1} + ... ${cirros_volume_name_1} ${cirros_flavor_name_1} + Create Instance From Volume ${network_name} ${cirros_instance_name_2} + ... ${cirros_volume_name_2} ${cirros_flavor_name_1} + +Suspend Resume Instance + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Suspend and Resume Cirros instances. + Suspend Instance ${cirros_instance_name_1} + Resume Instance ${cirros_instance_name_1} + Suspend Instance ${cirros_instance_name_2} + Resume Instance ${cirros_instance_name_2} + +Set Error Active Flags Instance + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Set 'Error' and 'Active' flags to Cirros + ... instance. + Set Error State Instance ${cirros_instance_name_1} error + Set Active State Instance ${cirros_instance_name_1} active + Set Error State Instance ${cirros_instance_name_2} error + Set Active State Instance ${cirros_instance_name_2} active + +Pause Unpause Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Pause and Unpause Cirros instances. + Pause Instance ${cirros_instance_name_1} + Pause Instance ${cirros_instance_name_2} + Unpause Instance ${cirros_instance_name_1} + Unpause Instance ${cirros_instance_name_2} + +Stop Start Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Stop and Start Cirros instances. + Stop Instance ${cirros_instance_name_1} + Stop Instance ${cirros_instance_name_2} + Start Instance ${cirros_instance_name_1} + Start Instance ${cirros_instance_name_2} + +Lock Unlock Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Lock and Unlock Cirros instances. + Lock Instance ${cirros_instance_name_1} + Lock Instance ${cirros_instance_name_2} + Unlock Instance ${cirros_instance_name_1} + Unlock Instance ${cirros_instance_name_2} + +Reboot Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Reboot Cirros instances. + Reboot Instance ${cirros_instance_name_1} + Reboot Instance ${cirros_instance_name_2} + +Rebuild Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Rebuild Cirros instances. + Rebuild Instance From Volume ${cirros_instance_name_1} + ... ${cirros_image_name} + Rebuild Instance From Volume ${cirros_instance_name_2} + ... ${cirros_image_name} + +Resize Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Resize Cirros instances. + Create Flavor ${cirros_flavor_ram} ${cirros_flavor_vcpus} + ... ${cirros_flavor_disk} ${cirros_flavor_name_2} + Resize Instance ${cirros_instance_name_1} ${cirros_flavor_name_2} + Resize Instance ${cirros_instance_name_1} ${cirros_flavor_name_1} + +Set Unset Properties Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Set Unset properties of Cirros instances. + ${properties} Catenate ${instance_property_1}='true' + ... ${instance_property_2}='500' ${instance_property_3}='180' + Set Instance Property ${cirros_instance_name_1} ${properties} + Set Instance Property ${cirros_instance_name_2} ${properties} + ${properties} Catenate ${instance_property_1} + ... ${instance_property_2} ${instance_property_3} + Unset Instance Property ${cirros_instance_name_1} ${properties} + Unset Instance Property ${cirros_instance_name_2} ${properties} + +Evacuate Instances From Hosts + [Tags] Duplex MN-Local MN-External + [Documentation] Evacuate all Cirros instances from computes + ... or controllers. + Run Keyword If '${CONFIGURATION_TYPE}' == 'Duplex' + ... Run Keywords Evacuate Instances controller-0 AND + ... Evacuate Instances controller-1 + ... ELSE IF '${CONFIGURATION_TYPE}' == 'MN-Local' or '${CONFIGURATION_TYPE}' == 'MN-External' + ... Run Keywords Evacuate Instances compute-0 AND + ... Evacuate Instances compute-1 diff --git a/automated-robot-suite/Tests/Sanity-Test/Sanity-OpenStack/03-Instance-From-Snapshot.robot b/automated-robot-suite/Tests/Sanity-Test/Sanity-OpenStack/03-Instance-From-Snapshot.robot new file mode 100644 index 0000000..f37ce15 --- /dev/null +++ b/automated-robot-suite/Tests/Sanity-Test/Sanity-OpenStack/03-Instance-From-Snapshot.robot @@ -0,0 +1,174 @@ +*** Settings *** +Documentation Create instances from snapshot, perform different +... power status and set properties, using Cirros OS. +... Author(s): +... - Juan Carlos Alonso + +Library SSHLibrary +Resource Resources/Utils.robot +Resource Resources/OpenStack.robot +Suite Setup Utils.Stx Suite Setup +Suite TearDown Run Keywords +... OpenStack.Openstack Cleanup All +... Utils.Stx Suite TearDown + +*** Variables *** +${cirros_image} ${CIRROS_FILE} +${cirros_image_name} cirros +${cirros_flavor_name_1} f1.small +${cirros_flavor_name_2} f2.small +${cirros_flavor_ram} 2048 +${cirros_flavor_disk} 20 +${cirros_flavor_vcpus} 1 +${cirros_instance_name_1} vm-cirros-1 +${cirros_instance_name_2} vm-cirros-2 +${cirros_volume_size} 20 +${cirros_volume_name} vol-cirros-1 +${cirros_snapshot_name_1} snap-cirros-1 +${cirros_snapshot_name_2} snap-cirros-2 +${cirros_snapshot_size} 20 +${network_name} network-1 +${subnet_name} subnet-1 +${disk_format} qcow2 +${subnet_range} 192.168.0.0/24 +${subnet_extras} --ip-version 4 --dhcp ${subnet_name} +${flavor_property_1} --property sw:wrs:guest:heartbeat='false' +${flavor_property_2} --property hw:cpu_policy='shared' +${instance_property_1} --property sw:wrs:auto_recovery +${instance_property_2} --property hw:wrs:live_migration_max_downtime +${instance_property_3} --property hw:wrs:live_migration_timeout +${host_image_path} /home/${CLI_USER_NAME}/ + +*** Test Cases *** +Create Flavors For Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Create flavors with or without properties to be used + ... to launch Cirros instances. + ${properties} Catenate ${flavor_property_1} ${flavor_property_2} + Create Flavor ${cirros_flavor_ram} ${cirros_flavor_vcpus} + ... ${cirros_flavor_disk} ${cirros_flavor_name_1} + +Create Images For Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Create images with or without properties to be used + ... to launch Cirros instances. + Put File %{PYTHONPATH}/${cirros_image} + ... ${host_image_path}/${cirros_image} + Create Image ${host_image_path}/${cirros_image} ${disk_format} + ... ${cirros_image_name} + +Create Networks For Instance + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Create networks to be used to launch Cirros and Centos + ... instances. + Create Network ${network_name} + Create Subnet ${network_name} ${subnet_range} ${subnet_extras} + +Create Volume For Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Create volumes with or without properties to be used + ... to launch Cirros instances. + Create Volume ${cirros_volume_size} ${cirros_image_name} + ... --bootable ${cirros_volume_name} + +Create Snapshot For Instance + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Create snapshots with or without properties to be used + ... to launch Cirros instances. + Create Snapshot ${cirros_volume_name} ${cirros_snapshot_name_1} + Create Snapshot ${cirros_volume_name} ${cirros_snapshot_name_2} + +Launch Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Launch Cirros instances from snapshot. + Create Instance From Snapshot ${network_name} ${cirros_image_name} + ... ${cirros_instance_name_1} ${cirros_snapshot_name_1} + ... ${cirros_snapshot_size} ${cirros_flavor_name_1} + Create Instance From Snapshot ${network_name} ${cirros_image_name} + ... ${cirros_instance_name_2} ${cirros_snapshot_name_2} + ... ${cirros_snapshot_size} ${cirros_flavor_name_1} + +Suspend Resume Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Suspend and Resume Cirros instances. + Suspend Instance ${cirros_instance_name_1} + Resume Instance ${cirros_instance_name_1} + Suspend Instance ${cirros_instance_name_2} + Resume Instance ${cirros_instance_name_2} + +Set Error Active Flags Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Set 'Error' and 'Active' flags to Cirros instances. + Set Error State Instance ${cirros_instance_name_1} error + Set Active State Instance ${cirros_instance_name_1} active + Set Error State Instance ${cirros_instance_name_2} error + Set Active State Instance ${cirros_instance_name_2} active + +Pause Unpause Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Pause and Unpause Cirros instances. + Pause Instance ${cirros_instance_name_1} + Pause Instance ${cirros_instance_name_2} + Unpause Instance ${cirros_instance_name_1} + Unpause Instance ${cirros_instance_name_2} + +Stop Start Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Stop and Start Cirros instances. + Stop Instance ${cirros_instance_name_1} + Stop Instance ${cirros_instance_name_2} + Start Instance ${cirros_instance_name_1} + Start Instance ${cirros_instance_name_2} + +Lock Unlock Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Lock and Unlock Cirros instances. + Lock Instance ${cirros_instance_name_1} + Lock Instance ${cirros_instance_name_2} + Unlock Instance ${cirros_instance_name_1} + Unlock Instance ${cirros_instance_name_2} + +Reboot Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Reboot Cirros instances. + Reboot Instance ${cirros_instance_name_1} + Reboot Instance ${cirros_instance_name_2} + +Rebuild Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Rebuild Cirros instances. + Rebuild Instance From Volume ${cirros_instance_name_1} + ... ${cirros_image_name} + Rebuild Instance From Volume ${cirros_instance_name_2} + ... ${cirros_image_name} + +Resize Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Resize Cirros instances. + Create Flavor ${cirros_flavor_ram} ${cirros_flavor_vcpus} + ... ${cirros_flavor_disk} ${cirros_flavor_name_2} + Resize Instance ${cirros_instance_name_1} ${cirros_flavor_name_2} + Resize Instance ${cirros_instance_name_1} ${cirros_flavor_name_1} + +Set Unset Properties Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Set Unset properties of Cirros instances. + ${properties} Catenate ${instance_property_1}='true' + ... ${instance_property_2}='500' ${instance_property_3}='180' + Set Instance Property ${cirros_instance_name_1} ${properties} + Set Instance Property ${cirros_instance_name_2} ${properties} + ${properties} Catenate ${instance_property_1} + ... ${instance_property_2} ${instance_property_3} + Unset Instance Property ${cirros_instance_name_1} ${properties} + Unset Instance Property ${cirros_instance_name_2} ${properties} + +Evacuate Instances From Hosts + [Tags] Duplex MN-Local MN-External + [Documentation] Evacuate all instances from computes or + ... controllers. + Run Keyword If '${CONFIGURATION_TYPE}' == 'Duplex' + ... Run Keywords Evacuate Instances controller-0 AND + ... Evacuate Instances controller-1 + ... ELSE IF '${CONFIGURATION_TYPE}' == 'MN-Local' or '${CONFIGURATION_TYPE}' == 'MN-External' + ... Run Keywords Evacuate Instances compute-0 AND + ... Evacuate Instances compute-1 diff --git a/automated-robot-suite/Tests/Sanity-Test/Sanity-OpenStack/04-Instance-From-Heat-Template.robot b/automated-robot-suite/Tests/Sanity-Test/Sanity-OpenStack/04-Instance-From-Heat-Template.robot new file mode 100644 index 0000000..1b27899 --- /dev/null +++ b/automated-robot-suite/Tests/Sanity-Test/Sanity-OpenStack/04-Instance-From-Heat-Template.robot @@ -0,0 +1,62 @@ +***Settings *** +Documentation Test to launch instance through a heat template. +... Author(s): +... - Hector Ivan Ramos Escobar +... - Juan Carlos Alonso Sanchez + +Resource Resources/Utils.robot +Resource Resources/OpenStack.robot +Suite Setup Utils.Stx Suite Setup +Suite TearDown Run Keywords +... OpenStack.Openstack Cleanup All +... Utils.Stx Suite TearDown + +*** Variables *** +${stack_template} Utils/stack_template.yml +${stack_name_1} stack-cirros-1 +${stack_name_2} stack-cirros-2 +${cirros_image} ${CIRROS_FILE} +${cirros_image_name} cirros +${cirros_flavor_name} f1.small +${cirros_flavor_ram} 2048 +${cirros_flavor_disk} 20 +${cirros_flavor_vcpus} 1 +${network_name} network-1 +${subnet_name} subnet-1 +${disk_format} qcow2 +${subnet_range} 192.168.0.0/24 +${subnet_extras} --ip-version 4 --dhcp ${subnet_name} +${host_image_path} /home/${CLI_USER_NAME}/ + +*** Test Cases *** +Create Flavors for Instance + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Create flavors with or without properties to be used + ... to launch Cirros instances. + Create Flavor ${cirros_flavor_ram} ${cirros_flavor_vcpus} + ... ${cirros_flavor_disk} ${cirros_flavor_name} + +Create Images for Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Create images with or without properties to be used + ... to launch Cirros instances. + Put File %{PYTHONPATH}/${cirros_image} + ... ${host_image_path}/${cirros_image} + Create Image ${host_image_path}/${cirros_image} ${disk_format} + ... ${cirros_image_name} + +Create Networks for Instance + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Create networks to be used to launch Cirros + ... instances. + Create Network ${network_name} + Create Subnet ${network_name} ${subnet_range} ${subnet_extras} + +Create Instance Trough Stack + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Create a Cirros instance using a heat template + Put File %{PYTHONPATH}/${stack_template} + ... ${host_image_path}/${stack_template} + ${net_id} Get Net Id ${network_name} + Create Stack ${stack_name_1} ${stack_template} ${net_id} + Create Stack ${stack_name_2} ${stack_template} ${net_id} diff --git a/automated-robot-suite/Tests/Sanity-Test/Sanity-OpenStack/05-Measurements-For-Metric.robot b/automated-robot-suite/Tests/Sanity-Test/Sanity-OpenStack/05-Measurements-For-Metric.robot new file mode 100644 index 0000000..f8f767a --- /dev/null +++ b/automated-robot-suite/Tests/Sanity-Test/Sanity-OpenStack/05-Measurements-For-Metric.robot @@ -0,0 +1,95 @@ +*** Settings *** +Documentation Test to create an instance with Cirros. +... Author(s): +... - Hector Ivan Ramos Escobar +... - Juan Carlos Alonso + +Resource Resources/Utils.robot +Resource Resources/OpenStack.robot +Suite Setup Utils.Stx Suite Setup +Suite TearDown Run Keywords +... OpenStack.Openstack Cleanup All +... Utils.Stx Suite TearDown + +*** Variables *** +${cirros_image} ${CIRROS_FILE} +${cirros_image_name} cirros +${cirros_image_name_tmp} cirros-tmp +${disk_format} qcow2 +${host_image_path} /home/${CLI_USER_NAME}/ +${image_disk_size} 10 +${image_ram_size} 20 + +*** Test Cases *** +Create Image For Metrics + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Create images with or without properties to be used + ... to launch Cirros instances. + Put File %{PYTHONPATH}/${cirros_image} + ... ${host_image_path}/${cirros_image} + Create Image ${host_image_path}/${cirros_image} ${disk_format} + ... ${cirros_image_name} + +Update Image Name + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Update image name. + ${openstack_cmd} Catenate openstack image show + ... ${cirros_image_name} + ${cmd} Catenate SEPARATOR=| ${openstack_cmd} grep "created_at" + ... awk '{print $4}' + &{result} Run OS Command ${cmd} + ${created_at} Get From Dictionary ${result} stdout + ${openstack_cmd} Set Variable openstack image set + ${cmd} Catenate ${openstack_cmd} --name ${cirros_image_name_tmp} + ... ${cirros_image_name} + Run OS Command ${cmd} True + ${openstack_cmd} Catenate openstack image show + ... ${cirros_image_name_tmp} + ${cmd} Catenate SEPARATOR=| ${openstack_cmd} grep "updated_at" + ... awk '{print $4}' + &{result} Run OS Command ${cmd} + ${first_update} Get From Dictionary ${result} stdout + Should Not Be Equal ${created_at} ${first_update} + ${openstack_cmd} Set Variable openstack image set + ${cmd} Catenate ${openstack_cmd} --name ${cirros_image_name} + ... ${cirros_image_name_tmp} + Run OS Command ${cmd} True + ${openstack_cmd} Catenate openstack image show + ... ${cirros_image_name} + ${cmd} Catenate SEPARATOR=| ${openstack_cmd} grep "updated_at" + ... awk '{print $4}' + &{result} Run OS Command ${cmd} + ${second_update} Get From Dictionary ${result} stdout + Should Not Be Equal ${first_update} ${second_update} + +Update Image Disk Ram Size + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Update image disk size and ram size. + ${openstack_cmd} Catenate openstack image show + ... ${cirros_image_name} + ${cmd} Catenate SEPARATOR=| ${openstack_cmd} grep "updated_at" + ... awk '{print $4}' + &{result} Run OS Command ${cmd} + ${updated_at} Get From Dictionary ${result} stdout + ${openstack_cmd} Set Variable openstack image set + ${cmd} Catenate ${openstack_cmd} --min-disk ${image_disk_size} + ... ${cirros_image_name} + Run OS Command ${cmd} True + ${openstack_cmd} Catenate openstack image show + ... ${cirros_image_name} + ${cmd} Catenate SEPARATOR=| ${openstack_cmd} grep "updated_at" + ... awk '{print $4}' + &{result} Run OS Command ${cmd} + ${first_update} Get From Dictionary ${result} stdout + Should Not Be Equal ${updated_at} ${first_update} + ${openstack_cmd} Set Variable openstack image set + ${cmd} Catenate ${openstack_cmd} --min-ram ${image_ram_size} + ... ${cirros_image_name} + Run OS Command ${cmd} True + ${openstack_cmd} Catenate openstack image show + ... ${cirros_image_name} + ${cmd} Catenate SEPARATOR=| ${openstack_cmd} grep "updated_at" + ... awk '{print $4}' + &{result} Run OS Command ${cmd} + ${second_update} Get From Dictionary ${result} stdout + Should Not Be Equal ${first_update} ${second_update} diff --git a/automated-robot-suite/Tests/Sanity-Test/Sanity-Platform/01-OpenStack-Pod-Healthy.robot b/automated-robot-suite/Tests/Sanity-Test/Sanity-Platform/01-OpenStack-Pod-Healthy.robot new file mode 100644 index 0000000..a9bd83e --- /dev/null +++ b/automated-robot-suite/Tests/Sanity-Test/Sanity-Platform/01-OpenStack-Pod-Healthy.robot @@ -0,0 +1,56 @@ +*** Settings *** +Documentation Check the health of PODs services; update and apply the +... helm chart via system application-apply. +... Author(s): +... - Hector Ivan Ramos Escobar +... - Juan Carlos Alonso + +Resource Resources/Utils.robot +Resource Resources/OpenStack.robot +Resource Resources/Kubernetes.robot +Suite Setup Utils.Stx Suite Setup +Suite TearDown Run Keywords +... Utils.Stx Suite TearDown + +*** Variables *** +${pod_yml} testpod.yaml +${pod_name} testpod +${chart_manifest} helm-charts-manifest.tgz +${host_image_path} /home/${CLI_USER_NAME}/ + +*** Test Cases *** +OpenStack PODs Healthy + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Check all OpenStack pods are healthy, in Running or + ... Completed state. + Check System Application Status stx-openstack applied + Check PODs Health + +Reapply STX OpenStack + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Re apply stx openstack application without any + ... modification to helm charts. + System Application Apply stx-openstack + +STX OpenStack Override Update Reset + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Helm override for OpenStack nova chart and reset. + Helm Override OpenStack stx-openstack nova openstack + System Application Apply stx-openstack + Check Helm Override OpenStack + +Kube System Services + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Check pods status and kube-system services are + ... displayed. + Check PODs Health + Check Kube System Services + +Create Check Delete POD + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Launch a POD via kubectl. + Put File %{PYTHONPATH}/Utils/${pod_yml} + ... ${host_image_path}/${pod_yml} + Create POD ${pod_yml} ${pod_name} + Wait Until Keyword Succeeds 1 min 5 sec Check POD ${pod_name} + Delete POD ${pod_name} diff --git a/automated-robot-suite/Tests/Sanity-Test/Sanity-Platform/02-Host-Management.robot b/automated-robot-suite/Tests/Sanity-Test/Sanity-Platform/02-Host-Management.robot new file mode 100644 index 0000000..23de0a3 --- /dev/null +++ b/automated-robot-suite/Tests/Sanity-Test/Sanity-Platform/02-Host-Management.robot @@ -0,0 +1,81 @@ +*** Settings *** +Documentation Add hosts and perform swacts to test host management. +... Author(s): +... - Hector Ivan Ramos Escobar +... - Juan Carlos Alonso + +Resource Resources/Provisioning.robot +Resource Resources/Utils.robot +Resource Resources/HostManagement.robot +Resource Resources/OpenStack.robot +Suite Setup Utils.Stx Suite Setup +Suite TearDown Run Keywords +... Utils.Stx Suite TearDown + +*** Variables *** +${controller_0} controller-0 +${controller_1} controller-1 +${add_error_msg} Host-add Rejected: Adding a host on a simplex system +... is not allowed. +${swact_error_msg} Swact action not allowed for a simplex system. +${lock_error_msg} Rejected: Can not lock an active controller. + +*** Test Cases *** +Add Controller Host Simplex + [Tags] Simplex + [Documentation] Try to add a new controller on a Simplex + ... configuration, expect to fail. + &{result} Run Command system host-add -n ${controller_1} + ${output} Get From Dictionary ${result} stderr + Should Contain ${output} ${add_error_msg} + +Swact Controller Host Simplex + [Tags] Simplex + [Documentation] Try to perform a swact controller on a Simplex + ... configuration, expect to fail. + &{result} Run Command system host-swact ${controller_0} + ${output} Get From Dictionary ${result} stderr + Should Contain ${output} ${swact_error_msg} + +Lock Active Controller + [Tags] Duplex MN-Local MN-External + [Documentation] Try to perform a lock to the Active controller + ${system_cmd} Catenate SEPARATOR=| system host-show ${controller_0} + ... grep capabilities awk -F"'" '{print$8}' + &{result} Run Command ${system_cmd} + ${personality} Get From Dictionary ${result} stdout + ${active_controller} Set Variable If + ... '${personality}'=='Controller-Active' controller-0 controller-1 + &{result} Run Command system host-lock ${active_controller} + ${output} Get From Dictionary ${result} stderr + Should Contain ${output} ${lock_error_msg} + +Lock Unlock Standby Controller + [Tags] Duplex MN-Local MN-External + [Documentation] Perform a lock/unlock to the Standby controller + ${system_cmd} Catenate SEPARATOR=| system host-show ${controller_0} + ... grep capabilities awk -F"'" '{print$8}' + &{result} Run Command ${system_cmd} + ${personality} Get From Dictionary ${result} stdout + ${standby_controller} Set Variable If + ... '${personality}'=='Controller-Standby' controller-0 controller-1 + Lock Node ${standby_controller} + Unlock Controller ${standby_controller} + +Lock Unlock Compute Hosts + [Tags] MN-Local MN-External + [Documentation] Perform a lock/unlock to the compute nodes + ${computes} = Get Compute Nodes + Sort List ${computes} + : FOR ${compute} IN @{computes} + \ Lock Node ${compute} + \ Unlock Compute ${compute} + +Lock Unlock Storage Hosts + [Tags] MN-External + [Documentation] Perform a lock/unlock to the storage nodes + ${storages} = Get Storage Nodes + Sort List ${storages} + : FOR ${storage} IN @{storages} + \ Lock Node ${storage} + \ Unlock Storage ${storage} diff --git a/automated-robot-suite/Tests/Setup.robot b/automated-robot-suite/Tests/Setup.robot new file mode 100644 index 0000000..cb33f19 --- /dev/null +++ b/automated-robot-suite/Tests/Setup.robot @@ -0,0 +1,118 @@ +*** Settings *** +Documentation Install and configure StarlingX ISO. +... Author(s): +... - Jose Perez Carranza +... - Humberto Perez Rodriguez +... - Juan Carlos Alonso + +Library SSHLibrary +Library Collections +Library OperatingSystem +Library Process +Library String +Library Qemu/qemu_setup.py +Library Libraries/iso_setup.py +Library Libraries/common.py +Library Libraries/pxe_server.py +Resource Resources/Utils.robot +Resource Resources/Provisioning.robot +Variables Variables/config_init.py Config +... %{PYTHONPATH}/Config/config.ini +Suite TearDown Utils.Stx Suite TearDown + +*** Variables *** +${destination} /home/${CLI_USER_NAME}/localhost.yml +${source} %{PYTHONPATH}/Config/${Config.general.CONFIGURATION_FILE} +${qemu_script} %{PYTHONPATH}/Qemu/qemu_setup.py +${iso} %{PYTHONPATH}/${STX_ISO_FILE} +${yaml} %{PYTHONPATH}/${CONFIG.general.ENV_YAML_FILE} +${kernel_option} ${CONFIG.iso_installer.KERNEL_OPTION} +${source_pkg} /var/www/html/stx/bootimage/Packages +${source_repo} /var/www/html/stx/bootimage/repodata +${password} ${Config.credentials.STX_DEPLOY_USER_PSWD} + +*** Test Cases *** +Qemu Libvirt VMs Setup Virtual + [Tags] Simplex Duplex MN-Local MN-External virtual + [Documentation] Qemu-Libvirt VMs setup and configuration for + ... StarlingX virtual deployment. + # -- Install ISO on a VM + ${result} Run Process python ${qemu_script} -i ${iso} -c ${yaml} + ... shell=True + log ${result.stdout} + log ${result.stderr} + Log To Console ${result.stderr} + Should Be Equal As Integers ${result.rc} 0 + +GRUB Checker For BIOS Virtual + [Tags] Simplex Duplex MN-Local MN-External virtual + [Documentation] Check grub cmd boot line against the ones in StarlingX + ... ISO file. + ${grub_command_line} Get Cmd Boot Line + ${status} Grub Checker ${iso} vbios ${kernel_option} + ... ${grub_command_line} + Should Be Equal As Strings ${status} match + ... msg="Kernel boot option does not match" values=False + +Install ISO Virtual + [Tags] Simplex Duplex MN-Local MN-External virtual + [Documentation] Installation of controller node and define the + ... connection to be used on other test cases. + # -- Install ISO on a VM + ${controller_connection} Install Iso + Set Suite Variable ${controller_connection} + +Check ISO Basic Mounting BareMetal + [Tags] Simplex Duplex MN-Local MN-External baremetal + [Documentation] Test basic ISO structure and funcntionality. + Mount Iso On Pxe ${iso} + +Install ISO BareMetal + [Tags] Simplex Duplex MN-Local MN-External baremetal + [Documentation] Installation of controller node and define the + ... connection to be used on other test cases. + ${master_controller} Install Iso Master Controller + Run Keyword If '${CONFIGURATION_TYPE}'!='Simplex' + ... Turn Off Installation Nodes + +Ansible Bootstrap Configuration + [Tags] Simplex Duplex MN-Local MN-External virtual baremetal + [Documentation] Configure controller with local bootstrap playbook. + # -- Copy localhost.yml file to controller + Wait Until Keyword Succeeds 5 min 5 sec + ... Connect to Controller Node ${CLI_USER_NAME} ${CLI_USER_PASS} + ... ${CONFIG.general.IP_UNIT_0_ADDRESS} + SSHLibrary.Put File ${source} ${destination} + ${sed_cmd} Catenate + ... sed -i 's/ANSIBLE_PASS/${password}/' ${destination} + Run Command ${sed_cmd} + ${sed_cmd} Catenate + ... sed -i 's/ADMIN_PASS/${password}/' ${destination} + Run Command ${sed_cmd} + ${bootstrap} Set Variable + ... /usr/share/ansible/stx-ansible/playbooks/bootstrap/bootstrap.yml + Run Command ansible-playbook ${bootstrap} True 3600 ~$ + +Copy Install Packages + [Tags] Duplex MN-Local MN-External baremetal + [Documentation] Copy packages required to install secondary nodes. + # -- Copy required packages post install --Workaround for pxe install-- + Wait Until Keyword Succeeds 5 min 5 sec + ... Connect to Controller Node ${CLI_USER_NAME} ${CLI_USER_PASS} + ... ${CONFIG.general.IP_UNIT_0_ADDRESS} + # -- Get current release + ${cmd_current_version} Catenate SEPARATOR=| cat /etc/build.info + ... grep SW_VERSION awk '{ split($1, v, "="); print v[2]}' + &{result} Run Command ${cmd_current_version} True + ${current_version} Get From Dictionary ${result} stdout + # -- Transfer directories with packages + ${destination_dir} Set Variable /home/${CLI_USER_NAME}/ + ${destination_move} Set Variable + ... /www/pages/feed/rel-${${current_version.strip('"')}} + SSHLibrary.Put Directory ${source_pkg} ${destination_dir} mode=0755 + SSHLibrary.Put Directory ${source_repo} ${destination_dir} mode=0755 + Execute Sudo Command + ... mv ${destination_dir}/Packages ${destination_move}/Packages + Execute Sudo Command + ... mv ${destination_dir}/repodata ${destination_move}/repodata + SSHLibrary.Close Connection diff --git a/automated-robot-suite/Tests/Stress-Test/01-Stress-Instance-From-Image.robot b/automated-robot-suite/Tests/Stress-Test/01-Stress-Instance-From-Image.robot new file mode 100644 index 0000000..976b02a --- /dev/null +++ b/automated-robot-suite/Tests/Stress-Test/01-Stress-Instance-From-Image.robot @@ -0,0 +1,184 @@ +*** Settings *** +Documentation Tests to create and stress instances from an image, perform +... different power status and set properties, using Cirros OS +... Author(s): +... - Juan Carlos Alonso juan.carlos.alonso@intel.com + +Resource Resources/Utils.robot +Resource Resources/OpenStack.robot +Resource Resources/Stress.robot +Suite Setup Utils.Stx Suite Setup +Suite TearDown Run Keywords +... OpenStack.Openstack Cleanup All +... Utils.Stx Suite TearDown + +*** Variables *** +${cirros_image} ${CIRROS_FILE} +${cirros_image_name} cirros +${cirros_flavor_name} f1.small +${cirros_flavor_name_2} f2.small +${cirros_flavor_ram} 2048 +${cirros_flavor_disk} 20 +${cirros_flavor_vcpus} 1 +${cirros_instance_name} vm-cirros +${network_name} network-1 +${subnet_name} subnet-1 +${disk_format} qcow2 +${subnet_range} 192.168.0.0/24 +${subnet_extras} --ip-version 4 --dhcp ${subnet_name} +${flavor_property_1} --property sw:wrs:guest:heartbeat='false' +${flavor_property_2} --property hw:cpu_policy='shared' +${instance_property_1} --property sw:wrs:auto_recovery +${instance_property_2} --property hw:wrs:live_migration_max_downtime +${instance_property_3} --property hw:wrs:live_migration_timeout +${host_image_path} /home/${CLI_USER_NAME}/ + +*** Test Cases *** +Create Flavor for Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Create flavor with or without properties to be used + ... to launch Cirros instances. + ${properties} Catenate ${flavor_property_1} ${flavor_property_2} + Create Flavor ${cirros_flavor_ram} ${cirros_flavor_vcpus} + ... ${cirros_flavor_disk} ${properties} ${cirros_flavor_name} + +Create Image for Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Create image with or without properties to be used + ... to launch Cirros instances. + Put File %{PYTHONPATH}/${cirros_image} + ... ${host_image_path}/${cirros_image} + Create Image ${host_image_path}/${cirros_image} ${disk_format} + ... ${cirros_image_name} + +Create Network for Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Create network to be used to launch Cirros instances. + Create Network ${network_name} + Create Subnet ${network_name} ${subnet_range} ${subnet_extras} + +Launch Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Launch 9 Cirros instances. + :FOR ${i} IN RANGE 1 10 + \ Create Instance ${network_name} ${cirros_instance_name}-${i} + ... ${cirros_image_name} ${cirros_flavor_name} + +Suspend Resume Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Suspend and Resume all Cirros instances 10 times. + ${openstack_cmd} Set Variable openstack server list + ${cmd} Catenate SEPARATOR=| ${openstack_cmd} awk '{print$4}' + ... grep -v "Name" + &{result} Run OS Command ${cmd} True + @{vm_list} Convert Response To List ${result} + : FOR ${vm} IN @{vm_list} + \ Stress Suspend Resume Instance ${vm} + +Set Error Active Flags Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Set 'Error' and 'Active' flags to all Cirros instances + ... 10 times. + ${openstack_cmd} Set Variable openstack server list + ${cmd} Catenate SEPARATOR=| ${openstack_cmd} awk '{print$4}' + ... grep -v "Name" + &{result} Run OS Command ${cmd} True + @{vm_list} Convert Response To List ${result} + : FOR ${vm} IN @{vm_list} + \ Stress Set Error Active Instance ${vm} + +Pause Unpause Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Pause and Unpause all Cirros instances 10 times. + ${openstack_cmd} Set Variable openstack server list + ${cmd} Catenate SEPARATOR=| ${openstack_cmd} awk '{print$4}' + ... grep -v "Name" + &{result} Run OS Command ${cmd} True + @{vm_list} Convert Response To List ${result} + : FOR ${vm} IN @{vm_list} + \ Stress Pause Unpause Instance ${vm} + +Stop Start Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Stop and Start all Cirros instances 10 times. + ${openstack_cmd}= Set Variable openstack server list + ${cmd} Catenate SEPARATOR=| ${openstack_cmd} awk '{print$4}' + ... grep -v "Name" + &{result} Run OS Command ${cmd} True + @{vm_list} Convert Response To List ${result} + : FOR ${vm} IN @{vm_list} + \ Stress Stop Start Instance ${vm} + +Lock Unlock Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Lock and Unlock all Cirros instances 10 times. + ${openstack_cmd} Set Variable openstack server list + ${cmd} Catenate SEPARATOR=| ${openstack_cmd} awk '{print$4}' + ... grep -v "Name" + &{result} Run OS Command ${cmd} True + @{vm_list} Convert Response To List ${result} + : FOR ${vm} IN @{vm_list} + \ Stress Lock Unlock Instance ${vm} + +Reboot Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Reboot all Cirros instances 10 times. + ${openstack_cmd} Set Variable openstack server list + ${cmd} Catenate SEPARATOR=| ${openstack_cmd} awk '{print$4}' + ... grep -v "Name" + &{result} Run OS Command ${cmd} True + @{vm_list} Convert Response To List ${result} + : FOR ${vm} IN @{vm_list} + \ Stress Reboot Instance ${vm} + +Rebuild Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Rebuild all Cirros instances 10 times. + ${openstack_cmd} Set Variable openstack server list + ${cmd} Catenate SEPARATOR=| ${openstack_cmd} awk '{print$4}' + ... grep -v "Name" + &{result} Run OS Command ${cmd} True + @{vm_list} Convert Response To List ${result} + : FOR ${vm} IN @{vm_list} + \ Stress Rebuild Instance ${vm} + +Resize Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Resize all Cirros instances 10 times. + Create Flavor ${cirros_flavor_ram} ${cirros_flavor_vcpus} + ... ${cirros_flavor_disk} ${cirros_flavor_name_2} + ${openstack_cmd} Set Variable openstack server list + ${cmd} Catenate SEPARATOR=| ${openstack_cmd} awk '{print$4}' + ... grep -v "Name" + &{result} Run OS Command ${cmd} True + @{vm_list} Convert Response To List ${result} + : FOR ${vm} IN @{vm_list} + \ Stress Resize Instance ${vm} ${cirros_flavor_name} + ... ${cirros_flavor_name_2} + +Set Unset Properties Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Set Unset properties to all Cirros instances 10 times. + ${properties} Catenate ${instance_property_1}='true' + ... ${instance_property_2}='500' ${instance_property_3}='180' + ${properties_2} Catenate ${instance_property_1} + ... ${instance_property_2} ${instance_property_3} + ${openstack_cmd} Set Variable openstack server list + ${cmd} Catenate SEPARATOR=| ${openstack_cmd} awk '{print$4}' + ... grep -v "Name" + &{result} Run OS Command ${cmd} True + @{vm_list} Convert Response To List ${result} + : FOR ${vm} IN @{vm_list} + \ Stress Set Property Instance ${vm} ${properties} + ... ${properties_2} + +Evacuate Instances From Hosts + [Tags] Duplex MN-Local MN-External + [Documentation] Evacuate all Cirros instances from computes + ... or controllers 10 times. + Run Keyword If '${CONFIGURATION_TYPE}' == 'Duplex' + ... Run Keywords Evacuate Instances controller-0 AND + ... Evacuate Instances controller-1 + ... ELSE IF '${CONFIGURATION_TYPE}' == 'MN-Local' or '${CONFIGURATION_TYPE}' == 'MN-External' + ... Run Keywords Evacuate Instances compute-0 AND + ... Evacuate Instances compute-1 diff --git a/automated-robot-suite/Tests/Stress-Test/02-Stress-Instance-From-Volume.robot b/automated-robot-suite/Tests/Stress-Test/02-Stress-Instance-From-Volume.robot new file mode 100644 index 0000000..74066b7 --- /dev/null +++ b/automated-robot-suite/Tests/Stress-Test/02-Stress-Instance-From-Volume.robot @@ -0,0 +1,202 @@ +*** Settings *** +Documentation Tests to create and stress instances from volume, perform +... different power status and set properties, using Cirros OS. +... Author(s): +... - Juan Carlos Alonso juan.carlos.alonso@intel.com + +Resource Resources/Utils.robot +Resource Resources/OpenStack.robot +Resource Resources/Stress.robot +Suite Setup Utils.Stx Suite Setup +Suite TearDown Run Keywords +... OpenStack.Openstack Cleanup All +... Utils.Stx Suite TearDown + +*** Variables *** +${cirros_image} ${CIRROS_FILE} +${cirros_image_name} cirros +${cirros_flavor_name} f1.small +${cirros_flavor_name_2} f2.small +${cirros_flavor_ram} 2048 +${cirros_flavor_disk} 20 +${cirros_flavor_vcpus} 1 +${cirros_instance_name} vm-cirros +${cirros_volume_size} 20 +${cirros_volume_name} vol-cirros +${network_name} network-1 +${subnet_name} subnet-1 +${disk_format} qcow2 +${subnet_range} 192.168.0.0/24 +${subnet_extras} --ip-version 4 --dhcp ${subnet_name} +${flavor_property_1} --property sw:wrs:guest:heartbeat='false' +${flavor_property_2} --property hw:cpu_policy='shared' +${instance_property_1} --property sw:wrs:auto_recovery +${instance_property_2} --property hw:wrs:live_migration_max_downtime +${instance_property_3} --property hw:wrs:live_migration_timeout +${host_image_path} /home/${CLI_USER_NAME}/ + +*** Test Cases *** +Create Flavor for Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Create flavor with or without properties to be used + ... to launch Cirros instances. + ${properties} Catenate ${flavor_property_1} ${flavor_property_2} + Create Flavor ${cirros_flavor_ram} ${cirros_flavor_vcpus} + ... ${cirros_flavor_disk} ${cirros_flavor_name} + +Create Image for Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Create image with or without properties to be used + ... to launch Cirros instances. + Put File %{PYTHONPATH}/${cirros_image} + ... ${host_image_path}/${cirros_image} + Create Image ${host_image_path}/${cirros_image} ${disk_format} + ... ${cirros_image_name} + +Create Network for Instance + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Create network to be used to launch Cirros + ... instances. + Create Network ${network_name} + Create Subnet ${network_name} ${subnet_range} ${subnet_extras} + +Create Volumes for Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Create volumes with or without properties to be used to + ... to launch Cirros instances. + :FOR ${i} IN RANGE 1 10 + \ Create Volume ${cirros_volume_size} ${cirros_image_name} + ... --bootable ${cirros_volume_name}-${i} + +Launch Instances From Volumes + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Launch 9 Cirros instances from volumes. + ${i} Set Variable 1 + ${openstack_cmd}= Set Variable openstack volume list + ${cmd} Catenate SEPARATOR=| ${openstack_cmd} awk '{print$4}' + ... grep -v "Name" + &{result} Run OS Command ${cmd} True + @{vol_list} Convert Response To List ${result} + : FOR ${vol} IN @{vol_list} + \ Create Instance From Volume ${network_name} + ... ${cirros_instance_name}-${i} ${vol} ${cirros_flavor_name} + \ ${i} Evaluate ${i} + 1 + +Suspend Resume Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Suspend and Resume all Cirros instances 10 times. + ${openstack_cmd} Set Variable openstack server list + ${cmd} Catenate SEPARATOR=| ${openstack_cmd} awk '{print$4}' + ... grep -v "Name" + &{result} Run OS Command ${cmd} True + @{vm_list} Convert Response To List ${result} + : FOR ${vm} IN @{vm_list} + \ Stress Suspend Resume Instance ${vm} + +Set Error Active Flags Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Set 'Error' and 'Active' flags to all Cirros + ... instances 10 times. + ${openstack_cmd}= Set Variable openstack server list + ${cmd} Catenate SEPARATOR=| ${openstack_cmd} awk '{print$4}' + ... grep -v "Name" + &{result} Run OS Command ${cmd} True + @{vm_list} Convert Response To List ${result} + : FOR ${vm} IN @{vm_list} + \ Stress Set Error Active Instance ${vm} + +Pause Unpause Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Pause and Unpause all Cirros instances 10 times. + ${openstack_cmd} Set Variable openstack server list + ${cmd} Catenate SEPARATOR=| ${openstack_cmd} awk '{print$4}' + ... grep -v "Name" + &{result} Run OS Command ${cmd} True + @{vm_list} Convert Response To List ${result} + : FOR ${vm} IN @{vm_list} + \ Stress Suspend Resume Instance ${vm} + +Stop Start Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Stop and Start all Cirros instances. + ${openstack_cmd} Set Variable openstack server list + ${cmd} Catenate SEPARATOR=| ${openstack_cmd} awk '{print$4}' + ... grep -v "Name" + &{result} Run OS Command ${cmd} True + @{vm_list} Convert Response To List ${result} + : FOR ${vm} IN @{vm_list} + \ Stress Stop Start Instance ${vm} + +Lock Unlock Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Lock and Unlock all Cirros instances 10 times. + ${openstack_cmd} Set Variable openstack server list + ${cmd} Catenate SEPARATOR=| ${openstack_cmd} awk '{print$4}' + ... grep -v "Name" + &{result} Run OS Command ${cmd} True + @{vm_list} Convert Response To List ${result} + : FOR ${vm} IN @{vm_list} + \ Stress Lock Unlock Instance ${vm} + +Reboot Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Reboot all Cirros instances. + ${openstack_cmd} Set Variable openstack server list + ${cmd} Catenate SEPARATOR=| ${openstack_cmd} awk '{print$4}' + ... grep -v "Name" + &{result} Run OS Command ${cmd} True + @{vm_list} Convert Response To List ${result} + : FOR ${vm} IN @{vm_list} + \ Stress Reboot Instance ${vm} + +Rebuild Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Rebuild all Cirros instances. + ${openstack_cmd} Set Variable openstack server list + ${cmd} Catenate SEPARATOR=| ${openstack_cmd} awk '{print$4}' + ... grep -v "Name" + &{result} Run OS Command ${cmd} True + @{vm_list} Convert Response To List ${result} + : FOR ${vm} IN @{vm_list} + \ Stress Rebuild Instance From Volume ${vm} ${cirros_image_name} + +Resize Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Resize all Cirros instances. + Create Flavor ${cirros_flavor_ram} ${cirros_flavor_vcpus} + ... ${cirros_flavor_disk} ${cirros_flavor_name_2} + ${openstack_cmd} Set Variable openstack server list + ${cmd} Catenate SEPARATOR=| ${openstack_cmd} awk '{print$4}' + ... grep -v "Name" + &{result} Run OS Command ${cmd} True + @{vm_list} Convert Response To List ${result} + : FOR ${vm} IN @{vm_list} + \ Stress Resize Instance ${vm} ${cirros_flavor_name} + ... ${cirros_flavor_name_2} + +Set Unset Properties Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Set Unset properties to all Cirros instances 10 times. + ${properties} Catenate ${instance_property_1}='true' + ... ${instance_property_2}='500' ${instance_property_3}='180' + ${properties_2} Catenate ${instance_property_1} + ... ${instance_property_2} ${instance_property_3} + ${openstack_cmd} Set Variable openstack server list + ${cmd} Catenate SEPARATOR=| ${openstack_cmd} awk '{print$4}' + ... grep -v "Name" + &{result} Run OS Command ${cmd} True + @{vm_list} Convert Response To List ${result} + : FOR ${vm} IN @{vm_list} + \ Stress Set Property Instance ${vm} ${properties} + ... ${properties_2} + +Evacuate Instances From Hosts + [Tags] Duplex MN-Local MN-External + [Documentation] Evacuate all Cirros instances from computes + ... or controllers 10 times. + Run Keyword If '${CONFIGURATION_TYPE}' == 'Duplex' + ... Run Keywords Evacuate Instances controller-0 AND + ... Evacuate Instances controller-1 + ... ELSE IF '${CONFIGURATION_TYPE}' == 'MN-Local' or '${CONFIGURATION_TYPE}' == 'MN-External' + ... Run Keywords Evacuate Instances compute-0 AND + ... Evacuate Instances compute-1 diff --git a/automated-robot-suite/Tests/Stress-Test/03-Stress-Instance-From-Snapshot.robot b/automated-robot-suite/Tests/Stress-Test/03-Stress-Instance-From-Snapshot.robot new file mode 100644 index 0000000..a7a19db --- /dev/null +++ b/automated-robot-suite/Tests/Stress-Test/03-Stress-Instance-From-Snapshot.robot @@ -0,0 +1,212 @@ +*** Settings *** +Documentation Tests to create and stress instances from an snapshot, perform +... different power status and set properties, using Cirros OS. +... Author(s): +... - Juan Carlos Alonso + +Library SSHLibrary +Resource Resources/Utils.robot +Resource Resources/OpenStack.robot +Resource Resources/Stress.robot +Suite Setup Utils.Stx Suite Setup +Suite TearDown Run Keywords +... OpenStack.Openstack Cleanup All +... Utils.Stx Suite TearDown + +*** Variables *** +${cirros_image} ${CIRROS_FILE} +${cirros_image_name} cirros +${cirros_flavor_name} f1.small +${cirros_flavor_name_2} f2.small +${cirros_flavor_ram} 2048 +${cirros_flavor_disk} 20 +${cirros_flavor_vcpus} 1 +${cirros_instance_name} vm-cirros +${cirros_volume_size} 20 +${cirros_volume_name} vol-cirros +${cirros_snapshot_name} snap-cirros +${cirros_snapshot_size} 20 +${network_name} network-1 +${subnet_name} subnet-1 +${disk_format} qcow2 +${subnet_range} 192.168.0.0/24 +${subnet_extras} --ip-version 4 --dhcp ${subnet_name} +${flavor_property_1} --property sw:wrs:guest:heartbeat='false' +${flavor_property_2} --property hw:cpu_policy='shared' +${instance_property_1} --property sw:wrs:auto_recovery +${instance_property_2} --property hw:wrs:live_migration_max_downtime +${instance_property_3} --property hw:wrs:live_migration_timeout +${host_image_path} /home/${CLI_USER_NAME}/ + +*** Test Cases *** +Create Flavor for Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Create flavor with or without properties to be used + ... to launch Cirros instances. + ${properties} Catenate ${flavor_property_1} ${flavor_property_2} + Create Flavor ${cirros_flavor_ram} ${cirros_flavor_vcpus} + ... ${cirros_flavor_disk} ${cirros_flavor_name} + +Create Image for Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Create image with or without properties to be used + ... to launch Cirros instances. + Put File %{PYTHONPATH}/${cirros_image} + ... ${host_image_path}/${cirros_image} + Create Image ${host_image_path}/${cirros_image} ${disk_format} + ... ${cirros_image_name} + +Create Network for Instance + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Create network to be used to launch Cirros instances. + Create Network ${network_name} + Create Subnet ${network_name} ${subnet_range} ${subnet_extras} + +Create Volume for Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Create volume with or without properties to be used + ... to launch Cirros instances. + Create Volume ${cirros_volume_size} ${cirros_image_name} + ... --bootable ${cirros_volume_name} + +Create Snapshots for Instance + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Create snapshots with or without properties to be used + ... to launch Cirros instances. + :FOR ${i} IN RANGE 1 10 + \ Create Snapshot ${cirros_volume_name} + ... ${cirros_snapshot_name}-${i} + +Launch Instances From Snapshots + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Launch 9 Cirros instances from snapshots. + ${i} Set Variable 1 + ${openstack_cmd} Set Variable openstack volume snapshot list + ${cmd} Catenate SEPARATOR=| ${openstack_cmd} awk '{print$4}' + ... grep -v "Name" + &{result} Run OS Command ${cmd} True + @{snap_list} Convert Response To List ${result} + : FOR ${snap} IN @{snap_list} + \ Create Instance From Snapshot ${network_name} + ... ${cirros_image_name} ${cirros_instance_name}-${i} ${snap} + ... ${cirros_snapshot_size} ${cirros_flavor_name} + \ ${i} Evaluate ${i} + 1 + +Suspend Resume Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Suspend and Resume all Cirros instances 10 times. + ${openstack_cmd} Set Variable openstack server list + ${cmd} Catenate SEPARATOR=| ${openstack_cmd} awk '{print$4}' + ... grep -v "Name" + &{result} Run OS Command ${cmd} True + @{vm_list} Convert Response To List ${result} + : FOR ${vm} IN @{vm_list} + \ Stress Suspend Resume Instance ${vm} + +Set Error Active Flags Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Set 'Error' and 'Active' flags all Cirros instances + ... 10 times. + ${openstack_cmd} Set Variable openstack server list + ${cmd} Catenate SEPARATOR=| ${openstack_cmd} awk '{print$4}' + ... grep -v "Name" + &{result} Run OS Command ${cmd} True + @{vm_list} Convert Response To List ${result} + : FOR ${vm} IN @{vm_list} + \ Stress Set Error Active Instance ${vm} + +Pause Unpause Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Pause and Unpause all Cirros instances 10 times. + ${openstack_cmd} Set Variable openstack server list + ${cmd} Catenate SEPARATOR=| ${openstack_cmd} awk '{print$4}' + ... grep -v "Name" + &{result} Run OS Command ${cmd} True + @{vm_list} Convert Response To List ${result} + : FOR ${vm} IN @{vm_list} + \ Stress Suspend Resume Instance ${vm} + +Stop Start Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Stop and Start all Cirros instances 10 times. + ${openstack_cmd} Set Variable openstack server list + ${cmd} Catenate SEPARATOR=| ${openstack_cmd} awk '{print$4}' + ... grep -v "Name" + &{result} Run OS Command ${cmd} True + @{vm_list} Convert Response To List ${result} + : FOR ${vm} IN @{vm_list} + \ Stress Stop Start Instance ${vm} + +Lock Unlock Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Lock and Unlock all Cirros instances 10 times. + ${openstack_cmd} Set Variable openstack server list + ${cmd} Catenate SEPARATOR=| ${openstack_cmd} awk '{print$4}' + ... grep -v "Name" + &{result} Run OS Command ${cmd} True + @{vm_list} Convert Response To List ${result} + : FOR ${vm} IN @{vm_list} + \ Stress Lock Unlock Instance ${vm} + +Reboot Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Reboot all Cirros instances 10 times. + ${openstack_cmd} Set Variable openstack server list + ${cmd} Catenate SEPARATOR=| ${openstack_cmd} awk '{print$4}' + ... grep -v "Name" + &{result} Run OS Command ${cmd} True + @{vm_list} Convert Response To List ${result} + : FOR ${vm} IN @{vm_list} + \ Stress Reboot Instance ${vm} + +Rebuild Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Rebuild all Cirros instances 10 times. + ${openstack_cmd} Set Variable openstack server list + ${cmd} Catenate SEPARATOR=| ${openstack_cmd} awk '{print$4}' + ... grep -v "Name" + &{result} Run OS Command ${cmd} True + @{vm_list} Convert Response To List ${result} + : FOR ${vm} IN @{vm_list} + \ Stress Rebuild Instance From Volume ${vm} ${cirros_image_name} + +Resize Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Resize all Cirros instances 10 times. + Create Flavor ${cirros_flavor_ram} ${cirros_flavor_vcpus} + ... ${cirros_flavor_disk} ${cirros_flavor_name_2} + ${openstack_cmd} Set Variable openstack server list + ${cmd} Catenate SEPARATOR=| ${openstack_cmd} awk '{print$4}' + ... grep -v "Name" + &{result} Run OS Command ${cmd} True + @{vm_list} Convert Response To List ${result} + : FOR ${vm} IN @{vm_list} + \ Stress Resize Instance ${vm} ${cirros_flavor_name} + ... ${cirros_flavor_name_2} + +Set Unset Properties Instances + [Tags] Simplex Duplex MN-Local MN-External + [Documentation] Set Unset properties of all Cirros instances 10 times. + ${properties} Catenate ${instance_property_1}='true' + ... ${instance_property_2}='500' ${instance_property_3}='180' + ${properties_2} Catenate ${instance_property_1} + ... ${instance_property_2} ${instance_property_3} + ${openstack_cmd}= Set Variable openstack server list + ${cmd} Catenate SEPARATOR=| ${openstack_cmd} awk '{print$4}' + ... grep -v "Name" + &{result} Run OS Command ${cmd} True + @{vm_list} Convert Response To List ${result} + : FOR ${vm} IN @{vm_list} + \ Stress Set Property Instance ${vm} ${properties} + ... ${properties_2} + +Evacuate Instances From Hosts + [Tags] Duplex MN-Local MN-External + [Documentation] Evacuate all Cirros instances from computes or + ... controllers 10 times. + Run Keyword If '${CONFIGURATION_TYPE}' == 'Duplex' + ... Run Keywords Evacuate Instances controller-0 AND + ... Evacuate Instances controller-1 + ... ELSE IF '${CONFIGURATION_TYPE}' == 'MN-Local' or '${CONFIGURATION_TYPE}' == 'MN-External' + ... Run Keywords Evacuate Instances compute-0 AND + ... Evacuate Instances compute-1