From 6fd49ca70df14b66ad116be38dbac66cac7e824b Mon Sep 17 00:00:00 2001 From: Sam Hague Date: Thu, 28 Sep 2017 17:12:22 -0400 Subject: [PATCH 1/1] common tempest in DevstackUtils Moved the tempest-specific functions from the test.robot file over to the othr tempest functions in DevstackUtils. This is in prep to add a single tempest test suite later. Change-Id: I90041a5300b7749216eddd6cfa72166567bbbefc Signed-off-by: Sam Hague --- csit/libraries/DevstackUtils.robot | 66 +++++++++++++++++++ csit/suites/openstack/tempest/tempest.robot | 73 +-------------------- 2 files changed, 68 insertions(+), 71 deletions(-) diff --git a/csit/libraries/DevstackUtils.robot b/csit/libraries/DevstackUtils.robot index eeb12adf9c..04d93c6cbe 100644 --- a/csit/libraries/DevstackUtils.robot +++ b/csit/libraries/DevstackUtils.robot @@ -15,6 +15,19 @@ Variables ../variables/Variables.py *** Variables *** ${default_devstack_prompt_timeout} 10s ${DEVSTACK_SYSTEM_PASSWORD} \ # set to empty, but provide for others to override if desired +${blacklist_file} /tmp/blacklist.txt +@{stable/newton_exclusion_regexes} ${EMPTY} +@{stable/ocata_exclusion_regexes} ${EMPTY} +@{stable/pike_exclusion_regexes} ${EMPTY} +@{master_exclusion_regexes} ${EMPTY} +${tempest_config_file} /opt/stack/tempest/etc/tempest.conf +${external_physical_network} physnet1 +${external_net_name} external-net +${external_subnet_name} external-subnet +# Parameter values below are based on releng/builder - changing them requires updates in releng/builder as well +${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 *** Keywords *** Run Tempest Tests @@ -47,6 +60,59 @@ Run Tempest Tests Should Contain ${results} Failed: 0 # TODO: also need to verify some non-zero pass count as well as other results are ok (e.g. skipped, etc) +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} + List Networks + ${control_node_conn_id}= SSHLibrary.Open Connection ${OS_CONTROL_NODE_IP} prompt=${DEFAULT_LINUX_PROMPT_STRICT} + 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} + Tempest Conf Add External Network ${net_id} + +Tempest Conf Add External Network + [Arguments] ${external_network_id} + [Documentation] Tempest will be run with a config file - this function will add the + ... given external network ID to the configuration file. + Modify Config In File On Existing SSH Connection ${tempest_config_file} set network public_network_id ${external_network_id} + Modify Config In File On Existing SSH Connection ${tempest_config_file} set DEFAULT debug False + Modify Config In File On Existing SSH Connection ${tempest_config_file} set DEFAULT log_level INFO + Write Commands Until Prompt sudo cat ${tempest_config_file} + Write Commands Until Prompt sudo chmod 777 ${tempest_config_file} + +Modify Config In File On Existing SSH Connection + [Arguments] ${config_file} ${modifier} ${config_section} ${config_key} ${config_value}=${EMPTY} + [Documentation] uses crudini to populate oslo cofg file. + # this keyword is only one line so seems like extra overhead, but this may be a good candidate to move + # to a library at some point, when/if other suites need to use it, so wanted to make it generic. + Write Commands Until Prompt sudo -E crudini --${modifier} ${config_file} ${config_section} ${config_key} ${config_value} + +Clean Up After Running Tempest + [Documentation] Clean up any extra leftovers that were created to allow tempest tests to run. + Delete Network ${external_net_name} + List Networks + Close All Connections + +Create Blacklist File + [Documentation] For each exclusion regex in the required @{${OPENSTACK_BRANCH}_exclusion_regexes} list a new + ... line will be created in the required ${blacklist_file} location. This file is pushed to the OS_CONTROL_NODE + ... which is assumed to be the tempest executor. + OperatingSystem.Create File ${blacklist_file} + : FOR ${exclusion} IN @{${OPENSTACK_BRANCH}_exclusion_regexes} + \ OperatingSystem.Append To File ${blacklist_file} ${exclusion}\n + Log File ${blacklist_file} + SSHKeywords.Copy File To Remote System ${OS_CONTROL_NODE_IP} ${blacklist_file} ${blacklist_file} + Devstack Suite Setup [Arguments] ${source_pwd}=no ${odl_ip}=${ODL_SYSTEM_IP} [Documentation] Login to the Openstack Control Node to run tempest suite diff --git a/csit/suites/openstack/tempest/tempest.robot b/csit/suites/openstack/tempest/tempest.robot index 54fe5dd4c7..dd8c452920 100644 --- a/csit/suites/openstack/tempest/tempest.robot +++ b/csit/suites/openstack/tempest/tempest.robot @@ -1,8 +1,8 @@ *** Settings *** Documentation Test suite for running tempest tests. It is assumed that the test environment ... is already deployed and ready. -Suite Setup Log In To Tempest Executor And Setup Test Environment -Suite Teardown Clean Up After Running Tempest +Suite Setup DevstackUtils.Log In To Tempest Executor And Setup Test Environment +Suite Teardown DevstackUtils.Clean Up After Running Tempest Test Setup SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing Test Teardown Run Keywords Get Test Teardown Debugs Test Template DevstackUtils.Run Tempest Tests @@ -15,21 +15,6 @@ Resource ../../../libraries/SSHKeywords.robot Variables ../../../variables/Variables.py Resource ../../../variables/netvirt/Variables.robot -*** Variables *** -${blacklist_file} /tmp/blacklist.txt -@{stable/newton_exclusion_regexes} ${EMPTY} -@{stable/ocata_exclusion_regexes} ${EMPTY} -@{stable/pike_exclusion_regexes} ${EMPTY} -@{master_exclusion_regexes} ${EMPTY} -${tempest_config_file} /opt/stack/tempest/etc/tempest.conf -${external_physical_network} physnet1 -${external_net_name} external-net -${external_subnet_name} external-subnet -# Parameter values below are based on releng/builder - changing them requires updates in releng/builder as well -${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 - *** Test Cases *** tempest.api.network ${TEST_NAME} ${blacklist_file} ${tempest_config_file} timeout=900s @@ -102,57 +87,3 @@ tempest.scenario.test_security_groups_basic_ops.TestSecurityGroupsBasicOps tempest.scenario.test_server_basic_ops.TestServerBasicOps.test_server_basic_ops ${TEST_NAME} ${blacklist_file} ${tempest_config_file} - -*** Keywords *** -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} - List Networks - ${control_node_conn_id}= SSHLibrary.Open Connection ${OS_CONTROL_NODE_IP} prompt=${DEFAULT_LINUX_PROMPT_STRICT} - 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} - Tempest Conf Add External Network ${net_id} - -Tempest Conf Add External Network - [Arguments] ${external_network_id} - [Documentation] Tempest will be run with a config file - this function will add the - ... given external network ID to the configuration file. - Modify Config In File On Existing SSH Connection ${tempest_config_file} set network public_network_id ${external_network_id} - Modify Config In File On Existing SSH Connection ${tempest_config_file} set DEFAULT debug False - Modify Config In File On Existing SSH Connection ${tempest_config_file} set DEFAULT log_level INFO - Write Commands Until Prompt sudo cat ${tempest_config_file} - Write Commands Until Prompt sudo chmod 777 ${tempest_config_file} - -Modify Config In File On Existing SSH Connection - [Arguments] ${config_file} ${modifier} ${config_section} ${config_key} ${config_value}=${EMPTY} - [Documentation] uses crudini to populate oslo cofg file. - # this keyword is only one line so seems like extra overhead, but this may be a good candidate to move - # to a library at some point, when/if other suites need to use it, so wanted to make it generic. - Write Commands Until Prompt sudo -E crudini --${modifier} ${config_file} ${config_section} ${config_key} ${config_value} - -Clean Up After Running Tempest - [Documentation] Clean up any extra leftovers that were created to allow tempest tests to run. - Delete Network ${external_net_name} - List Networks - Close All Connections - -Create Blacklist File - [Documentation] For each exclusion regex in the required @{${OPENSTACK_BRANCH}_exclusion_regexes} list a new - ... line will be created in the required ${blacklist_file} location. This file is pushed to the OS_CONTROL_NODE - ... which is assumed to be the tempest executor. - OperatingSystem.Create File ${blacklist_file} - : FOR ${exclusion} IN @{${OPENSTACK_BRANCH}_exclusion_regexes} - \ OperatingSystem.Append To File ${blacklist_file} ${exclusion}\n - Log File ${blacklist_file} - SSHKeywords.Copy File To Remote System ${OS_CONTROL_NODE_IP} ${blacklist_file} ${blacklist_file} -- 2.36.6