Resource KarafKeywords.robot
Resource OpenStackOperations.robot
Resource SSHKeywords.robot
-Variables ../variables/Variables.py
+Resource ../variables/Variables.robot
*** Variables ***
${default_devstack_prompt_timeout} 10s
${external_gateway} 10.10.10.250
${external_subnet_allocation_pool} start=10.10.10.2,end=10.10.10.249
${external_subnet} 10.10.10.0/24
-${default_timeout} 420s
+${TEMPEST_TIMEOUT} 420s
+${OS_CNTL_CONN_ID} None
+${OS_CMP1_CONN_ID} None
+${OS_CMP2_CONN_ID} None
+${OS_CNTL_IP} ${EMPTY}
+${OS_CMP1_IP} ${EMPTY}
+${OS_CMP2_IP} ${EMPTY}
+@{OS_ALL_IPS} @{EMPTY}
+@{OS_CMP_IPS} @{EMPTY}
*** Keywords ***
Run Tempest Tests
- [Arguments] ${tempest_regex} ${timeout}=${default_timeout} ${debug}=False
+ [Arguments] ${tempest_regex} ${timeout}=${TEMPEST_TIMEOUT} ${debug}=False
Run Keyword If "${debug}"=="False" Run Tempest Tests Without Debug ${tempest_regex} timeout=${timeout}
Run Keyword If "${debug}"=="True" Run Tempest Tests With Debug ${tempest_regex} timeout=${timeout}
Run Keyword If "${debug}"!="True" and "${debug}"!="False" Fail debug argument must be True or False
Run Tempest Tests Without Debug
- [Arguments] ${tempest_regex} ${tempest_directory}=${tempest_dir} ${timeout}=${default_timeout}
+ [Arguments] ${tempest_regex} ${tempest_directory}=${tempest_dir} ${timeout}=${TEMPEST_TIMEOUT}
[Documentation] Using ostestr will allow us to (by default) run tests in paralllel.
... Because of the parallel fashion, we must ensure there is no pause on teardown so that flag in tempest.conf is
... explicitly set to False.
Should Contain ${output} Failed: 0
Run Tempest Tests With Debug
- [Arguments] ${tempest_regex} ${tempest_directory}=${tempest_dir} ${timeout}=${default_timeout}
+ [Arguments] ${tempest_regex} ${tempest_directory}=${tempest_dir} ${timeout}=${TEMPEST_TIMEOUT}
[Documentation] After setting pause_teardown=True in tempest.conf, use the python -m testtools.run module to execute
... a single tempest test case. We need to run only one tempest test case at a time as there will
... be potentional for an unkown number of debug pdb() prompts to catch and continue if we are running multiple
Should Contain ${output} OK
Should Not Contain ${output} FAILED
+Suite Setup
+ OpenStackOperations.OpenStack Suite Setup
+ Log In To Tempest Executor And Setup Test Environment
+
Log In To Tempest Executor And Setup Test Environment
[Documentation] Initialize SetupUtils, open SSH connection to a devstack system and source the openstack
... credentials needed to run the tempest tests. The (sometimes empty) tempest blacklist file will be created
... and pushed to the tempest executor.
Create Blacklist File
- SetupUtils.Setup_Utils_For_Setup_And_Teardown
- # source_pwd is expected to exist in the below Create Network, Create Subnet keywords. Might be a bug.
- ${source_pwd} Set Variable yes
- Set Suite Variable ${source_pwd}
# Tempest tests need an existing external network in order to create routers.
Create Network ${external_net_name} --external --default --provider-network-type flat --provider-physical-network ${PUBLIC_PHYSICAL_NETWORK}
Create Subnet ${external_net_name} ${external_subnet_name} ${external_subnet} --gateway ${external_gateway} --allocation-pool ${external_subnet_allocation_pool}
SSHKeywords.Flexible SSH Login ${OS_USER}
Write Commands Until Prompt source ${DEVSTACK_DEPLOY_PATH}/openrc admin admin
Write Commands Until Prompt sudo rm -rf /opt/stack/tempest/.testrepository
- ${net_id}= Get Net Id ${external_net_name} ${control_node_conn_id}
+ ${net_id}= Get Net Id ${external_net_name}
Tempest Conf Add External Network And Floating Network Name ${net_id}
Tempest Conf Add External Network And Floating Network Name
Log File ${blacklist_file}
SSHKeywords.Copy File To Remote System ${OS_CONTROL_NODE_IP} ${blacklist_file} ${blacklist_file}
+Open Connection
+ [Arguments] ${name} ${ip}
+ ${conn_id} = SSHLibrary.Open Connection ${ip} prompt=${DEFAULT_LINUX_PROMPT}
+ SSHKeywords.Flexible SSH Login ${OS_USER} ${DEVSTACK_SYSTEM_PASSWORD}
+ BuiltIn.Set Suite Variable \${${name}} ${conn_id}
+ [Return] ${conn_id}
+
Devstack Suite Setup
- [Arguments] ${source_pwd}=no ${odl_ip}=${ODL_SYSTEM_IP}
- [Documentation] Login to the Openstack Control Node to run tempest suite
+ [Arguments] ${odl_ip}=${ODL_SYSTEM_IP}
+ [Documentation] Open connections to the nodes
+ Get DevStack Nodes Data
Create Session session http://${odl_ip}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS}
- ${devstack_conn_id}= SSHLibrary.Open Connection ${OS_CONTROL_NODE_IP} prompt=${DEFAULT_LINUX_PROMPT}
- Set Suite Variable ${devstack_conn_id}
- Set Suite Variable ${source_pwd}
- Log ${devstack_conn_id}
- SSHKeywords.Flexible SSH Login ${OS_USER} ${DEVSTACK_SYSTEM_PASSWORD}
- SSHLibrary.Set Client Configuration timeout=${default_devstack_prompt_timeout}
+ SSHLibrary.Set Default Configuration timeout=${default_devstack_prompt_timeout}
+ Run Keyword If 0 < ${NUM_OS_SYSTEM} Open Connection OS_CNTL_CONN_ID ${OS_CONTROL_NODE_IP}
+ Run Keyword If 1 < ${NUM_OS_SYSTEM} Open Connection OS_CMP1_CONN_ID ${OS_COMPUTE_1_IP}
+ Run Keyword If 2 < ${NUM_OS_SYSTEM} Open Connection OS_CMP2_CONN_ID ${OS_COMPUTE_2_IP}
Write Commands Until Prompt
[Arguments] ${cmd} ${timeout}=${default_devstack_prompt_timeout}
[Documentation] quick wrapper for Write and Read Until Prompt Keywords to make test cases more readable
- Log ${cmd}
SSHLibrary.Set Client Configuration timeout=${timeout}
SSHLibrary.Read
SSHLibrary.Write ${cmd};echo Command Returns $?
${output} = Write Commands Until Prompt ${cmd} ${timeout}
Log ${output}
[Return] ${output}
+
+Log Devstack Nodes Data
+ ${output} = BuiltIn.Catenate SEPARATOR=\n OS_CNTL_HOSTNAME: ${OS_CNTL_HOSTNAME} - OS_CNTL_IP: ${OS_CNTL_IP} - OS_CONTROL_NODE_IP: ${OS_CONTROL_NODE_IP} OS_CMP1_HOSTNAME: ${OS_CMP1_HOSTNAME} - OS_CMP1_IP: ${OS_CMP1_IP} - OS_COMPUTE_1_IP: ${OS_COMPUTE_1_IP} OS_CMP2_HOSTNAME: ${OS_CMP2_HOSTNAME} - OS_CMP2_IP: ${OS_CMP2_IP} - OS_COMPUTE_2_IP: ${OS_COMPUTE_2_IP} OS_ALL_IPS: @{OS_ALL_IPS}
+ ... OS_CMP_IPS: @{OS_CMP_IPS}
+ BuiltIn.Log DevStack Nodes Data:\n${output}
+
+Get DevStack Hostnames
+ [Documentation] Assign hostname global variables for DevStack nodes
+ ${OS_CNTL_HOSTNAME} = OpenStackOperations.Get Hypervisor Hostname From IP ${OS_CNTL_IP}
+ ${OS_CMP1_HOSTNAME} = OpenStackOperations.Get Hypervisor Hostname From IP ${OS_CMP1_IP}
+ ${OS_CMP2_HOSTNAME} = OpenStackOperations.Get Hypervisor Hostname From IP ${OS_CMP2_IP}
+ BuiltIn.Set Suite Variable ${OS_CNTL_HOSTNAME}
+ BuiltIn.Set Suite Variable ${OS_CMP1_HOSTNAME}
+ BuiltIn.Set Suite Variable ${OS_CMP2_HOSTNAME}
+
+Set Node Data For AllinOne Setup
+ [Documentation] Assign global variables for DevStack nodes where the Control Node enables Compute service also.
+ BuiltIn.Set Suite Variable @{OS_ALL_IPS} ${OS_CNTL_IP}
+
+Set Node Data For Control And Compute Node Setup
+ [Documentation] Assign global variables for DevStack nodes where the control node is also the compute
+ BuiltIn.Set Suite Variable ${OS_CMP1_IP} ${OS_CNTL_IP}
+ BuiltIn.Set Suite Variable ${OS_CMP2_IP} ${OS_COMPUTE_1_IP}
+ BuiltIn.Set Suite Variable @{OS_ALL_IPS} ${OS_CNTL_IP} ${OS_CMP2_IP}
+ BuiltIn.Set Suite Variable @{OS_CMP_IPS} ${OS_CMP1_IP} ${OS_CMP2_IP}
+
+Set Node Data For Control Only Node Setup
+ [Documentation] Assign global variables for DevStack nodes where the control node is different than the compute
+ BuiltIn.Set Suite Variable ${OS_CMP1_IP} ${OS_COMPUTE_1_IP}
+ BuiltIn.Set Suite Variable ${OS_CMP2_IP} ${OS_COMPUTE_2_IP}
+ BuiltIn.Set Suite Variable @{OS_ALL_IPS} ${OS_CNTL_IP} ${OS_CMP1_IP} ${OS_CMP2_IP}
+ BuiltIn.Set Suite Variable @{OS_CMP_IPS} ${OS_CMP1_IP} ${OS_CMP2_IP}
+
+Get DevStack Nodes Data
+ [Documentation] Assign global variables for DevStack nodes
+ BuiltIn.Set Suite Variable ${OS_CNTL_IP} ${OS_CONTROL_NODE_IP}
+ Run Keyword If ${NUM_OS_SYSTEM} == 1 Set Node Data For AllinOne Setup
+ ... ELSE IF ${NUM_OS_SYSTEM} == 2 Set Node Data For Control And Compute Node Setup
+ ... ELSE IF ${NUM_OS_SYSTEM} == 3 Set Node Data For Control Only Node Setup
+ Get DevStack Hostnames
+ Log Devstack Nodes Data