Skip sg tempest tests if learn or transparent
[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           OperatingSystem
10 Library           SSHLibrary
11 Resource          ../../../libraries/DevstackUtils.robot
12 Resource          ../../../libraries/OpenStackOperations.robot
13 Resource          ../../../libraries/SetupUtils.robot
14 Resource          ../../../libraries/SSHKeywords.robot
15 Variables         ../../../variables/Variables.py
16 Resource          ../../../variables/netvirt/Variables.robot
17
18 *** Variables ***
19 ${blacklist_file}    /tmp/blacklist.txt
20 @{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
21 @{stable/newton_exclusion_regexes}    ${EMPTY}
22 @{stable/ocata_exclusion_regexes}    ${EMPTY}
23 ${tempest_config_file}    /opt/stack/tempest/etc/tempest.conf
24 ${external_physical_network}    physnet1
25 ${external_net_name}    external-net
26 ${external_subnet_name}    external-subnet
27 # Parameter values below are based on releng/builder - changing them requires updates in releng/builder as well
28 ${external_gateway}    10.10.10.250
29 ${external_subnet_allocation_pool}    start=10.10.10.2,end=10.10.10.249
30 ${external_subnet}    10.10.10.0/24
31
32 *** Test Cases ***
33 tempest.api.network
34     ${TEST_NAME}    ${blacklist_file}    ${tempest_config_file}    timeout=900s
35
36 tempest.scenario.test_security_groups_basic_ops.TestSecurityGroupsBasicOps
37     [Tags]    skip_if_transparent    skip_if_learn
38     ${TEST_NAME}    ${blacklist_file}    ${tempest_config_file}    timeout=900s
39
40 tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_connectivity_between_vms_on_different_networks
41     ${TEST_NAME}    ${blacklist_file}    ${tempest_config_file}
42
43 tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_hotplug_nic
44     [Tags]    skip_if_stable/mitaka
45     # Failing due to default security rules behavior missing in Mitaka
46     ${TEST_NAME}    ${blacklist_file}    ${tempest_config_file}
47
48 tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_mtu_sized_frames
49     ${TEST_NAME}    ${blacklist_file}    ${tempest_config_file}
50
51 tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_network_basic_ops
52     ${TEST_NAME}    ${blacklist_file}    ${tempest_config_file}
53
54 tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_preserve_preexisting_port
55     ${TEST_NAME}    ${blacklist_file}    ${tempest_config_file}
56
57 tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_router_rescheduling
58     ${TEST_NAME}    ${blacklist_file}    ${tempest_config_file}
59
60 tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_subnet_details
61     ${TEST_NAME}    ${blacklist_file}    ${tempest_config_file}
62
63 tempest.scenario.test_aggregates_basic_ops.TestAggregatesBasicOps.test_aggregate_basic_ops
64     ${TEST_NAME}    ${blacklist_file}    ${tempest_config_file}
65
66 tempest.scenario.test_network_advanced_server_ops.TestNetworkAdvancedServerOps.test_server_connectivity_pause_unpause
67     ${TEST_NAME}    ${blacklist_file}    ${tempest_config_file}
68
69 tempest.scenario.test_network_advanced_server_ops.TestNetworkAdvancedServerOps.test_server_connectivity_stop_start
70     ${TEST_NAME}    ${blacklist_file}    ${tempest_config_file}
71
72 tempest.scenario.test_network_advanced_server_ops.TestNetworkAdvancedServerOps.test_server_connectivity_reboot
73     ${TEST_NAME}    ${blacklist_file}    ${tempest_config_file}
74
75 tempest.scenario.test_network_advanced_server_ops.TestNetworkAdvancedServerOps.test_server_connectivity_rebuild
76     ${TEST_NAME}    ${blacklist_file}    ${tempest_config_file}
77
78 tempest.scenario.test_network_advanced_server_ops.TestNetworkAdvancedServerOps.test_server_connectivity_suspend_resume
79     ${TEST_NAME}    ${blacklist_file}    ${tempest_config_file}
80
81 tempest.scenario.test_server_basic_ops.TestServerBasicOps.test_server_basic_ops
82     ${TEST_NAME}    ${blacklist_file}    ${tempest_config_file}
83
84 tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_port_security_macspoofing_port
85     [Tags]    skip_if_transparent    skip_if_stable/mitaka
86     # Failing due to default security rules behavior missing in Mitaka, and also in all transparent runs
87     ${TEST_NAME}    ${blacklist_file}    ${tempest_config_file}
88
89 tempest.scenario.test_network_v6.TestGettingAddress.test_dualnet_dhcp6_stateless_from_os
90     ${TEST_NAME}    ${blacklist_file}    ${tempest_config_file}
91
92 tempest.scenario.test_network_v6.TestGettingAddress.test_dualnet_slaac_from_os
93     ${TEST_NAME}    ${blacklist_file}    ${tempest_config_file}
94
95 tempest.scenario.test_network_v6.TestGettingAddress.test_dhcp6_stateless_from_os
96     ${TEST_NAME}    ${blacklist_file}    ${tempest_config_file}
97
98 tempest.scenario.test_network_v6.TestGettingAddress.test_slaac_from_os
99     ${TEST_NAME}    ${blacklist_file}    ${tempest_config_file}
100
101 *** Keywords ***
102 Log In To Tempest Executor And Setup Test Environment
103     [Documentation]    Initialize SetupUtils, open SSH connection to a devstack system and source the openstack
104     ...    credentials needed to run the tempest tests. The (sometimes empty) tempest blacklist file will be created
105     ...    and pushed to the tempest executor.
106     Create Blacklist File
107     SetupUtils.Setup_Utils_For_Setup_And_Teardown
108     # source_pwd is expected to exist in the below Create Network, Create Subnet keywords.    Might be a bug.
109     ${source_pwd}    Set Variable    yes
110     Set Suite Variable    ${source_pwd}
111     # Tempest tests need an existing external network in order to create routers.
112     Create Network    ${external_net_name}    --external --default --provider-network-type flat --provider-physical-network ${PUBLIC_PHYSICAL_NETWORK}
113     Create Subnet    ${external_net_name}    ${external_subnet_name}    ${external_subnet}    --gateway ${external_gateway} --allocation-pool ${external_subnet_allocation_pool}
114     List Networks
115     ${control_node_conn_id}=    SSHLibrary.Open Connection    ${OS_CONTROL_NODE_IP}    prompt=${DEFAULT_LINUX_PROMPT_STRICT}
116     SSHKeywords.Flexible SSH Login    ${OS_USER}
117     Write Commands Until Prompt    source ${DEVSTACK_DEPLOY_PATH}/openrc admin admin
118     Write Commands Until Prompt    sudo rm -rf /opt/stack/tempest/.testrepository
119     ${net_id}=    Get Net Id    ${external_net_name}    ${control_node_conn_id}
120     Tempest Conf Add External Network    ${net_id}
121
122 Tempest Conf Add External Network
123     [Arguments]    ${external_network_id}
124     [Documentation]    Tempest will be run with a config file - this function will add the
125     ...    given external network ID to the configuration file.
126     Modify Config In File On Existing SSH Connection    ${tempest_config_file}    set    network    public_network_id    ${external_network_id}
127     Modify Config In File On Existing SSH Connection    ${tempest_config_file}    set    DEFAULT    debug    False
128     Modify Config In File On Existing SSH Connection    ${tempest_config_file}    set    DEFAULT    log_level    INFO
129     Write Commands Until Prompt    sudo cat ${tempest_config_file}
130     Write Commands Until Prompt    sudo chmod 777 ${tempest_config_file}
131
132 Modify Config In File On Existing SSH Connection
133     [Arguments]    ${config_file}    ${modifier}    ${config_section}    ${config_key}    ${config_value}=${EMPTY}
134     [Documentation]    uses crudini to populate oslo cofg file.
135     # this keyword is only one line so seems like extra overhead, but this may be a good candidate to move
136     # to a library at some point, when/if other suites need to use it, so wanted to make it generic.
137     Write Commands Until Prompt    sudo -E crudini --${modifier} ${config_file} ${config_section} ${config_key} ${config_value}
138
139 Clean Up After Running Tempest
140     [Documentation]    Clean up any extra leftovers that were created to allow tempest tests to run.
141     Delete Network    ${external_net_name}
142     List Networks
143     Close All Connections
144
145 Create Blacklist File
146     [Documentation]    For each exclusion regex in the required @{${OPENSTACK_BRANCH}_exclusion_regexes} list a new
147     ...    line will be created in the required ${blacklist_file} location. This file is pushed to the OS_CONTROL_NODE
148     ...    which is assumed to be the tempest executor.
149     OperatingSystem.Create File    ${blacklist_file}
150     : FOR    ${exclusion}    IN    @{${OPENSTACK_BRANCH}_exclusion_regexes}
151     \    OperatingSystem.Append To File    ${blacklist_file}    ${exclusion}\n
152     Log File    ${blacklist_file}
153     SSHKeywords.Copy File To Remote System    ${OS_CONTROL_NODE_IP}    ${blacklist_file}    ${blacklist_file}