Skip macspoofing tempest test if security group mode is 'transparent'
[integration/test.git] / csit / suites / openstack / tempest / tempest.robot
index b50f5619ccb976a1fffed0c50c6eea72e44e0270..1f246d34a17027a5e3446df51f165cabc105d326 100644 (file)
@@ -3,79 +3,114 @@ Documentation     Test suite for running tempest tests. It is assumed that the t
 ...               is already deployed and ready.
 Suite Setup       Log In To Tempest Executor And Setup Test Environment
 Suite Teardown    Clean Up After Running Tempest
-Test Setup        Log Testcase Start To Controller Karaf
+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
 Library           SSHLibrary
-Resource          ../../../libraries/Utils.robot
 Resource          ../../../libraries/DevstackUtils.robot
+Resource          ../../../libraries/OpenStackOperations.robot
+Resource          ../../../libraries/SetupUtils.robot
+Resource          ../../../libraries/Utils.robot
 Variables         ../../../variables/Variables.py
 
 *** Variables ***
-${exclusion_regex}    'metering|test_l3_agent_scheduler.L3AgentSchedulerTestJSON|test_extensions.ExtensionsTestJSON.test_list_show_extensions'
-${tempest_config_file}    ./tempest.conf
+${exclusion_regex}    'metering|test_l3_agent_scheduler.L3AgentSchedulerTestJSON|test_extensions.ExtensionsTestJSON.test_list_show_extensions|test_routers_dvr.RoutersTestDVR.test_centralized_router_update_to_dvr'
+${tempest_config_file}    /opt/stack/tempest/etc/tempest.conf
+${external_physical_network}    physnet1
+${external_net_name}    external-net
+${external_subnet_name}    external-subnet
+${external_gateway}    10.10.10.250
+${external_subnet}    10.10.10.0/24
 
 *** Test Cases ***
 tempest.api.network
-    Run Tempest Tests    ${TEST_NAME}    ${exclusion_regex}    ${tempest_config_file}
+    ${TEST_NAME}    ${exclusion_regex}    ${tempest_config_file}
+
+tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_connectivity_between_vms_on_different_networks
+    ${TEST_NAME}    ${exclusion_regex}    ${tempest_config_file}
+
+tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_hotplug_nic
+    [Tags]    skip_if_stable/mitaka
+    ${TEST_NAME}    ${exclusion_regex}    ${tempest_config_file}
+
+tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_mtu_sized_frames
+    ${TEST_NAME}    ${exclusion_regex}    ${tempest_config_file}
+
+tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_network_basic_ops
+    ${TEST_NAME}    ${exclusion_regex}    ${tempest_config_file}
+
+tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_preserve_preexisting_port
+    ${TEST_NAME}    ${exclusion_regex}    ${tempest_config_file}
+
+tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_router_rescheduling
+    ${TEST_NAME}    ${exclusion_regex}    ${tempest_config_file}
+
+tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_subnet_details
+    ${TEST_NAME}    ${exclusion_regex}    ${tempest_config_file}
 
-tempest.scenario.test_minimum_basic
-    [Tags]    exclude
-    Run Tempest Tests    ${TEST_NAME}
+tempest.scenario.test_aggregates_basic_ops.TestAggregatesBasicOps.test_aggregate_basic_ops
+    ${TEST_NAME}    ${exclusion_regex}    ${tempest_config_file}
+
+tempest.scenario.test_network_advanced_server_ops.TestNetworkAdvancedServerOps.test_server_connectivity_pause_unpause
+    ${TEST_NAME}    ${exclusion_regex}    ${tempest_config_file}
+
+tempest.scenario.test_network_advanced_server_ops.TestNetworkAdvancedServerOps.test_server_connectivity_stop_start
+    ${TEST_NAME}    ${exclusion_regex}    ${tempest_config_file}
+
+tempest.scenario.test_network_advanced_server_ops.TestNetworkAdvancedServerOps.test_server_connectivity_reboot
+    ${TEST_NAME}    ${exclusion_regex}    ${tempest_config_file}
+
+tempest.scenario.test_network_advanced_server_ops.TestNetworkAdvancedServerOps.test_server_connectivity_rebuild
+    ${TEST_NAME}    ${exclusion_regex}    ${tempest_config_file}
+
+tempest.scenario.test_network_advanced_server_ops.TestNetworkAdvancedServerOps.test_server_connectivity_suspend_resume
+    ${TEST_NAME}    ${exclusion_regex}    ${tempest_config_file}
+
+tempest.scenario.test_server_basic_ops.TestServerBasicOps.test_server_basic_ops
+    ${TEST_NAME}    ${exclusion_regex}    ${tempest_config_file}
+
+tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_port_security_macspoofing_port
+    [Tags]    skip_if_transparent
+    ${TEST_NAME}    ${exclusion_regex}    ${tempest_config_file}
 
 *** Keywords ***
 Log In To Tempest Executor And Setup Test Environment
