Use --router:external net-create for tempest tests
[integration/test.git] / csit / suites / openstack / tempest / tempest.robot
1 *** Settings ***
2 Documentation     Test suite for running tempest tests. It is assumed that the test environment
3 ...               is already deployed and ready.
4 Suite Setup       Log In To Tempest Executor And Setup Test Environment
5 Suite Teardown    Clean Up After Running Tempest
6 Test Setup        SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
7 Test Teardown     Run Keywords    Get Test Teardown Debugs
8 Test Template     DevstackUtils.Run Tempest Tests
9 Library           SSHLibrary
10 Resource          ../../../libraries/DevstackUtils.robot
11 Resource          ../../../libraries/OpenStackOperations.robot
12 Resource          ../../../libraries/SetupUtils.robot
13 Resource          ../../../libraries/Utils.robot
14 Variables         ../../../variables/Variables.py
15 Resource          ../../../variables/netvirt/Variables.robot
16
17 *** Variables ***
18 ${blacklist_file}    /tmp/blacklist.txt
19 @{stable/mitaka_exclusion_regexes}    test_routers_negative.RoutersNegativeIpV6Test.test_router_set_gateway_used_ip_returns_409    test_routers_negative.RoutersNegativeTest.test_router_set_gateway_used_ip_returns_409
20 @{stable/newton_exclusion_regexes}    ${EMPTY}
21 ${tempest_config_file}    /opt/stack/tempest/etc/tempest.conf
22 ${external_physical_network}    physnet1
23 ${external_net_name}    external-net
24 ${external_subnet_name}    external-subnet
25 ${external_gateway}    10.10.10.250
26 ${external_subnet}    10.10.10.0/24
27 ${network_vlan_id}    167
28
29 *** Test Cases ***
30 tempest.api.network
31     ${TEST_NAME}    ${blacklist_file}    ${tempest_config_file}
32
33 tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_connectivity_between_vms_on_different_networks
34     ${TEST_NAME}    ${blacklist_file}    ${tempest_config_file}
35
36 tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_hotplug_nic
37     [Tags]    skip_if_stable/mitaka
38     # Failing due to default security rules behavior missing in Mitaka
39     ${TEST_NAME}    ${blacklist_file}    ${tempest_config_file}
40
41 tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_mtu_sized_frames
42     ${TEST_NAME}    ${blacklist_file}    ${tempest_config_file}
43
44 tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_network_basic_ops
45     ${TEST_NAME}    ${blacklist_file}    ${tempest_config_file}
46
47 tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_preserve_preexisting_port
48     ${TEST_NAME}    ${blacklist_file}    ${tempest_config_file}
49
50 tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_router_rescheduling
51     ${TEST_NAME}    ${blacklist_file}    ${tempest_config_file}
52
53 tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_subnet_details
54     ${TEST_NAME}    ${blacklist_file}    ${tempest_config_file}
55
56 tempest.scenario.test_aggregates_basic_ops.TestAggregatesBasicOps.test_aggregate_basic_ops
57     ${TEST_NAME}    ${blacklist_file}    ${tempest_config_file}
58
59 tempest.scenario.test_network_advanced_server_ops.TestNetworkAdvancedServerOps.test_server_connectivity_pause_unpause
60     ${TEST_NAME}    ${blacklist_file}    ${tempest_config_file}
61
62 tempest.scenario.test_network_advanced_server_ops.TestNetworkAdvancedServerOps.test_server_connectivity_stop_start
63     ${TEST_NAME}    ${blacklist_file}    ${tempest_config_file}
64
65 tempest.scenario.test_network_advanced_server_ops.TestNetworkAdvancedServerOps.test_server_connectivity_reboot
66     ${TEST_NAME}    ${blacklist_file}    ${tempest_config_file}
67
68 tempest.scenario.test_network_advanced_server_ops.TestNetworkAdvancedServerOps.test_server_connectivity_rebuild
69     ${TEST_NAME}    ${blacklist_file}    ${tempest_config_file}
70
71 tempest.scenario.test_network_advanced_server_ops.TestNetworkAdvancedServerOps.test_server_connectivity_suspend_resume
72     ${TEST_NAME}    ${blacklist_file}    ${tempest_config_file}
73
74 tempest.scenario.test_server_basic_ops.TestServerBasicOps.test_server_basic_ops
75     ${TEST_NAME}    ${blacklist_file}    ${tempest_config_file}
76
77 tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_port_security_macspoofing_port
78     [Tags]    skip_if_transparent    skip_if_stable/mitaka
79     # Failing due to default security rules behavior missing in Mitaka, and also in all transparent runs
80     ${TEST_NAME}    ${blacklist_file}    ${tempest_config_file}
81
82 *** Keywords ***
83 Log In To Tempest Executor And Setup Test Environment
84     [Documentation]    Initialize SetupUtils, open SSH connection to a devstack system and source the openstack
85     ...    credentials needed to run the tempest tests. The (sometimes empty) tempest blacklist file will be created
86     ...    and pushed to the tempest executor.
87     Create Blacklist File
88     SetupUtils.Setup_Utils_For_Setup_And_Teardown
89     # source_pwd is expected to exist in the below Create Network, Create Subnet keywords.    Might be a bug.
90     ${source_pwd}    Set Variable    yes
91     Set Suite Variable    ${source_pwd}
92     # Tempest tests need an existing external network in order to create routers.
93     : FOR    ${feature_name}    IN    @{legacy_feature_list}
94     \    ${feature_check_status}=    Run Keyword And Return Status    Verify Feature Is Installed    ${feature_name}
95     \    Exit For Loop If    '${feature_check_status}' == 'True'
96     Run Keyword If    '${feature_check_status}' == 'True'    Create Network    ${external_net_name}    --router:external --provider:network_type=flat --provider:physical_network=${external_physical_network}
97     ...    ELSE    Create Network    ${external_net_name}    --router:external --provider:network_type=vlan --provider:physical_network=${PUBLIC_PHYSICAL_NETWORK} --provider:segmentation_id=${network_vlan_id}
98     Create Subnet    ${external_net_name}    ${external_subnet_name}    ${external_subnet}    --gateway ${external_gateway}
99     List Networks
100     ${control_node_conn_id}=    SSHLibrary.Open Connection    ${OS_CONTROL_NODE_IP}    prompt=${DEFAULT_LINUX_PROMPT_STRICT}
101     Utils.Flexible SSH Login    ${OS_USER}
102     Write Commands Until Prompt    source ${DEVSTACK_DEPLOY_PATH}/openrc admin admin
103     Write Commands Until Prompt    sudo rm -rf /opt/stack/tempest/.testrepository
104     ${net_id}=    Get Net Id    ${external_net_name}    ${control_node_conn_id}
105     Tempest Conf Add External Network    ${net_id}
106
107 Tempest Conf Add External Network
108     [Arguments]    ${external_network_id}
109     [Documentation]    Tempest will be run with a config file - this function will add the
110     ...    given external network ID to the configuration file.
111     Modify Config In File On Existing SSH Connection    ${tempest_config_file}    set    network    public_network_id    ${external_network_id}
112     Modify Config In File On Existing SSH Connection    ${tempest_config_file}    set    DEFAULT    debug    False
113     Modify Config In File On Existing SSH Connection    ${tempest_config_file}    set    DEFAULT    log_level    INFO
114     Write Commands Until Prompt    sudo cat ${tempest_config_file}
115     Write Commands Until Prompt    sudo chmod 777 ${tempest_config_file}
116
117 Modify Config In File On Existing SSH Connection
118     [Arguments]    ${config_file}    ${modifier}    ${config_section}    ${config_key}    ${config_value}=${EMPTY}
119     [Documentation]    uses crudini to populate oslo cofg file.
120     # this keyword is only one line so seems like extra overhead, but this may be a good candidate to move
121     # to a library at some point, when/if other suites need to use it, so wanted to make it generic.
122     Write Commands Until Prompt    sudo -E crudini --${modifier} ${config_file} ${config_section} ${config_key} ${config_value}
123
124 Clean Up After Running Tempest
125     [Documentation]    Clean up any extra leftovers that were created to allow tempest tests to run.
126     Delete Network    ${external_net_name}
127     List Networks
128     Close All Connections
129
130 Create Blacklist File
131     [Documentation]    For each exclusion regex in the required @{${OPENSTACK_BRANCH}_exclusion_regexes} list a new
132     ...    line will be created in the required ${blacklist_file} location. This file is pushed to the OS_CONTROL_NODE
133     ...    which is assumed to be the tempest executor.
134     Create File    ${blacklist_file}
135     : FOR    ${exclusion}    IN    @{${OPENSTACK_BRANCH}_exclusion_regexes}
136     \    Append To File    ${blacklist_file}    ${exclusion}\n
137     Log File    ${blacklist_file}
138     SSHKeywords.Copy File To Remote System    ${OS_CONTROL_NODE_IP}    ${blacklist_file}    ${blacklist_file}