-    [Documentation]    Open SSH connection to a devstack system and source the openstack
+    [Documentation]    Initialize SetupUtils, open SSH connection to a devstack system and source the openstack
     ...    credentials needed to run the tempest tests
+    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 network.api tests need an existing external network in order to create
-    # routers against.    Creating that here.
-    Create Network    external --router:external=True
-    Create Subnet    external    external-subnet    10.0.0.0/24
+    # Tempest tests need an existing external network in order to create routers.
+    Create Network    ${external_net_name} --router:external --provider:network_type=flat --provider:physical_network=${external_physical_network}
+    Create Subnet    ${external_net_name}    ${external_subnet_name}    ${external_subnet}    --gateway ${external_gateway}
     List Networks
     ${control_node_conn_id}=    SSHLibrary.Open Connection    ${OS_CONTROL_NODE_IP}    prompt=${DEFAULT_LINUX_PROMPT_STRICT}
     Utils.Flexible SSH Login    ${OS_USER}
     Write Commands Until Prompt    source ${DEVSTACK_DEPLOY_PATH}/openrc admin admin
-    ${net_id}=    Get Net Id    external    ${control_node_conn_id}
-    Generate Tempest Conf File    ${net_id}
+    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}
 
-Generate Tempest Conf File
+Tempest Conf Add External Network
     [Arguments]    ${external_network_id}
-    [Documentation]    Tempest will be run with a config file ./tempest.conf. That file needs to be auto
-    ...    generated first, then updated with the current openstack info, including the specific external
-    ...    network id. There was trouble with permissions in upstream CI, so everything is done with sudo
-    ...    and even the tempest.conf is changed to 777 permissions.
-    Write Commands Until Prompt    source ${DEVSTACK_DEPLOY_PATH}/openrc admin admin
-    Write Commands Until Prompt    cd /opt/stack/tempest
-    Write Commands Until Prompt    sudo -E oslo-config-generator --config-file $(find . -name config-generator.tempest.conf) --output-file ${tempest_config_file}
-    # TODO: the below set of configs may not all be neccessary, so we could try to trim out what's not needed.
-    Add Config To File On Existing SSH Connection    ${tempest_config_file}    service_available    neutron    true
-    Add Config To File On Existing SSH Connection    ${tempest_config_file}    identity    catalog_type    identity
-    Add Config To File On Existing SSH Connection    ${tempest_config_file}    identity    uri    http://localhost:5000/v2.0
-    Add Config To File On Existing SSH Connection    ${tempest_config_file}    identity    uri_v3    http://localhost:8774/v3
-    Add Config To File On Existing SSH Connection    ${tempest_config_file}    identity    auth_version    v2
-    Add Config To File On Existing SSH Connection    ${tempest_config_file}    identity    v2_admin_endpoint_type    adminURL
-    Add Config To File On Existing SSH Connection    ${tempest_config_file}    identity    username    $OS_USERNAME
-    Add Config To File On Existing SSH Connection    ${tempest_config_file}    identity    admin_role    admin
-    Add Config To File On Existing SSH Connection    ${tempest_config_file}    identity    password    $OS_PASSWORD
-    Add Config To File On Existing SSH Connection    ${tempest_config_file}    auth    admin_username    $OS_USERNAME
-    Add Config To File On Existing SSH Connection    ${tempest_config_file}    auth    admin_project_name    $OS_TENANT_NAME
-    Add Config To File On Existing SSH Connection    ${tempest_config_file}    auth    admin_password    $OS_PASSWORD
-    Add Config To File On Existing SSH Connection    ${tempest_config_file}    network    public_network_id    ${external_network_id}
-    Add Config To File On Existing SSH Connection    ${tempest_config_file}    DEFAULT    verbose    true
-    Write Commands Until Prompt    sudo cat ./tempest.conf
-    Write Commands Until Prompt    sudo chmod 777 ./tempest.conf
-
-Add Config To File On Existing SSH Connection
-    [Arguments]    ${config_file}    ${config_section}    ${config_key}    ${config_value}
+    [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 --set ${config_file} ${config_section} ${config_key} ${config_value}
+    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 SubNet    external-subnet
-    Delete Network    external
+    Delete Network    ${external_net_name}
     List Networks
     Close All Connections