Update Robot Framework format - step 13 43/102343/8
authorSangwook Ha <sangwook.ha@verizon.com>
Sat, 10 Sep 2022 02:31:25 +0000 (19:31 -0700)
committerSangwook Ha <sangwook.ha@verizon.com>
Fri, 7 Oct 2022 02:12:08 +0000 (19:12 -0700)
Robotidy has stricter formatting rules for line width, alignment,
section ordering & spacing, etc.

Update the format of Robot Framework files in the following directory
with Robotidy:

- csit/suites/openstack
- csit/suites/ovsdb

JIRA: INTTEST-132
Change-Id: I52fb7223105498e40ed55869d70af255e216215b
Signed-off-by: Sangwook Ha <sangwook.ha@verizon.com>
28 files changed:
csit/suites/openstack/clustering/ha_l2.robot
csit/suites/openstack/clustering/ha_l3.robot
csit/suites/openstack/clustering/ha_l3_block_port.robot
csit/suites/openstack/connectivity/external_network.robot
csit/suites/openstack/connectivity/l2.robot
csit/suites/openstack/connectivity/l3.robot
csit/suites/openstack/connectivity/live_migration.robot
csit/suites/openstack/connectivity/security_group.robot
csit/suites/openstack/extensions/sfc.robot
csit/suites/openstack/neutron/001__reachability.robot
csit/suites/openstack/neutron/010__networks.robot
csit/suites/openstack/neutron/020__subnets.robot
csit/suites/openstack/neutron/030__ports.robot
csit/suites/openstack/neutron/040__delete_ports.robot
csit/suites/openstack/neutron/050__delete_subnets.robot
csit/suites/openstack/neutron/060__delete_networks.robot
csit/suites/openstack/neutron/__init__.robot
csit/suites/openstack/securitygroup/acl.robot
csit/suites/openstack/securitygroup/neutron_security_group.robot
csit/suites/openstack/securitygroup/security_group_l3bcast.robot
csit/suites/openstack/tempest/tempest.robot
csit/suites/ovsdb/Southbound_Cluster/010__Ovsdb_Southbound_Cluster.robot
csit/suites/ovsdb/Southbound_Cluster/020__Southbound_Cluster_Extension.robot
csit/suites/ovsdb/Southbound_Domain/010__configure_1_ovsdb_node.robot
csit/suites/ovsdb/Southbound_Domain/020__connection_manager.robot
csit/suites/ovsdb/Southbound_Domain/030__configure_exit_ovsdb_node.robot
csit/suites/ovsdb/Southbound_Domain/040__Vxlan_Extension_Test.robot
csit/suites/ovsdb/Southbound_Domain/Bug_Validation.robot

index a2d98804d3649d775c792887b6bb22d9ffb5ffd4..0617d44df28e4f4525387ee5ef504bc9a290687e 100644 (file)
@@ -1,32 +1,36 @@
 *** Settings ***
-Documentation     Test suite to verify packet flows between vm instances.
-Suite Setup       OpenStackOperations.OpenStack Suite Setup
-Suite Teardown    OpenStackOperations.OpenStack Suite Teardown
-Test Setup        SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
-Test Teardown     OpenStackOperations.Get Test Teardown Debugs
-Library           SSHLibrary
-Library           OperatingSystem
-Library           RequestsLibrary
-Library           Collections
-Resource          ../../../libraries/Utils.robot
-Resource          ../../../libraries/OpenStackOperations.robot
-Resource          ../../../libraries/DevstackUtils.robot
-Resource          ../../../libraries/OVSDB.robot
-Resource          ../../../libraries/ClusterOvsdb.robot
-Resource          ../../../libraries/ClusterManagement.robot
-Resource          ../../../libraries/SetupUtils.robot
-Resource          ../../../variables/Variables.robot
-Resource          ../../../variables/netvirt/Variables.robot
+Documentation       Test suite to verify packet flows between vm instances.
+
+Library             SSHLibrary
+Library             OperatingSystem
+Library             RequestsLibrary
+Library             Collections
+Resource            ../../../libraries/Utils.robot
+Resource            ../../../libraries/OpenStackOperations.robot
+Resource            ../../../libraries/DevstackUtils.robot
+Resource            ../../../libraries/OVSDB.robot
+Resource            ../../../libraries/ClusterOvsdb.robot
+Resource            ../../../libraries/ClusterManagement.robot
+Resource            ../../../libraries/SetupUtils.robot
+Resource            ../../../variables/Variables.robot
+Resource            ../../../variables/netvirt/Variables.robot
+
+Suite Setup         OpenStackOperations.OpenStack Suite Setup
+Suite Teardown      OpenStackOperations.OpenStack Suite Teardown
+Test Setup          SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
+Test Teardown       OpenStackOperations.Get Test Teardown Debugs
+
 
 *** Variables ***
-${SECURITY_GROUP}    cl2_sg
-@{NETWORKS}       cl2_net_1    cl2_net_2
-@{SUBNETS}        cl2_sub_1    cl2_sub_2
-@{NET_1_VMS}      cl2_net_1_vm_1    cl2_net_1_vm_2    cl2_net_1_vm_3
-@{NET_2_VMS}      cl2_net_2_vm_1    cl2_net_2_vm_2    cl2_net_2_vm_3
-@{SUBNET_CIDRS}    26.0.0.0/24    27.0.0.0/24
+${SECURITY_GROUP}       cl2_sg
+@{NETWORKS}             cl2_net_1    cl2_net_2
+@{SUBNETS}              cl2_sub_1    cl2_sub_2
+@{NET_1_VMS}            cl2_net_1_vm_1    cl2_net_1_vm_2    cl2_net_1_vm_3
+@{NET_2_VMS}            cl2_net_2_vm_1    cl2_net_2_vm_2    cl2_net_2_vm_3
+@{SUBNET_CIDRS}         26.0.0.0/24    27.0.0.0/24
 @{CLUSTER_DOWN_LIST}    ${1}    ${2}
 
+
 *** Test Cases ***
 Create All Controller Sessions
     [Documentation]    Create sessions for all three controllers.
@@ -103,15 +107,39 @@ Take Down ODL2
 
 Create Vm Instances For net_1
     [Documentation]    Create Vm instances using flavor and image names for a network.
-    OpenStackOperations.Create Vm Instance On Compute Node    ${NETWORKS}[0]    ${NET_1_VMS}[0]    ${OS_CMP1_HOSTNAME}    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance On Compute Node    ${NETWORKS}[0]    ${NET_1_VMS}[1]    ${OS_CMP1_HOSTNAME}    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance On Compute Node    ${NETWORKS}[0]    ${NET_1_VMS}[2]    ${OS_CMP2_HOSTNAME}    sg=${SECURITY_GROUP}
+    OpenStackOperations.Create Vm Instance On Compute Node
+    ...    ${NETWORKS}[0]
+    ...    ${NET_1_VMS}[0]
+    ...    ${OS_CMP1_HOSTNAME}
+    ...    sg=${SECURITY_GROUP}
+    OpenStackOperations.Create Vm Instance On Compute Node
+    ...    ${NETWORKS}[0]
+    ...    ${NET_1_VMS}[1]
+    ...    ${OS_CMP1_HOSTNAME}
+    ...    sg=${SECURITY_GROUP}
+    OpenStackOperations.Create Vm Instance On Compute Node
+    ...    ${NETWORKS}[0]
+    ...    ${NET_1_VMS}[2]
+    ...    ${OS_CMP2_HOSTNAME}
+    ...    sg=${SECURITY_GROUP}
 
 Create Vm Instances For net_2
     [Documentation]    Create Vm instances using flavor and image names for a network.
-    OpenStackOperations.Create Vm Instance On Compute Node    ${NETWORKS}[1]    ${NET_2_VMS}[0]    ${OS_CMP1_HOSTNAME}    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance On Compute Node    ${NETWORKS}[1]    ${NET_2_VMS}[1]    ${OS_CMP2_HOSTNAME}    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance On Compute Node    ${NETWORKS}[1]    ${NET_2_VMS}[2]    ${OS_CMP2_HOSTNAME}    sg=${SECURITY_GROUP}
+    OpenStackOperations.Create Vm Instance On Compute Node
+    ...    ${NETWORKS}[1]
+    ...    ${NET_2_VMS}[0]
+    ...    ${OS_CMP1_HOSTNAME}
+    ...    sg=${SECURITY_GROUP}
+    OpenStackOperations.Create Vm Instance On Compute Node
+    ...    ${NETWORKS}[1]
+    ...    ${NET_2_VMS}[1]
+    ...    ${OS_CMP2_HOSTNAME}
+    ...    sg=${SECURITY_GROUP}
+    OpenStackOperations.Create Vm Instance On Compute Node
+    ...    ${NETWORKS}[1]
+    ...    ${NET_2_VMS}[2]
+    ...    ${OS_CMP2_HOSTNAME}
+    ...    sg=${SECURITY_GROUP}
 
 Check Vm Instances Have Ip Address
     @{NET_1_VM_IPS}    ${NET_1_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{NET_1_VMS}
@@ -187,7 +215,10 @@ Connectivity Tests From Vm Instance3 In net_2 In Healthy Cluster
 
 Take Down ODL1 and ODL2
     [Documentation]    Stop the karaf in First and Second Controller
-    BuiltIn.Run Keyword And Ignore Error    ClusterManagement.Stop Single Member    1    msg=up: ODL1, ODL2, ODL3, down=none
+    BuiltIn.Run Keyword And Ignore Error
+    ...    ClusterManagement.Stop Single Member
+    ...    1
+    ...    msg=up: ODL1, ODL2, ODL3, down=none
     BuiltIn.Run Keyword And Ignore Error    ClusterManagement.Stop Single Member    2    msg=up: ODL2, ODL3, down=ODL1
 
 Connectivity Tests From Vm Instance1 In net_2 With Two ODLs Down
index 19c882ac3abbcdbd8468646afa1b5bd3454821cd..275ae15f1b9c28c67f3085ce1a98c7050b73d393 100644 (file)
@@ -1,50 +1,65 @@
 *** Settings ***
-Documentation     Test suite to check connectivity in L3 using routers.
-Suite Setup       OpenStackOperations.OpenStack Suite Setup
-Suite Teardown    OpenStackOperations.OpenStack Suite Teardown
-Test Setup        SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
-Test Teardown     OpenStackOperations.Get Test Teardown Debugs
-Library           SSHLibrary
-Library           OperatingSystem
-Library           RequestsLibrary
-Library           Collections
-Resource          ../../../libraries/Utils.robot
-Resource          ../../../libraries/OpenStackOperations.robot
-Resource          ../../../libraries/DevstackUtils.robot
-Resource          ../../../libraries/OVSDB.robot
-Resource          ../../../libraries/ClusterOvsdb.robot
-Resource          ../../../libraries/ClusterManagement.robot
-Resource          ../../../libraries/SetupUtils.robot
-Resource          ../../../variables/Variables.robot
-Resource          ../../../variables/netvirt/Variables.robot
+Documentation       Test suite to check connectivity in L3 using routers.
+
+Library             SSHLibrary
+Library             OperatingSystem
+Library             RequestsLibrary
+Library             Collections
+Resource            ../../../libraries/Utils.robot
+Resource            ../../../libraries/OpenStackOperations.robot
+Resource            ../../../libraries/DevstackUtils.robot
+Resource            ../../../libraries/OVSDB.robot
+Resource            ../../../libraries/ClusterOvsdb.robot
+Resource            ../../../libraries/ClusterManagement.robot
+Resource            ../../../libraries/SetupUtils.robot
+Resource            ../../../variables/Variables.robot
+Resource            ../../../variables/netvirt/Variables.robot
+
+Suite Setup         OpenStackOperations.OpenStack Suite Setup
+Suite Teardown      OpenStackOperations.OpenStack Suite Teardown
+Test Setup          SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
+Test Teardown       OpenStackOperations.Get Test Teardown Debugs
+
 
 *** Variables ***
-${SECURITY_GROUP}    cl3_sg
-@{NETWORKS}       cl3_net_1    cl3_net_2
-@{SUBNETS}        cl3_sub_1    cl3_sub_2
-@{ROUTERS}        cl3_router_1    cl3_router_2    cl3_router_3
-@{NET_1_VMS}      cl3_net_1_vm_1    cl3_net_1_vm_2    cl3_net_1_vm_3
-@{NET_2_VMS}      cl3_net_2_vm_1    cl3_net_2_vm_2    cl3_net_2_vm_3
-@{SUBNET_CIDRS}    36.0.0.0/24    37.0.0.0/24
-@{GATEWAY_IPS}    36.0.0.1    37.0.0.1
-@{ODL_1_AND_2_DOWN}    ${1}    ${2}
-@{ODL_2_AND_3_DOWN}    ${2}    ${3}
-@{index_list}     1    2    3
+${SECURITY_GROUP}       cl3_sg
+@{NETWORKS}             cl3_net_1    cl3_net_2
+@{SUBNETS}              cl3_sub_1    cl3_sub_2
+@{ROUTERS}              cl3_router_1    cl3_router_2    cl3_router_3
+@{NET_1_VMS}            cl3_net_1_vm_1    cl3_net_1_vm_2    cl3_net_1_vm_3
+@{NET_2_VMS}            cl3_net_2_vm_1    cl3_net_2_vm_2    cl3_net_2_vm_3
+@{SUBNET_CIDRS}         36.0.0.0/24    37.0.0.0/24
+@{GATEWAY_IPS}          36.0.0.1    37.0.0.1
+@{ODL_1_AND_2_DOWN}     ${1}    ${2}
+@{ODL_2_AND_3_DOWN}     ${2}    ${3}
+@{index_list}           1    2    3
+
 
 *** Test Cases ***
 Create All Controller Sessions
     [Documentation]    Create sessions for all three controllers.
     ClusterManagement.ClusterManagement Setup
-    BuiltIn.Run Keyword And Ignore Error    ClusterManagement.Get Raft State Of Shard Of All Member Nodes    shard_name=default    shard_type=config
+    BuiltIn.Run Keyword And Ignore Error
+    ...    ClusterManagement.Get Raft State Of Shard Of All Member Nodes
+    ...    shard_name=default
+    ...    shard_type=config
 
 Take Down Leader Of Default Shard
     [Documentation]    Stop the karaf on ODL cluster leader
-    BuiltIn.Run Keyword And Ignore Error    ClusterManagement.Get Raft State Of Shard Of All Member Nodes    shard_name=default    shard_type=config
+    BuiltIn.Run Keyword And Ignore Error
+    ...    ClusterManagement.Get Raft State Of Shard Of All Member Nodes
+    ...    shard_name=default
+    ...    shard_type=config
     ${cluster_leader}    ${followers} =    ClusterManagement.Get Leader And Followers For Shard    shard_type=config
     BuiltIn.Set Suite Variable    ${cluster_leader}
-    ${new_cluster_list} =    ClusterManagement.Stop Single Member    ${cluster_leader}    msg=up: ODL1, ODL2, ODL3, down=none
+    ${new_cluster_list} =    ClusterManagement.Stop Single Member
+    ...    ${cluster_leader}
+    ...    msg=up: ODL1, ODL2, ODL3, down=none
     BuiltIn.Set Suite Variable    ${new_cluster_list}
-    BuiltIn.Run Keyword And Ignore Error    ClusterManagement.Get Raft State Of Shard Of All Member Nodes    shard_name=default    shard_type=config
+    BuiltIn.Run Keyword And Ignore Error
+    ...    ClusterManagement.Get Raft State Of Shard Of All Member Nodes
+    ...    shard_name=default
+    ...    shard_type=config
 
 Create Networks
     [Documentation]    Create Network with neutron request.
@@ -63,7 +78,10 @@ Create Subnets For net_2
 Bring Up Leader Of Default Shard
     [Documentation]    Bring up on cluster leader
     ClusterManagement.Start Single Member    ${cluster_leader}    msg=up: ${new_cluster_list}, down: ${cluster_leader}
-    BuiltIn.Run Keyword And Ignore Error    ClusterManagement.Get Raft State Of Shard Of All Member Nodes    shard_name=default    shard_type=config
+    BuiltIn.Run Keyword And Ignore Error
+    ...    ClusterManagement.Get Raft State Of Shard Of All Member Nodes
+    ...    shard_name=default
+    ...    shard_type=config
 
 Add Ssh Allow All Rule
     [Documentation]    Allow all TCP/UDP/ICMP packets for this suite
@@ -71,33 +89,75 @@ Add Ssh Allow All Rule
 
 Take Down ODL1
     [Documentation]    Stop the karaf in First Controller
-    BuiltIn.Run Keyword And Ignore Error    ClusterManagement.Get Raft State Of Shard Of All Member Nodes    shard_name=default    shard_type=config
+    BuiltIn.Run Keyword And Ignore Error
+    ...    ClusterManagement.Get Raft State Of Shard Of All Member Nodes
+    ...    shard_name=default
+    ...    shard_type=config
     ClusterManagement.Stop Single Member    1    msg=up: ODL1, ODL2, ODL3, down=none
-    BuiltIn.Run Keyword And Ignore Error    ClusterManagement.Get Raft State Of Shard Of All Member Nodes    shard_name=default    shard_type=config
+    BuiltIn.Run Keyword And Ignore Error
+    ...    ClusterManagement.Get Raft State Of Shard Of All Member Nodes
+    ...    shard_name=default
+    ...    shard_type=config
 
 Create Vm Instances For net_1
     [Documentation]    Create Vm instances using flavor and image names for a network.
-    OpenStackOperations.Create Vm Instance On Compute Node    ${NETWORKS}[0]    ${NET_1_VMS}[0]    ${OS_CMP1_HOSTNAME}    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance On Compute Node    ${NETWORKS}[0]    ${NET_1_VMS}[1]    ${OS_CMP1_HOSTNAME}    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance On Compute Node    ${NETWORKS}[0]    ${NET_1_VMS}[2]    ${OS_CMP2_HOSTNAME}    sg=${SECURITY_GROUP}
+    OpenStackOperations.Create Vm Instance On Compute Node
+    ...    ${NETWORKS}[0]
+    ...    ${NET_1_VMS}[0]
+    ...    ${OS_CMP1_HOSTNAME}
+    ...    sg=${SECURITY_GROUP}
+    OpenStackOperations.Create Vm Instance On Compute Node
+    ...    ${NETWORKS}[0]
+    ...    ${NET_1_VMS}[1]
+    ...    ${OS_CMP1_HOSTNAME}
+    ...    sg=${SECURITY_GROUP}
+    OpenStackOperations.Create Vm Instance On Compute Node
+    ...    ${NETWORKS}[0]
+    ...    ${NET_1_VMS}[2]
+    ...    ${OS_CMP2_HOSTNAME}
+    ...    sg=${SECURITY_GROUP}
 
 Bring Up ODL1
     [Documentation]    Bring up ODL1 again
-    BuiltIn.Run Keyword And Ignore Error    ClusterManagement.Get Raft State Of Shard Of All Member Nodes    shard_name=default    shard_type=config
+    BuiltIn.Run Keyword And Ignore Error
+    ...    ClusterManagement.Get Raft State Of Shard Of All Member Nodes
+    ...    shard_name=default
+    ...    shard_type=config
     ClusterManagement.Start Single Member    1    msg=up: ODL2, ODL3, down: ODL1
-    BuiltIn.Run Keyword And Ignore Error    ClusterManagement.Get Raft State Of Shard Of All Member Nodes    shard_name=default    shard_type=config
+    BuiltIn.Run Keyword And Ignore Error
+    ...    ClusterManagement.Get Raft State Of Shard Of All Member Nodes
+    ...    shard_name=default
+    ...    shard_type=config
 
 Take Down ODL2
     [Documentation]    Stop the karaf in Second Controller
-    BuiltIn.Run Keyword And Ignore Error    ClusterManagement.Get Raft State Of Shard Of All Member Nodes    shard_name=default    shard_type=config
+    BuiltIn.Run Keyword And Ignore Error
+    ...    ClusterManagement.Get Raft State Of Shard Of All Member Nodes
+    ...    shard_name=default
+    ...    shard_type=config
     ClusterManagement.Stop Single Member    2    msg=up: ODL1, ODL2, ODL3, down=none
-    BuiltIn.Run Keyword And Ignore Error    ClusterManagement.Get Raft State Of Shard Of All Member Nodes    shard_name=default    shard_type=config
+    BuiltIn.Run Keyword And Ignore Error
+    ...    ClusterManagement.Get Raft State Of Shard Of All Member Nodes
+    ...    shard_name=default
+    ...    shard_type=config
 
 Create Vm Instances For net_2
     [Documentation]    Create Vm instances using flavor and image names for a network.
-    OpenStackOperations.Create Vm Instance On Compute Node    ${NETWORKS}[1]    ${NET_2_VMS}[0]    ${OS_CMP1_HOSTNAME}    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance On Compute Node    ${NETWORKS}[1]    ${NET_2_VMS}[1]    ${OS_CMP2_HOSTNAME}    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance On Compute Node    ${NETWORKS}[1]    ${NET_2_VMS}[2]    ${OS_CMP2_HOSTNAME}    sg=${SECURITY_GROUP}
+    OpenStackOperations.Create Vm Instance On Compute Node
+    ...    ${NETWORKS}[1]
+    ...    ${NET_2_VMS}[0]
+    ...    ${OS_CMP1_HOSTNAME}
+    ...    sg=${SECURITY_GROUP}
+    OpenStackOperations.Create Vm Instance On Compute Node
+    ...    ${NETWORKS}[1]
+    ...    ${NET_2_VMS}[1]
+    ...    ${OS_CMP2_HOSTNAME}
+    ...    sg=${SECURITY_GROUP}
+    OpenStackOperations.Create Vm Instance On Compute Node
+    ...    ${NETWORKS}[1]
+    ...    ${NET_2_VMS}[2]
+    ...    ${OS_CMP2_HOSTNAME}
+    ...    sg=${SECURITY_GROUP}
 
 Check Vm Instances Have Ip Address
     @{NET_1_L3_VM_IPS}    ${NET_1_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{NET_1_VMS}
@@ -113,15 +173,27 @@ Check Vm Instances Have Ip Address
 
 Bring Up ODL2
     [Documentation]    Bring up ODL2 again
-    BuiltIn.Run Keyword And Ignore Error    ClusterManagement.Get Raft State Of Shard Of All Member Nodes    shard_name=default    shard_type=config
+    BuiltIn.Run Keyword And Ignore Error
+    ...    ClusterManagement.Get Raft State Of Shard Of All Member Nodes
+    ...    shard_name=default
+    ...    shard_type=config
     ClusterManagement.Start Single Member    2    msg=up: ODL1, ODL3, down: ODL2
-    BuiltIn.Run Keyword And Ignore Error    ClusterManagement.Get Raft State Of Shard Of All Member Nodes    shard_name=default    shard_type=config
+    BuiltIn.Run Keyword And Ignore Error
+    ...    ClusterManagement.Get Raft State Of Shard Of All Member Nodes
+    ...    shard_name=default
+    ...    shard_type=config
 
 Take Down ODL3
     [Documentation]    Stop the karaf in Third Controller
-    BuiltIn.Run Keyword And Ignore Error    ClusterManagement.Get Raft State Of Shard Of All Member Nodes    shard_name=default    shard_type=config
+    BuiltIn.Run Keyword And Ignore Error
+    ...    ClusterManagement.Get Raft State Of Shard Of All Member Nodes
+    ...    shard_name=default
+    ...    shard_type=config
     ClusterManagement.Stop Single Member    3    msg=up: ODL1, ODL2, ODL3, down=none
-    BuiltIn.Run Keyword And Ignore Error    ClusterManagement.Get Raft State Of Shard Of All Member Nodes    shard_name=default    shard_type=config
+    BuiltIn.Run Keyword And Ignore Error
+    ...    ClusterManagement.Get Raft State Of Shard Of All Member Nodes
+    ...    shard_name=default
+    ...    shard_type=config
 
 Create Router router_2
     [Documentation]    Create Router and Add Interface to the subnets.
@@ -140,15 +212,21 @@ Add Interfaces To Router
 
 Verify Created Routers
     [Documentation]    Check created routers using northbound rest calls
-    ${data}    Utils.Get Data From URI    1    ${NEUTRON_ROUTERS_API}
+    ${data}    Utils.Get Data From URI    1    ${NEUTRON_ROUTERS_API}
     BuiltIn.Log    ${data}
     Should Contain    ${data}    ${ROUTERS}[2]
 
 Bring Up ODL3
     [Documentation]    Bring up ODL3 again
-    BuiltIn.Run Keyword And Ignore Error    ClusterManagement.Get Raft State Of Shard Of All Member Nodes    shard_name=default    shard_type=config
+    BuiltIn.Run Keyword And Ignore Error
+    ...    ClusterManagement.Get Raft State Of Shard Of All Member Nodes
+    ...    shard_name=default
+    ...    shard_type=config
     ClusterManagement.Start Single Member    3    msg=up: ODL1, ODL2, down: ODL3
-    BuiltIn.Run Keyword And Ignore Error    ClusterManagement.Get Raft State Of Shard Of All Member Nodes    shard_name=default    shard_type=config
+    BuiltIn.Run Keyword And Ignore Error
+    ...    ClusterManagement.Get Raft State Of Shard Of All Member Nodes
+    ...    shard_name=default
+    ...    shard_type=config
 
 Ping Vm Instance1 In net_2 From net_1
     [Documentation]    Check reachability of vm instances by pinging to them after creating routers.
@@ -194,10 +272,16 @@ Connectivity Tests From Vm Instance3 In net_1 In Healthy Cluster
 
 Take Down ODL1 and ODL2
     [Documentation]    Stop the karaf in First and Second Controller
-    BuiltIn.Run Keyword And Ignore Error    ClusterManagement.Get Raft State Of Shard Of All Member Nodes    shard_name=default    shard_type=config
+    BuiltIn.Run Keyword And Ignore Error
+    ...    ClusterManagement.Get Raft State Of Shard Of All Member Nodes
+    ...    shard_name=default
+    ...    shard_type=config
     ClusterManagement.Stop Single Member    1    msg=up: ODL1, ODL2, ODL3, down=none
     ClusterManagement.Stop Single Member    2    msg=up: ODL2, ODL3, down=ODL1
-    BuiltIn.Run Keyword And Ignore Error    ClusterManagement.Get Raft State Of Shard Of All Member Nodes    shard_name=default    shard_type=config
+    BuiltIn.Run Keyword And Ignore Error
+    ...    ClusterManagement.Get Raft State Of Shard Of All Member Nodes
+    ...    shard_name=default
+    ...    shard_type=config
     [Teardown]    OpenStackOperations.Get Test Teardown Debugs    fail=False
 
 Connectivity Tests From Vm Instance1 In net_1 With Two ODLs Down
@@ -221,63 +305,120 @@ Connectivity Tests From Vm Instance3 In net_1 With Two ODLs Down
 Bring Up ODL1 and ODL2
     [Documentation]    Bring up ODL1 and ODL2 again. Do not check for cluster sync until all nodes are
     ...    up. akka will not let nodes join until they are all back up if two were down.
-    BuiltIn.Run Keyword And Ignore Error    ClusterManagement.Get Raft State Of Shard Of All Member Nodes    shard_name=default    shard_type=config
+    BuiltIn.Run Keyword And Ignore Error
+    ...    ClusterManagement.Get Raft State Of Shard Of All Member Nodes
+    ...    shard_name=default
+    ...    shard_type=config
     ClusterManagement.Start Single Member    1    msg=up: ODL3, down: ODL1, ODL2    wait_for_sync=False
-    BuiltIn.Run Keyword And Ignore Error    ClusterManagement.Get Raft State Of Shard Of All Member Nodes    shard_name=default    shard_type=config
+    BuiltIn.Run Keyword And Ignore Error
+    ...    ClusterManagement.Get Raft State Of Shard Of All Member Nodes
+    ...    shard_name=default
+    ...    shard_type=config
     ClusterManagement.Start Single Member    2    msg=up: ODL1, ODL3, down: ODL2
-    BuiltIn.Run Keyword And Ignore Error    ClusterManagement.Get Raft State Of Shard Of All Member Nodes    shard_name=default    shard_type=config
+    BuiltIn.Run Keyword And Ignore Error
+    ...    ClusterManagement.Get Raft State Of Shard Of All Member Nodes
+    ...    shard_name=default
+    ...    shard_type=config
     [Teardown]    OpenStackOperations.Get Test Teardown Debugs    fail=False
 
 Take Down ODL2 and ODL3
     [Documentation]    Stop the karaf in First and Second Controller
-    BuiltIn.Run Keyword And Ignore Error    ClusterManagement.Get Raft State Of Shard Of All Member Nodes    shard_name=default    shard_type=config
+    BuiltIn.Run Keyword And Ignore Error
+    ...    ClusterManagement.Get Raft State Of Shard Of All Member Nodes
+    ...    shard_name=default
+    ...    shard_type=config
     ClusterManagement.Stop Single Member    2    msg=up: ODL1, ODL2, ODL3, down=none
-    BuiltIn.Run Keyword And Ignore Error    ClusterManagement.Get Raft State Of Shard Of All Member Nodes    shard_name=default    shard_type=config
+    BuiltIn.Run Keyword And Ignore Error
+    ...    ClusterManagement.Get Raft State Of Shard Of All Member Nodes
+    ...    shard_name=default
+    ...    shard_type=config
     ClusterManagement.Stop Single Member    3    msg=up: ODL1, ODL3, down=ODL2
-    BuiltIn.Run Keyword And Ignore Error    ClusterManagement.Get Raft State Of Shard Of All Member Nodes    shard_name=default    shard_type=config
+    BuiltIn.Run Keyword And Ignore Error
+    ...    ClusterManagement.Get Raft State Of Shard Of All Member Nodes
+    ...    shard_name=default
+    ...    shard_type=config
     [Teardown]    OpenStackOperations.Get Test Teardown Debugs    fail=False
 
 Connectivity Tests From Vm Instance1 In net_2
     [Documentation]    ssh to the VM instance and test operations.
     ${dst_list} =    BuiltIn.Create List    @{NET_2_L3_VM_IPS}    @{NET_1_L3_VM_IPS}
-    BuiltIn.Wait Until Keyword Succeeds    30s    10s    OpenStackOperations.Test Operations From Vm Instance    ${NETWORKS}[1]    ${NET_2_L3_VM_IPS}[0]    ${dst_list}
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    30s
+    ...    10s
+    ...    OpenStackOperations.Test Operations From Vm Instance
+    ...    ${NETWORKS}[1]
+    ...    ${NET_2_L3_VM_IPS}[0]
+    ...    ${dst_list}
     [Teardown]    OpenStackOperations.Get Test Teardown Debugs    fail=False
 
 Connectivity Tests From Vm Instance2 In net_2
     [Documentation]    ssh to the VM instance and test operations.
     ${dst_list} =    BuiltIn.Create List    @{NET_2_L3_VM_IPS}    @{NET_1_L3_VM_IPS}
-    BuiltIn.Wait Until Keyword Succeeds    30s    10s    OpenStackOperations.Test Operations From Vm Instance    ${NETWORKS}[1]    ${NET_2_L3_VM_IPS}[1]    ${dst_list}
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    30s
+    ...    10s
+    ...    OpenStackOperations.Test Operations From Vm Instance
+    ...    ${NETWORKS}[1]
+    ...    ${NET_2_L3_VM_IPS}[1]
+    ...    ${dst_list}
     [Teardown]    OpenStackOperations.Get Test Teardown Debugs    fail=False
 
 Connectivity Tests From Vm Instance3 In net_2
     [Documentation]    ssh to the VM instance and test operations.
     ${dst_list} =    BuiltIn.Create List    @{NET_2_L3_VM_IPS}    @{NET_1_L3_VM_IPS}
-    BuiltIn.Wait Until Keyword Succeeds    30s    10s    OpenStackOperations.Test Operations From Vm Instance    ${NETWORKS}[1]    ${NET_2_L3_VM_IPS}[2]    ${dst_list}
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    30s
+    ...    10s
+    ...    OpenStackOperations.Test Operations From Vm Instance
+    ...    ${NETWORKS}[1]
+    ...    ${NET_2_L3_VM_IPS}[2]
+    ...    ${dst_list}
     [Teardown]    OpenStackOperations.Get Test Teardown Debugs    fail=False
 
 Bring Up ODL2 and ODL3
     [Documentation]    Bring up ODL2 and ODL3 again. Do not check for cluster sync until all nodes are
     ...    up. akka will not let nodes join until they are all back up if two were down.
-    BuiltIn.Run Keyword And Ignore Error    ClusterManagement.Get Raft State Of Shard Of All Member Nodes    shard_name=default    shard_type=config
+    BuiltIn.Run Keyword And Ignore Error
+    ...    ClusterManagement.Get Raft State Of Shard Of All Member Nodes
+    ...    shard_name=default
+    ...    shard_type=config
     ClusterManagement.Start Single Member    2    msg=up: ODL1, down: ODL2, ODL3    wait_for_sync=False
-    BuiltIn.Run Keyword And Ignore Error    ClusterManagement.Get Raft State Of Shard Of All Member Nodes    shard_name=default    shard_type=config
+    BuiltIn.Run Keyword And Ignore Error
+    ...    ClusterManagement.Get Raft State Of Shard Of All Member Nodes
+    ...    shard_name=default
+    ...    shard_type=config
     ClusterManagement.Start Single Member    3    msg=up: ODL1, ODL2, down: ODL3
-    BuiltIn.Run Keyword And Ignore Error    ClusterManagement.Get Raft State Of Shard Of All Member Nodes    shard_name=default    shard_type=config
+    BuiltIn.Run Keyword And Ignore Error
+    ...    ClusterManagement.Get Raft State Of Shard Of All Member Nodes
+    ...    shard_name=default
+    ...    shard_type=config
     [Teardown]    OpenStackOperations.Get Test Teardown Debugs    fail=False
 
 Take Down All Instances
     [Documentation]    Stop karaf on all controllers
-    BuiltIn.Run Keyword And Ignore Error    ClusterManagement.Get Raft State Of Shard Of All Member Nodes    shard_name=default    shard_type=config
+    BuiltIn.Run Keyword And Ignore Error
+    ...    ClusterManagement.Get Raft State Of Shard Of All Member Nodes
+    ...    shard_name=default
+    ...    shard_type=config
     ClusterManagement.Stop_Members_From_List_Or_All
-    BuiltIn.Run Keyword And Ignore Error    ClusterManagement.Get Raft State Of Shard Of All Member Nodes    shard_name=default    shard_type=config
+    BuiltIn.Run Keyword And Ignore Error
+    ...    ClusterManagement.Get Raft State Of Shard Of All Member Nodes
+    ...    shard_name=default
+    ...    shard_type=config
     [Teardown]    OpenStackOperations.Get Test Teardown Debugs    fail=False
 
 Bring Up All Instances
     [Documentation]    Bring up all controllers. Do not check for cluster sync until all nodes are
     ...    up. akka will not let nodes join until they are all back up if two were down.
-    BuiltIn.Run Keyword And Ignore Error    ClusterManagement.Get Raft State Of Shard Of All Member Nodes    shard_name=default    shard_type=config
+    BuiltIn.Run Keyword And Ignore Error
+    ...    ClusterManagement.Get Raft State Of Shard Of All Member Nodes
+    ...    shard_name=default
+    ...    shard_type=config
     ClusterManagement.Start Members From List Or All
-    BuiltIn.Run Keyword And Ignore Error    ClusterManagement.Get Raft State Of Shard Of All Member Nodes    shard_name=default    shard_type=config
+    BuiltIn.Run Keyword And Ignore Error
+    ...    ClusterManagement.Get Raft State Of Shard Of All Member Nodes
+    ...    shard_name=default
+    ...    shard_type=config
     [Teardown]    OpenStackOperations.Get Test Teardown Debugs    fail=False
 
 Connectivity Tests From Vm Instance2 In net_2 after recovering all nodes
index 37230bfa11e06fe6daaed7c1ce210f529ceaef1c..3a792d389b2b340e9ebc5fad13c2db8dbde8a8dc 100644 (file)
@@ -1,31 +1,35 @@
 *** Settings ***
-Documentation     Test suite to check connectivity while disrupting connection between cluster nodes
-Suite Setup       OpenStackOperations.OpenStack Suite Setup
-Suite Teardown    Close All Connections
-Test Setup        SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
-Test Teardown     OpenStackOperations.Get Test Teardown Debugs
-Library           SSHLibrary
-Library           OperatingSystem
-Library           RequestsLibrary
-Library           Collections
-Resource          ../../../libraries/Utils.robot
-Resource          ../../../libraries/OpenStackOperations.robot
-Resource          ../../../libraries/DevstackUtils.robot
-Resource          ../../../libraries/OVSDB.robot
-Resource          ../../../libraries/ClusterOvsdb.robot
-Resource          ../../../libraries/ClusterManagement.robot
-Resource          ../../../libraries/SetupUtils.robot
-Resource          ../../../variables/Variables.robot
+Documentation       Test suite to check connectivity while disrupting connection between cluster nodes
+
+Library             SSHLibrary
+Library             OperatingSystem
+Library             RequestsLibrary
+Library             Collections
+Resource            ../../../libraries/Utils.robot
+Resource            ../../../libraries/OpenStackOperations.robot
+Resource            ../../../libraries/DevstackUtils.robot
+Resource            ../../../libraries/OVSDB.robot
+Resource            ../../../libraries/ClusterOvsdb.robot
+Resource            ../../../libraries/ClusterManagement.robot
+Resource            ../../../libraries/SetupUtils.robot
+Resource            ../../../variables/Variables.robot
+
+Suite Setup         OpenStackOperations.OpenStack Suite Setup
+Suite Teardown      Close All Connections
+Test Setup          SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
+Test Teardown       OpenStackOperations.Get Test Teardown Debugs
+
 
 *** Variables ***
-${SECURITY_GROUP}    cl3_bp_sg
-@{NETWORKS}       cl3_bp_net_1    cl3_bp_net_2
-@{SUBNETS}        cl3_bp_sub_1    cl3_bp_sub_2
-@{ROUTERS}        cl3_bp_router_1    cl3_bp_router_2    cl3_bp_router_3
-@{NET_1_VMS}      cl3_bp_net_1_vm_1    cl3_bp_net_1_vm_2    cl3_bp_net_1_vm_3
-@{NET_2_VMS}      cl3_bp_net_2_vm_1    cl3_bp_net_2_vm_2    cl3_bp_net_2_vm_3
-@{SUBNET_CIDRS}    38.0.0.0/24    39.0.0.0/24
-@{GATEWAY_IPS}    38.0.0.1    39.0.0.1
+${SECURITY_GROUP}       cl3_bp_sg
+@{NETWORKS}             cl3_bp_net_1    cl3_bp_net_2
+@{SUBNETS}              cl3_bp_sub_1    cl3_bp_sub_2
+@{ROUTERS}              cl3_bp_router_1    cl3_bp_router_2    cl3_bp_router_3
+@{NET_1_VMS}            cl3_bp_net_1_vm_1    cl3_bp_net_1_vm_2    cl3_bp_net_1_vm_3
+@{NET_2_VMS}            cl3_bp_net_2_vm_1    cl3_bp_net_2_vm_2    cl3_bp_net_2_vm_3
+@{SUBNET_CIDRS}         38.0.0.0/24    39.0.0.0/24
+@{GATEWAY_IPS}          38.0.0.1    39.0.0.1
+
 
 *** Test Cases ***
 Create All Controller Sessions
@@ -56,9 +60,21 @@ Block Port On ODL1
 
 Create Vm Instances For net_1
     [Documentation]    Create Vm instances using flavor and image names for a network.
-    OpenStackOperations.Create Vm Instance On Compute Node    ${NETWORKS}[0]    ${NET_1_VMS}[0]    ${OS_CMP1_HOSTNAME}    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance On Compute Node    ${NETWORKS}[0]    ${NET_1_VMS}[1]    ${OS_CMP1_HOSTNAME}    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance On Compute Node    ${NETWORKS}[0]    ${NET_1_VMS}[2]    ${OS_CMP2_HOSTNAME}    sg=${SECURITY_GROUP}
+    OpenStackOperations.Create Vm Instance On Compute Node
+    ...    ${NETWORKS}[0]
+    ...    ${NET_1_VMS}[0]
+    ...    ${OS_CMP1_HOSTNAME}
+    ...    sg=${SECURITY_GROUP}
+    OpenStackOperations.Create Vm Instance On Compute Node
+    ...    ${NETWORKS}[0]
+    ...    ${NET_1_VMS}[1]
+    ...    ${OS_CMP1_HOSTNAME}
+    ...    sg=${SECURITY_GROUP}
+    OpenStackOperations.Create Vm Instance On Compute Node
+    ...    ${NETWORKS}[0]
+    ...    ${NET_1_VMS}[2]
+    ...    ${OS_CMP2_HOSTNAME}
+    ...    sg=${SECURITY_GROUP}
 
 Allow Port On ODL1
     [Documentation]    Allow connection on first controller
@@ -70,9 +86,21 @@ Block Port On ODL2
 
 Create Vm Instances For net_2
     [Documentation]    Create Vm instances using flavor and image names for a network.
-    OpenStackOperations.Create Vm Instance On Compute Node    ${NETWORKS}[1]    ${NET_2_VMS}[0]    ${OS_CMP1_HOSTNAME}    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance On Compute Node    ${NETWORKS}[1]    ${NET_2_VMS}[1]    ${OS_CMP2_HOSTNAME}    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance On Compute Node    ${NETWORKS}[1]    ${NET_2_VMS}[2]    ${OS_CMP2_HOSTNAME}    sg=${SECURITY_GROUP}
+    OpenStackOperations.Create Vm Instance On Compute Node
+    ...    ${NETWORKS}[1]
+    ...    ${NET_2_VMS}[0]
+    ...    ${OS_CMP1_HOSTNAME}
+    ...    sg=${SECURITY_GROUP}
+    OpenStackOperations.Create Vm Instance On Compute Node
+    ...    ${NETWORKS}[1]
+    ...    ${NET_2_VMS}[1]
+    ...    ${OS_CMP2_HOSTNAME}
+    ...    sg=${SECURITY_GROUP}
+    OpenStackOperations.Create Vm Instance On Compute Node
+    ...    ${NETWORKS}[1]
+    ...    ${NET_2_VMS}[2]
+    ...    ${OS_CMP2_HOSTNAME}
+    ...    sg=${SECURITY_GROUP}
 
 Check Vm Instances Have Ip Address
     @{NET_1_L3_VM_IPS}    ${NET_1_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{NET_1_VMS}
@@ -111,7 +139,7 @@ Add Interfaces To Router
 
 Verify Created Routers
     [Documentation]    Check created routers using northbound rest calls
-    ${data}    Utils.Get Data From URI    1    ${NEUTRON_ROUTERS_API}
+    ${data}    Utils.Get Data From URI    1    ${NEUTRON_ROUTERS_API}
     BuiltIn.Log    ${data}
     Should Contain    ${data}    ${ROUTERS}[2]
 
@@ -173,7 +201,11 @@ Connectivity Tests From Vm Instance3 In net_1
 
 Allow Port On ODL1 Again
     [Documentation]    Allow connection on first controller the second time
-    BuiltIn.Run_Keyword_And_Ignore_Error    ClusterManagement.Rejoin_Member_From_List_Or_All    ${1}    protocol=tcp    port=${ODL_AKKA_PORT}
+    BuiltIn.Run_Keyword_And_Ignore_Error
+    ...    ClusterManagement.Rejoin_Member_From_List_Or_All
+    ...    ${1}
+    ...    protocol=tcp
+    ...    port=${ODL_AKKA_PORT}
 
 Allow Port On ODL2 Again
     [Documentation]    Allow connection on the second controller the second time
@@ -209,7 +241,11 @@ Connectivity Tests From Vm Instance3 In net_2
 
 Allow Port On ODL2 Finally
     [Documentation]    Allow connection on second controller for the last time
-    BuiltIn.Run_Keyword_And_Ignore_Error    ClusterManagement.Rejoin_Member_From_List_Or_All    ${2}    protocol=tcp    port=${ODL_AKKA_PORT}
+    BuiltIn.Run_Keyword_And_Ignore_Error
+    ...    ClusterManagement.Rejoin_Member_From_List_Or_All
+    ...    ${2}
+    ...    protocol=tcp
+    ...    port=${ODL_AKKA_PORT}
 
 Allow Port On ODL3 Again
     [Documentation]    Allow connection on the third controller for the second time
index e7c4883457e3b5cab2a3d8b7b1c9fd2b3e3510bd..22ae1b0eb11159da0cdd6d581b5d05f3ab879df9 100644 (file)
 *** Settings ***
-Documentation     Test suite to check North-South connectivity in L3 using a router and an external network
-Suite Setup       Suite Setup
-Suite Teardown    OpenStackOperations.OpenStack Suite Teardown
-Test Setup        SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
-Test Teardown     OpenStackOperations.Get Test Teardown Debugs
-Force Tags        skip_if_${ODL_SNAT_MODE}
-Library           Collections
-Library           SSHLibrary
-Library           OperatingSystem
-Library           RequestsLibrary
-Resource          ../../../libraries/DevstackUtils.robot
-Resource          ../../../libraries/DataModels.robot
-Resource          ../../../libraries/OpenStackOperations.robot
-Resource          ../../../libraries/SetupUtils.robot
-Resource          ../../../libraries/Utils.robot
-Resource          ../../../variables/netvirt/Variables.robot
+Documentation       Test suite to check North-South connectivity in L3 using a router and an external network
+
+Library             Collections
+Library             SSHLibrary
+Library             OperatingSystem
+Library             RequestsLibrary
+Resource            ../../../libraries/DevstackUtils.robot
+Resource            ../../../libraries/DataModels.robot
+Resource            ../../../libraries/OpenStackOperations.robot
+Resource            ../../../libraries/SetupUtils.robot
+Resource            ../../../libraries/Utils.robot
+Resource            ../../../variables/netvirt/Variables.robot
+
+Suite Setup         Suite Setup
+Suite Teardown      OpenStackOperations.OpenStack Suite Teardown
+Test Setup          SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
+Test Teardown       OpenStackOperations.Get Test Teardown Debugs
+
+Force Tags          skip_if_${odl_snat_mode}
+
 
 *** Variables ***
-${SECURITY_GROUP}    l3_ext_sg
-@{NETWORKS}       l3_ext_net_1    l3_ext_net_2
-@{SUBNETS}        l3_ext_sub_1    l3_ext_sub_2
-@{ROUTERS}        l3_ext_router_1    l3_ext_router_2
-@{NET1_FIP_VMS}    l3_ext_net_1_fip_vm_1    l3_ext_net_1_fip_vm_2    l3_ext_net_1_fip_vm_3
-@{NET1_SNAT_VMS}    l3_ext_net_1_snat_vm_1    l3_ext_net_1_snat_vm_2
-@{NET2_SNAT_VMS}    l3_ext_net_2_snat_vm_3
-@{SNAT_VMS}       @{NET1_SNAT_VMS}    @{NET2_SNAT_VMS}
-@{SUBNET_CIDRS}    41.0.0.0/24    42.0.0.0/24
+${SECURITY_GROUP}                       l3_ext_sg
+@{NETWORKS}                             l3_ext_net_1    l3_ext_net_2
+@{SUBNETS}                              l3_ext_sub_1    l3_ext_sub_2
+@{ROUTERS}                              l3_ext_router_1    l3_ext_router_2
+@{NET1_FIP_VMS}                         l3_ext_net_1_fip_vm_1    l3_ext_net_1_fip_vm_2    l3_ext_net_1_fip_vm_3
+@{NET1_SNAT_VMS}                        l3_ext_net_1_snat_vm_1    l3_ext_net_1_snat_vm_2
+@{NET2_SNAT_VMS}                        l3_ext_net_2_snat_vm_3
+@{SNAT_VMS}                             @{NET1_SNAT_VMS}    @{NET2_SNAT_VMS}
+@{SUBNET_CIDRS}                         41.0.0.0/24    42.0.0.0/24
 # Parameter values below are based on releng/builder - changing them requires updates in releng/builder as well
-${EXTERNAL_GATEWAY}    10.10.10.250
-${EXTERNAL_PNF}    10.10.10.253
-${EXTERNAL_SUBNET}    10.10.10.0/24
-${EXTERNAL_SUBNET_ALLOCATION_POOL}    start=10.10.10.2,end=10.10.10.249
-${EXTERNAL_INTERNET_ADDR}    10.9.9.9
+${EXTERNAL_GATEWAY}                     10.10.10.250
+${EXTERNAL_PNF}                         10.10.10.253
+${EXTERNAL_SUBNET}                      10.10.10.0/24
+${EXTERNAL_SUBNET_ALLOCATION_POOL}      start=10.10.10.2,end=10.10.10.249
+${EXTERNAL_INTERNET_ADDR}               10.9.9.9
+
 
 *** Test Cases ***
 Initial Ping To External Network PNF from Vm Instance 1
     [Documentation]    Check reachability of External Network PNF from VM instance (with ttl=1 to make sure no router hops)
     ${expect_ping_to_work} =    Set Variable If    "skip_if_controller" in @{TEST_TAGS}    False    True
-    ${dst_ip}=    BuiltIn.Create List    ${EXTERNAL_PNF}
-    OpenStackOperations.Test Operations From Vm Instance    ${NETWORKS}[0]    ${NET1_FIP_VM_IPS}[0]    ${dst_ip}    ttl=1    ping_should_succeed=${expect_ping_to_work}    ping_tries=8
+    ${dst_ip} =    BuiltIn.Create List    ${EXTERNAL_PNF}
+    OpenStackOperations.Test Operations From Vm Instance
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_FIP_VM_IPS}[0]
+    ...    ${dst_ip}
+    ...    ttl=1
+    ...    ping_should_succeed=${expect_ping_to_work}
+    ...    ping_tries=8
 
 Initial Ping To External Network PNF from Vm Instance 2
     [Documentation]    Check reachability of External Network PNF from VM instance (with ttl=1 to make sure no router hops)
     ${expect_ping_to_work} =    Set Variable If    "skip_if_controller" in @{TEST_TAGS}    False    True
-    ${dst_ip}=    BuiltIn.Create List    ${EXTERNAL_PNF}
-    OpenStackOperations.Test Operations From Vm Instance    ${NETWORKS}[0]    ${NET1_FIP_VM_IPS}[1]    ${dst_ip}    ttl=1    ping_should_succeed=${expect_ping_to_work}    ping_tries=8
+    ${dst_ip} =    BuiltIn.Create List    ${EXTERNAL_PNF}
+    OpenStackOperations.Test Operations From Vm Instance
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_FIP_VM_IPS}[1]
+    ...    ${dst_ip}
+    ...    ttl=1
+    ...    ping_should_succeed=${expect_ping_to_work}
+    ...    ping_tries=8
 
 Create And Associate Floating IPs for VMs
     [Documentation]    Create and associate a floating IP for the VM
-    ${VM_FLOATING_IPS} =    OpenStackOperations.Create And Associate Floating IPs    ${EXTERNAL_NET_NAME}    @{NET1_FIP_VMS}
+    ${VM_FLOATING_IPS} =    OpenStackOperations.Create And Associate Floating IPs
+    ...    ${EXTERNAL_NET_NAME}
+    ...    @{NET1_FIP_VMS}
     BuiltIn.Set Suite Variable    ${VM_FLOATING_IPS}
     [Teardown]    BuiltIn.Run Keywords    OpenStackOperations.Show Debugs    @{NET1_FIP_VMS}
     ...    AND    OpenStackOperations.Get Test Teardown Debugs
 
 Ping External Gateway From Control Node
     [Documentation]    Check reachability of external gateway by pinging it from the control node.
-    OpenStackOperations.Ping Vm From Control Node    ${EXTERNAL_GATEWAY}    additional_args=-I ${EXTERNAL_INTERNET_ADDR}
+    OpenStackOperations.Ping Vm From Control Node
+    ...    ${EXTERNAL_GATEWAY}
+    ...    additional_args=-I ${EXTERNAL_INTERNET_ADDR}
 
 Ping Vm Instance1 Floating IP From Control Node
     [Documentation]    Check reachability of VM instance through floating IP by pinging them.
-    OpenStackOperations.Ping Vm From Control Node    ${VM_FLOATING_IPS}[0]    additional_args=-I ${EXTERNAL_INTERNET_ADDR}
+    OpenStackOperations.Ping Vm From Control Node
+    ...    ${VM_FLOATING_IPS}[0]
+    ...    additional_args=-I ${EXTERNAL_INTERNET_ADDR}
 
 Ping Vm Instance2 Floating IP From Control Node
     [Documentation]    Check reachability of VM instance through floating IP by pinging them.
-    OpenStackOperations.Ping Vm From Control Node    ${VM_FLOATING_IPS}[1]    additional_args=-I ${EXTERNAL_INTERNET_ADDR}
+    OpenStackOperations.Ping Vm From Control Node
+    ...    ${VM_FLOATING_IPS}[1]
+    ...    additional_args=-I ${EXTERNAL_INTERNET_ADDR}
 
 Ping Vm Instance2 Floating IP From Vm Instance1 With Floating IP (Hairpinning)
     [Documentation]    Check reachability of VM instance floating IP from another VM instance with FIP (with ttl=1 to make sure no router hops)
     ${dst_ip} =    BuiltIn.Create List    ${VM_FLOATING_IPS}[1]
-    OpenStackOperations.Test Operations From Vm Instance    ${NETWORKS}[0]    ${NET1_FIP_VM_IPS}[0]    ${dst_ip}    ttl=1
+    OpenStackOperations.Test Operations From Vm Instance
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_FIP_VM_IPS}[0]
+    ...    ${dst_ip}
+    ...    ttl=1
 
 Connectivity Tests To Vm Instance2 Floating IP From Vm Instance3 With Floating IP (FIP-FIP in the same compute node)
     [Documentation]    Check reachability of VM instance floating IP from another VM instance with FIP (FIP-FIP in the same compute node)
@@ -80,100 +109,175 @@ Ping Vm Instance1 Floating IP From SNAT VM Instance1
     [Documentation]    Check reachability of VM instance floating IP from another VM without Floating IP
     ${expect_ping_to_work} =    Set Variable If    "skip_if_controller" in @{TEST_TAGS}    False    True
     ${dst_ip} =    BuiltIn.Create List    ${VM_FLOATING_IPS}[0]
-    OpenStackOperations.Test Operations From Vm Instance    ${NETWORKS}[0]    ${NET1_SNAT_VM_IPS}[0]    ${dst_ip}    ttl=1    ping_should_succeed=${expect_ping_to_work}
-    OpenStackOperations.Test Operations From Vm Instance    ${NETWORKS}[1]    ${NET2_SNAT_VM_IPS}[0]    ${dst_ip}    ttl=1    ping_should_succeed=${expect_ping_to_work}
+    OpenStackOperations.Test Operations From Vm Instance
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_SNAT_VM_IPS}[0]
+    ...    ${dst_ip}
+    ...    ttl=1
+    ...    ping_should_succeed=${expect_ping_to_work}
+    OpenStackOperations.Test Operations From Vm Instance
+    ...    ${NETWORKS}[1]
+    ...    ${NET2_SNAT_VM_IPS}[0]
+    ...    ${dst_ip}
+    ...    ttl=1
+    ...    ping_should_succeed=${expect_ping_to_work}
 
 Ping Vm Instance1 Floating IP From SNAT VM Instance2
     [Documentation]    Check reachability of VM instance floating IP from another VM without Floating IP
     ${expect_ping_to_work} =    Set Variable If    "skip_if_controller" in @{TEST_TAGS}    False    True
     ${dst_ip} =    BuiltIn.Create List    ${VM_FLOATING_IPS}[0]
-    OpenStackOperations.Test Operations From Vm Instance    ${NETWORKS}[0]    ${NET1_SNAT_VM_IPS}[1]    ${dst_ip}    ttl=1    ping_should_succeed=${expect_ping_to_work}
+    OpenStackOperations.Test Operations From Vm Instance
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_SNAT_VM_IPS}[1]
+    ...    ${dst_ip}
+    ...    ttl=1
+    ...    ping_should_succeed=${expect_ping_to_work}
 
 Ping Vm Instance2 Floating IP From SNAT VM Instance1
     [Documentation]    Check reachability of VM instance floating IP from another VM without Floating IP
     ${expect_ping_to_work} =    Set Variable If    "skip_if_controller" in @{TEST_TAGS}    False    True
     ${dst_ip} =    BuiltIn.Create List    ${VM_FLOATING_IPS}[1]
-    OpenStackOperations.Test Operations From Vm Instance    ${NETWORKS}[0]    ${NET1_SNAT_VM_IPS}[0]    ${dst_ip}    ttl=1    ping_should_succeed=${expect_ping_to_work}
-    OpenStackOperations.Test Operations From Vm Instance    ${NETWORKS}[1]    ${NET2_SNAT_VM_IPS}[0]    ${dst_ip}    ttl=1    ping_should_succeed=${expect_ping_to_work}
+    OpenStackOperations.Test Operations From Vm Instance
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_SNAT_VM_IPS}[0]
+    ...    ${dst_ip}
+    ...    ttl=1
+    ...    ping_should_succeed=${expect_ping_to_work}
+    OpenStackOperations.Test Operations From Vm Instance
+    ...    ${NETWORKS}[1]
+    ...    ${NET2_SNAT_VM_IPS}[0]
+    ...    ${dst_ip}
+    ...    ttl=1
+    ...    ping_should_succeed=${expect_ping_to_work}
 
 Ping Vm Instance2 Floating IP From SNAT VM Instance2
     [Documentation]    Check reachability of VM instance floating IP from another VM without Floating IP
     ${expect_ping_to_work} =    Set Variable If    "skip_if_controller" in @{TEST_TAGS}    False    True
     ${dst_ip} =    BuiltIn.Create List    ${VM_FLOATING_IPS}[1]
-    OpenStackOperations.Test Operations From Vm Instance    ${NETWORKS}[0]    ${NET1_SNAT_VM_IPS}[1]    ${dst_ip}    ttl=1    ping_should_succeed=${expect_ping_to_work}
+    OpenStackOperations.Test Operations From Vm Instance
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_SNAT_VM_IPS}[1]
+    ...    ${dst_ip}
+    ...    ttl=1
+    ...    ping_should_succeed=${expect_ping_to_work}
 
 Ping External Network PNF from Vm Instance 1 After Floating IP Assignment
     [Documentation]    Check reachability of External Network PNF from VM instance (with ttl=1 to make sure no router hops)
     ${dst_ip} =    BuiltIn.Create List    ${EXTERNAL_PNF}
-    OpenStackOperations.Test Operations From Vm Instance    ${NETWORKS}[0]    ${NET1_FIP_VM_IPS}[0]    ${dst_ip}    ttl=1    ping_tries=8
+    OpenStackOperations.Test Operations From Vm Instance
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_FIP_VM_IPS}[0]
+    ...    ${dst_ip}
+    ...    ttl=1
+    ...    ping_tries=8
 
 SNAT - TCP connection to External Gateway From SNAT VM Instance1
     [Documentation]    Login to the VM instance and test TCP connection to the controller via SNAT
-    [Tags]    NON_GATE
-    OpenStackOperations.Test Netcat Operations From Vm Instance    ${NETWORKS}[0]    ${NET1_SNAT_VM_IPS}[0]    ${EXTERNAL_GATEWAY}
+    [Tags]    non_gate
+    OpenStackOperations.Test Netcat Operations From Vm Instance
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_SNAT_VM_IPS}[0]
+    ...    ${EXTERNAL_GATEWAY}
 
 SNAT - UDP connection to External Gateway From SNAT VM Instance1
     [Documentation]    Login to the VM instance and test UDP connection to the controller via SNAT
-    [Tags]    NON_GATE
-    OpenStackOperations.Test Netcat Operations From Vm Instance    ${NETWORKS}[0]    ${NET1_SNAT_VM_IPS}[0]    ${EXTERNAL_GATEWAY}    -u
+    [Tags]    non_gate
+    OpenStackOperations.Test Netcat Operations From Vm Instance
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_SNAT_VM_IPS}[0]
+    ...    ${EXTERNAL_GATEWAY}
+    ...    -u
 
 SNAT - TCP connection to External Gateway From SNAT VM Instance2
     [Documentation]    Login to the VM instance and test TCP connection to the controller via SNAT
-    [Tags]    NON_GATE
-    OpenStackOperations.Test Netcat Operations From Vm Instance    ${NETWORKS}[0]    ${NET1_SNAT_VM_IPS}[1]    ${EXTERNAL_GATEWAY}
+    [Tags]    non_gate
+    OpenStackOperations.Test Netcat Operations From Vm Instance
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_SNAT_VM_IPS}[1]
+    ...    ${EXTERNAL_GATEWAY}
 
 SNAT - UDP connection to External Gateway From SNAT VM Instance2
     [Documentation]    Login to the VM instance and test UDP connection to the controller via SNAT
-    [Tags]    NON_GATE
-    OpenStackOperations.Test Netcat Operations From Vm Instance    ${NETWORKS}[0]    ${NET1_SNAT_VM_IPS}[1]    ${EXTERNAL_GATEWAY}    -u
+    [Tags]    non_gate
+    OpenStackOperations.Test Netcat Operations From Vm Instance
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_SNAT_VM_IPS}[1]
+    ...    ${EXTERNAL_GATEWAY}
+    ...    -u
 
 SNAT - TCP connection to External Gateway From SNAT VM Instance3
     [Documentation]    Login to the VM instance and test TCP connection to the controller via SNAT
-    [Tags]    NON_GATE
-    OpenStackOperations.Test Netcat Operations From Vm Instance    ${NETWORKS}[1]    ${NET2_SNAT_VM_IPS}[0]    ${EXTERNAL_GATEWAY}
+    [Tags]    non_gate
+    OpenStackOperations.Test Netcat Operations From Vm Instance
+    ...    ${NETWORKS}[1]
+    ...    ${NET2_SNAT_VM_IPS}[0]
+    ...    ${EXTERNAL_GATEWAY}
 
 SNAT - UDP connection to External Gateway From SNAT VM Instance3
     [Documentation]    Login to the VM instance and test UDP connection to the controller via SNAT
-    [Tags]    NON_GATE
-    OpenStackOperations.Test Netcat Operations From Vm Instance    ${NETWORKS}[1]    ${NET2_SNAT_VM_IPS}[0]    ${EXTERNAL_GATEWAY}    -u
+    [Tags]    non_gate
+    OpenStackOperations.Test Netcat Operations From Vm Instance
+    ...    ${NETWORKS}[1]
+    ...    ${NET2_SNAT_VM_IPS}[0]
+    ...    ${EXTERNAL_GATEWAY}
+    ...    -u
 
 Ping External Network PNF from SNAT VM Instance1
     [Documentation]    Check reachability of External Network PNF from SNAT VM Instance1
-    [Tags]    NON_GATE
+    [Tags]    non_gate
     ${expect_ping_to_work} =    Set Variable If    "skip_if_controller" in @{TEST_TAGS}    False    True
     ${dst_ip} =    BuiltIn.Create List    ${EXTERNAL_PNF}
-    OpenStackOperations.Test Operations From Vm Instance    ${NETWORKS}[0]    ${NET1_SNAT_VM_IPS}[0]    ${dst_ip}    ping_should_succeed=${expect_ping_to_work}
+    OpenStackOperations.Test Operations From Vm Instance
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_SNAT_VM_IPS}[0]
+    ...    ${dst_ip}
+    ...    ping_should_succeed=${expect_ping_to_work}
 
 Ping External Network PNF from SNAT VM Instance2
     [Documentation]    Check reachability of External Network PNF from SNAT VM Instance2
-    [Tags]    NON_GATE
+    [Tags]    non_gate
     ${expect_ping_to_work} =    Set Variable If    "skip_if_controller" in @{TEST_TAGS}    False    True
     ${dst_ip} =    BuiltIn.Create List    ${EXTERNAL_PNF}
-    OpenStackOperations.Test Operations From Vm Instance    ${NETWORKS}[0]    ${NET1_SNAT_VM_IPS}[1]    ${dst_ip}    ping_should_succeed=${expect_ping_to_work}
+    OpenStackOperations.Test Operations From Vm Instance
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_SNAT_VM_IPS}[1]
+    ...    ${dst_ip}
+    ...    ping_should_succeed=${expect_ping_to_work}
 
 Remove Floating Ip from VM Instance 1
     [Documentation]    Delete FIP from VM Instance 1
-    [Tags]    NON_GATE
+    [Tags]    non_gate
     OpenStackOperations.Remove Floating Ip From Vm    ${NET1_FIP_VMS}[0]    ${VM_FLOATING_IPS}[0]
 
 Remove Floating Ip from VM Instance 2
     [Documentation]    Delete FIP from VM Instance 2
-    [Tags]    NON_GATE
+    [Tags]    non_gate
     OpenStackOperations.Remove Floating Ip From Vm    ${NET1_FIP_VMS}[1]    ${VM_FLOATING_IPS}[1]
 
 Ping External Network PNF from Vm Instance 1 After Floating IP Removal
     [Documentation]    Check reachability of External Network PNF from VM instance (with ttl=1 to make sure no router hops)
-    [Tags]    NON_GATE
+    [Tags]    non_gate
     ${expect_ping_to_work} =    Set Variable If    "skip_if_controller" in @{TEST_TAGS}    False    True
     ${dst_ip} =    BuiltIn.Create List    ${EXTERNAL_PNF}
-    OpenStackOperations.Test Operations From Vm Instance    ${NETWORKS}[0]    ${NET1_FIP_VM_IPS}[0]    ${dst_ip}    ttl=1    ping_should_succeed=${expect_ping_to_work}
+    OpenStackOperations.Test Operations From Vm Instance
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_FIP_VM_IPS}[0]
+    ...    ${dst_ip}
+    ...    ttl=1
+    ...    ping_should_succeed=${expect_ping_to_work}
 
 Ping External Network PNF from Vm Instance 2 After Floating IP Removal
     [Documentation]    Check reachability of External Network PNF from VM instance (with ttl=1 to make sure no router hops)
-    [Tags]    NON_GATE
+    [Tags]    non_gate
     ${expect_ping_to_work} =    Set Variable If    "skip_if_controller" in @{TEST_TAGS}    False    True
     ${dst_ip} =    BuiltIn.Create List    ${EXTERNAL_PNF}
-    OpenStackOperations.Test Operations From Vm Instance    ${NETWORKS}[0]    ${NET1_FIP_VM_IPS}[1]    ${dst_ip}    ttl=1    ping_should_succeed=${expect_ping_to_work}
+    OpenStackOperations.Test Operations From Vm Instance
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_FIP_VM_IPS}[1]
+    ...    ${dst_ip}
+    ...    ttl=1
+    ...    ping_should_succeed=${expect_ping_to_work}
+
 
 *** Keywords ***
 Suite Setup
@@ -186,12 +290,36 @@ Suite Setup
         OpenStackOperations.Create SubNet    ${network}    ${subnet}    ${cidr}
     END
     OpenStackOperations.Create Allow All SecurityGroup    ${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance On Compute Node    ${NETWORKS}[0]    ${NET1_FIP_VMS}[0]    ${OS_CMP1_HOSTNAME}    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance On Compute Node    ${NETWORKS}[0]    ${NET1_FIP_VMS}[1]    ${OS_CMP2_HOSTNAME}    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance On Compute Node    ${NETWORKS}[0]    ${NET1_FIP_VMS}[2]    ${OS_CMP2_HOSTNAME}    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance On Compute Node    ${NETWORKS}[0]    ${NET_1_SNAT_VMS}[0]    ${OS_CMP1_HOSTNAME}    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance On Compute Node    ${NETWORKS}[0]    ${NET_1_SNAT_VMS}[1]    ${OS_CMP1_HOSTNAME}    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance On Compute Node    ${NETWORKS}[1]    ${NET_2_SNAT_VMS}[0]    ${OS_CMP2_HOSTNAME}    sg=${SECURITY_GROUP}
+    OpenStackOperations.Create Vm Instance On Compute Node
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_FIP_VMS}[0]
+    ...    ${OS_CMP1_HOSTNAME}
+    ...    sg=${SECURITY_GROUP}
+    OpenStackOperations.Create Vm Instance On Compute Node
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_FIP_VMS}[1]
+    ...    ${OS_CMP2_HOSTNAME}
+    ...    sg=${SECURITY_GROUP}
+    OpenStackOperations.Create Vm Instance On Compute Node
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_FIP_VMS}[2]
+    ...    ${OS_CMP2_HOSTNAME}
+    ...    sg=${SECURITY_GROUP}
+    OpenStackOperations.Create Vm Instance On Compute Node
+    ...    ${NETWORKS}[0]
+    ...    ${NET_1_SNAT_VMS}[0]
+    ...    ${OS_CMP1_HOSTNAME}
+    ...    sg=${SECURITY_GROUP}
+    OpenStackOperations.Create Vm Instance On Compute Node
+    ...    ${NETWORKS}[0]
+    ...    ${NET_1_SNAT_VMS}[1]
+    ...    ${OS_CMP1_HOSTNAME}
+    ...    sg=${SECURITY_GROUP}
+    OpenStackOperations.Create Vm Instance On Compute Node
+    ...    ${NETWORKS}[1]
+    ...    ${NET_2_SNAT_VMS}[0]
+    ...    ${OS_CMP2_HOSTNAME}
+    ...    sg=${SECURITY_GROUP}
     @{NET1_FIP_VM_IPS}    ${NET1_FIP_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{NET1_FIP_VMS}
     @{NET1_SNAT_VM_IPS}    ${NET1_SNAT_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{NET1_SNAT_VMS}
     @{NET2_SNAT_VM_IPS}    ${NET2_SNAT_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{NET2_SNAT_VMS}
@@ -204,9 +332,15 @@ Suite Setup
     BuiltIn.Should Not Contain    ${NET1_FIP_DHCP_IP}    None
     BuiltIn.Should Not Contain    ${NET1_SNAT_DHCP_IP}    None
     BuiltIn.Should Not Contain    ${NET2_SNAT_DHCP_IP}    None
-    OpenStackOperations.Create Network    ${EXTERNAL_NET_NAME}    --provider-network-type flat --provider-physical-network ${PUBLIC_PHYSICAL_NETWORK}
+    OpenStackOperations.Create Network
+    ...    ${EXTERNAL_NET_NAME}
+    ...    --provider-network-type flat --provider-physical-network ${PUBLIC_PHYSICAL_NETWORK}
     OpenStackOperations.Update Network    ${EXTERNAL_NET_NAME}    --external
-    OpenStackOperations.Create Subnet    ${EXTERNAL_NET_NAME}    ${EXTERNAL_SUBNET_NAME}    ${EXTERNAL_SUBNET}    --gateway ${EXTERNAL_GATEWAY} --allocation-pool ${EXTERNAL_SUBNET_ALLOCATION_POOL}
+    OpenStackOperations.Create Subnet
+    ...    ${EXTERNAL_NET_NAME}
+    ...    ${EXTERNAL_SUBNET_NAME}
+    ...    ${EXTERNAL_SUBNET}
+    ...    --gateway ${EXTERNAL_GATEWAY} --allocation-pool ${EXTERNAL_SUBNET_ALLOCATION_POOL}
     FOR    ${router}    IN    @{ROUTERS}
         OpenStackOperations.Create Router    ${router}
     END
@@ -216,7 +350,7 @@ Suite Setup
     FOR    ${router}    IN    @{ROUTERS}
         OpenStackOperations.Add Router Gateway    ${router}    ${EXTERNAL_NET_NAME}
     END
-    ${data}    Utils.Get Data From URI    1    ${NEUTRON_ROUTERS_API}
+    ${data}    Utils.Get Data From URI    1    ${NEUTRON_ROUTERS_API}
     BuiltIn.Log    ${data}
     FOR    ${router}    IN    @{ROUTERS}
         Should Contain    ${data}    ${router}
index 5d4f49e8873c4c8ea5fd4a2f0217e5f1fa8fe6e1..211ca710485a40b67ff15aec54f792a61668013b 100644 (file)
@@ -1,28 +1,32 @@
 *** Settings ***
-Documentation     Test suite to verify packet flows between vm instances.
-Suite Setup       Suite Setup
-Suite Teardown    OpenStackOperations.OpenStack Suite Teardown
-Test Setup        SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
-Test Teardown     OpenStackOperations.Get Test Teardown Debugs
-Library           SSHLibrary
-Library           OperatingSystem
-Library           RequestsLibrary
-Resource          ../../../libraries/DevstackUtils.robot
-Resource          ../../../libraries/DataModels.robot
-Resource          ../../../libraries/OpenStackOperations.robot
-Resource          ../../../libraries/SetupUtils.robot
-Resource          ../../../libraries/Utils.robot
-Resource          ../../../libraries/KarafKeywords.robot
-Resource          ../../../variables/netvirt/Variables.robot
+Documentation       Test suite to verify packet flows between vm instances.
+
+Library             SSHLibrary
+Library             OperatingSystem
+Library             RequestsLibrary
+Resource            ../../../libraries/DevstackUtils.robot
+Resource            ../../../libraries/DataModels.robot
+Resource            ../../../libraries/OpenStackOperations.robot
+Resource            ../../../libraries/SetupUtils.robot
+Resource            ../../../libraries/Utils.robot
+Resource            ../../../libraries/KarafKeywords.robot
+Resource            ../../../variables/netvirt/Variables.robot
+
+Suite Setup         Suite Setup
+Suite Teardown      OpenStackOperations.OpenStack Suite Teardown
+Test Setup          SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
+Test Teardown       OpenStackOperations.Get Test Teardown Debugs
+
 
 *** Variables ***
-${SECURITY_GROUP}    l2_sg
-@{NETWORKS}       l2_net_1    l2_net_2
-@{SUBNETS}        l2_sub_1    l2_sub_2
-@{NET_1_VMS}      l2_net_1_vm_1    l2_net_1_vm_2    l2_net_1_vm_3
-@{NET_2_VMS}      l2_net_2_vm_1    l2_net_2_vm_2    l2_net_2_vm_3
-@{SUBNET_CIDRS}    21.0.0.0/24    22.0.0.0/24
-${NET_1_VLAN_ID}    1121
+${SECURITY_GROUP}       l2_sg
+@{NETWORKS}             l2_net_1    l2_net_2
+@{SUBNETS}              l2_sub_1    l2_sub_2
+@{NET_1_VMS}            l2_net_1_vm_1    l2_net_1_vm_2    l2_net_1_vm_3
+@{NET_2_VMS}            l2_net_2_vm_1    l2_net_2_vm_2    l2_net_2_vm_3
+@{SUBNET_CIDRS}         21.0.0.0/24    22.0.0.0/24
+${NET_1_VLAN_ID}        1121
+
 
 *** Test Cases ***
 Ping Vm Instances In net_1
@@ -51,36 +55,67 @@ Connectivity Tests From Vm Instances In net_2
 
 Delete A Vm Instance
     [Documentation]    Delete Vm instances using instance names.
-    [Tags]    NON_GATE
+    [Tags]    non_gate
     OpenStackOperations.Delete Vm Instance    ${NET_1_VMS}[0]
 
 No Ping For Deleted Vm
     [Documentation]    Check non reachability of deleted vm instances by pinging to them.
-    [Tags]    NON_GATE
+    [Tags]    non_gate
     OpenStackOperations.Ping From DHCP Should Not Succeed    ${NETWORKS}[0]    ${NET_1_VM_IPS}[0]
 
 Recreate The Deleted Vm Instance and check ping & connectivity.
     [Documentation]    Check reachability of recreated vm instances by pinging to them.
-    [Tags]    NON_GATE
-    OpenStackOperations.Create Vm Instance On Compute Node    ${NETWORKS}[0]    ${NET_1_VMS}[0]    ${OS_CMP1_HOSTNAME}    sg=${SECURITY_GROUP}
+    [Tags]    non_gate
+    OpenStackOperations.Create Vm Instance On Compute Node
+    ...    ${NETWORKS}[0]
+    ...    ${NET_1_VMS}[0]
+    ...    ${OS_CMP1_HOSTNAME}
+    ...    sg=${SECURITY_GROUP}
     @{NET_1_VM_IPS}    ${NET_1_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{NET_1_VMS}
     OpenStackOperations.Ping Vm From DHCP Namespace    ${NETWORKS}[0]    ${NET_1_VM_IPS}[0]
     OpenStackOperations.Test Operations From Vm Instance    ${NETWORKS}[0]    ${NET_1_VM_IPS}[0]    ${NET_1_VM_IPS}
 
+
 *** Keywords ***
 Suite Setup
     OpenStackOperations.OpenStack Suite Setup
-    OpenStackOperations.Create Network    ${NETWORKS}[0]    --provider-network-type vlan --provider-physical-network ${PUBLIC_PHYSICAL_NETWORK} --provider-segment ${NET_1_VLAN_ID}
+    OpenStackOperations.Create Network
+    ...    ${NETWORKS}[0]
+    ...    --provider-network-type vlan --provider-physical-network ${PUBLIC_PHYSICAL_NETWORK} --provider-segment ${NET_1_VLAN_ID}
     OpenStackOperations.Create SubNet    ${NETWORKS}[0]    ${SUBNETS}[0]    ${SUBNET_CIDRS}[0]
     OpenStackOperations.Create Network    ${NETWORKS}[1]
     OpenStackOperations.Create SubNet    ${NETWORKS}[1]    ${SUBNETS}[1]    ${SUBNET_CIDRS}[1]
     OpenStackOperations.Create Allow All SecurityGroup    ${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance On Compute Node    ${NETWORKS}[0]    ${NET_1_VMS}[0]    ${OS_CMP1_HOSTNAME}    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance On Compute Node    ${NETWORKS}[0]    ${NET_1_VMS}[1]    ${OS_CMP1_HOSTNAME}    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance On Compute Node    ${NETWORKS}[0]    ${NET_1_VMS}[2]    ${OS_CMP2_HOSTNAME}    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance On Compute Node    ${NETWORKS}[1]    ${NET_2_VMS}[0]    ${OS_CMP1_HOSTNAME}    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance On Compute Node    ${NETWORKS}[1]    ${NET_2_VMS}[1]    ${OS_CMP2_HOSTNAME}    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance On Compute Node    ${NETWORKS}[1]    ${NET_2_VMS}[2]    ${OS_CMP2_HOSTNAME}    sg=${SECURITY_GROUP}
+    OpenStackOperations.Create Vm Instance On Compute Node
+    ...    ${NETWORKS}[0]
+    ...    ${NET_1_VMS}[0]
+    ...    ${OS_CMP1_HOSTNAME}
+    ...    sg=${SECURITY_GROUP}
+    OpenStackOperations.Create Vm Instance On Compute Node
+    ...    ${NETWORKS}[0]
+    ...    ${NET_1_VMS}[1]
+    ...    ${OS_CMP1_HOSTNAME}
+    ...    sg=${SECURITY_GROUP}
+    OpenStackOperations.Create Vm Instance On Compute Node
+    ...    ${NETWORKS}[0]
+    ...    ${NET_1_VMS}[2]
+    ...    ${OS_CMP2_HOSTNAME}
+    ...    sg=${SECURITY_GROUP}
+    OpenStackOperations.Create Vm Instance On Compute Node
+    ...    ${NETWORKS}[1]
+    ...    ${NET_2_VMS}[0]
+    ...    ${OS_CMP1_HOSTNAME}
+    ...    sg=${SECURITY_GROUP}
+    OpenStackOperations.Create Vm Instance On Compute Node
+    ...    ${NETWORKS}[1]
+    ...    ${NET_2_VMS}[1]
+    ...    ${OS_CMP2_HOSTNAME}
+    ...    sg=${SECURITY_GROUP}
+    OpenStackOperations.Create Vm Instance On Compute Node
+    ...    ${NETWORKS}[1]
+    ...    ${NET_2_VMS}[2]
+    ...    ${OS_CMP2_HOSTNAME}
+    ...    sg=${SECURITY_GROUP}
     @{NET_1_VM_IPS}    ${NET_1_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{NET_1_VMS}
     @{NET_2_VM_IPS}    ${NET_2_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{NET_2_VMS}
     BuiltIn.Set Suite Variable    @{NET_1_VM_IPS}
index b2bbcb2ba9d8c595d333b411ec4ca2e84b183e3a..0c31eb13c2fb4b97598c49d27f161d6aec27045e 100644 (file)
@@ -1,32 +1,36 @@
 *** Settings ***
-Documentation     Test suite to check connectivity in L3 using routers.
-Suite Setup       Suite Setup
-Suite Teardown    OpenStackOperations.OpenStack Suite Teardown
-Test Setup        SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
-Test Teardown     OpenStackOperations.Get Test Teardown Debugs
-Library           SSHLibrary
-Library           OperatingSystem
-Library           RequestsLibrary
-Resource          ../../../libraries/DevstackUtils.robot
-Resource          ../../../libraries/DataModels.robot
-Resource          ../../../libraries/OpenStackOperations.robot
-Resource          ../../../libraries/SetupUtils.robot
-Resource          ../../../libraries/Utils.robot
-Resource          ../../../variables/netvirt/Variables.robot
+Documentation       Test suite to check connectivity in L3 using routers.
+
+Library             SSHLibrary
+Library             OperatingSystem
+Library             RequestsLibrary
+Resource            ../../../libraries/DevstackUtils.robot
+Resource            ../../../libraries/DataModels.robot
+Resource            ../../../libraries/OpenStackOperations.robot
+Resource            ../../../libraries/SetupUtils.robot
+Resource            ../../../libraries/Utils.robot
+Resource            ../../../variables/netvirt/Variables.robot
+
+Suite Setup         Suite Setup
+Suite Teardown      OpenStackOperations.OpenStack Suite Teardown
+Test Setup          SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
+Test Teardown       OpenStackOperations.Get Test Teardown Debugs
+
 
 *** Variables ***
-${SECURITY_GROUP}    l3_sg
-@{NETWORKS}       l3_net_1    l3_net_2    l3_net_3    l3_net_4    l3_net_5
-@{SUBNETS_1}      l3_sub_1    l3_sub_2    l3_sub_3
-@{SUBNETS_2}      l3_sub_4    l3_sub_5
-@{ROUTER}         l3_router1    l3_router2
-@{NET_1_VMS}      l3_net_1_vm_1    l3_net_1_vm_2    l3_net_1_vm_3
-@{NET_2_VMS}      l3_net_2_vm_1    l3_net_2_vm_2    l3_net_2_vm_3
-@{NET_3_VMS}      l3_net_3_vm_1    l3_net_3_vm_2    l3_net_3_vm_3
-@{NET_4_VMS}      l3_net_4_vm_1
-@{NET_5_VMS}      l3_net_5_vm_1
-@{SUBNET_CIDRS}    31.0.0.0/24    32.0.0.0/24    33.0.0.0/24    34.0.0.0/24    35.0.0.0/24
-@{NET_VLAN_ID}    1131    1132    1133
+${SECURITY_GROUP}       l3_sg
+@{NETWORKS}             l3_net_1    l3_net_2    l3_net_3    l3_net_4    l3_net_5
+@{SUBNETS_1}            l3_sub_1    l3_sub_2    l3_sub_3
+@{SUBNETS_2}            l3_sub_4    l3_sub_5
+@{ROUTER}               l3_router1    l3_router2
+@{NET_1_VMS}            l3_net_1_vm_1    l3_net_1_vm_2    l3_net_1_vm_3
+@{NET_2_VMS}            l3_net_2_vm_1    l3_net_2_vm_2    l3_net_2_vm_3
+@{NET_3_VMS}            l3_net_3_vm_1    l3_net_3_vm_2    l3_net_3_vm_3
+@{NET_4_VMS}            l3_net_4_vm_1
+@{NET_5_VMS}            l3_net_5_vm_1
+@{SUBNET_CIDRS}         31.0.0.0/24    32.0.0.0/24    33.0.0.0/24    34.0.0.0/24    35.0.0.0/24
+@{NET_VLAN_ID}          1131    1132    1133
+
 
 *** Test Cases ***
 Ping Vm Instance1 In net_2 From net_1 (vxlan to vlan)
@@ -97,47 +101,55 @@ Connectivity Tests From Vm Instance3 In net_2
 
 Delete Vm Instances In net_1
     [Documentation]    Delete Vm instances using instance names in net_1.
-    [Tags]    NON_GATE
+    [Tags]    non_gate
     FOR    ${vm}    IN    @{NET_1_VMS}
         OpenStackOperations.Delete Vm Instance    ${vm}
     END
 
 Delete Vm Instances In net_2
     [Documentation]    Delete Vm instances using instance names in net_2.
-    [Tags]    NON_GATE
+    [Tags]    non_gate
     FOR    ${vm}    IN    @{NET_2_VMS}
         OpenStackOperations.Delete Vm Instance    ${vm}
     END
 
 Delete Vm Instances In net_3
     [Documentation]    Delete Vm instances using instance names in net_3.
-    [Tags]    NON_GATE
+    [Tags]    non_gate
     FOR    ${vm}    IN    @{NET_3_VMS}
         OpenStackOperations.Delete Vm Instance    ${vm}
     END
 
 Create Vm Instances For net_4
     [Documentation]    Create VM instances using flavor and image names for a network.
-    [Tags]    NON_GATE
-    OpenStackOperations.Create Vm Instance On Compute Node    ${NETWORKS}[3]    ${NET_4_VMS}[0]    ${OS_CMP1_HOSTNAME}    sg=${SECURITY_GROUP}
+    [Tags]    non_gate
+    OpenStackOperations.Create Vm Instance On Compute Node
+    ...    ${NETWORKS}[3]
+    ...    ${NET_4_VMS}[0]
+    ...    ${OS_CMP1_HOSTNAME}
+    ...    sg=${SECURITY_GROUP}
 
 Create Vm Instances For net_5
     [Documentation]    Create VM instances using flavor and image names for a network.
-    [Tags]    NON_GATE
-    OpenStackOperations.Create Vm Instance On Compute Node    ${NETWORKS}[4]    ${NET_5_VMS}[0]    ${OS_CMP2_HOSTNAME}    sg=${SECURITY_GROUP}
+    [Tags]    non_gate
+    OpenStackOperations.Create Vm Instance On Compute Node
+    ...    ${NETWORKS}[4]
+    ...    ${NET_5_VMS}[0]
+    ...    ${OS_CMP2_HOSTNAME}
+    ...    sg=${SECURITY_GROUP}
 
 Create Router2
     [Documentation]    Create Router
-    [Tags]    NON_GATE
+    [Tags]    non_gate
     OpenStackOperations.Create Router    ${ROUTER}[1]
 
 Add net_4 Interfaces To Router2
     [Documentation]    Add Interfaces
-    [Tags]    NON_GATE
+    [Tags]    non_gate
     OpenStackOperations.Add Router Interface    ${ROUTER}[1]    ${SUBNETS_2}[0]
 
 Check Vm Instances on net_4 and net_5 Have Ip Address
-    [Tags]    NON_GATE
+    [Tags]    non_gate
     @{NET_4_L3_VM_IPS}    ${NET_4_L3_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{NET_4_VMS}
     @{NET_5_L3_VM_IPS}    ${NET_5_L3_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{NET_5_VMS}
     BuiltIn.Set Suite Variable    @{NET_4_L3_VM_IPS}
@@ -151,48 +163,91 @@ Check Vm Instances on net_4 and net_5 Have Ip Address
 
 Add net_5 Interfaces To Router2
     [Documentation]    Add Interfaces
-    [Tags]    NON_GATE
+    [Tags]    non_gate
     OpenStackOperations.Add Router Interface    ${ROUTER}[1]    ${SUBNETS_2}[1]
 
 Ping Vm Instance5 In net_5 From net_4 (vlan to vlan)
     [Documentation]    Check reachability of vm instances by pinging to them after creating routers.
-    [Tags]    NON_GATE
+    [Tags]    non_gate
     OpenStackOperations.Ping Vm From DHCP Namespace    ${NETWORKS}[3]    ${NET_5_L3_VM_IPS}[0]
 
 Ping Vm Instance5 In net_4 From net_5 (vlan to vlan)
     [Documentation]    Check reachability of vm instances by pinging to them after creating routers.
-    [Tags]    NON_GATE
+    [Tags]    non_gate
     OpenStackOperations.Ping Vm From DHCP Namespace    ${NETWORKS}[4]    ${NET_4_L3_VM_IPS}[0]
 
 Connectivity Tests From Vm Instance4 In net_5
     [Documentation]    Check reachability of vm instance on a different network with one vlan vm in source and destination.
-    [Tags]    NON_GATE
+    [Tags]    non_gate
     ${dst_list} =    BuiltIn.Create List    @{NET_4_L3_VM_IPS}
     OpenStackOperations.Test Operations From Vm Instance    ${NETWORKS}[4]    ${NET_5_L3_VM_IPS}[0]    ${dst_list}
 
+
 *** Keywords ***
 Suite Setup
     OpenStackOperations.OpenStack Suite Setup
-    OpenStackOperations.Create Network    ${NETWORKS}[0]    --provider-network-type vlan --provider-physical-network ${PUBLIC_PHYSICAL_NETWORK} --provider-segment ${NET_VLAN_ID}[0]
+    OpenStackOperations.Create Network
+    ...    ${NETWORKS}[0]
+    ...    --provider-network-type vlan --provider-physical-network ${PUBLIC_PHYSICAL_NETWORK} --provider-segment ${NET_VLAN_ID}[0]
     OpenStackOperations.Create SubNet    ${NETWORKS}[0]    ${SUBNETS_1}[0]    ${SUBNET_CIDRS}[0]
     OpenStackOperations.Create Network    ${NETWORKS}[1]
     OpenStackOperations.Create SubNet    ${NETWORKS}[1]    ${SUBNETS_1}[1]    ${SUBNET_CIDRS}[1]
     OpenStackOperations.Create Network    ${NETWORKS}[2]
     OpenStackOperations.Create SubNet    ${NETWORKS}[2]    ${SUBNETS_1}[2]    ${SUBNET_CIDRS}[2]
-    OpenStackOperations.Create Network    ${NETWORKS}[3]    --provider-network-type vlan --provider-physical-network ${PUBLIC_PHYSICAL_NETWORK} --provider-segment ${NET_VLAN_ID}[1]
+    OpenStackOperations.Create Network
+    ...    ${NETWORKS}[3]
+    ...    --provider-network-type vlan --provider-physical-network ${PUBLIC_PHYSICAL_NETWORK} --provider-segment ${NET_VLAN_ID}[1]
     OpenStackOperations.Create SubNet    ${NETWORKS}[3]    ${SUBNETS_2}[0]    ${SUBNET_CIDRS}[3]
-    OpenStackOperations.Create Network    ${NETWORKS}[4]    --provider-network-type vlan --provider-physical-network ${PUBLIC_PHYSICAL_NETWORK} --provider-segment ${NET_VLAN_ID}[2]
+    OpenStackOperations.Create Network
+    ...    ${NETWORKS}[4]
+    ...    --provider-network-type vlan --provider-physical-network ${PUBLIC_PHYSICAL_NETWORK} --provider-segment ${NET_VLAN_ID}[2]
     OpenStackOperations.Create SubNet    ${NETWORKS}[4]    ${SUBNETS_2}[1]    ${SUBNET_CIDRS}[4]
     OpenStackOperations.Create Allow All SecurityGroup    ${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance On Compute Node    ${NETWORKS}[0]    ${NET_1_VMS}[0]    ${OS_CMP1_HOSTNAME}    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance On Compute Node    ${NETWORKS}[0]    ${NET_1_VMS}[1]    ${OS_CMP1_HOSTNAME}    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance On Compute Node    ${NETWORKS}[0]    ${NET_1_VMS}[2]    ${OS_CMP2_HOSTNAME}    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance On Compute Node    ${NETWORKS}[1]    ${NET_2_VMS}[0]    ${OS_CMP1_HOSTNAME}    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance On Compute Node    ${NETWORKS}[1]    ${NET_2_VMS}[1]    ${OS_CMP2_HOSTNAME}    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance On Compute Node    ${NETWORKS}[1]    ${NET_2_VMS}[2]    ${OS_CMP2_HOSTNAME}    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance On Compute Node    ${NETWORKS}[2]    ${NET_3_VMS}[0]    ${OS_CMP1_HOSTNAME}    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance On Compute Node    ${NETWORKS}[2]    ${NET_3_VMS}[1]    ${OS_CMP1_HOSTNAME}    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance On Compute Node    ${NETWORKS}[2]    ${NET_3_VMS}[2]    ${OS_CMP2_HOSTNAME}    sg=${SECURITY_GROUP}
+    OpenStackOperations.Create Vm Instance On Compute Node
+    ...    ${NETWORKS}[0]
+    ...    ${NET_1_VMS}[0]
+    ...    ${OS_CMP1_HOSTNAME}
+    ...    sg=${SECURITY_GROUP}
+    OpenStackOperations.Create Vm Instance On Compute Node
+    ...    ${NETWORKS}[0]
+    ...    ${NET_1_VMS}[1]
+    ...    ${OS_CMP1_HOSTNAME}
+    ...    sg=${SECURITY_GROUP}
+    OpenStackOperations.Create Vm Instance On Compute Node
+    ...    ${NETWORKS}[0]
+    ...    ${NET_1_VMS}[2]
+    ...    ${OS_CMP2_HOSTNAME}
+    ...    sg=${SECURITY_GROUP}
+    OpenStackOperations.Create Vm Instance On Compute Node
+    ...    ${NETWORKS}[1]
+    ...    ${NET_2_VMS}[0]
+    ...    ${OS_CMP1_HOSTNAME}
+    ...    sg=${SECURITY_GROUP}
+    OpenStackOperations.Create Vm Instance On Compute Node
+    ...    ${NETWORKS}[1]
+    ...    ${NET_2_VMS}[1]
+    ...    ${OS_CMP2_HOSTNAME}
+    ...    sg=${SECURITY_GROUP}
+    OpenStackOperations.Create Vm Instance On Compute Node
+    ...    ${NETWORKS}[1]
+    ...    ${NET_2_VMS}[2]
+    ...    ${OS_CMP2_HOSTNAME}
+    ...    sg=${SECURITY_GROUP}
+    OpenStackOperations.Create Vm Instance On Compute Node
+    ...    ${NETWORKS}[2]
+    ...    ${NET_3_VMS}[0]
+    ...    ${OS_CMP1_HOSTNAME}
+    ...    sg=${SECURITY_GROUP}
+    OpenStackOperations.Create Vm Instance On Compute Node
+    ...    ${NETWORKS}[2]
+    ...    ${NET_3_VMS}[1]
+    ...    ${OS_CMP1_HOSTNAME}
+    ...    sg=${SECURITY_GROUP}
+    OpenStackOperations.Create Vm Instance On Compute Node
+    ...    ${NETWORKS}[2]
+    ...    ${NET_3_VMS}[2]
+    ...    ${OS_CMP2_HOSTNAME}
+    ...    sg=${SECURITY_GROUP}
     @{NET_1_L3_VM_IPS}    ${NET_1_L3_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{NET_1_VMS}
     @{NET_2_L3_VM_IPS}    ${NET_2_L3_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{NET_2_VMS}
     @{NET_3_L3_VM_IPS}    ${NET_3_L3_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{NET_3_VMS}
index 19b15d7a7954834d6a7e7380bc82fd78e47f5a3e..ed9b5feb8fc42a4b71771e4b7b99329882b21a3d 100644 (file)
@@ -1,27 +1,31 @@
 *** Settings ***
-Documentation     Test suite to verify live Migaration of VM instance also verify the connectivity
-...               of VM instance while Migrating the instance,
-Suite Setup       Suite Setup
-Suite Teardown    LiveMigration.Live Migration Suite Teardown
-Test Setup        SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
-Test Teardown     OpenStackOperations.Get Test Teardown Debugs
-Library           OperatingSystem
-Library           RequestsLibrary
-Library           SSHLibrary
-Resource          ../../../libraries/DevstackUtils.robot
-Resource          ../../../libraries/KarafKeywords.robot
-Resource          ../../../libraries/LiveMigration.robot
-Resource          ../../../libraries/OpenStackOperations.robot
-Resource          ../../../libraries/RemoteBash.robot
-Resource          ../../../libraries/SetupUtils.robot
-Resource          ../../../libraries/Utils.robot
+Documentation       Test suite to verify live Migaration of VM instance also verify the connectivity
+...                 of VM instance while Migrating the instance,
+
+Library             OperatingSystem
+Library             RequestsLibrary
+Library             SSHLibrary
+Resource            ../../../libraries/DevstackUtils.robot
+Resource            ../../../libraries/KarafKeywords.robot
+Resource            ../../../libraries/LiveMigration.robot
+Resource            ../../../libraries/OpenStackOperations.robot
+Resource            ../../../libraries/RemoteBash.robot
+Resource            ../../../libraries/SetupUtils.robot
+Resource            ../../../libraries/Utils.robot
+
+Suite Setup         Suite Setup
+Suite Teardown      LiveMigration.Live Migration Suite Teardown
+Test Setup          SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
+Test Teardown       OpenStackOperations.Get Test Teardown Debugs
+
 
 *** Variables ***
-${SECURITY_GROUP}    migration_sg
-@{NETWORKS}       migration_net_1
-@{SUBNETS}        migration_sub_1
-@{NET_1_VMS}      migration_net_1_vm_1    migration_net_1_vm_2
-@{SUBNETS_RANGE}    130.0.0.0/24
+${SECURITY_GROUP}       migration_sg
+@{NETWORKS}             migration_net_1
+@{SUBNETS}              migration_sub_1
+@{NET_1_VMS}            migration_net_1_vm_1    migration_net_1_vm_2
+@{SUBNETS_RANGE}        130.0.0.0/24
+
 
 *** Test Cases ***
 Migrate Instance And Verify Connectivity While Migration And After
@@ -39,23 +43,36 @@ Migrate Instance And Verify Connectivity While Migration And After
         BuiltIn.Wait Until Keyword Succeeds    6x    20s    OpenStackOperations.Check If Migration Is Complete    ${vm}
     END
     ${vm_host_after_migration} =    OpenStackOperations.Get Hypervisor Host Of Vm    ${NET_1_VMS}[0]
-    BuiltIn.Run Keyword If    "${OPENSTACK_TOPO}" == "1cmb-0ctl-0cmp"    BuiltIn.Should Match    ${vm_host_after_migration}    ${vm_host_before_migration}
-    ...    ELSE    BuiltIn.Should Not Match    ${vm_host_after_migration}    ${vm_host_before_migration}
+    IF    "${OPENSTACK_TOPO}" == "1cmb-0ctl-0cmp"
+        BuiltIn.Should Match    ${vm_host_after_migration}    ${vm_host_before_migration}
+    ELSE
+        BuiltIn.Should Not Match    ${vm_host_after_migration}    ${vm_host_before_migration}
+    END
     SSHLibrary.Switch Connection    ${devstack_conn_id}
     RemoteBash.Write_Bare_Ctrl_C
     ${output} =    SSHLibrary.Read Until    packet loss
     BuiltIn.Should Contain    ${output}    64 bytes
-    ${output} =    DevstackUtils.Write Commands Until Prompt    sudo ip netns exec qdhcp-${net_id} ping -c 10 ${NET1_VM_IPS}[0]
+    ${output} =    DevstackUtils.Write Commands Until Prompt
+    ...    sudo ip netns exec qdhcp-${net_id} ping -c 10 ${NET1_VM_IPS}[0]
     BuiltIn.Should Contain    ${output}    64 bytes
 
+
 *** Keywords ***
 Suite Setup
     LiveMigration.Live Migration Suite Setup
     OpenstackOperations.Create Network    ${NETWORKS}[0]
     OpenStackOperations.Create SubNet    ${NETWORKS}[0]    ${SUBNETS}[0]    ${SUBNETS_RANGE}[0]
     OpenStackOperations.Create Allow All SecurityGroup    ${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance On Compute Node    ${NETWORKS}[0]    ${NET_1_VMS}[0]    ${OS_CMP1_HOSTNAME}    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance On Compute Node    ${NETWORKS}[0]    ${NET_1_VMS}[1]    ${OS_CMP2_HOSTNAME}    sg=${SECURITY_GROUP}
+    OpenStackOperations.Create Vm Instance On Compute Node
+    ...    ${NETWORKS}[0]
+    ...    ${NET_1_VMS}[0]
+    ...    ${OS_CMP1_HOSTNAME}
+    ...    sg=${SECURITY_GROUP}
+    OpenStackOperations.Create Vm Instance On Compute Node
+    ...    ${NETWORKS}[0]
+    ...    ${NET_1_VMS}[1]
+    ...    ${OS_CMP2_HOSTNAME}
+    ...    sg=${SECURITY_GROUP}
     @{NET_1_VM_IPS}    ${NET_1_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{NET_1_VMS}
     BuiltIn.Set Suite Variable    @{NET_1_VM_IPS}
     BuiltIn.Should Not Contain    ${NET_1_VM_IPS}    None
index f3c2954f6458228581c79c6ad111feedea251091..1c908c2ab647075cbc225b32bc2252c25e8574fc 100644 (file)
@@ -1,32 +1,37 @@
 *** Settings ***
-Documentation     Test suite to verify security groups basic and advanced functionalities, including negative tests.
-...               These test cases are not so relevant for transparent mode, so each test case will be tagged with
-...               "skip_if_transparent" to allow any underlying keywords to return with a PASS without risking
-...               a false failure. The real value of this suite will be in stateful mode.
-Suite Setup       Suite Setup
-Suite Teardown    OpenStackOperations.OpenStack Suite Teardown
-Test Setup        SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
-Test Teardown     OpenStackOperations.Get Test Teardown Debugs
-Force Tags        skip_if_${SECURITY_GROUP_MODE}
-Library           OperatingSystem
-Library           RequestsLibrary
-Library           SSHLibrary
-Resource          ../../../libraries/DevstackUtils.robot
-Resource          ../../../libraries/KarafKeywords.robot
-Resource          ../../../libraries/OpenStackOperations.robot
-Resource          ../../../libraries/SetupUtils.robot
-Resource          ../../../libraries/Utils.robot
-Resource          ../../../libraries/RemoteBash.robot
-Resource          ../../../variables/netvirt/Variables.robot
+Documentation       Test suite to verify security groups basic and advanced functionalities, including negative tests.
+...                 These test cases are not so relevant for transparent mode, so each test case will be tagged with
+...                 "skip_if_transparent" to allow any underlying keywords to return with a PASS without risking
+...                 a false failure. The real value of this suite will be in stateful mode.
+
+Library             OperatingSystem
+Library             RequestsLibrary
+Library             SSHLibrary
+Resource            ../../../libraries/DevstackUtils.robot
+Resource            ../../../libraries/KarafKeywords.robot
+Resource            ../../../libraries/OpenStackOperations.robot
+Resource            ../../../libraries/SetupUtils.robot
+Resource            ../../../libraries/Utils.robot
+Resource            ../../../libraries/RemoteBash.robot
+Resource            ../../../variables/netvirt/Variables.robot
+
+Suite Setup         Suite Setup
+Suite Teardown      OpenStackOperations.OpenStack Suite Teardown
+Test Setup          SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
+Test Teardown       OpenStackOperations.Get Test Teardown Debugs
+
+Force Tags          skip_if_${security_group_mode}
+
 
 *** Variables ***
-${SECURITY_GROUP}    sg_sg
-@{NETWORKS}       sg_net_1    sg_net_2
-@{SUBNETS}        sg_sub_1    sg_sub_2
-${ROUTER}         sg_router
-@{NET_1_VMS}      sg_net_1_vm_1    sg_net_1_vm_2
-@{NET_2_VMS}      sg_net_2_vm_1
-@{SUBNET_CIDRS}    51.0.0.0/24    52.0.0.0/24
+${SECURITY_GROUP}       sg_sg
+@{NETWORKS}             sg_net_1    sg_net_2
+@{SUBNETS}              sg_sub_1    sg_sub_2
+${ROUTER}               sg_router
+@{NET_1_VMS}            sg_net_1_vm_1    sg_net_1_vm_2
+@{NET_2_VMS}            sg_net_2_vm_1
+@{SUBNET_CIDRS}         51.0.0.0/24    52.0.0.0/24
+
 
 *** Test Cases ***
 No Ping From DHCP To Vm Instance1
@@ -36,16 +41,32 @@ No Ping From DHCP To Vm Instance1
 No Ping From Vm Instance1 To Vm Instance2
     [Documentation]    Login to the vm instance and test some operations
     ${vm_ips} =    BuiltIn.Create List    ${NET_1_VM_IPS}[1]
-    OpenStackOperations.Test Operations From Vm Instance    ${NETWORKS}[0]    ${NET_1_VM_IPS}[0]    ${vm_ips}    ping_should_succeed=False
+    OpenStackOperations.Test Operations From Vm Instance
+    ...    ${NETWORKS}[0]
+    ...    ${NET_1_VM_IPS}[0]
+    ...    ${vm_ips}
+    ...    ping_should_succeed=False
 
 No Ping From Vm Instance2 To Vm Instance1
     [Documentation]    Login to the vm instance and test operations
     ${vm_ips} =    BuiltIn.Create List    ${NET_1_VM_IPS}[0]
-    OpenStackOperations.Test Operations From Vm Instance    ${NETWORKS}[0]    ${NET_1_VM_IPS}[1]    ${vm_ips}    ping_should_succeed=False
+    OpenStackOperations.Test Operations From Vm Instance
+    ...    ${NETWORKS}[0]
+    ...    ${NET_1_VM_IPS}[1]
+    ...    ${vm_ips}
+    ...    ping_should_succeed=False
 
 Add Ping Allow Rules With Remote SG (only between VMs)
-    OpenStackOperations.Neutron Security Group Rule Create    ${SECURITY_GROUP}    direction=ingress    protocol=icmp    remote_group_id=${SECURITY_GROUP}
-    OpenStackOperations.Neutron Security Group Rule Create    ${SECURITY_GROUP}    direction=egress    protocol=icmp    remote_group_id=${SECURITY_GROUP}
+    OpenStackOperations.Neutron Security Group Rule Create
+    ...    ${SECURITY_GROUP}
+    ...    direction=ingress
+    ...    protocol=icmp
+    ...    remote_group_id=${SECURITY_GROUP}
+    OpenStackOperations.Neutron Security Group Rule Create
+    ...    ${SECURITY_GROUP}
+    ...    direction=egress
+    ...    protocol=icmp
+    ...    remote_group_id=${SECURITY_GROUP}
     OpenStackOperations.Neutron Security Group Show    ${SECURITY_GROUP}
 
 Verify No Ping From DHCP To Vm Instance1
@@ -94,7 +115,11 @@ Add Additional Security Group To VMs
     [Documentation]    Add an additional security group to the VMs - this is done to test a different logic put in place for ports with multiple SGs
     OpenStackOperations.Security Group Create Without Default Security Rules    additional-sg
     #TODO Remove this after the Newton jobs are removed, Openstack CLI with Newton lacks support to configure rule with remote_ip_prefix
-    OpenStackOperations.Neutron Security Group Rule Create    additional-sg    direction=ingress    protocol=icmp    remote_ip_prefix=${NET_1_DHCP_IP}/32
+    OpenStackOperations.Neutron Security Group Rule Create
+    ...    additional-sg
+    ...    direction=ingress
+    ...    protocol=icmp
+    ...    remote_ip_prefix=${NET_1_DHCP_IP}/32
     OpenStackOperations.Neutron Security Group Show    additional-sg
     FOR    ${vm}    IN    @{NET_1_VMS}
         OpenStackOperations.Add Security Group To VM    ${vm}    additional-sg
@@ -110,24 +135,24 @@ Ping From DHCP To Vm Instance2
 
 Repeat Ping From Vm Instance1 To Vm Instance2 With additional SG
     [Documentation]    Login to the vm instance and test some operations
-    ${vm_ips}    BuiltIn.Create List    ${NET_1_VM_IPS}[1]
+    ${vm_ips}    BuiltIn.Create List    ${NET_1_VM_IPS}[1]
     OpenStackOperations.Test Operations From Vm Instance    ${NETWORKS}[0]    ${NET_1_VM_IPS}[0]    ${vm_ips}
 
 Repeat Ping From Vm Instance2 To Vm Instance1 With additional SG
     [Documentation]    Login to the vm instance and test operations
-    ${vm_ips}    BuiltIn.Create List    ${NET_1_VM_IPS}[0]
+    ${vm_ips}    BuiltIn.Create List    ${NET_1_VM_IPS}[0]
     OpenStackOperations.Test Operations From Vm Instance    ${NETWORKS}[0]    ${NET_1_VM_IPS}[1]    ${vm_ips}
 
 Test Connection when Rules Change Dynamically
     [Documentation]    Initiate ping from DHCP to VM instance and remove security rules
     ...    dynamically check the communication has stopped after removing the security group rules.
-    ${net_id}=    OpenstackOperations.Get Net Id    ${NETWORKS}[0]
+    ${net_id} =    OpenstackOperations.Get Net Id    ${NETWORKS}[0]
     Get ControlNode Connection
-    ${output}=    SSHLibrary.Write    sudo ip netns exec qdhcp-${net_id} ping ${NET_1_VM_IPS}[0]
+    ${output} =    SSHLibrary.Write    sudo ip netns exec qdhcp-${net_id} ping ${NET_1_VM_IPS}[0]
     Delete All Security Group Rules    additional-sg
     Read    delay=10s
     Write_Bare_Ctrl_C
-    ${output}=    Read Until    packet loss
+    ${output} =    Read Until    packet loss
     Should Not Contain    ${output}    ${PING_REGEXP}
 
 No Ping From DHCP To Vm Instance1 With Additional Security Group Rules Removed
@@ -139,7 +164,11 @@ No Ping From DHCP To Vm Instance2 With Additional Security Group Rules Removed
     OpenStackOperations.Ping From DHCP Should Not Succeed    ${NETWORKS}[0]    ${NET_1_VM_IPS}[1]
 
 Add The Rules To Additional Security Group Again
-    OpenStackOperations.Neutron Security Group Rule Create    additional-sg    direction=ingress    protocol=icmp    remote_ip_prefix=${NET_1_DHCP_IP}/32
+    OpenStackOperations.Neutron Security Group Rule Create
+    ...    additional-sg
+    ...    direction=ingress
+    ...    protocol=icmp
+    ...    remote_ip_prefix=${NET_1_DHCP_IP}/32
 
 Ping From DHCP To Vm Instance1 After Rules Are Added Again
     [Documentation]    Check reachability of vm instances by pinging to them from DHCP.
@@ -172,12 +201,12 @@ Delete Router
 
 Repeat Ping From Vm Instance1 To Vm Instance2 With Router Removed
     [Documentation]    Login to the vm instance and test some operations
-    ${vm_ips}    BuiltIn.Create List    ${NET_1_VM_IPS}[1]
+    ${vm_ips}    BuiltIn.Create List    ${NET_1_VM_IPS}[1]
     OpenStackOperations.Test Operations From Vm Instance    ${NETWORKS}[0]    ${NET_1_VM_IPS}[0]    ${vm_ips}
 
 Repeat Ping From Vm Instance2 To Vm Instance1 With Router Removed
     [Documentation]    Login to the vm instance and test operations
-    ${vm_ips}    BuiltIn.Create List    ${NET_1_VM_IPS}[0]
+    ${vm_ips}    BuiltIn.Create List    ${NET_1_VM_IPS}[0]
     OpenStackOperations.Test Operations From Vm Instance    ${NETWORKS}[0]    ${NET_1_VM_IPS}[1]    ${vm_ips}
 
 Delete Vm Instances In net_2
@@ -187,7 +216,7 @@ Delete Vm Instances In net_2
 
 Repeat Ping From Vm Instance1 To Vm Instance2 With net_2 VM Deleted
     [Documentation]    Login to the vm instance and test some operations
-    ${vm_ips}    BuiltIn.Create List    ${NET_1_VM_IPS}[1]
+    ${vm_ips}    BuiltIn.Create List    ${NET_1_VM_IPS}[1]
     OpenStackOperations.Test Operations From Vm Instance    ${NETWORKS}[0]    ${NET_1_VM_IPS}[0]    ${vm_ips}
 
 Repeat Ping From Vm Instance2 To Vm Instance1 With net_2 VM Deleted
@@ -195,22 +224,55 @@ Repeat Ping From Vm Instance2 To Vm Instance1 With net_2 VM Deleted
     ${vm_ips} =    BuiltIn.Create List    ${NET_1_VM_IPS}[0]
     OpenStackOperations.Test Operations From Vm Instance    ${NETWORKS}[0]    ${NET_1_VM_IPS}[1]    ${vm_ips}
 
+
 *** Keywords ***
 Suite Setup
     OpenStackOperations.OpenStack Suite Setup
     OpenStackOperations.Create Network    ${NETWORKS}[0]
     OpenStackOperations.Create Network    ${NETWORKS}[1]
-    BuiltIn.Wait Until Keyword Succeeds    10s    2s    Utils.Check For Elements At URI    ${NETWORK_URL}    ${NETWORKS}
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    10s
+    ...    2s
+    ...    Utils.Check For Elements At URI
+    ...    ${NETWORK_URL}
+    ...    ${NETWORKS}
     OpenStackOperations.Create SubNet    ${NETWORKS}[0]    ${SUBNETS}[0]    ${SUBNET_CIDRS}[0]
     OpenStackOperations.Create SubNet    ${NETWORKS}[1]    ${SUBNETS}[1]    ${SUBNET_CIDRS}[1]
-    BuiltIn.Wait Until Keyword Succeeds    10s    2s    Utils.Check For Elements At URI    ${SUBNETWORK_URL}    ${SUBNETS}
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    10s
+    ...    2s
+    ...    Utils.Check For Elements At URI
+    ...    ${SUBNETWORK_URL}
+    ...    ${SUBNETS}
     OpenStackOperations.Security Group Create Without Default Security Rules    ${SECURITY_GROUP}
-    OpenStackOperations.Neutron Security Group Rule Create    ${SECURITY_GROUP}    direction=ingress    port_range_max=65535    port_range_min=1    protocol=tcp
-    OpenStackOperations.Neutron Security Group Rule Create    ${SECURITY_GROUP}    direction=egress    port_range_max=65535    port_range_min=1    protocol=tcp
+    OpenStackOperations.Neutron Security Group Rule Create
+    ...    ${SECURITY_GROUP}
+    ...    direction=ingress
+    ...    port_range_max=65535
+    ...    port_range_min=1
+    ...    protocol=tcp
+    OpenStackOperations.Neutron Security Group Rule Create
+    ...    ${SECURITY_GROUP}
+    ...    direction=egress
+    ...    port_range_max=65535
+    ...    port_range_min=1
+    ...    protocol=tcp
     OpenStackOperations.Neutron Security Group Show    ${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance On Compute Node    ${NETWORKS}[0]    ${NET_1_VMS}[0]    ${OS_CMP1_HOSTNAME}    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance On Compute Node    ${NETWORKS}[0]    ${NET_1_VMS}[1]    ${OS_CMP2_HOSTNAME}    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance On Compute Node    ${NETWORKS}[1]    ${NET_2_VMS}[0]    ${OS_CMP1_HOSTNAME}    sg=${SECURITY_GROUP}
+    OpenStackOperations.Create Vm Instance On Compute Node
+    ...    ${NETWORKS}[0]
+    ...    ${NET_1_VMS}[0]
+    ...    ${OS_CMP1_HOSTNAME}
+    ...    sg=${SECURITY_GROUP}
+    OpenStackOperations.Create Vm Instance On Compute Node
+    ...    ${NETWORKS}[0]
+    ...    ${NET_1_VMS}[1]
+    ...    ${OS_CMP2_HOSTNAME}
+    ...    sg=${SECURITY_GROUP}
+    OpenStackOperations.Create Vm Instance On Compute Node
+    ...    ${NETWORKS}[1]
+    ...    ${NET_2_VMS}[0]
+    ...    ${OS_CMP1_HOSTNAME}
+    ...    sg=${SECURITY_GROUP}
     @{NET_1_VM_IPS}    ${NET_1_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{NET_1_VMS}
     @{NET_2_VM_IPS}    ${NET_2_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{NET_2_VMS}
     BuiltIn.Set Suite Variable    @{NET_1_VM_IPS}
index d094142b2fe3018dfaacd0e1ca8b7ea2b47efdef..49960a0b9f4718a622b7d825b31aface476d3eb3 100644 (file)
@@ -1,58 +1,81 @@
 *** Settings ***
-Documentation     Test suite to verify SFC configuration and packet flows.
-Suite Setup       Suite Setup
-Suite Teardown    OpenStackOperations.OpenStack Suite Teardown
-Test Setup        SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
-Test Teardown     BuiltIn.Run Keywords    OpenStackOperations.Get Test Teardown Debugs
-...               AND    OpenStackOperations.Get Test Teardown Debugs For SFC
-Library           SSHLibrary
-Library           OperatingSystem
-Library           RequestsLibrary
-Resource          ../../../libraries/DevstackUtils.robot
-Resource          ../../../libraries/LiveMigration.robot
-Resource          ../../../libraries/OpenStackOperations.robot
-Resource          ../../../libraries/SetupUtils.robot
-Resource          ../../../libraries/Utils.robot
-Resource          ../../../libraries/KarafKeywords.robot
+Documentation       Test suite to verify SFC configuration and packet flows.
+
+Library             SSHLibrary
+Library             OperatingSystem
+Library             RequestsLibrary
+Resource            ../../../libraries/DevstackUtils.robot
+Resource            ../../../libraries/LiveMigration.robot
+Resource            ../../../libraries/OpenStackOperations.robot
+Resource            ../../../libraries/SetupUtils.robot
+Resource            ../../../libraries/Utils.robot
+Resource            ../../../libraries/KarafKeywords.robot
+
+Suite Setup         Suite Setup
+Suite Teardown      OpenStackOperations.OpenStack Suite Teardown
+Test Setup          SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
+Test Teardown       BuiltIn.Run Keywords    OpenStackOperations.Get Test Teardown Debugs
+...                     AND    OpenStackOperations.Get Test Teardown Debugs For SFC
+
 
 *** Variables ***
-${SECURITY_GROUP}    sg-sfc
-@{NETWORKS}       network_1
-@{SUBNETS}        l2_subnet_1
-@{NET_1_VMS}      sf1    sourcevm    destvm
-@{NON_SF_VMS}     sourcevm    destvm
-@{SUBNET_CIDRS}    30.0.0.0/24
-@{PORTS}          p1in    p1out    source_vm_port    dest_vm_port
-${NC_COMMAND}     nc -zv -w 5
-${RES_SUCCESS}    open
-${RES_FAILURE}    Operation timed out
-${WEBSERVER_80}    (python -m SimpleHTTPServer 80 > /dev/null 2>&1 &)
-${WEBSERVER_81}    (python -m SimpleHTTPServer 81 > /dev/null 2>&1 &)
-${WEBSERVER_82}    (python -m SimpleHTTPServer 82 > /dev/null 2>&1 &)
-${WEBSERVER_83}    (python -m SimpleHTTPServer 83 > /dev/null 2>&1 &)
-${WEBSERVER_84}    (python -m SimpleHTTPServer 84 > /dev/null 2>&1 &)
-${WEBSERVER_85}    (python -m SimpleHTTPServer 85 > /dev/null 2>&1 &)
-${WEBSERVER_100}    (python -m SimpleHTTPServer 100 > /dev/null 2>&1 &)
-${WEBSERVER_101}    (python -m SimpleHTTPServer 101 > /dev/null 2>&1 &)
-${WEBSERVER_102}    (python -m SimpleHTTPServer 102 > /dev/null 2>&1 &)
-${WEBSERVER_103}    (python -m SimpleHTTPServer 103 > /dev/null 2>&1 &)
-${WEBSERVER_CMDS}    ${WEBSERVER_80} && ${WEBSERVER_81} && ${WEBSERVER_82} && ${WEBSERVER_83} && ${WEBSERVER_84} && ${WEBSERVER_85} && ${WEBSERVER_100} && ${WEBSERVER_101} && ${WEBSERVER_102} && ${WEBSERVER_103}
-${CLOUD_IMAGE}    "https://artifacts.opnfv.org/sfc/images/sfc_nsh_fraser.qcow2"
-${CLOUD_IMAGE_NAME}    sfc_nsh_fraser
-${CLOUD_FLAVOR_NAME}    sfc_nsh_fraser
+${SECURITY_GROUP}           sg-sfc
+@{NETWORKS}                 network_1
+@{SUBNETS}                  l2_subnet_1
+@{NET_1_VMS}                sf1    sourcevm    destvm
+@{NON_SF_VMS}               sourcevm    destvm
+@{SUBNET_CIDRS}             30.0.0.0/24
+@{PORTS}                    p1in    p1out    source_vm_port    dest_vm_port
+${NC_COMMAND}               nc -zv -w 5
+${RES_SUCCESS}              open
+${RES_FAILURE}              Operation timed out
+${WEBSERVER_80}             (python -m SimpleHTTPServer 80 > /dev/null 2>&1 &)
+${WEBSERVER_81}             (python -m SimpleHTTPServer 81 > /dev/null 2>&1 &)
+${WEBSERVER_82}             (python -m SimpleHTTPServer 82 > /dev/null 2>&1 &)
+${WEBSERVER_83}             (python -m SimpleHTTPServer 83 > /dev/null 2>&1 &)
+${WEBSERVER_84}             (python -m SimpleHTTPServer 84 > /dev/null 2>&1 &)
+${WEBSERVER_85}             (python -m SimpleHTTPServer 85 > /dev/null 2>&1 &)
+${WEBSERVER_100}            (python -m SimpleHTTPServer 100 > /dev/null 2>&1 &)
+${WEBSERVER_101}            (python -m SimpleHTTPServer 101 > /dev/null 2>&1 &)
+${WEBSERVER_102}            (python -m SimpleHTTPServer 102 > /dev/null 2>&1 &)
+${WEBSERVER_103}            (python -m SimpleHTTPServer 103 > /dev/null 2>&1 &)
+${WEBSERVER_CMDS}
+...                         ${WEBSERVER_80} && ${WEBSERVER_81} && ${WEBSERVER_82} && ${WEBSERVER_83} && ${WEBSERVER_84} && ${WEBSERVER_85} && ${WEBSERVER_100} && ${WEBSERVER_101} && ${WEBSERVER_102} && ${WEBSERVER_103}
+${CLOUD_IMAGE}              "https://artifacts.opnfv.org/sfc/images/sfc_nsh_fraser.qcow2"
+${CLOUD_IMAGE_NAME}         sfc_nsh_fraser
+${CLOUD_FLAVOR_NAME}        sfc_nsh_fraser
 @{NETVIRT_DIAG_SERVICES}    OPENFLOW    IFM    ITM    DATASTORE    ELAN
-${ETH_IN}         eth0
-${ETH_OUT}        eth1
-${CLOUD_IMAGE_USER}    root
-${CLOUD_IMAGE_PASS}    opnfv
-${CLOULD_IMAGE_CONSOLE}    root
+${ETH_IN}                   eth0
+${ETH_OUT}                  eth1
+${CLOUD_IMAGE_USER}         root
+${CLOUD_IMAGE_PASS}         opnfv
+${CLOULD_IMAGE_CONSOLE}     root
+
 
 *** Test Cases ***
 Create Flow Classifiers For Basic Test
     [Documentation]    Create SFC Flow Classifier for TCP traffic between source VM and destination VM
-    OpenStackOperations.Create SFC Flow Classifier    FC_80    ${NET1_VM_IPS}[0]    ${NET1_VM_IPS}[1]    tcp    source_vm_port    args=--destination-port 80:80
-    OpenStackOperations.Create SFC Flow Classifier    FC_81    ${NET1_VM_IPS}[0]    ${NET1_VM_IPS}[1]    tcp    source_vm_port    args=--destination-port 81:81
-    OpenStackOperations.Create SFC Flow Classifier    FC_83_85    ${NET1_VM_IPS}[0]    ${NET1_VM_IPS}[1]    tcp    source_vm_port    args=--destination-port 83:85
+    OpenStackOperations.Create SFC Flow Classifier
+    ...    FC_80
+    ...    ${NET1_VM_IPS}[0]
+    ...    ${NET1_VM_IPS}[1]
+    ...    tcp
+    ...    source_vm_port
+    ...    args=--destination-port 80:80
+    OpenStackOperations.Create SFC Flow Classifier
+    ...    FC_81
+    ...    ${NET1_VM_IPS}[0]
+    ...    ${NET1_VM_IPS}[1]
+    ...    tcp
+    ...    source_vm_port
+    ...    args=--destination-port 81:81
+    OpenStackOperations.Create SFC Flow Classifier
+    ...    FC_83_85
+    ...    ${NET1_VM_IPS}[0]
+    ...    ${NET1_VM_IPS}[1]
+    ...    tcp
+    ...    source_vm_port
+    ...    args=--destination-port 83:85
 
 Create Port Pair
     [Documentation]    Create SFC Port Pairs
@@ -65,10 +88,20 @@ Create Port Pair Groups
 Test Communication From Vm Instance1 In net_1 No SF
     [Documentation]    Login to the source VM instance, and send a nc req to the destination VM instance, If the SF handles the traffic, there will be delay causing the time for nc to be higher.
     ${DEST_VM_LIST}    BuiltIn.Create List    ${NET1_VM_IPS}[1]
-    ${nc_resp}    OpenStackOperations.Execute Command on VM Instance    ${NETWORKS}[0]    ${NET1_VM_IPS}[0]    ${NC_COMMAND} ${NET1_VM_IPS}[1] 80    user=${CLOUD_IMAGE_USER}    password=${CLOUD_IMAGE_PASS}
+    ${nc_resp}    OpenStackOperations.Execute Command on VM Instance
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_VM_IPS}[0]
+    ...    ${NC_COMMAND} ${NET1_VM_IPS}[1] 80
+    ...    user=${CLOUD_IMAGE_USER}
+    ...    password=${CLOUD_IMAGE_PASS}
     ...    console=${CLOULD_IMAGE_CONSOLE}
     BuiltIn.Should Contain    ${nc_resp}    ${RES_SUCCESS}
-    ${nc_resp}    OpenStackOperations.Execute Command on VM Instance    ${NETWORKS}[0]    ${NET1_VM_IPS}[0]    ${NC_COMMAND} ${NET1_VM_IPS}[1] 81    user=${CLOUD_IMAGE_USER}    password=${CLOUD_IMAGE_PASS}
+    ${nc_resp}    OpenStackOperations.Execute Command on VM Instance
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_VM_IPS}[0]
+    ...    ${NC_COMMAND} ${NET1_VM_IPS}[1] 81
+    ...    user=${CLOUD_IMAGE_USER}
+    ...    password=${CLOUD_IMAGE_PASS}
     ...    console=${CLOULD_IMAGE_CONSOLE}
     BuiltIn.Should Contain    ${nc_resp}    ${RES_SUCCESS}
     [Teardown]    BuiltIn.Run Keywords    OpenStackOperations.Get Test Teardown Debugs
@@ -81,25 +114,76 @@ Create Port Chain For Src->Dest Port 80
 
 Test Communication From Vm Instance1 In net_1 Port 80 via SF
     [Documentation]    Login to the source VM instance, and send a nc req to the destination VM instance, If the SF handles the traffic, there will be delay causing the time for nc to be higher.
-    Start Vxlan Tool in SF    ${NETWORKS}[0]    ${SF1_IP}    args=--do forward --interface ${ETH_IN} --output ${ETH_OUT} --verbose off
-    Wait Until Keyword Succeeds    3x    10s    Check Network Reachability    ${NETWORKS}[0]    ${NET1_VM_IPS}[0]    ${NC_COMMAND}
-    ...    80    ${RES_SUCCESS}
-    Wait Until Keyword Succeeds    3x    10s    Check Network Reachability    ${NETWORKS}[0]    ${NET1_VM_IPS}[0]    ${NC_COMMAND}
-    ...    81    ${RES_SUCCESS}
+    Start Vxlan Tool in SF
+    ...    ${NETWORKS}[0]
+    ...    ${SF1_IP}
+    ...    args=--do forward --interface ${ETH_IN} --output ${ETH_OUT} --verbose off
+    Wait Until Keyword Succeeds
+    ...    3x
+    ...    10s
+    ...    Check Network Reachability
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_VM_IPS}[0]
+    ...    ${NC_COMMAND}
+    ...    80
+    ...    ${RES_SUCCESS}
+    Wait Until Keyword Succeeds
+    ...    3x
+    ...    10s
+    ...    Check Network Reachability
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_VM_IPS}[0]
+    ...    ${NC_COMMAND}
+    ...    81
+    ...    ${RES_SUCCESS}
     Stop Vxlan Tool in SF    ${NETWORKS}[0]    ${SF1_IP}
-    Start Vxlan Tool in SF    ${NETWORKS}[0]    ${SF1_IP}    args=--do forward --interface ${ETH_IN} --output ${ETH_OUT} --verbose off --block 80
+    Start Vxlan Tool in SF
+    ...    ${NETWORKS}[0]
+    ...    ${SF1_IP}
+    ...    args=--do forward --interface ${ETH_IN} --output ${ETH_OUT} --verbose off --block 80
     BuiltIn.Comment    Port 80 communication should fail as the SF blocks the same
-    Wait Until Keyword Succeeds    3x    10s    Check Network Reachability    ${NETWORKS}[0]    ${NET1_VM_IPS}[0]    ${NC_COMMAND}
-    ...    80    ${RES_FAILURE}
+    Wait Until Keyword Succeeds
+    ...    3x
+    ...    10s
+    ...    Check Network Reachability
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_VM_IPS}[0]
+    ...    ${NC_COMMAND}
+    ...    80
+    ...    ${RES_FAILURE}
     BuiltIn.Comment    Test to confirm Port 81 is not blocked
-    Wait Until Keyword Succeeds    3x    10s    Check Network Reachability    ${NETWORKS}[0]    ${NET1_VM_IPS}[0]    ${NC_COMMAND}
-    ...    81    ${RES_SUCCESS}
+    Wait Until Keyword Succeeds
+    ...    3x
+    ...    10s
+    ...    Check Network Reachability
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_VM_IPS}[0]
+    ...    ${NC_COMMAND}
+    ...    81
+    ...    ${RES_SUCCESS}
     Stop Vxlan Tool in SF    ${NETWORKS}[0]    ${SF1_IP}
-    Start Vxlan Tool in SF    ${NETWORKS}[0]    ${SF1_IP}    args=--do forward --interface ${ETH_IN} --output ${ETH_OUT} --verbose off --block 81
-    Wait Until Keyword Succeeds    3x    10s    Check Network Reachability    ${NETWORKS}[0]    ${NET1_VM_IPS}[0]    ${NC_COMMAND}
-    ...    80    ${RES_SUCCESS}
-    Wait Until Keyword Succeeds    3x    10s    Check Network Reachability    ${NETWORKS}[0]    ${NET1_VM_IPS}[0]    ${NC_COMMAND}
-    ...    81    ${RES_SUCCESS}
+    Start Vxlan Tool in SF
+    ...    ${NETWORKS}[0]
+    ...    ${SF1_IP}
+    ...    args=--do forward --interface ${ETH_IN} --output ${ETH_OUT} --verbose off --block 81
+    Wait Until Keyword Succeeds
+    ...    3x
+    ...    10s
+    ...    Check Network Reachability
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_VM_IPS}[0]
+    ...    ${NC_COMMAND}
+    ...    80
+    ...    ${RES_SUCCESS}
+    Wait Until Keyword Succeeds
+    ...    3x
+    ...    10s
+    ...    Check Network Reachability
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_VM_IPS}[0]
+    ...    ${NC_COMMAND}
+    ...    81
+    ...    ${RES_SUCCESS}
     Stop Vxlan Tool in SF    ${NETWORKS}[0]    ${SF1_IP}
     [Teardown]    BuiltIn.Run Keywords    OpenStackOperations.Get Test Teardown Debugs
     ...    AND    OpenStackOperations.Get Test Teardown Debugs For SFC
@@ -113,25 +197,76 @@ Update Port Chain To Use Flow Classifier For Port 81
 Test Communication From Vm Instance1 In net_1 Port 81 via SF
     [Documentation]    Login to the source VM instance, and send a nc req to the destination VM instance.
     Stop Vxlan Tool in SF    ${NETWORKS}[0]    ${SF1_IP}
-    Start Vxlan Tool in SF    ${NETWORKS}[0]    ${SF1_IP}    args=--do forward --interface ${ETH_IN} --output ${ETH_OUT} --verbose off
-    Wait Until Keyword Succeeds    3x    10s    Check Network Reachability    ${NETWORKS}[0]    ${NET1_VM_IPS}[0]    ${NC_COMMAND}
-    ...    80    ${RES_SUCCESS}
-    Wait Until Keyword Succeeds    3x    10s    Check Network Reachability    ${NETWORKS}[0]    ${NET1_VM_IPS}[0]    ${NC_COMMAND}
-    ...    81    ${RES_SUCCESS}
+    Start Vxlan Tool in SF
+    ...    ${NETWORKS}[0]
+    ...    ${SF1_IP}
+    ...    args=--do forward --interface ${ETH_IN} --output ${ETH_OUT} --verbose off
+    Wait Until Keyword Succeeds
+    ...    3x
+    ...    10s
+    ...    Check Network Reachability
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_VM_IPS}[0]
+    ...    ${NC_COMMAND}
+    ...    80
+    ...    ${RES_SUCCESS}
+    Wait Until Keyword Succeeds
+    ...    3x
+    ...    10s
+    ...    Check Network Reachability
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_VM_IPS}[0]
+    ...    ${NC_COMMAND}
+    ...    81
+    ...    ${RES_SUCCESS}
     Stop Vxlan Tool in SF    ${NETWORKS}[0]    ${SF1_IP}
-    Start Vxlan Tool in SF    ${NETWORKS}[0]    ${SF1_IP}    args=--do forward --interface ${ETH_IN} --output ${ETH_OUT} --verbose off --block 81
+    Start Vxlan Tool in SF
+    ...    ${NETWORKS}[0]
+    ...    ${SF1_IP}
+    ...    args=--do forward --interface ${ETH_IN} --output ${ETH_OUT} --verbose off --block 81
     BuiltIn.Comment    Port 81 communication should fail as the SF blocks the same
-    Wait Until Keyword Succeeds    3x    10s    Check Network Reachability    ${NETWORKS}[0]    ${NET1_VM_IPS}[0]    ${NC_COMMAND}
-    ...    80    ${RES_SUCCESS}
-    Wait Until Keyword Succeeds    3x    10s    Check Network Reachability    ${NETWORKS}[0]    ${NET1_VM_IPS}[0]    ${NC_COMMAND}
-    ...    81    ${RES_FAILURE}
+    Wait Until Keyword Succeeds
+    ...    3x
+    ...    10s
+    ...    Check Network Reachability
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_VM_IPS}[0]
+    ...    ${NC_COMMAND}
+    ...    80
+    ...    ${RES_SUCCESS}
+    Wait Until Keyword Succeeds
+    ...    3x
+    ...    10s
+    ...    Check Network Reachability
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_VM_IPS}[0]
+    ...    ${NC_COMMAND}
+    ...    81
+    ...    ${RES_FAILURE}
     BuiltIn.Comment    Test to confirm Port 80 does not continue to get routed through SF
     Stop Vxlan Tool in SF    ${NETWORKS}[0]    ${SF1_IP}
-    Start Vxlan Tool in SF    ${NETWORKS}[0]    ${SF1_IP}    args=--do forward --interface ${ETH_IN} --output ${ETH_OUT} --verbose off --block 80
-    Wait Until Keyword Succeeds    3x    10s    Check Network Reachability    ${NETWORKS}[0]    ${NET1_VM_IPS}[0]    ${NC_COMMAND}
-    ...    80    ${RES_SUCCESS}
-    Wait Until Keyword Succeeds    3x    10s    Check Network Reachability    ${NETWORKS}[0]    ${NET1_VM_IPS}[0]    ${NC_COMMAND}
-    ...    81    ${RES_SUCCESS}
+    Start Vxlan Tool in SF
+    ...    ${NETWORKS}[0]
+    ...    ${SF1_IP}
+    ...    args=--do forward --interface ${ETH_IN} --output ${ETH_OUT} --verbose off --block 80
+    Wait Until Keyword Succeeds
+    ...    3x
+    ...    10s
+    ...    Check Network Reachability
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_VM_IPS}[0]
+    ...    ${NC_COMMAND}
+    ...    80
+    ...    ${RES_SUCCESS}
+    Wait Until Keyword Succeeds
+    ...    3x
+    ...    10s
+    ...    Check Network Reachability
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_VM_IPS}[0]
+    ...    ${NC_COMMAND}
+    ...    81
+    ...    ${RES_SUCCESS}
     Stop Vxlan Tool in SF    ${NETWORKS}[0]    ${SF1_IP}
     [Teardown]    BuiltIn.Run Keywords    OpenStackOperations.Get Test Teardown Debugs
     ...    AND    OpenStackOperations.Get Test Teardown Debugs For SFC
@@ -144,58 +279,213 @@ Update Port Chain To Use Flow Classifier For Port Range 83-85
 Test Communication From Vm Instance1 In net_1 Port 84 And 85 via SF
     [Documentation]    Login to the source VM instance, and send a nc req to the destination VM instance.
     Stop Vxlan Tool in SF    ${NETWORKS}[0]    ${SF1_IP}
-    Start Vxlan Tool in SF    ${NETWORKS}[0]    ${SF1_IP}    args=--do forward --interface ${ETH_IN} --output ${ETH_OUT} --verbose off
-    Wait Until Keyword Succeeds    3x    10s    Check Network Reachability    ${NETWORKS}[0]    ${NET1_VM_IPS}[0]    ${NC_COMMAND}
-    ...    80    ${RES_SUCCESS}
-    Wait Until Keyword Succeeds    3x    10s    Check Network Reachability    ${NETWORKS}[0]    ${NET1_VM_IPS}[0]    ${NC_COMMAND}
-    ...    83    ${RES_SUCCESS}
-    Wait Until Keyword Succeeds    3x    10s    Check Network Reachability    ${NETWORKS}[0]    ${NET1_VM_IPS}[0]    ${NC_COMMAND}
-    ...    84    ${RES_SUCCESS}
-    Wait Until Keyword Succeeds    3x    10s    Check Network Reachability    ${NETWORKS}[0]    ${NET1_VM_IPS}[0]    ${NC_COMMAND}
-    ...    85    ${RES_SUCCESS}
+    Start Vxlan Tool in SF
+    ...    ${NETWORKS}[0]
+    ...    ${SF1_IP}
+    ...    args=--do forward --interface ${ETH_IN} --output ${ETH_OUT} --verbose off
+    Wait Until Keyword Succeeds
+    ...    3x
+    ...    10s
+    ...    Check Network Reachability
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_VM_IPS}[0]
+    ...    ${NC_COMMAND}
+    ...    80
+    ...    ${RES_SUCCESS}
+    Wait Until Keyword Succeeds
+    ...    3x
+    ...    10s
+    ...    Check Network Reachability
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_VM_IPS}[0]
+    ...    ${NC_COMMAND}
+    ...    83
+    ...    ${RES_SUCCESS}
+    Wait Until Keyword Succeeds
+    ...    3x
+    ...    10s
+    ...    Check Network Reachability
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_VM_IPS}[0]
+    ...    ${NC_COMMAND}
+    ...    84
+    ...    ${RES_SUCCESS}
+    Wait Until Keyword Succeeds
+    ...    3x
+    ...    10s
+    ...    Check Network Reachability
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_VM_IPS}[0]
+    ...    ${NC_COMMAND}
+    ...    85
+    ...    ${RES_SUCCESS}
     Stop Vxlan Tool in SF    ${NETWORKS}[0]    ${SF1_IP}
-    Start Vxlan Tool in SF    ${NETWORKS}[0]    ${SF1_IP}    args=--do forward --interface ${ETH_IN} --output ${ETH_OUT} --verbose off --block 83
+    Start Vxlan Tool in SF
+    ...    ${NETWORKS}[0]
+    ...    ${SF1_IP}
+    ...    args=--do forward --interface ${ETH_IN} --output ${ETH_OUT} --verbose off --block 83
     BuiltIn.Comment    Port 83 communication should fail as the SF blocks the same
-    Wait Until Keyword Succeeds    3x    10s    Check Network Reachability    ${NETWORKS}[0]    ${NET1_VM_IPS}[0]    ${NC_COMMAND}
-    ...    80    ${RES_SUCCESS}
-    Wait Until Keyword Succeeds    3x    10s    Check Network Reachability    ${NETWORKS}[0]    ${NET1_VM_IPS}[0]    ${NC_COMMAND}
-    ...    83    ${RES_FAILURE}
-    Wait Until Keyword Succeeds    3x    10s    Check Network Reachability    ${NETWORKS}[0]    ${NET1_VM_IPS}[0]    ${NC_COMMAND}
-    ...    84    ${RES_SUCCESS}
-    Wait Until Keyword Succeeds    3x    10s    Check Network Reachability    ${NETWORKS}[0]    ${NET1_VM_IPS}[0]    ${NC_COMMAND}
-    ...    85    ${RES_SUCCESS}
+    Wait Until Keyword Succeeds
+    ...    3x
+    ...    10s
+    ...    Check Network Reachability
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_VM_IPS}[0]
+    ...    ${NC_COMMAND}
+    ...    80
+    ...    ${RES_SUCCESS}
+    Wait Until Keyword Succeeds
+    ...    3x
+    ...    10s
+    ...    Check Network Reachability
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_VM_IPS}[0]
+    ...    ${NC_COMMAND}
+    ...    83
+    ...    ${RES_FAILURE}
+    Wait Until Keyword Succeeds
+    ...    3x
+    ...    10s
+    ...    Check Network Reachability
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_VM_IPS}[0]
+    ...    ${NC_COMMAND}
+    ...    84
+    ...    ${RES_SUCCESS}
+    Wait Until Keyword Succeeds
+    ...    3x
+    ...    10s
+    ...    Check Network Reachability
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_VM_IPS}[0]
+    ...    ${NC_COMMAND}
+    ...    85
+    ...    ${RES_SUCCESS}
     Stop Vxlan Tool in SF    ${NETWORKS}[0]    ${SF1_IP}
-    Start Vxlan Tool in SF    ${NETWORKS}[0]    ${SF1_IP}    args=--do forward --interface ${ETH_IN} --output ${ETH_OUT} --verbose off --block 84
+    Start Vxlan Tool in SF
+    ...    ${NETWORKS}[0]
+    ...    ${SF1_IP}
+    ...    args=--do forward --interface ${ETH_IN} --output ${ETH_OUT} --verbose off --block 84
     BuiltIn.Comment    Port 84 communication should fail as the SF blocks the same
-    Wait Until Keyword Succeeds    3x    10s    Check Network Reachability    ${NETWORKS}[0]    ${NET1_VM_IPS}[0]    ${NC_COMMAND}
-    ...    80    ${RES_SUCCESS}
-    Wait Until Keyword Succeeds    3x    10s    Check Network Reachability    ${NETWORKS}[0]    ${NET1_VM_IPS}[0]    ${NC_COMMAND}
-    ...    84    ${RES_FAILURE}
-    Wait Until Keyword Succeeds    3x    10s    Check Network Reachability    ${NETWORKS}[0]    ${NET1_VM_IPS}[0]    ${NC_COMMAND}
-    ...    83    ${RES_SUCCESS}
-    Wait Until Keyword Succeeds    3x    10s    Check Network Reachability    ${NETWORKS}[0]    ${NET1_VM_IPS}[0]    ${NC_COMMAND}
-    ...    85    ${RES_SUCCESS}
+    Wait Until Keyword Succeeds
+    ...    3x
+    ...    10s
+    ...    Check Network Reachability
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_VM_IPS}[0]
+    ...    ${NC_COMMAND}
+    ...    80
+    ...    ${RES_SUCCESS}
+    Wait Until Keyword Succeeds
+    ...    3x
+    ...    10s
+    ...    Check Network Reachability
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_VM_IPS}[0]
+    ...    ${NC_COMMAND}
+    ...    84
+    ...    ${RES_FAILURE}
+    Wait Until Keyword Succeeds
+    ...    3x
+    ...    10s
+    ...    Check Network Reachability
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_VM_IPS}[0]
+    ...    ${NC_COMMAND}
+    ...    83
+    ...    ${RES_SUCCESS}
+    Wait Until Keyword Succeeds
+    ...    3x
+    ...    10s
+    ...    Check Network Reachability
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_VM_IPS}[0]
+    ...    ${NC_COMMAND}
+    ...    85
+    ...    ${RES_SUCCESS}
     Stop Vxlan Tool in SF    ${NETWORKS}[0]    ${SF1_IP}
-    Start Vxlan Tool in SF    ${NETWORKS}[0]    ${SF1_IP}    args=--do forward --interface ${ETH_IN} --output ${ETH_OUT} --verbose off --block 85
+    Start Vxlan Tool in SF
+    ...    ${NETWORKS}[0]
+    ...    ${SF1_IP}
+    ...    args=--do forward --interface ${ETH_IN} --output ${ETH_OUT} --verbose off --block 85
     BuiltIn.Comment    Port 85 communication should fail as the SF blocks the same
-    Wait Until Keyword Succeeds    3x    10s    Check Network Reachability    ${NETWORKS}[0]    ${NET1_VM_IPS}[0]    ${NC_COMMAND}
-    ...    80    ${RES_SUCCESS}
-    Wait Until Keyword Succeeds    3x    10s    Check Network Reachability    ${NETWORKS}[0]    ${NET1_VM_IPS}[0]    ${NC_COMMAND}
-    ...    83    ${RES_SUCCESS}
-    Wait Until Keyword Succeeds    3x    10s    Check Network Reachability    ${NETWORKS}[0]    ${NET1_VM_IPS}[0]    ${NC_COMMAND}
-    ...    84    ${RES_SUCCESS}
-    Wait Until Keyword Succeeds    3x    10s    Check Network Reachability    ${NETWORKS}[0]    ${NET1_VM_IPS}[0]    ${NC_COMMAND}
-    ...    85    ${RES_FAILURE}
+    Wait Until Keyword Succeeds
+    ...    3x
+    ...    10s
+    ...    Check Network Reachability
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_VM_IPS}[0]
+    ...    ${NC_COMMAND}
+    ...    80
+    ...    ${RES_SUCCESS}
+    Wait Until Keyword Succeeds
+    ...    3x
+    ...    10s
+    ...    Check Network Reachability
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_VM_IPS}[0]
+    ...    ${NC_COMMAND}
+    ...    83
+    ...    ${RES_SUCCESS}
+    Wait Until Keyword Succeeds
+    ...    3x
+    ...    10s
+    ...    Check Network Reachability
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_VM_IPS}[0]
+    ...    ${NC_COMMAND}
+    ...    84
+    ...    ${RES_SUCCESS}
+    Wait Until Keyword Succeeds
+    ...    3x
+    ...    10s
+    ...    Check Network Reachability
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_VM_IPS}[0]
+    ...    ${NC_COMMAND}
+    ...    85
+    ...    ${RES_FAILURE}
     Stop Vxlan Tool in SF    ${NETWORKS}[0]    ${SF1_IP}
-    Start Vxlan Tool in SF    ${NETWORKS}[0]    ${SF1_IP}    args=--do forward --interface ${ETH_IN} --output ${ETH_OUT} --verbose off --block 80
-    Wait Until Keyword Succeeds    3x    10s    Check Network Reachability    ${NETWORKS}[0]    ${NET1_VM_IPS}[0]    ${NC_COMMAND}
-    ...    80    ${RES_SUCCESS}
-    Wait Until Keyword Succeeds    3x    10s    Check Network Reachability    ${NETWORKS}[0]    ${NET1_VM_IPS}[0]    ${NC_COMMAND}
-    ...    83    ${RES_SUCCESS}
-    Wait Until Keyword Succeeds    3x    10s    Check Network Reachability    ${NETWORKS}[0]    ${NET1_VM_IPS}[0]    ${NC_COMMAND}
-    ...    84    ${RES_SUCCESS}
-    Wait Until Keyword Succeeds    3x    10s    Check Network Reachability    ${NETWORKS}[0]    ${NET1_VM_IPS}[0]    ${NC_COMMAND}
-    ...    85    ${RES_SUCCESS}
+    Start Vxlan Tool in SF
+    ...    ${NETWORKS}[0]
+    ...    ${SF1_IP}
+    ...    args=--do forward --interface ${ETH_IN} --output ${ETH_OUT} --verbose off --block 80
+    Wait Until Keyword Succeeds
+    ...    3x
+    ...    10s
+    ...    Check Network Reachability
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_VM_IPS}[0]
+    ...    ${NC_COMMAND}
+    ...    80
+    ...    ${RES_SUCCESS}
+    Wait Until Keyword Succeeds
+    ...    3x
+    ...    10s
+    ...    Check Network Reachability
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_VM_IPS}[0]
+    ...    ${NC_COMMAND}
+    ...    83
+    ...    ${RES_SUCCESS}
+    Wait Until Keyword Succeeds
+    ...    3x
+    ...    10s
+    ...    Check Network Reachability
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_VM_IPS}[0]
+    ...    ${NC_COMMAND}
+    ...    84
+    ...    ${RES_SUCCESS}
+    Wait Until Keyword Succeeds
+    ...    3x
+    ...    10s
+    ...    Check Network Reachability
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_VM_IPS}[0]
+    ...    ${NC_COMMAND}
+    ...    85
+    ...    ${RES_SUCCESS}
 
 Update Port Chain To Use Flow Classifier For Input Port Range 101-103
     [Documentation]    Update Port Chain to use FC_101_103
@@ -205,66 +495,208 @@ Update Port Chain To Use Flow Classifier For Input Port Range 101-103
     OpenStackOperations.Delete SFC Flow Classifier    FC_80
     OpenStackOperations.Delete SFC Flow Classifier    FC_81
     OpenStackOperations.Delete SFC Flow Classifier    FC_83_85
-    OpenStackOperations.Create SFC Flow Classifier    FC_101_103    ${NET1_VM_IPS}[0]    ${NET1_VM_IPS}[1]    tcp    source_vm_port    args=--source-port 101:103
+    OpenStackOperations.Create SFC Flow Classifier
+    ...    FC_101_103
+    ...    ${NET1_VM_IPS}[0]
+    ...    ${NET1_VM_IPS}[1]
+    ...    tcp
+    ...    source_vm_port
+    ...    args=--source-port 101:103
     OpenStackOperations.Update SFC Port Chain With A New Flow Classifier    SFPC1    FC_101_103
 
 Test Communication From Vm Instance1 In net_1 Port 100 And 102 via SF
     [Documentation]    Login to the source VM instance, and send a nc req to the destination VM instance.
     Stop Vxlan Tool in SF    ${NETWORKS}[0]    ${SF1_IP}
-    Start Vxlan Tool in SF    ${NETWORKS}[0]    ${SF1_IP}    args=--do forward --interface ${ETH_IN} --output ${ETH_OUT} --verbose off
-    Wait Until Keyword Succeeds    3x    10s    Check Network Reachability    ${NETWORKS}[0]    ${NET1_VM_IPS}[0]    ${NC_COMMAND} -p 80
-    ...    83    ${RES_SUCCESS}
-    Wait Until Keyword Succeeds    3x    10s    Check Network Reachability    ${NETWORKS}[0]    ${NET1_VM_IPS}[0]    ${NC_COMMAND} -p 100
-    ...    83    ${RES_SUCCESS}
-    Wait Until Keyword Succeeds    3x    10s    Check Network Reachability    ${NETWORKS}[0]    ${NET1_VM_IPS}[0]    ${NC_COMMAND} -p 101
-    ...    83    ${RES_SUCCESS}
-    Wait Until Keyword Succeeds    3x    10s    Check Network Reachability    ${NETWORKS}[0]    ${NET1_VM_IPS}[0]    ${NC_COMMAND} -p 102
-    ...    83    ${RES_SUCCESS}
-    Wait Until Keyword Succeeds    3x    10s    Check Network Reachability    ${NETWORKS}[0]    ${NET1_VM_IPS}[0]    ${NC_COMMAND} -p 103
-    ...    83    ${RES_SUCCESS}
+    Start Vxlan Tool in SF
+    ...    ${NETWORKS}[0]
+    ...    ${SF1_IP}
+    ...    args=--do forward --interface ${ETH_IN} --output ${ETH_OUT} --verbose off
+    Wait Until Keyword Succeeds
+    ...    3x
+    ...    10s
+    ...    Check Network Reachability
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_VM_IPS}[0]
+    ...    ${NC_COMMAND} -p 80
+    ...    83
+    ...    ${RES_SUCCESS}
+    Wait Until Keyword Succeeds
+    ...    3x
+    ...    10s
+    ...    Check Network Reachability
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_VM_IPS}[0]
+    ...    ${NC_COMMAND} -p 100
+    ...    83
+    ...    ${RES_SUCCESS}
+    Wait Until Keyword Succeeds
+    ...    3x
+    ...    10s
+    ...    Check Network Reachability
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_VM_IPS}[0]
+    ...    ${NC_COMMAND} -p 101
+    ...    83
+    ...    ${RES_SUCCESS}
+    Wait Until Keyword Succeeds
+    ...    3x
+    ...    10s
+    ...    Check Network Reachability
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_VM_IPS}[0]
+    ...    ${NC_COMMAND} -p 102
+    ...    83
+    ...    ${RES_SUCCESS}
+    Wait Until Keyword Succeeds
+    ...    3x
+    ...    10s
+    ...    Check Network Reachability
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_VM_IPS}[0]
+    ...    ${NC_COMMAND} -p 103
+    ...    83
+    ...    ${RES_SUCCESS}
     Stop Vxlan Tool in SF    ${NETWORKS}[0]    ${SF1_IP}
-    Start Vxlan Tool in SF    ${NETWORKS}[0]    ${SF1_IP}    args=--do forward --interface ${ETH_IN} --output ${ETH_OUT} --verbose off --block 83
-    Wait Until Keyword Succeeds    3x    10s    Check Network Reachability    ${NETWORKS}[0]    ${NET1_VM_IPS}[0]    ${NC_COMMAND} -p 80
-    ...    83    ${RES_SUCCESS}
-    Wait Until Keyword Succeeds    3x    10s    Check Network Reachability    ${NETWORKS}[0]    ${NET1_VM_IPS}[0]    ${NC_COMMAND} -p 100
-    ...    83    ${RES_SUCCESS}
-    Wait Until Keyword Succeeds    3x    10s    Check Network Reachability    ${NETWORKS}[0]    ${NET1_VM_IPS}[0]    ${NC_COMMAND} -p 101
-    ...    83    ${RES_FAILURE}
-    Wait Until Keyword Succeeds    3x    10s    Check Network Reachability    ${NETWORKS}[0]    ${NET1_VM_IPS}[0]    ${NC_COMMAND} -p 102
-    ...    83    ${RES_FAILURE}
-    Wait Until Keyword Succeeds    3x    10s    Check Network Reachability    ${NETWORKS}[0]    ${NET1_VM_IPS}[0]    ${NC_COMMAND} -p 103
-    ...    83    ${RES_FAILURE}
+    Start Vxlan Tool in SF
+    ...    ${NETWORKS}[0]
+    ...    ${SF1_IP}
+    ...    args=--do forward --interface ${ETH_IN} --output ${ETH_OUT} --verbose off --block 83
+    Wait Until Keyword Succeeds
+    ...    3x
+    ...    10s
+    ...    Check Network Reachability
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_VM_IPS}[0]
+    ...    ${NC_COMMAND} -p 80
+    ...    83
+    ...    ${RES_SUCCESS}
+    Wait Until Keyword Succeeds
+    ...    3x
+    ...    10s
+    ...    Check Network Reachability
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_VM_IPS}[0]
+    ...    ${NC_COMMAND} -p 100
+    ...    83
+    ...    ${RES_SUCCESS}
+    Wait Until Keyword Succeeds
+    ...    3x
+    ...    10s
+    ...    Check Network Reachability
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_VM_IPS}[0]
+    ...    ${NC_COMMAND} -p 101
+    ...    83
+    ...    ${RES_FAILURE}
+    Wait Until Keyword Succeeds
+    ...    3x
+    ...    10s
+    ...    Check Network Reachability
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_VM_IPS}[0]
+    ...    ${NC_COMMAND} -p 102
+    ...    83
+    ...    ${RES_FAILURE}
+    Wait Until Keyword Succeeds
+    ...    3x
+    ...    10s
+    ...    Check Network Reachability
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_VM_IPS}[0]
+    ...    ${NC_COMMAND} -p 103
+    ...    83
+    ...    ${RES_FAILURE}
 
 Delete And Recreate Port Chain And Flow Classifiers For Symmetric Test
-    OpenStackOperations.Create SFC Flow Classifier    FC_SYM    ${NET1_VM_IPS}[0]    ${NET1_VM_IPS}[1]    tcp    source_vm_port    args=--destination-port 82:82 --source-port 2000 --logical-destination-port dest_vm_port
+    OpenStackOperations.Create SFC Flow Classifier
+    ...    FC_SYM
+    ...    ${NET1_VM_IPS}[0]
+    ...    ${NET1_VM_IPS}[1]
+    ...    tcp
+    ...    source_vm_port
+    ...    args=--destination-port 82:82 --source-port 2000 --logical-destination-port dest_vm_port
     OpenStackOperations.Delete SFC Port Chain    SFPC1
-    OpenStackOperations.Create SFC Port Chain    SFPSYM    args=--port-pair-group SFPPG1 --flow-classifier FC_SYM --chain-parameters symmetric=true
+    OpenStackOperations.Create SFC Port Chain
+    ...    SFPSYM
+    ...    args=--port-pair-group SFPPG1 --flow-classifier FC_SYM --chain-parameters symmetric=true
 
 Test Communication From Vm Instance1 For Symmetric Chain
     [Documentation]    Login to the source VM instance, and send a nc req to the destination VM instance.
     Stop Vxlan Tool in SF    ${NETWORKS}[0]    ${SF1_IP}
-    Start Vxlan Tool in SF    ${NETWORKS}[0]    ${SF1_IP}    args=--do forward --interface ${ETH_IN} --output ${ETH_OUT} --verbose off
-    Start Vxlan Tool in SF    ${NETWORKS}[0]    ${SF1_IP}    args=--do forward --interface ${ETH_OUT} --output ${ETH_IN} --verbose off
-    Wait Until Keyword Succeeds    8x    20s    Check Network Reachability    ${NETWORKS}[0]    ${NET1_VM_IPS}[0]    ${NC_COMMAND} -p 2000
-    ...    82    ${RES_SUCCESS}
+    Start Vxlan Tool in SF
+    ...    ${NETWORKS}[0]
+    ...    ${SF1_IP}
+    ...    args=--do forward --interface ${ETH_IN} --output ${ETH_OUT} --verbose off
+    Start Vxlan Tool in SF
+    ...    ${NETWORKS}[0]
+    ...    ${SF1_IP}
+    ...    args=--do forward --interface ${ETH_OUT} --output ${ETH_IN} --verbose off
+    Wait Until Keyword Succeeds
+    ...    8x
+    ...    20s
+    ...    Check Network Reachability
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_VM_IPS}[0]
+    ...    ${NC_COMMAND} -p 2000
+    ...    82
+    ...    ${RES_SUCCESS}
     BuiltIn.Comment    Test to confirm the SRC->DEST Port 82 is routed through SF
     Stop Vxlan Tool in SF    ${NETWORKS}[0]    ${SF1_IP}
-    Start Vxlan Tool in SF    ${NETWORKS}[0]    ${SF1_IP}    args=--do forward --interface ${ETH_IN} --output ${ETH_OUT} --verbose off --block 82
-    Start Vxlan Tool in SF    ${NETWORKS}[0]    ${SF1_IP}    args=--do forward --interface ${ETH_OUT} --output ${ETH_IN} --verbose off
-    Wait Until Keyword Succeeds    8x    20s    Check Network Reachability    ${NETWORKS}[0]    ${NET1_VM_IPS}[0]    ${NC_COMMAND} -p 2000
-    ...    82    ${RES_FAILURE}
+    Start Vxlan Tool in SF
+    ...    ${NETWORKS}[0]
+    ...    ${SF1_IP}
+    ...    args=--do forward --interface ${ETH_IN} --output ${ETH_OUT} --verbose off --block 82
+    Start Vxlan Tool in SF
+    ...    ${NETWORKS}[0]
+    ...    ${SF1_IP}
+    ...    args=--do forward --interface ${ETH_OUT} --output ${ETH_IN} --verbose off
+    Wait Until Keyword Succeeds
+    ...    8x
+    ...    20s
+    ...    Check Network Reachability
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_VM_IPS}[0]
+    ...    ${NC_COMMAND} -p 2000
+    ...    82
+    ...    ${RES_FAILURE}
     BuiltIn.Comment    Test to confirm DEST->SRC Port 2000 path SFC traversal
     Stop Vxlan Tool in SF    ${NETWORKS}[0]    ${SF1_IP}
-    Start Vxlan Tool in SF    ${NETWORKS}[0]    ${SF1_IP}    args=--do forward --interface ${ETH_IN} --output ${ETH_OUT} --verbose off
-    Start Vxlan Tool in SF    ${NETWORKS}[0]    ${SF1_IP}    args=--do forward --interface ${ETH_OUT} --output ${ETH_IN} --verbose off --block 2000
-    Wait Until Keyword Succeeds    8x    20s    Check Network Reachability    ${NETWORKS}[0]    ${NET1_VM_IPS}[0]    ${NC_COMMAND} -p 2000
-    ...    82    ${RES_FAILURE}
+    Start Vxlan Tool in SF
+    ...    ${NETWORKS}[0]
+    ...    ${SF1_IP}
+    ...    args=--do forward --interface ${ETH_IN} --output ${ETH_OUT} --verbose off
+    Start Vxlan Tool in SF
+    ...    ${NETWORKS}[0]
+    ...    ${SF1_IP}
+    ...    args=--do forward --interface ${ETH_OUT} --output ${ETH_IN} --verbose off --block 2000
+    Wait Until Keyword Succeeds
+    ...    8x
+    ...    20s
+    ...    Check Network Reachability
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_VM_IPS}[0]
+    ...    ${NC_COMMAND} -p 2000
+    ...    82
+    ...    ${RES_FAILURE}
     BuiltIn.Comment    Test to confirm the Normalcy restored
     Stop Vxlan Tool in SF    ${NETWORKS}[0]    ${SF1_IP}
-    Start Vxlan Tool in SF    ${NETWORKS}[0]    ${SF1_IP}    args=--do forward --interface ${ETH_IN} --output ${ETH_OUT} --verbose off
-    Start Vxlan Tool in SF    ${NETWORKS}[0]    ${SF1_IP}    args=--do forward --interface ${ETH_OUT} --output ${ETH_IN} --verbose off
-    Wait Until Keyword Succeeds    8x    20s    Check Network Reachability    ${NETWORKS}[0]    ${NET1_VM_IPS}[0]    ${NC_COMMAND} -p 2000
-    ...    82    ${RES_SUCCESS}
+    Start Vxlan Tool in SF
+    ...    ${NETWORKS}[0]
+    ...    ${SF1_IP}
+    ...    args=--do forward --interface ${ETH_IN} --output ${ETH_OUT} --verbose off
+    Start Vxlan Tool in SF
+    ...    ${NETWORKS}[0]
+    ...    ${SF1_IP}
+    ...    args=--do forward --interface ${ETH_OUT} --output ${ETH_IN} --verbose off
+    Wait Until Keyword Succeeds
+    ...    8x
+    ...    20s
+    ...    Check Network Reachability
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_VM_IPS}[0]
+    ...    ${NC_COMMAND} -p 2000
+    ...    82
+    ...    ${RES_SUCCESS}
     Stop Vxlan Tool in SF    ${NETWORKS}[0]    ${SF1_IP}
     [Teardown]    BuiltIn.Run Keywords    OpenStackOperations.Get Test Teardown Debugs
     ...    AND    OpenStackOperations.Get Test Teardown Debugs For SFC
@@ -293,6 +725,7 @@ Delete Configurations
     END
     OpenStackOperations.Delete SecurityGroup    ${SECURITY_GROUP}
 
+
 *** Keywords ***
 Suite Setup
     OpenStackOperations.OpenStack Suite Setup
@@ -319,20 +752,54 @@ Create Ports For Testing
     OpenStackOperations.Update Port    p1in    additional_args=--disable-port-security
     OpenStackOperations.Update Port    p1out    additional_args=--no-security-group
     OpenStackOperations.Update Port    p1out    additional_args=--disable-port-security
-    CompareStream.Run_Keyword_If_Equals    oxygen    OpenStackOperations.Update Port    source_vm_port    additional_args=--no-security-group
-    CompareStream.Run_Keyword_If_Equals    oxygen    OpenStackOperations.Update Port    source_vm_port    additional_args=--disable-port-security
-    CompareStream.Run_Keyword_If_Equals    oxygen    OpenStackOperations.Update Port    dest_vm_port    additional_args=--no-security-group
-    CompareStream.Run_Keyword_If_Equals    oxygen    OpenStackOperations.Update Port    dest_vm_port    additional_args=--disable-port-security
+    CompareStream.Run_Keyword_If_Equals
+    ...    oxygen
+    ...    OpenStackOperations.Update Port
+    ...    source_vm_port
+    ...    additional_args=--no-security-group
+    CompareStream.Run_Keyword_If_Equals
+    ...    oxygen
+    ...    OpenStackOperations.Update Port
+    ...    source_vm_port
+    ...    additional_args=--disable-port-security
+    CompareStream.Run_Keyword_If_Equals
+    ...    oxygen
+    ...    OpenStackOperations.Update Port
+    ...    dest_vm_port
+    ...    additional_args=--no-security-group
+    CompareStream.Run_Keyword_If_Equals
+    ...    oxygen
+    ...    OpenStackOperations.Update Port
+    ...    dest_vm_port
+    ...    additional_args=--disable-port-security
     OpenStackOperations.Get Suite Debugs
 
 Create Instances For Testing
-    ${SF_COMP_HOST}    BuiltIn.Set Variable If    2 < ${NUM_OS_SYSTEM}    ${OS_CMP2_HOSTNAME}    ${OS_CMP1_HOSTNAME}
+    ${SF_COMP_HOST}    BuiltIn.Set Variable If    2 < ${NUM_OS_SYSTEM}    ${OS_CMP2_HOSTNAME}    ${OS_CMP1_HOSTNAME}
     OpenStackOperations.Add New Image From Url    ${CLOUD_IMAGE}    ${CLOUD_IMAGE_NAME}
     OpenStackOperations.Create Flavor    ${CLOUD_FLAVOR_NAME}    512    1
-    OpenStackOperations.Create Vm Instance With Ports On Compute Node    p1in    p1out    sf1    ${SF_COMP_HOST}    image=${CLOUD_IMAGE_NAME}    flavor=${CLOUD_FLAVOR_NAME}
+    OpenStackOperations.Create Vm Instance With Ports On Compute Node
+    ...    p1in
+    ...    p1out
+    ...    sf1
+    ...    ${SF_COMP_HOST}
+    ...    image=${CLOUD_IMAGE_NAME}
+    ...    flavor=${CLOUD_FLAVOR_NAME}
+    ...    sg=${SECURITY_GROUP}
+    OpenStackOperations.Create Vm Instance With Port On Compute Node
+    ...    source_vm_port
+    ...    sourcevm
+    ...    ${OS_CMP1_HOSTNAME}
+    ...    image=${CLOUD_IMAGE_NAME}
+    ...    flavor=${CLOUD_FLAVOR_NAME}
+    ...    sg=${SECURITY_GROUP}
+    OpenStackOperations.Create Vm Instance With Port On Compute Node
+    ...    dest_vm_port
+    ...    destvm
+    ...    ${OS_CMP1_HOSTNAME}
+    ...    image=${CLOUD_IMAGE_NAME}
+    ...    flavor=${CLOUD_FLAVOR_NAME}
     ...    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance With Port On Compute Node    source_vm_port    sourcevm    ${OS_CMP1_HOSTNAME}    image=${CLOUD_IMAGE_NAME}    flavor=${CLOUD_FLAVOR_NAME}    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance With Port On Compute Node    dest_vm_port    destvm    ${OS_CMP1_HOSTNAME}    image=${CLOUD_IMAGE_NAME}    flavor=${CLOUD_FLAVOR_NAME}    sg=${SECURITY_GROUP}
     OpenStackOperations.Show Debugs    @{NET_1_VMS}
     OpenStackOperations.Get Suite Debugs
 
@@ -342,45 +809,107 @@ Check Vm Instances Have Ip Address And Ready For Test
     OpenStackOperations.Poll VM Is ACTIVE    destvm
     ${sfc1_mac}    OpenStackOperations.Get Port Mac    p1in
     ${SF1_IP}    OpenStackOperations.Get Port Ip    p1in
-    BuiltIn.Wait Until Keyword Succeeds    500s    60s    OpenStackOperations.Verify If Instance Is Arpingable From Dhcp Namespace    ${NETWORKS}[0]    ${sfc1_mac}    ${SF1_IP}
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    500s
+    ...    60s
+    ...    OpenStackOperations.Verify If Instance Is Arpingable From Dhcp Namespace
+    ...    ${NETWORKS}[0]
+    ...    ${sfc1_mac}
+    ...    ${SF1_IP}
     ${src_mac}    OpenStackOperations.Get Port Mac    source_vm_port
     ${src_ip}    OpenStackOperations.Get Port Ip    source_vm_port
-    BuiltIn.Wait Until Keyword Succeeds    500s    60s    OpenStackOperations.Verify If Instance Is Arpingable From Dhcp Namespace    ${NETWORKS}[0]    ${src_mac}    ${src_ip}
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    500s
+    ...    60s
+    ...    OpenStackOperations.Verify If Instance Is Arpingable From Dhcp Namespace
+    ...    ${NETWORKS}[0]
+    ...    ${src_mac}
+    ...    ${src_ip}
     ${dest_mac}    OpenStackOperations.Get Port Mac    dest_vm_port
     ${dest_ip}    OpenStackOperations.Get Port Ip    dest_vm_port
-    BuiltIn.Wait Until Keyword Succeeds    500s    60s    OpenStackOperations.Verify If Instance Is Arpingable From Dhcp Namespace    ${NETWORKS}[0]    ${dest_mac}    ${dest_ip}
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    500s
+    ...    60s
+    ...    OpenStackOperations.Verify If Instance Is Arpingable From Dhcp Namespace
+    ...    ${NETWORKS}[0]
+    ...    ${dest_mac}
+    ...    ${dest_ip}
     BuiltIn.Comment    If the Tests reach this point, all the Instances are reachable.
     ${NET1_VM_IPS}    BuiltIn.Create List    ${src_ip}    ${dest_ip}
     BuiltIn.Set Suite Variable    @{NET1_VM_IPS}
     BuiltIn.Set Suite Variable    ${SF1_IP}
     BuiltIn.Set Suite Variable    ${OS_SYSTEM_PROMPT}    \#
-    BuiltIn.Wait Until Keyword Succeeds    300s    60s    OpenStackOperations.Check If Instance Is Ready For Ssh Login Using Password    ${NETWORKS}[0]    ${SF1_IP}    user=${CLOUD_IMAGE_USER}
-    ...    password=${CLOUD_IMAGE_PASS}    console=${CLOULD_IMAGE_CONSOLE}
-    BuiltIn.Wait Until Keyword Succeeds    300s    60s    OpenStackOperations.Check If Instance Is Ready For Ssh Login Using Password    ${NETWORKS}[0]    ${NET1_VM_IPS}[0]    user=${CLOUD_IMAGE_USER}
-    ...    password=${CLOUD_IMAGE_PASS}    console=${CLOULD_IMAGE_CONSOLE}
-    BuiltIn.Wait Until Keyword Succeeds    300s    60s    OpenStackOperations.Check If Instance Is Ready For Ssh Login Using Password    ${NETWORKS}[0]    ${NET1_VM_IPS}[1]    user=${CLOUD_IMAGE_USER}
-    ...    password=${CLOUD_IMAGE_PASS}    console=${CLOULD_IMAGE_CONSOLE}
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    300s
+    ...    60s
+    ...    OpenStackOperations.Check If Instance Is Ready For Ssh Login Using Password
+    ...    ${NETWORKS}[0]
+    ...    ${SF1_IP}
+    ...    user=${CLOUD_IMAGE_USER}
+    ...    password=${CLOUD_IMAGE_PASS}
+    ...    console=${CLOULD_IMAGE_CONSOLE}
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    300s
+    ...    60s
+    ...    OpenStackOperations.Check If Instance Is Ready For Ssh Login Using Password
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_VM_IPS}[0]
+    ...    user=${CLOUD_IMAGE_USER}
+    ...    password=${CLOUD_IMAGE_PASS}
+    ...    console=${CLOULD_IMAGE_CONSOLE}
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    300s
+    ...    60s
+    ...    OpenStackOperations.Check If Instance Is Ready For Ssh Login Using Password
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_VM_IPS}[1]
+    ...    user=${CLOUD_IMAGE_USER}
+    ...    password=${CLOUD_IMAGE_PASS}
+    ...    console=${CLOULD_IMAGE_CONSOLE}
     OpenStackOperations.Show Debugs    @{NET_1_VMS}
     OpenStackOperations.Get Suite Debugs
 
 Start Applications on VM Instances For Test
     BuiltIn.Comment    Run Web server Scripts on destination vm listening to 80,81 and 82 ports
-    ${resp}    OpenStackOperations.Execute Command on VM Instance    ${NETWORKS}[0]    ${NET1_VM_IPS}[1]    ${WEBSERVER_CMDS} && (echo done)    user=${CLOUD_IMAGE_USER}    password=${CLOUD_IMAGE_PASS}
+    ${resp}    OpenStackOperations.Execute Command on VM Instance
+    ...    ${NETWORKS}[0]
+    ...    ${NET1_VM_IPS}[1]
+    ...    ${WEBSERVER_CMDS} && (echo done)
+    ...    user=${CLOUD_IMAGE_USER}
+    ...    password=${CLOUD_IMAGE_PASS}
     ...    console=${CLOULD_IMAGE_CONSOLE}
     BuiltIn.Should Contain    ${resp}    done
 
 Start Vxlan Tool in SF
-    [Arguments]    ${network}    ${sf_vm_ip}    ${args}=${EMPTY}
     [Documentation]    Starts the tool in the SF VM's
-    OpenStackOperations.Execute Command on VM Instance    ${network}    ${sf_vm_ip}    nohup python vxlan_tool.py ${args} &    user=${CLOUD_IMAGE_USER}    password=${CLOUD_IMAGE_PASS}    console=${CLOULD_IMAGE_CONSOLE}
+    [Arguments]    ${network}    ${sf_vm_ip}    ${args}=${EMPTY}
+    OpenStackOperations.Execute Command on VM Instance
+    ...    ${network}
+    ...    ${sf_vm_ip}
+    ...    nohup python vxlan_tool.py ${args} &
+    ...    user=${CLOUD_IMAGE_USER}
+    ...    password=${CLOUD_IMAGE_PASS}
+    ...    console=${CLOULD_IMAGE_CONSOLE}
 
 Stop Vxlan Tool in SF
-    [Arguments]    ${network}    ${sf_vm_ip}
     [Documentation]    Starts the tool in the SF VM's
-    OpenStackOperations.Execute Command on VM Instance    ${network}    ${sf_vm_ip}    pkill python    user=${CLOUD_IMAGE_USER}    password=${CLOUD_IMAGE_PASS}    console=${CLOULD_IMAGE_CONSOLE}
+    [Arguments]    ${network}    ${sf_vm_ip}
+    OpenStackOperations.Execute Command on VM Instance
+    ...    ${network}
+    ...    ${sf_vm_ip}
+    ...    pkill python
+    ...    user=${CLOUD_IMAGE_USER}
+    ...    password=${CLOUD_IMAGE_PASS}
+    ...    console=${CLOULD_IMAGE_CONSOLE}
 
 Check Network Reachability
     [Arguments]    ${net_name}    ${source_vm_ip}    ${command}    ${port}    ${ret_code}    ${cmd_timeout}=30s
-    ${nc_resp}    OpenStackOperations.Execute Command on VM Instance    ${net_name}    ${source_vm_ip}    ${command} ${NET1_VM_IPS}[1] ${port}    cmd_timeout=${cmd_timeout}    user=${CLOUD_IMAGE_USER}
-    ...    password=${CLOUD_IMAGE_PASS}    console=${CLOULD_IMAGE_CONSOLE}
+    ${nc_resp}    OpenStackOperations.Execute Command on VM Instance
+    ...    ${net_name}
+    ...    ${source_vm_ip}
+    ...    ${command} ${NET1_VM_IPS}[1] ${port}
+    ...    cmd_timeout=${cmd_timeout}
+    ...    user=${CLOUD_IMAGE_USER}
+    ...    password=${CLOUD_IMAGE_PASS}
+    ...    console=${CLOULD_IMAGE_CONSOLE}
     BuiltIn.Should Contain    ${nc_resp}    ${ret_code}
index 99e46291c524c762cb304ca476ac14485ab34329..8cfcefe056fa601e0f5bba077cd35e76770c7088 100644 (file)
@@ -1,8 +1,10 @@
 *** Settings ***
-Suite Setup       Create Session    ODL    http://${ODL_SYSTEM_IP}:${PORT}    headers=${HEADERS}    auth=${AUTH}
-Suite Teardown    Delete All Sessions
-Library           RequestsLibrary
-Resource          ../../../variables/Variables.robot
+Library             RequestsLibrary
+Resource            ../../../variables/Variables.robot
+
+Suite Setup         Create Session    ODL    http://${ODL_SYSTEM_IP}:${PORT}    headers=${HEADERS}    auth=${AUTH}
+Suite Teardown      Delete All Sessions
+
 
 *** Test Cases ***
 Get the complete list of networks
index 5525ed18b36ec4159a40724b2473402f3c36bdc6..d34b040b3df5bc1b4ed6fc2b9b4cee80e846b802 100644 (file)
@@ -1,19 +1,23 @@
 *** Settings ***
-Documentation     Checking Network created in OpenStack are pushed to OpenDaylight
-Suite Setup       Create Session    OSSession    ${NEUTRONURL}    headers=${X-AUTH}
-Suite Teardown    Delete All Sessions
-Library           Collections
-Library           RequestsLibrary
-Resource          ../../../variables/Variables.robot
+Documentation       Checking Network created in OpenStack are pushed to OpenDaylight
+
+Library             Collections
+Library             RequestsLibrary
+Resource            ../../../variables/Variables.robot
+
+Suite Setup         Create Session    OSSession    ${NEUTRONURL}    headers=${X-AUTH}
+Suite Teardown      Delete All Sessions
+
 
 *** Variables ***
-${OSREST}         /v2.0/networks
-${postNet}        {"network":{"name":"odl_network","admin_state_up":true}}
+${OSREST}       /v2.0/networks
+${postNet}      {"network":{"name":"odl_network","admin_state_up":true}}
+
 
 *** Test Cases ***
 Check OpenStack Networks
     [Documentation]    Checking OpenStack Neutron for known networks
-    [Tags]    Network Neutron OpenStack
+    [Tags]    network neutron openstack
     Log    ${X-AUTH}
     ${resp}    get request    OSSession    ${OSREST}
     Should be Equal As Strings    ${resp.status_code}    200
@@ -22,7 +26,7 @@ Check OpenStack Networks
 
 Check OpenDaylight Networks
     [Documentation]    Checking OpenDaylight Neutron API for known networks
-    [Tags]    Network Neutron OpenDaylight
+    [Tags]    network neutron opendaylight
     Create Session    ODLSession    http://${ODL_SYSTEM_IP}:${PORT}    headers=${HEADERS}    auth=${AUTH}
     ${resp}    get request    ODLSession    ${NEUTRON_NETWORKS_API}
     Should be Equal As Strings    ${resp.status_code}    200
@@ -31,7 +35,7 @@ Check OpenDaylight Networks
 
 Create Network
     [Documentation]    Create new network in OpenStack
-    [Tags]    Create Network OpenStack Neutron
+    [Tags]    create network openstack neutron
     Log    ${postNet}
     ${resp}    post request    OSSession    ${OSREST}    data=${postNet}
     Should be Equal As Strings    ${resp.status_code}    201
@@ -45,6 +49,6 @@ Create Network
 
 Check Network
     [Documentation]    Check network created in OpenDaylight
-    [Tags]    Check    Network OpenDaylight
+    [Tags]    check    network opendaylight
     ${resp}    get request    ODLSession    ${NEUTRON_NETWORKS_API}/${NetID}
     Should be Equal As Strings    ${resp.status_code}    200
index f82653d635907d746636f37e76e9b01b1870cd1c..8573f88ad4d71f04894b4c797ee756c83dc433fb 100644 (file)
@@ -1,19 +1,24 @@
 *** Settings ***
-Documentation     Checking Subnets created in OpenStack are pushed to OpenDaylight
-Suite Setup       Create Session    OSSession    ${NEUTRONURL}    headers=${X-AUTH}
-Suite Teardown    Delete All Sessions
-Library           Collections
-Library           RequestsLibrary
-Resource          ../../../variables/Variables.robot
+Documentation       Checking Subnets created in OpenStack are pushed to OpenDaylight
+
+Library             Collections
+Library             RequestsLibrary
+Resource            ../../../variables/Variables.robot
+
+Suite Setup         Create Session    OSSession    ${NEUTRONURL}    headers=${X-AUTH}
+Suite Teardown      Delete All Sessions
+
 
 *** Variables ***
-${OSREST}         /v2.0/subnets
-${data}           {"subnet":{"network_id":"${NETID}","ip_version":4,"cidr":"172.16.64.0/24","allocation_pools":[{"start":"172.16.64.20","end":"172.16.64.120"}]}}
+${OSREST}       /v2.0/subnets
+${data}
+...             {"subnet":{"network_id":"${NETID}","ip_version":4,"cidr":"172.16.64.0/24","allocation_pools":[{"start":"172.16.64.20","end":"172.16.64.120"}]}}
+
 
 *** Test Cases ***
 Check OpenStack Subnets
     [Documentation]    Checking OpenStack Neutron for known subnets
-    [Tags]    Subnets Neutron OpenStack
+    [Tags]    subnets neutron openstack
     Log    ${X-AUTH}
     ${resp}    get request    OSSession    ${OSREST}
     Should be Equal As Strings    ${resp.status_code}    200
@@ -22,7 +27,7 @@ Check OpenStack Subnets
 
 Check OpenDaylight subnets
     [Documentation]    Checking OpenDaylight Neutron API for known subnets
-    [Tags]    Subnets Neutron OpenDaylight
+    [Tags]    subnets neutron opendaylight
     Create Session    ODLSession    http://${ODL_SYSTEM_IP}:${PORT}    headers=${HEADERS}    auth=${AUTH}
     ${resp}    get request    ODLSession    ${NEUTRON_SUBNETS_API}
     Should be Equal As Strings    ${resp.status_code}    200
@@ -31,7 +36,7 @@ Check OpenDaylight subnets
 
 Create New subnet
     [Documentation]    Create new subnet in OpenStack
-    [Tags]    Create Subnet OpenStack Neutron
+    [Tags]    create subnet openstack neutron
     Log    ${data}
     ${resp}    post request    OSSession    ${OSREST}    data=${data}
     Should be Equal As Strings    ${resp.status_code}    201
@@ -45,6 +50,6 @@ Create New subnet
 
 Check New subnet
     [Documentation]    Check new subnet created in OpenDaylight
-    [Tags]    Check    subnet OpenDaylight
+    [Tags]    check    subnet opendaylight
     ${resp}    get request    ODLSession    ${NEUTRON_SUBNETS_API}/${SUBNETID}
     Should be Equal As Strings    ${resp.status_code}    200
index 83db6eb9b21ab170004e190571fc5e3284aa4122..8638ede1551c1514a20b2f65e6a7ebd8577226a9 100644 (file)
@@ -1,19 +1,23 @@
 *** Settings ***
-Documentation     Checking Port created in OpenStack are pushed to OpenDaylight
-Suite Setup       Create Session    OSSession    ${NEUTRONURL}    headers=${X-AUTH}
-Suite Teardown    Delete All Sessions
-Library           Collections
-Library           RequestsLibrary
-Resource          ../../../variables/Variables.robot
+Documentation       Checking Port created in OpenStack are pushed to OpenDaylight
+
+Library             Collections
+Library             RequestsLibrary
+Resource            ../../../variables/Variables.robot
+
+Suite Setup         Create Session    OSSession    ${NEUTRONURL}    headers=${X-AUTH}
+Suite Teardown      Delete All Sessions
+
 
 *** Variables ***
-${OSREST}         /v2.0/ports
-${data}           {"port":{"network_id":"${NETID}","admin_state_up": true}}
+${OSREST}       /v2.0/ports
+${data}         {"port":{"network_id":"${NETID}","admin_state_up": true}}
+
 
 *** Test Cases ***
 Check OpenStack ports
     [Documentation]    Checking OpenStack Neutron for known ports
-    [Tags]    Ports Neutron OpenStack
+    [Tags]    ports neutron openstack
     Log    ${X-AUTH}
     ${resp}    get request    OSSession    ${OSREST}
     Should be Equal As Strings    ${resp.status_code}    200
@@ -22,7 +26,7 @@ Check OpenStack ports
 
 Check OpenDaylight ports
     [Documentation]    Checking OpenDaylight Neutron API for known ports
-    [Tags]    Ports Neutron OpenDaylight
+    [Tags]    ports neutron opendaylight
     Create Session    ODLSession    http://${ODL_SYSTEM_IP}:${PORT}    headers=${HEADERS}    auth=${AUTH}
     ${resp}    get request    ODLSession    ${NEUTRON_PORTS_API}
     Should be Equal As Strings    ${resp.status_code}    200
@@ -31,7 +35,7 @@ Check OpenDaylight ports
 
 Create New Port
     [Documentation]    Create new port in OpenStack
-    [Tags]    Create port OpenStack Neutron
+    [Tags]    create port openstack neutron
     Log    ${data}
     ${resp}    post request    OSSession    ${OSREST}    data=${data}
     Should be Equal As Strings    ${resp.status_code}    201
@@ -45,6 +49,6 @@ Create New Port
 
 Check New Port
     [Documentation]    Check new port created in OpenDaylight
-    [Tags]    Check port OpenDaylight
+    [Tags]    check port opendaylight
     ${resp}    get request    ODLSession    ${NEUTRON_PORTS_API}/${PORTID}
     Should be Equal As Strings    ${resp.status_code}    200
index a6b67668ff63e62cc5d4171f05f33fb6dc4aa485..3f812f8a2000b49978a88255d7f932210cd0c8cf 100644 (file)
@@ -1,18 +1,22 @@
 *** Settings ***
-Documentation     Checking Port deleted in OpenStack are deleted also in OpenDaylight
-Suite Setup       Start Suite
-Suite Teardown    Delete All Sessions
-Library           RequestsLibrary
-Resource          ../../../variables/Variables.robot
+Documentation       Checking Port deleted in OpenStack are deleted also in OpenDaylight
+
+Library             RequestsLibrary
+Resource            ../../../variables/Variables.robot
+
+Suite Setup         Start Suite
+Suite Teardown      Delete All Sessions
+
 
 *** Variables ***
-${OSREST}         /v2.0/ports/${PORTID}
-${data}           {"port":{"network_id":"${NETID}","admin_state_up": true}}
+${OSREST}       /v2.0/ports/${PORTID}
+${data}         {"port":{"network_id":"${NETID}","admin_state_up": true}}
+
 
 *** Test Cases ***
 Delete New Port
     [Documentation]    Delete previously created port in OpenStack
-    [Tags]    Delete port OpenStack Neutron
+    [Tags]    delete port openstack neutron
     Log    ${data}
     ${resp}    delete request    OSSession    ${OSREST}
     Should be Equal As Strings    ${resp.status_code}    204
@@ -21,7 +25,7 @@ Delete New Port
 
 Check Port Deleted
     [Documentation]    Check port deleted in OpenDaylight
-    [Tags]    Check port deleted OpenDaylight
+    [Tags]    check port deleted opendaylight
     ${resp}    get request    ODLSession    ${NEUTRON_PORTS_API}
     Should be Equal As Strings    ${resp.status_code}    200
     ${ODLResult}    To Json    ${resp.text}
@@ -29,6 +33,7 @@ Check Port Deleted
     ${resp}    get request    ODLSession    ${NEUTRON_PORTS_API}/${PORTID}
     Should be Equal As Strings    ${resp.status_code}    404
 
+
 *** Keywords ***
 Check Port Exists
     [Arguments]    ${portid}
index cbeacdf2c135d438ee0a98c7c0ea4c270eec8e11..dad6a85245d1ed9f1d09dfb7628d0423d03bef78 100644 (file)
@@ -1,18 +1,23 @@
 *** Settings ***
-Documentation     Checking Subnets deleted in OpenStack are deleted also in OpenDaylight
-Suite Setup       Start Suite
-Suite Teardown    Delete All Sessions
-Library           RequestsLibrary
-Resource          ../../../variables/Variables.robot
+Documentation       Checking Subnets deleted in OpenStack are deleted also in OpenDaylight
+
+Library             RequestsLibrary
+Resource            ../../../variables/Variables.robot
+
+Suite Setup         Start Suite
+Suite Teardown      Delete All Sessions
+
 
 *** Variables ***
-${OSREST}         /v2.0/subnets/${SUBNETID}
-${data}           {"subnet":{"network_id":"${NETID}","ip_version":4,"cidr":"172.16.64.0/24","allocation_pools":[{"start":"172.16.64.20","end":"172.16.64.120"}]}}
+${OSREST}       /v2.0/subnets/${SUBNETID}
+${data}
+...             {"subnet":{"network_id":"${NETID}","ip_version":4,"cidr":"172.16.64.0/24","allocation_pools":[{"start":"172.16.64.20","end":"172.16.64.120"}]}}
+
 
 *** Test Cases ***
 Delete New subnet
     [Documentation]    Delete previously created subnet in OpenStack
-    [Tags]    Delete Subnet OpenStack Neutron
+    [Tags]    delete subnet openstack neutron
     Log    ${data}
     ${resp}    delete request    OSSession    ${OSREST}
     Should be Equal As Strings    ${resp.status_code}    204
@@ -21,7 +26,7 @@ Delete New subnet
 
 Check New subnet deleted
     [Documentation]    Check subnet deleted in OpenDaylight
-    [Tags]    Check subnet deleted OpenDaylight
+    [Tags]    check subnet deleted opendaylight
     ${resp}    get request    ODLSession    ${NEUTRON_SUBNETS_API}
     Should be Equal As Strings    ${resp.status_code}    200
     ${ODLResult}    To Json    ${resp.text}
@@ -29,6 +34,7 @@ Check New subnet deleted
     ${resp}    get request    ODLSession    ${NEUTRON_SUBNETS_API}/${SUBNETID}
     Should be Equal As Strings    ${resp.status_code}    404
 
+
 *** Keywords ***
 Check Subnet Exists
     [Arguments]    ${subnetid}
index 179d89df8a493b870a57bb06e3dc87b83fd22b98..0a59865f225f5110b7e676c9631e497aa1ea67a0 100644 (file)
@@ -1,18 +1,22 @@
 *** Settings ***
-Documentation     Checking Network deleted in OpenStack are deleted also in OpenDaylight
-Suite Setup       Start Suite
-Suite Teardown    Delete All Sessions
-Library           RequestsLibrary
-Resource          ../../../variables/Variables.robot
+Documentation       Checking Network deleted in OpenStack are deleted also in OpenDaylight
+
+Library             RequestsLibrary
+Resource            ../../../variables/Variables.robot
+
+Suite Setup         Start Suite
+Suite Teardown      Delete All Sessions
+
 
 *** Variables ***
-${OSREST}         /v2.0/networks/${NETID}
-${postNet}        {"network":{"name":"odl_network","admin_state_up":true}}
+${OSREST}       /v2.0/networks/${NETID}
+${postNet}      {"network":{"name":"odl_network","admin_state_up":true}}
+
 
 *** Test Cases ***
 Delete Network
     [Documentation]    Delete network in OpenStack
-    [Tags]    Delete Network OpenStack Neutron
+    [Tags]    delete network openstack neutron
     Log    ${postNet}
     ${resp}    delete request    OSSession    ${OSREST}
     Should be Equal As Strings    ${resp.status_code}    204
@@ -21,7 +25,7 @@ Delete Network
 
 Check Network deleted
     [Documentation]    Check network deleted in OpenDaylight
-    [Tags]    Check Network OpenDaylight
+    [Tags]    check network opendaylight
     ${resp}    get request    ODLSession    ${NEUTRON_NETWORKS_API}
     Should be Equal As Strings    ${resp.status_code}    200
     ${ODLResult}    To Json    ${resp.text}
@@ -29,6 +33,7 @@ Check Network deleted
     ${resp}    get request    ODLSession    ${NEUTRON_NETWORKS_API}/${NETID}
     Should be Equal As Strings    ${resp.status_code}    404
 
+
 *** Keywords ***
 Check Network Exists
     [Arguments]    ${netid}
index 212d17c97efa39e7a3fd34d291b6013f0109c0af..a9aaee670f921dd71219addc3d68279026cadda0 100644 (file)
@@ -1,23 +1,28 @@
 *** Settings ***
-Documentation     Test suite for Neutron Plugin
-Suite Setup       Start Suite
-Suite Teardown    Stop Suite
-Library           SSHLibrary
-Library           Collections
-Library           RequestsLibrary
-Library           ../../../libraries/Common.py
-Resource          ../../../variables/Variables.robot
+Documentation       Test suite for Neutron Plugin
+
+Library             SSHLibrary
+Library             Collections
+Library             RequestsLibrary
+Library             ../../../libraries/Common.py
+Resource            ../../../variables/Variables.robot
+
+Suite Setup         Start Suite
+Suite Teardown      Stop Suite
+
 
 *** Variables ***
-${OSTENANTNAME}    "admin"
-${OSUSERNAME}     "admin"
-${OSPASSWORD}     "admin"
-${OSUSERDOMAINNAME}    "Default"
-${OSPROJECTDOMAINNAME}    "Default"
-${PASSWORD}       {"user":{"name":${OSUSERNAME},"domain":{"name": ${OSUSERDOMAINNAME}},"password":${OSPASSWORD}}}
-${SCOPE}          {"project":{"name":${OSTENANTNAME},"domain":{"name": ${OSPROJECTDOMAINNAME}}}}
-${UserInfo}       {"auth":{"identity":{"methods":["password"],"password":${PASSWORD}},"scope":${SCOPE}}}
-${KEYSTONEURL}    http://${KEYSTONE}:5000
+${OSTENANTNAME}             "admin"
+${OSUSERNAME}               "admin"
+${OSPASSWORD}               "admin"
+${OSUSERDOMAINNAME}         "Default"
+${OSPROJECTDOMAINNAME}      "Default"
+${PASSWORD}
+...                         {"user":{"name":${OSUSERNAME},"domain":{"name": ${OSUSERDOMAINNAME}},"password":${OSPASSWORD}}}
+${SCOPE}                    {"project":{"name":${OSTENANTNAME},"domain":{"name": ${OSPROJECTDOMAINNAME}}}}
+${UserInfo}                 {"auth":{"identity":{"methods":["password"],"password":${PASSWORD}},"scope":${SCOPE}}}
+${KEYSTONEURL}              http://${KEYSTONE}:5000
+
 
 *** Keywords ***
 Start Suite
index cd90ab20abcebb2e09a407b49e2706e0b907f314..4681ce5aed132cbb6382168c1f431309b97d92db 100644 (file)
@@ -1,64 +1,99 @@
 *** Settings ***
-Documentation     Test suite to validate ARP functionality for ACL_Enhancement feature.
-Suite Setup       Start Suite
-Suite Teardown    OpenStackOperations.OpenStack Suite Teardown
-Test Setup        SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
-Test Teardown     OpenStackOperations.Get Test Teardown Debugs
-Library           OperatingSystem
-Library           RequestsLibrary
-Library           String
-Resource          ../../../libraries/DevstackUtils.robot
-Resource          ../../../libraries/KarafKeywords.robot
-Resource          ../../../libraries/OVSDB.robot
-Resource          ../../../libraries/OpenStackOperations.robot
-Resource          ../../../libraries/OvsManager.robot
-Resource          ../../../libraries/SetupUtils.robot
-Resource          ../../../libraries/Utils.robot
-Resource          ../../../variables/Variables.robot
-Resource          ../../../variables/netvirt/Variables.robot
+Documentation       Test suite to validate ARP functionality for ACL_Enhancement feature.
+
+Library             OperatingSystem
+Library             RequestsLibrary
+Library             String
+Resource            ../../../libraries/DevstackUtils.robot
+Resource            ../../../libraries/KarafKeywords.robot
+Resource            ../../../libraries/OVSDB.robot
+Resource            ../../../libraries/OpenStackOperations.robot
+Resource            ../../../libraries/OvsManager.robot
+Resource            ../../../libraries/SetupUtils.robot
+Resource            ../../../libraries/Utils.robot
+Resource            ../../../variables/Variables.robot
+Resource            ../../../variables/netvirt/Variables.robot
+
+Suite Setup         Start Suite
+Suite Teardown      OpenStackOperations.OpenStack Suite Teardown
+Test Setup          SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
+Test Teardown       OpenStackOperations.Get Test Teardown Debugs
+
 
 *** Variables ***
-@{REQ_NETWORKS}    acl_net_1    acl_net_2
-@{REQ_SUBNETS}    acl_subnet_1    acl_subnet_2
-@{REQ_SUBNET_CIDR}    30.30.30.0/24    40.40.40.0/24
-@{PORTS}          acl_port_1    acl_port_2    acl_port_3    acl_port_4
-@{VM_NAMES}       acl_myvm_1    acl_myvm_2
-@{SECURITY_GROUP}    acl_sg_1
-${VIRTUAL_IP}     30.30.30.100/24
-${PACKET_COUNT}    5
-${RANDOM_IP}      11.11.11.11
-${NETMASK}        255.255.255.0
-${PACKET_COUNT_ZERO}    0
-${DHCP_CMD}       sudo /sbin/cirros-dhcpc up eth1
-${SPOOF_IP}       30.30.30.100
-@{SPOOF_MAC_ADDRESSES}    FA:17:3E:73:65:86    fa:16:3e:3d:3b:5e
-${ARP_CONFIG}     sudo ifconfig eth0 down \n sudo ifconfig eth0 hw ether ${SPOOF_MAC_ADDRESSES[0]} \n sudo ifconfig eth0 up
-${ARP_SHA}        arp_sha
-${ARP}            arp
-${TABLE}          goto_table:217
+@{REQ_NETWORKS}             acl_net_1    acl_net_2
+@{REQ_SUBNETS}              acl_subnet_1    acl_subnet_2
+@{REQ_SUBNET_CIDR}          30.30.30.0/24    40.40.40.0/24
+@{PORTS}                    acl_port_1    acl_port_2    acl_port_3    acl_port_4
+@{VM_NAMES}                 acl_myvm_1    acl_myvm_2
+@{SECURITY_GROUP}           acl_sg_1
+${VIRTUAL_IP}               30.30.30.100/24
+${PACKET_COUNT}             5
+${RANDOM_IP}                11.11.11.11
+${NETMASK}                  255.255.255.0
+${PACKET_COUNT_ZERO}        0
+${DHCP_CMD}                 sudo /sbin/cirros-dhcpc up eth1
+${SPOOF_IP}                 30.30.30.100
+@{SPOOF_MAC_ADDRESSES}      FA:17:3E:73:65:86    fa:16:3e:3d:3b:5e
+${ARP_CONFIG}
+...                         sudo ifconfig eth0 down \n sudo ifconfig eth0 hw ether ${SPOOF_MAC_ADDRESSES[0]} \n sudo ifconfig eth0 up
+${ARP_SHA}                  arp_sha
+${ARP}                      arp
+${TABLE}                    goto_table:217
+
 
 *** Test Cases ***
 Verify ARP request Valid MAC and Valid IP for the VM Egress Table
     [Documentation]    Verifying ARP resquest resolved for Valid MAC and Valid IP at the VM Egress Table
     OpenStackOperations.Execute Command on VM Instance    ${REQ_NETWORKS}[0]    ${VM_IP_DPN1}[0]    ${DHCP_CMD}
     OpenStackOperations.Execute Command on VM Instance    ${REQ_NETWORKS}[0]    ${VM_IP_DPN2}[0]    ${DHCP_CMD}
-    ${get_pkt_count_before_arp} =    OvsManager.Get Packet Count From Table    ${OS_CMP1_IP}    ${INTEGRATION_BRIDGE}    table=${DEFAULT_FLOW_TABLES}[15]    | grep ${VM1_METADATA}.*${ARP_SHA}
+    ${get_pkt_count_before_arp} =    OvsManager.Get Packet Count From Table
+    ...    ${OS_CMP1_IP}
+    ...    ${INTEGRATION_BRIDGE}
+    ...    table=${DEFAULT_FLOW_TABLES}[15]
+    ...    | grep ${VM1_METADATA}.*${ARP_SHA}
     ${arping_cli} =    BuiltIn.Set Variable    sudo arping -I eth0 -c ${PACKET_COUNT} \ ${RANDOM_IP}
     OpenStackOperations.Execute Command on VM Instance    ${REQ_NETWORKS[1]}    ${VM_IP_DPN1}[1]    ${arping_cli}
-    ${get_pkt_count_after_arp} =    OvsManager.Get Packet Count From Table    ${OS_CMP1_IP}    ${INTEGRATION_BRIDGE}    table=${DEFAULT_FLOW_TABLES}[15]    | grep ${VM1_METADATA}.*${ARP_SHA}
+    ${get_pkt_count_after_arp} =    OvsManager.Get Packet Count From Table
+    ...    ${OS_CMP1_IP}
+    ...    ${INTEGRATION_BRIDGE}
+    ...    table=${DEFAULT_FLOW_TABLES}[15]
+    ...    | grep ${VM1_METADATA}.*${ARP_SHA}
     ${pkt_diff} =    BuiltIn.Evaluate    int(${get_pkt_count_after_arp})-int(${get_pkt_count_before_arp})
     BuiltIn.Should Be Equal As Numbers    ${pkt_diff}    ${PACKET_COUNT}
 
 Verify ARP request generated from Spoofed IP for the VM
     [Documentation]    Verifying ARP resquest generated for Spoofed IP with Valid MAC and Validate the packet drop at the VM Egress Table
     ${arp_int_up_cli} =    BuiltIn.Set Variable    sudo ifconfig eth0:1 ${SPOOF_IP} netmask ${NETMASK} up
-    ${output} =    OpenStackOperations.Execute Command on VM Instance    ${REQ_NETWORKS}[1]    ${VM_IP_DPN1}[1]    ${arp_int_up_cli}
-    ${get_pkt_count_before_arp} =    OvsManager.Get Packet Count From Table    ${OS_CMP1_IP}    ${INTEGRATION_BRIDGE}    table=${DEFAULT_FLOW_TABLES}[15]    | grep ${VM1_METADATA}.*${ARP_SHA}
-    ${get_arp_drop_pkt_before} =    OvsManager.Get Packet Count From Table    ${OS_CMP1_IP}    ${INTEGRATION_BRIDGE}    table=${DEFAULT_FLOW_TABLES}[15]    | grep ${ARP}.*${TABLE}
+    ${output} =    OpenStackOperations.Execute Command on VM Instance
+    ...    ${REQ_NETWORKS}[1]
+    ...    ${VM_IP_DPN1}[1]
+    ...    ${arp_int_up_cli}
+    ${get_pkt_count_before_arp} =    OvsManager.Get Packet Count From Table
+    ...    ${OS_CMP1_IP}
+    ...    ${INTEGRATION_BRIDGE}
+    ...    table=${DEFAULT_FLOW_TABLES}[15]
+    ...    | grep ${VM1_METADATA}.*${ARP_SHA}
+    ${get_arp_drop_pkt_before} =    OvsManager.Get Packet Count From Table
+    ...    ${OS_CMP1_IP}
+    ...    ${INTEGRATION_BRIDGE}
+    ...    table=${DEFAULT_FLOW_TABLES}[15]
+    ...    | grep ${ARP}.*${TABLE}
     ${arping_cli} =    BuiltIn.Set Variable    sudo arping -s ${SPOOF_IP} -c ${PACKET_COUNT} \ ${RANDOM_IP}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance    ${REQ_NETWORKS}[1]    ${VM_IP_DPN1}[1]    ${arping_cli}
-    ${get_pkt_count_after_arp} =    OvsManager.Get Packet Count From Table    ${OS_CMP1_IP}    ${INTEGRATION_BRIDGE}    table=${DEFAULT_FLOW_TABLES}[15]    | grep ${VM1_METADATA}.*${ARP_SHA}
-    ${get_arp_drop_pkt_after}    OvsManager.Get Packet Count From Table    ${OS_CMP1_IP}    ${INTEGRATION_BRIDGE}    table=${DEFAULT_FLOW_TABLES}[15]    | grep ${ARP}.*${TABLE}
+    ${output} =    OpenStackOperations.Execute Command on VM Instance
+    ...    ${REQ_NETWORKS}[1]
+    ...    ${VM_IP_DPN1}[1]
+    ...    ${arping_cli}
+    ${get_pkt_count_after_arp} =    OvsManager.Get Packet Count From Table
+    ...    ${OS_CMP1_IP}
+    ...    ${INTEGRATION_BRIDGE}
+    ...    table=${DEFAULT_FLOW_TABLES}[15]
+    ...    | grep ${VM1_METADATA}.*${ARP_SHA}
+    ${get_arp_drop_pkt_after} =    OvsManager.Get Packet Count From Table
+    ...    ${OS_CMP1_IP}
+    ...    ${INTEGRATION_BRIDGE}
+    ...    table=${DEFAULT_FLOW_TABLES}[15]
+    ...    | grep ${ARP}.*${TABLE}
     ${pkt_diff_arp_drop} =    BuiltIn.Evaluate    int(${get_arp_drop_pkt_after})-int(${get_arp_drop_pkt_before})
     ${pkt_diff} =    BuiltIn.Evaluate    int(${get_pkt_count_after_arp})-int(${get_pkt_count_before_arp})
     BuiltIn.Should Be Equal As Numbers    ${pkt_diff}    ${PACKET_COUNT_ZERO}
@@ -69,14 +104,33 @@ Verify ARP request generated from Spoofed MAC for the VM
     ${count} =    String.Get Line Count    ${ARP_CONFIG}
     FOR    ${index}    IN RANGE    0    ${count}
         ${cmd} =    String.Get Line    ${ARP_CONFIG}    ${index}
-        ${output} =    OpenStackOperations.Execute Command on VM Instance    ${REQ_NETWORKS}[1]    ${VM_IP_DPN1}[1]    ${cmd}
+        ${output} =    OpenStackOperations.Execute Command on VM Instance
+        ...    ${REQ_NETWORKS}[1]
+        ...    ${VM_IP_DPN1}[1]
+        ...    ${cmd}
     END
-    ${get_pkt_count_before_arp} =    OvsManager.Get Packet Count From Table    ${OS_CMP1_IP}    ${INTEGRATION_BRIDGE}    table=${DEFAULT_FLOW_TABLES}[15]    | grep ${VM1_METADATA}.*${ARP_SHA}
-    ${get_arp_drop_pkt_before} =    OvsManager.Get Packet Count From Table    ${OS_CMP1_IP}    ${INTEGRATION_BRIDGE}    table=${DEFAULT_FLOW_TABLES}[15]    | grep ${ARP}.*${TABLE}
+    ${get_pkt_count_before_arp} =    OvsManager.Get Packet Count From Table
+    ...    ${OS_CMP1_IP}
+    ...    ${INTEGRATION_BRIDGE}
+    ...    table=${DEFAULT_FLOW_TABLES}[15]
+    ...    | grep ${VM1_METADATA}.*${ARP_SHA}
+    ${get_arp_drop_pkt_before} =    OvsManager.Get Packet Count From Table
+    ...    ${OS_CMP1_IP}
+    ...    ${INTEGRATION_BRIDGE}
+    ...    table=${DEFAULT_FLOW_TABLES}[15]
+    ...    | grep ${ARP}.*${TABLE}
     ${arping_cli} =    BuiltIn.Set Variable    sudo arping -I eth0 -c ${PACKET_COUNT} \ ${RANDOM_IP}
     OpenStackOperations.Execute Command on VM Instance    ${REQ_NETWORKS}[1]    ${VM_IP_DPN1}[1]    ${arping_cli}
-    ${get_pkt_count_after_arp} =    OvsManager.Get Packet Count From Table    ${OS_CMP1_IP}    ${INTEGRATION_BRIDGE}    table=${DEFAULT_FLOW_TABLES}[15]    | grep ${VM1_METADATA}.*${ARP_SHA}
-    ${get_arp_drop_pkt_after}    OvsManager.Get Packet Count From Table    ${OS_CMP1_IP}    ${INTEGRATION_BRIDGE}    table=${DEFAULT_FLOW_TABLES}[15]    | grep ${ARP}.*${TABLE}
+    ${get_pkt_count_after_arp} =    OvsManager.Get Packet Count From Table
+    ...    ${OS_CMP1_IP}
+    ...    ${INTEGRATION_BRIDGE}
+    ...    table=${DEFAULT_FLOW_TABLES}[15]
+    ...    | grep ${VM1_METADATA}.*${ARP_SHA}
+    ${get_arp_drop_pkt_after} =    OvsManager.Get Packet Count From Table
+    ...    ${OS_CMP1_IP}
+    ...    ${INTEGRATION_BRIDGE}
+    ...    table=${DEFAULT_FLOW_TABLES}[15]
+    ...    | grep ${ARP}.*${TABLE}
     ${pkt_diff} =    BuiltIn.Evaluate    int(${get_pkt_count_after_arp})-int(${get_pkt_count_before_arp})
     ${pkt_diff_arp_drop} =    BuiltIn.Evaluate    int(${get_arp_drop_pkt_after})-int(${get_arp_drop_pkt_before})
     BuiltIn.Should Be Equal As Numbers    ${pkt_diff}    ${PACKET_COUNT_ZERO}
@@ -84,17 +138,34 @@ Verify ARP request generated from Spoofed MAC for the VM
 
 Verify ARP request generated from Spoofed IP and spoofed MAC for the VM
     [Documentation]    Verifying ARP resquest generated for Spoofed MAC with Spoofed IP and Validate the ARP packet drop at the VM Egress Table
-    ${get_pkt_count_before_arp} =    OvsManager.Get Packet Count From Table    ${OS_CMP1_IP}    ${INTEGRATION_BRIDGE}    table=${DEFAULT_FLOW_TABLES}[15]    | grep ${VM1_METADATA}.*${ARP_SHA}
-    ${get_arp_drop_pkt_before} =    OvsManager.Get Packet Count From Table    ${OS_CMP1_IP}    ${INTEGRATION_BRIDGE}    table=${DEFAULT_FLOW_TABLES}[15]    | grep ${ARP}.*${TABLE}
+    ${get_pkt_count_before_arp} =    OvsManager.Get Packet Count From Table
+    ...    ${OS_CMP1_IP}
+    ...    ${INTEGRATION_BRIDGE}
+    ...    table=${DEFAULT_FLOW_TABLES}[15]
+    ...    | grep ${VM1_METADATA}.*${ARP_SHA}
+    ${get_arp_drop_pkt_before} =    OvsManager.Get Packet Count From Table
+    ...    ${OS_CMP1_IP}
+    ...    ${INTEGRATION_BRIDGE}
+    ...    table=${DEFAULT_FLOW_TABLES}[15]
+    ...    | grep ${ARP}.*${TABLE}
     ${arping_cli} =    BuiltIn.Set Variable    sudo arping -s ${SPOOF_IP} -c ${PACKET_COUNT} \ ${RANDOM_IP}
     OpenStackOperations.Execute Command on VM Instance    ${REQ_NETWORKS}[1]    ${VM_IP_DPN1}[1]    ${arping_cli}
-    ${get_pkt_count_after_arp} =    OvsManager.Get Packet Count From Table    ${OS_CMP1_IP}    ${INTEGRATION_BRIDGE}    table=${DEFAULT_FLOW_TABLES}[15]    | grep ${VM1_METADATA}.*${ARP_SHA}
-    ${get_arp_drop_pkt_after} =    OvsManager.Get Packet Count From Table    ${OS_CMP1_IP}    ${INTEGRATION_BRIDGE}    table=${DEFAULT_FLOW_TABLES}[15]    | grep ${ARP}.*${TABLE}
+    ${get_pkt_count_after_arp} =    OvsManager.Get Packet Count From Table
+    ...    ${OS_CMP1_IP}
+    ...    ${INTEGRATION_BRIDGE}
+    ...    table=${DEFAULT_FLOW_TABLES}[15]
+    ...    | grep ${VM1_METADATA}.*${ARP_SHA}
+    ${get_arp_drop_pkt_after} =    OvsManager.Get Packet Count From Table
+    ...    ${OS_CMP1_IP}
+    ...    ${INTEGRATION_BRIDGE}
+    ...    table=${DEFAULT_FLOW_TABLES}[15]
+    ...    | grep ${ARP}.*${TABLE}
     ${pkt_diff} =    BuiltIn.Evaluate    int(${get_pkt_count_after_arp})-int(${get_pkt_count_before_arp})
     ${pkt_diff_arp_drop} =    BuiltIn.Evaluate    int(${get_arp_drop_pkt_after})-int(${get_arp_drop_pkt_before})
     BuiltIn.Should Be Equal As Numbers    ${pkt_diff}    ${PACKET_COUNT_ZERO}
     BuiltIn.Should Be Equal As Numbers    ${pkt_diff_arp_drop}    ${PACKET_COUNT}
 
+
 *** Keywords ***
 Start Suite
     [Documentation]    Suite setup for ACL_Enhancement feature
@@ -111,17 +182,59 @@ Create Setup
     OpenStackOperations.Create Port    ${REQ_NETWORKS}[1]    ${PORTS}[1]    sg=${SECURITY_GROUP}[0]
     OpenStackOperations.Create Port    ${REQ_NETWORKS}[0]    ${PORTS}[2]    sg=${SECURITY_GROUP}[0]
     OpenStackOperations.Create Port    ${REQ_NETWORKS}[1]    ${PORTS}[3]    sg=${SECURITY_GROUP}[0]
-    OpenStackOperations.Neutron Security Group Rule Create    ${SECURITY_GROUP}[0]    direction=ingress    protocol=icmp    remote_ip=0.0.0.0/0
-    OpenStackOperations.Neutron Security Group Rule Create    ${SECURITY_GROUP}[0]    direction=egress    protocol=icmp    remote_ip=0.0.0.0/0
-    OpenStackOperations.Neutron Security Group Rule Create    ${SECURITY_GROUP}[0]    direction=ingress    port_range_max=65535    port_range_min=1    protocol=tcp    remote-ip=0.0.0.0/0
-    OpenStackOperations.Neutron Security Group Rule Create    ${SECURITY_GROUP}[0]    direction=egress    port_range_max=65535    port_range_min=1    protocol=tcp    remote-ip=0.0.0.0/0
-    OpenStackOperations.Create Vm Instance With Ports On Compute Node    ${PORTS}[0]    ${PORTS}[1]    ${VM_NAMES}[0]    ${OS_CMP1_HOSTNAME}    flavor=m1.tiny    sg=${SECURITY_GROUP}[0]
-    OpenStackOperations.Create Vm Instance With Ports On Compute Node    ${PORTS}[2]    ${PORTS}[3]    ${VM_NAMES}[1]    ${OS_CMP2_HOSTNAME}    flavor=m1.tiny    sg=${SECURITY_GROUP}[0]
+    OpenStackOperations.Neutron Security Group Rule Create
+    ...    ${SECURITY_GROUP}[0]
+    ...    direction=ingress
+    ...    protocol=icmp
+    ...    remote_ip=0.0.0.0/0
+    OpenStackOperations.Neutron Security Group Rule Create
+    ...    ${SECURITY_GROUP}[0]
+    ...    direction=egress
+    ...    protocol=icmp
+    ...    remote_ip=0.0.0.0/0
+    OpenStackOperations.Neutron Security Group Rule Create
+    ...    ${SECURITY_GROUP}[0]
+    ...    direction=ingress
+    ...    port_range_max=65535
+    ...    port_range_min=1
+    ...    protocol=tcp
+    ...    remote-ip=0.0.0.0/0
+    OpenStackOperations.Neutron Security Group Rule Create
+    ...    ${SECURITY_GROUP}[0]
+    ...    direction=egress
+    ...    port_range_max=65535
+    ...    port_range_min=1
+    ...    protocol=tcp
+    ...    remote-ip=0.0.0.0/0
+    OpenStackOperations.Create Vm Instance With Ports On Compute Node
+    ...    ${PORTS}[0]
+    ...    ${PORTS}[1]
+    ...    ${VM_NAMES}[0]
+    ...    ${OS_CMP1_HOSTNAME}
+    ...    flavor=m1.tiny
+    ...    sg=${SECURITY_GROUP}[0]
+    OpenStackOperations.Create Vm Instance With Ports On Compute Node
+    ...    ${PORTS}[2]
+    ...    ${PORTS}[3]
+    ...    ${VM_NAMES}[1]
+    ...    ${OS_CMP2_HOSTNAME}
+    ...    flavor=m1.tiny
+    ...    sg=${SECURITY_GROUP}[0]
     FOR    ${vm}    IN    @{VM_NAMES}
         OpenStackOperations.Poll VM Is ACTIVE    ${vm}
     END
-    ${VM_IP_DPN1} =    BuiltIn.Wait Until Keyword Succeeds    300 sec    15 sec    OpenStackOperations.Get All VM IP Addresses    ${OS_CMP1_CONN_ID}    ${VM_NAMES}[0]
-    ${VM_IP_DPN2} =    BuiltIn.Wait Until Keyword Succeeds    300 sec    15 sec    OpenStackOperations.Get All VM IP Addresses    ${OS_CMP2_CONN_ID}    ${VM_NAMES}[1]
+    ${VM_IP_DPN1} =    BuiltIn.Wait Until Keyword Succeeds
+    ...    300 sec
+    ...    15 sec
+    ...    OpenStackOperations.Get All VM IP Addresses
+    ...    ${OS_CMP1_CONN_ID}
+    ...    ${VM_NAMES}[0]
+    ${VM_IP_DPN2} =    BuiltIn.Wait Until Keyword Succeeds
+    ...    300 sec
+    ...    15 sec
+    ...    OpenStackOperations.Get All VM IP Addresses
+    ...    ${OS_CMP2_CONN_ID}
+    ...    ${VM_NAMES}[1]
     BuiltIn.Set Suite Variable    @{VM_IP_DPN1}
     BuiltIn.Set Suite Variable    @{VM_IP_DPN2}
     FOR    ${ip}    IN    @{VM_IP_DPN1}
index c6fa94f4a85c4d3a0602c348a58ee99ff21ca280..9fe26cfe0a9a196c7af8904d559b4dce99e64506 100644 (file)
@@ -1,51 +1,67 @@
 *** Settings ***
-Documentation     Test Suite for Neutron Security Group
-Suite Setup       OpenStackOperations.OpenStack Suite Setup
-Suite Teardown    OpenStackOperations.OpenStack Suite Teardown
-Test Setup        SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
-Test Teardown     OpenStackOperations.Get Test Teardown Debugs
-Library           SSHLibrary
-Library           OperatingSystem
-Library           RequestsLibrary
-Library           json
-Resource          ../../../libraries/DevstackUtils.robot
-Resource          ../../../libraries/OpenStackOperations.robot
-Resource          ../../../libraries/SetupUtils.robot
-Resource          ../../../variables/Variables.robot
+Documentation       Test Suite for Neutron Security Group
+
+Library             SSHLibrary
+Library             OperatingSystem
+Library             RequestsLibrary
+Library             json
+Resource            ../../../libraries/DevstackUtils.robot
+Resource            ../../../libraries/OpenStackOperations.robot
+Resource            ../../../libraries/SetupUtils.robot
+Resource            ../../../variables/Variables.robot
+
+Suite Setup         OpenStackOperations.OpenStack Suite Setup
+Suite Teardown      OpenStackOperations.OpenStack Suite Teardown
+Test Setup          SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
+Test Teardown       OpenStackOperations.Get Test Teardown Debugs
+
 
 *** Variables ***
-${RESP_CODE_200}    200
-${DESCRIPTION}    --description "new security group 1"
-${VERIFY_DESCRIPTION}    new security group 1
-${VERIFY_NAME}    SSH_UPDATED
-${NAME_UPDATE}    --name SSH_UPDATED
-${SECURITY_FALSE}    --port-security-enabled false
-${SECURITY_TRUE}    --port-security-enabled true
-${SEC_GROUP_API}    /restconf/config/neutron:neutron/security-groups/
-${SEC_RULE_API}    /restconf/config/neutron:neutron/security-rules/
-${ADD_ARG_SSH}    --direction ingress --ethertype IPv4 --port_range_max 22 --port_range_min 22 --protocol tcp
-@{NETWORKS}       sgs_net_1
-@{SUBNETS}        sgs_sub_1
-@{IP_SUBNETS}     61.2.1.0/24
-@{PORTS}          sgs_port_1    sgs_port_2
-${SECURITY_GROUPS}    --security-group
-@{SGS}            sgs_sg_1    sgs_sg_2    sgs_sg_3    sgs_sg_4
-${SG_UPDATED}     SSH_UPDATED
-${ADD_ARG_SSH5}    --ingress --ethertype IPv4 --dst-port 25:20 --protocol tcp
-@{ADD_PARAMS}     ingression    IPv4    20    25    tcp
-${ADD_ARG_SSH6}    --ingress --ethertype IPv4 --dst-port -1:25 --protocol tcp
-${ADD_ARG_SSH7}    --ingress --ethertype IPv4 --dst-port 20:-1 --protocol tcp
-${PORT_RANGE_ERROR}    argument --dst-port: Invalid range, 25 is not less than 20
-${INVALID_MIN_PORT}    argument --dst-port: expected one argument
-${INVALID_MAX_PORT}    argument --dst-port: Invalid range, 20 is not less than -1
+${RESP_CODE_200}            200
+${DESCRIPTION}              --description "new security group 1"
+${VERIFY_DESCRIPTION}       new security group 1
+${VERIFY_NAME}              SSH_UPDATED
+${NAME_UPDATE}              --name SSH_UPDATED
+${SECURITY_FALSE}           --port-security-enabled false
+${SECURITY_TRUE}            --port-security-enabled true
+${SEC_GROUP_API}            /restconf/config/neutron:neutron/security-groups/
+${SEC_RULE_API}             /restconf/config/neutron:neutron/security-rules/
+${ADD_ARG_SSH}              --direction ingress --ethertype IPv4 --port_range_max 22 --port_range_min 22 --protocol tcp
+@{NETWORKS}                 sgs_net_1
+@{SUBNETS}                  sgs_sub_1
+@{IP_SUBNETS}               61.2.1.0/24
+@{PORTS}                    sgs_port_1    sgs_port_2
+${SECURITY_GROUPS}          --security-group
+@{SGS}                      sgs_sg_1    sgs_sg_2    sgs_sg_3    sgs_sg_4
+${SG_UPDATED}               SSH_UPDATED
+${ADD_ARG_SSH5}             --ingress --ethertype IPv4 --dst-port 25:20 --protocol tcp
+@{ADD_PARAMS}               ingression    IPv4    20    25    tcp
+${ADD_ARG_SSH6}             --ingress --ethertype IPv4 --dst-port -1:25 --protocol tcp
+${ADD_ARG_SSH7}             --ingress --ethertype IPv4 --dst-port 20:-1 --protocol tcp
+${PORT_RANGE_ERROR}         argument --dst-port: Invalid range, 25 is not less than 20
+${INVALID_MIN_PORT}         argument --dst-port: expected one argument
+${INVALID_MAX_PORT}         argument --dst-port: Invalid range, 20 is not less than -1
+
 
 *** Test Cases ***
 TC01_Update Security Group description and Name
     [Documentation]    This test case validates the security group creation with optional parameter description, Update Security Group description and name
-    [Tags]    Regression
+    [Tags]    regression
     ${sg_id} =    BuiltIn.Run Keyword    Create Security Group and Validate    ${SGS[0]}
-    Create Security Rule and Validate    ${SGS[0]}    direction=${ADD_PARAMS[0]}    ethertype=${ADD_PARAMS[1]}    port_range_max=${ADD_PARAMS[3]}    port_range_min=${ADD_PARAMS[2]}    protocol=${ADD_PARAMS[4]}
-    Neutron Setup Creation    ${NETWORKS[0]}    ${SUBNETS[0]}    ${IP_SUBNETS[0]}    ${PORTS[0]}    ${PORTS[1]}    ${sg_id}
+    Create Security Rule and Validate
+    ...    ${SGS[0]}
+    ...    direction=${ADD_PARAMS[0]}
+    ...    ethertype=${ADD_PARAMS[1]}
+    ...    port_range_max=${ADD_PARAMS[3]}
+    ...    port_range_min=${ADD_PARAMS[2]}
+    ...    protocol=${ADD_PARAMS[4]}
+    Neutron Setup Creation
+    ...    ${NETWORKS[0]}
+    ...    ${SUBNETS[0]}
+    ...    ${IP_SUBNETS[0]}
+    ...    ${PORTS[0]}
+    ...    ${PORTS[1]}
+    ...    ${sg_id}
     Security group verification on Neutron port    ${PORTS[0]}    ${sg_id}
     Security group verification on Neutron port    ${PORTS[1]}    ${sg_id}
     Update Security Group Description and Verification    ${sg_id}    ${DESCRIPTION}    ${VERIFY_DESCRIPTION}
@@ -53,35 +69,46 @@ TC01_Update Security Group description and Name
 
 TC02_Create Security Rule with port_range_min > port_range_max
     [Documentation]    Create Security Rule with port_range_min greater than port_range_max
-    [Tags]    Regression
+    [Tags]    regression
     Create Security Group and Validate    ${SGS[1]}
     Neutron Rule Creation With Invalid Parameters    ${SGS[1]}    ${ADD_ARG_SSH5}    ${PORT_RANGE_ERROR}
 
 TC03_Create Security Rule with port_range_min = -1
     [Documentation]    Create Security Rule with port_range_min = -1
-    [Tags]    Regression
+    [Tags]    regression
     Create Security Group and Validate    ${SGS[2]}
     Neutron Rule Creation With Invalid Parameters    ${SGS[2]}    ${ADD_ARG_SSH6}    ${INVALID_MIN_PORT}
 
 TC04_Create Security Rule with port_range_max = -1
     [Documentation]    Create Security Rule with port_range_max = -1
-    [Tags]    Regression
+    [Tags]    regression
     Create Security Group and Validate    ${SGS[3]}
     Neutron Rule Creation With Invalid Parameters    ${SGS[3]}    ${ADD_ARG_SSH7}    ${INVALID_MAX_PORT}
 
+
 *** Keywords ***
 Create Security Group and Validate
     [Arguments]    ${sg_ssh}
     ${output}    ${sg_id} =    OpenStackOperations.Neutron Security Group Create    ${sg_ssh}
     ${sec_groups} =    BuiltIn.Create List    ${sg_ssh}
-    BuiltIn.Wait Until Keyword Succeeds    10s    2s    Utils.Check For Elements At URI    ${SEC_GROUP_API}    ${sec_groups}
-    [Return]    ${sg_id}
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    10s
+    ...    2s
+    ...    Utils.Check For Elements At URI
+    ...    ${SEC_GROUP_API}
+    ...    ${sec_groups}
+    RETURN    ${sg_id}
 
 Create Security Rule and Validate
     [Arguments]    ${sg_ssh}    &{Kwargs}
     ${output}    ${rule_id} =    OpenStackOperations.Neutron Security Group Rule Create    ${sg_ssh}
     ${rule_ids} =    BuiltIn.Create List    ${rule_id}
-    BuiltIn.Wait Until Keyword Succeeds    10s    2s    Utils.Check For Elements At URI    ${SEC_RULE_API}    ${rule_ids}
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    10s
+    ...    2s
+    ...    Utils.Check For Elements At URI
+    ...    ${SEC_RULE_API}
+    ...    ${rule_ids}
 
 Neutron Setup Creation
     [Arguments]    ${network}    ${subnet}    ${ip_subnet}    ${port1}    ${port2}    ${sg_id}
@@ -106,13 +133,14 @@ Update Security Group Name and Verification
     OpenStackOperations.Neutron Security Group Update    ${sg_id}    ${name_update}
     ${output} =    OpenStackOperations.Neutron Security Group Show    ${sg_id}
     Should Contain    ${output}    ${verify_name}
-    ${resp}    RequestsLibrary.Get Request    session    ${SEC_GROUP_API}
+    ${resp}    RequestsLibrary.Get Request    session    ${SEC_GROUP_API}
     BuiltIn.Log    ${resp.text}
     BuiltIn.Should Be Equal As Strings    ${resp.status_code}    ${RESP_CODE_200}
     BuiltIn.Should Contain    ${resp.text}    ${verify_name}
 
 Neutron Rule Creation With Invalid Parameters
     [Arguments]    ${sg_name}    ${additional_args}    ${expected_error}
-    ${rc}    ${output} =    Run And Return Rc And Output    openstack security group rule create ${additional_args} ${sg_name}
+    ${rc}    ${output} =    Run And Return Rc And Output
+    ...    openstack security group rule create ${additional_args} ${sg_name}
     BuiltIn.Log    ${output}
     BuiltIn.Should Contain    ${output}    ${expected_error}
index 1be1169b2bd0d87b74fecfbbca3a6d307fab41c2..54b57b1a7176b02d6191ee6e8c50d12561e2290e 100644 (file)
 *** Settings ***
-Documentation     Test Suite for Network and Subnet Broadcast with security group
-Suite Setup       Start Suite
-Suite Teardown    OpenStackOperations.OpenStack Suite Teardown
-Test Setup        SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
-Test Teardown     OpenStackOperations.Get Test Teardown Debugs
-Library           String
-Library           RequestsLibrary
-Library           SSHLibrary
-Library           Collections
-Library           json
-Library           OperatingSystem
-Resource          ../../../libraries/DevstackUtils.robot
-Resource          ../../../libraries/KarafKeywords.robot
-Resource          ../../../libraries/OpenStackOperations.robot
-Resource          ../../../libraries/OVSDB.robot
-Resource          ../../../libraries/OvsManager.robot
-Resource          ../../../libraries/SetupUtils.robot
-Resource          ../../../libraries/Utils.robot
-Resource          ../../../variables/Variables.robot
-Resource          ../../../variables/netvirt/Variables.robot
+Documentation       Test Suite for Network and Subnet Broadcast with security group
+
+Library             String
+Library             RequestsLibrary
+Library             SSHLibrary
+Library             Collections
+Library             json
+Library             OperatingSystem
+Resource            ../../../libraries/DevstackUtils.robot
+Resource            ../../../libraries/KarafKeywords.robot
+Resource            ../../../libraries/OpenStackOperations.robot
+Resource            ../../../libraries/OVSDB.robot
+Resource            ../../../libraries/OvsManager.robot
+Resource            ../../../libraries/SetupUtils.robot
+Resource            ../../../libraries/Utils.robot
+Resource            ../../../variables/Variables.robot
+Resource            ../../../variables/netvirt/Variables.robot
+
+Suite Setup         Start Suite
+Suite Teardown      OpenStackOperations.OpenStack Suite Teardown
+Test Setup          SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
+Test Teardown       OpenStackOperations.Get Test Teardown Debugs
+
 
 *** Variables ***
-@{SECURITY_GROUP}    sgbcast1    sgbcast2
-@{NETWORKS}       sgbcast_net_1    sgbcast_net_2
-@{SUBNETS}        sgbcast_sub_1    sgbcast_sub_2
-@{SUBNET_CIDRS}    55.0.0.0/24    56.0.0.0/24
-${ROUTER}         sgbcast_router
-@{NET_1_PORTS}    sgbcast_net_1_port_1    sgbcast_net_1_port_2    sgbcast_net_1_port_3
-@{NET_2_PORTS}    sgbcast_net_2_port_1    sgbcast_net_2_port_2
-@{NET_1_VMS}      sgbcast_net_1_vm_1    sgbcast_net_1_vm_2    sgbcast_net_1_vm_3
-@{NET_2_VMS}      sgbcast_net_2_vm_1    sgbcast_net_2_vm_2
-${DUMP_FLOW}      sudo ovs-ofctl dump-flows br-int -OOpenflow13
-${DUMP_PORT_DESC}    sudo ovs-ofctl dump-ports-desc br-int -OOpenflow13
-${PACKET_COUNT}    5
-${BCAST_IP}       255.255.255.255
-${SUBNET1_BCAST_IP}    55.0.0.255
-${SUBNET2_BCAST_IP}    56.0.0.255
-${ENABLE_BCAST}    echo 0 | sudo tee /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
-
-*** Test Case ***
+@{SECURITY_GROUP}       sgbcast1    sgbcast2
+@{NETWORKS}             sgbcast_net_1    sgbcast_net_2
+@{SUBNETS}              sgbcast_sub_1    sgbcast_sub_2
+@{SUBNET_CIDRS}         55.0.0.0/24    56.0.0.0/24
+${ROUTER}               sgbcast_router
+@{NET_1_PORTS}          sgbcast_net_1_port_1    sgbcast_net_1_port_2    sgbcast_net_1_port_3
+@{NET_2_PORTS}          sgbcast_net_2_port_1    sgbcast_net_2_port_2
+@{NET_1_VMS}            sgbcast_net_1_vm_1    sgbcast_net_1_vm_2    sgbcast_net_1_vm_3
+@{NET_2_VMS}            sgbcast_net_2_vm_1    sgbcast_net_2_vm_2
+${DUMP_FLOW}            sudo ovs-ofctl dump-flows br-int -OOpenflow13
+${DUMP_PORT_DESC}       sudo ovs-ofctl dump-ports-desc br-int -OOpenflow13
+${PACKET_COUNT}         5
+${BCAST_IP}             255.255.255.255
+${SUBNET1_BCAST_IP}     55.0.0.255
+${SUBNET2_BCAST_IP}     56.0.0.255
+${ENABLE_BCAST}         echo 0 | sudo tee /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
+
+
+*** Test Cases ***
 Verify Network Broadcast traffic between the VMs hosted in Single Network
     [Documentation]    This TC is to verify Network Broadcast traffic between the VMs hosted in Same Network on same/different compute node
     ${pkt_check} =    BuiltIn.Set Variable If    "${OPENSTACK_TOPO}" == "1cmb-0ctl-0cmp"    10    5
-    Wait Until Keyword Succeeds    30s    5s    Verify L3Broadcast With Antispoofing Table    ${OS_CMP1_IP}    ${EGRESS_ACL_TABLE}    ${BCAST_IP}
-    ...    ${VM_IPS}[0]    same    pingsuccess    pkt_check=${pkt_check}
+    Wait Until Keyword Succeeds
+    ...    30s
+    ...    5s
+    ...    Verify L3Broadcast With Antispoofing Table
+    ...    ${OS_CMP1_IP}
+    ...    ${EGRESS_ACL_TABLE}
+    ...    ${BCAST_IP}
+    ...    ${VM_IPS}[0]
+    ...    same
+    ...    pingsuccess
+    ...    pkt_check=${pkt_check}
 
 Verify Network Broadcast traffic between the VMs hosted in Multi Network
     [Documentation]    This TC is to verify Network Broadcast traffic between the VMs hosted in Different Network on same/different compute node.
     ${pkt_check} =    BuiltIn.Set Variable If    "${OPENSTACK_TOPO}" == "1cmb-0ctl-0cmp"    5    0
-    Wait Until Keyword Succeeds    30s    5s    Verify L3Broadcast With Antispoofing Table    ${OS_CMP1_IP}    ${EGRESS_ACL_TABLE}    ${BCAST_IP}
-    ...    ${VM_IPS}[3]    different    pingsuccess    pkt_check=${pkt_check}
+    Wait Until Keyword Succeeds
+    ...    30s
+    ...    5s
+    ...    Verify L3Broadcast With Antispoofing Table
+    ...    ${OS_CMP1_IP}
+    ...    ${EGRESS_ACL_TABLE}
+    ...    ${BCAST_IP}
+    ...    ${VM_IPS}[3]
+    ...    different
+    ...    pingsuccess
+    ...    pkt_check=${pkt_check}
 
 Verify Subnet Broadcast traffic between the VMs hosted on same compute node in Single Network
     [Documentation]    Verify L3-Subnet Broadcast traffic between the VMs hosted on same compute node in Single Network
-    Wait Until Keyword Succeeds    30s    5s    Verify L3Broadcast With Antispoofing Table    ${OS_CMP1_IP}    ${EGRESS_ACL_TABLE}    ${SUBNET1_BCAST_IP}
-    ...    ${VM_IPS}[0]    same    pingsuccess    ${VM2_SUBMETA}    pkt_check=5    additional_args=| grep ${VM2_SUBMETA}
+    Wait Until Keyword Succeeds
+    ...    30s
+    ...    5s
+    ...    Verify L3Broadcast With Antispoofing Table
+    ...    ${OS_CMP1_IP}
+    ...    ${EGRESS_ACL_TABLE}
+    ...    ${SUBNET1_BCAST_IP}
+    ...    ${VM_IPS}[0]
+    ...    same
+    ...    pingsuccess
+    ...    ${VM2_SUBMETA}
+    ...    pkt_check=5
+    ...    additional_args=| grep ${VM2_SUBMETA}
 
 Verify Subnet Broadcast traffic between the VMs hosted on Different compute node in Single Network
     [Documentation]    Verify L3-Subnet Broadcast traffic between the VMs hosted on same compute node in Single Network
-    Wait Until Keyword Succeeds    30s    5s    Verify L3Broadcast With Antispoofing Table    ${OS_CMP2_IP}    ${EGRESS_ACL_TABLE}    ${SUBNET1_BCAST_IP}
-    ...    ${VM_IPS}[0]    same    pingsuccess    ${VM3_SUBMETA}    pkt_check=5    additional_args=| grep ${VM3_SUBMETA}
+    Wait Until Keyword Succeeds
+    ...    30s
+    ...    5s
+    ...    Verify L3Broadcast With Antispoofing Table
+    ...    ${OS_CMP2_IP}
+    ...    ${EGRESS_ACL_TABLE}
+    ...    ${SUBNET1_BCAST_IP}
+    ...    ${VM_IPS}[0]
+    ...    same
+    ...    pingsuccess
+    ...    ${VM3_SUBMETA}
+    ...    pkt_check=5
+    ...    additional_args=| grep ${VM3_SUBMETA}
 
 Verify Subnet Broadcast traffic between the VMs hosted on same compute node in Multi Network
     [Documentation]    Verify L3-Subnet Broadcast traffic between the VMs hosted on same compute node in Multi Network
-    Wait Until Keyword Succeeds    30s    5s    Verify L3Broadcast With Antispoofing Table    ${OS_CMP1_IP}    ${EGRESS_ACL_TABLE}    ${SUBNET2_BCAST_IP}
-    ...    ${VM_IPS}[0]    different    nosuccess    ${VM4_SUBMETA}    pkt_check=0    additional_args=| grep ${VM4_SUBMETA}
+    Wait Until Keyword Succeeds
+    ...    30s
+    ...    5s
+    ...    Verify L3Broadcast With Antispoofing Table
+    ...    ${OS_CMP1_IP}
+    ...    ${EGRESS_ACL_TABLE}
+    ...    ${SUBNET2_BCAST_IP}
+    ...    ${VM_IPS}[0]
+    ...    different
+    ...    nosuccess
+    ...    ${VM4_SUBMETA}
+    ...    pkt_check=0
+    ...    additional_args=| grep ${VM4_SUBMETA}
 
 Verify Subnet Broadcast traffic between the VMs hosted on Different compute node in Multi Network
     [Documentation]    Verify L3-Subnet Broadcast traffic between the VMs hosted on Different compute node in Multi Network
-    Wait Until Keyword Succeeds    30s    5s    Verify L3Broadcast With Antispoofing Table    ${OS_CMP2_IP}    ${EGRESS_ACL_TABLE}    ${SUBNET2_BCAST_IP}
-    ...    ${VM_IPS}[0]    different    nosuccess    ${VM5_SUBMETA}    pkt_check=0    additional_args=| grep ${VM5_SUBMETA}
+    Wait Until Keyword Succeeds
+    ...    30s
+    ...    5s
+    ...    Verify L3Broadcast With Antispoofing Table
+    ...    ${OS_CMP2_IP}
+    ...    ${EGRESS_ACL_TABLE}
+    ...    ${SUBNET2_BCAST_IP}
+    ...    ${VM_IPS}[0]
+    ...    different
+    ...    nosuccess
+    ...    ${VM5_SUBMETA}
+    ...    pkt_check=0
+    ...    additional_args=| grep ${VM5_SUBMETA}
+
 
 *** Keywords ***
 Start Suite
@@ -97,12 +164,31 @@ Create Setup
     FOR    ${port_net2}    IN    @{NET_2_PORTS}
         OpenStackOperations.Create Port    ${NETWORKS}[1]    ${port_net2}    sg=${SECURITY_GROUP}[0]
     END
-    ${ports} =    BuiltIn.Create List    ${NET_1_PORTS}[0]    ${NET_1_PORTS}[1]    ${NET_1_PORTS}[2]    ${NET_2_PORTS}[0]    ${NET_2_PORTS}[1]
-    ${vms} =    BuiltIn.Create List    ${NET_1_VMS}[0]    ${NET_1_VMS}[1]    ${NET_1_VMS}[2]    ${NET_2_VMS}[0]    ${NET_2_VMS}[1]
-    @{nodes} =    BuiltIn.Create List    ${OS_CMP1_HOSTNAME}    ${OS_CMP1_HOSTNAME}    ${OS_CMP2_HOSTNAME}    ${OS_CMP1_HOSTNAME}    ${OS_CMP2_HOSTNAME}
+    ${ports} =    BuiltIn.Create List
+    ...    ${NET_1_PORTS}[0]
+    ...    ${NET_1_PORTS}[1]
+    ...    ${NET_1_PORTS}[2]
+    ...    ${NET_2_PORTS}[0]
+    ...    ${NET_2_PORTS}[1]
+    ${vms} =    BuiltIn.Create List
+    ...    ${NET_1_VMS}[0]
+    ...    ${NET_1_VMS}[1]
+    ...    ${NET_1_VMS}[2]
+    ...    ${NET_2_VMS}[0]
+    ...    ${NET_2_VMS}[1]
+    @{nodes} =    BuiltIn.Create List
+    ...    ${OS_CMP1_HOSTNAME}
+    ...    ${OS_CMP1_HOSTNAME}
+    ...    ${OS_CMP2_HOSTNAME}
+    ...    ${OS_CMP1_HOSTNAME}
+    ...    ${OS_CMP2_HOSTNAME}
     FOR    ${port}    ${vm}    ${node}    IN ZIP    ${ports}    ${vms}
     ...    ${nodes}
-        OpenStackOperations.Create Vm Instance With Port On Compute Node    ${port}    ${vm}    ${node}    sg=${SECURITY_GROUP}[0]
+        OpenStackOperations.Create Vm Instance With Port On Compute Node
+        ...    ${port}
+        ...    ${vm}
+        ...    ${node}
+        ...    sg=${SECURITY_GROUP}[0]
     END
     @{vms} =    Collections.Combine Lists    ${NET_1_VMS}    ${NET_2_VMS}
     @{VM_IPS} =    OpenStackOperations.Get VM IPs    @{vms}
@@ -110,15 +196,35 @@ Create Setup
     BuiltIn.Set Suite Variable    @{VM_IPS}
     OpenStackOperations.Execute Command on VM Instance    ${NETWORKS[0]}    ${VM_IPS}[0]    ${ENABLE_BCAST}
     OpenStackOperations.Execute Command on VM Instance    ${NETWORKS[1]}    ${VM_IPS}[3]    ${ENABLE_BCAST}
-    ${vm1_in_port}    ${vm1_meta} =    BuiltIn.Wait Until Keyword Succeeds    60s    10s    Get VMs Metadata and In Port    ${NET_1_PORTS}[0]
+    ${vm1_in_port}    ${vm1_meta} =    BuiltIn.Wait Until Keyword Succeeds
+    ...    60s
+    ...    10s
+    ...    Get VMs Metadata and In Port
+    ...    ${NET_1_PORTS}[0]
     ...    ${OS_CMP1_IP}
-    ${vm2_in_port}    ${vm2_meta} =    BuiltIn.Wait Until Keyword Succeeds    60s    10s    Get VMs Metadata and In Port    ${NET_1_PORTS}[1]
+    ${vm2_in_port}    ${vm2_meta} =    BuiltIn.Wait Until Keyword Succeeds
+    ...    60s
+    ...    10s
+    ...    Get VMs Metadata and In Port
+    ...    ${NET_1_PORTS}[1]
     ...    ${OS_CMP1_IP}
-    ${vm3_in_port}    ${vm3_meta} =    BuiltIn.Wait Until Keyword Succeeds    60s    10s    Get VMs Metadata and In Port    ${NET_1_PORTS}[2]
+    ${vm3_in_port}    ${vm3_meta} =    BuiltIn.Wait Until Keyword Succeeds
+    ...    60s
+    ...    10s
+    ...    Get VMs Metadata and In Port
+    ...    ${NET_1_PORTS}[2]
     ...    ${OS_CMP2_IP}
-    ${vm4_in_port}    ${vm4_meta} =    BuiltIn.Wait Until Keyword Succeeds    60s    10s    Get VMs Metadata and In Port    ${NET_2_PORTS}[0]
+    ${vm4_in_port}    ${vm4_meta} =    BuiltIn.Wait Until Keyword Succeeds
+    ...    60s
+    ...    10s
+    ...    Get VMs Metadata and In Port
+    ...    ${NET_2_PORTS}[0]
     ...    ${OS_CMP1_IP}
-    ${vm5_in_port}    ${vm5_meta} =    BuiltIn.Wait Until Keyword Succeeds    60s    10s    Get VMs Metadata and In Port    ${NET_2_PORTS}[1]
+    ${vm5_in_port}    ${vm5_meta} =    BuiltIn.Wait Until Keyword Succeeds
+    ...    60s
+    ...    10s
+    ...    Get VMs Metadata and In Port
+    ...    ${NET_2_PORTS}[1]
     ...    ${OS_CMP2_IP}
     ${VM1_SUBMETA} =    Get Submetadata    ${vm1_meta}
     ${VM2_SUBMETA} =    Get Submetadata    ${vm2_meta}
@@ -132,42 +238,66 @@ Create Setup
     BuiltIn.Set Suite Variable    ${VM5_SUBMETA}
 
 Get VMs Metadata and In Port
-    [Arguments]    ${portname}    ${OS_COMPUTE_IP}
     [Documentation]    This keyword is to get the VM metadata and the in_port Id of the VM
+    [Arguments]    ${portname}    ${OS_COMPUTE_IP}
     ${subport} =    OpenStackOperations.Get Sub Port Id    ${portname}
-    ${get_vm_in_port} =    Utils.Run Command On Remote System And Log    ${OS_COMPUTE_IP}    ${DUMP_PORT_DESC} | grep ${subport} | awk '{print$1}'
+    ${get_vm_in_port} =    Utils.Run Command On Remote System And Log
+    ...    ${OS_COMPUTE_IP}
+    ...    ${DUMP_PORT_DESC} | grep ${subport} | awk '{print$1}'
     ${vms_in_port} =    BuiltIn.Should Match Regexp    ${get_vm_in_port}    [0-9]+
-    ${grep_metadata} =    Utils.Run Command On Remote System And Log    ${OS_COMPUTE_IP}    ${DUMP_FLOW} | grep table=${VLAN_INTERFACE_INGRESS_TABLE} | grep in_port=${vms_in_port} | awk '{print$7}'
+    ${grep_metadata} =    Utils.Run Command On Remote System And Log
+    ...    ${OS_COMPUTE_IP}
+    ...    ${DUMP_FLOW} | grep table=${VLAN_INTERFACE_INGRESS_TABLE} | grep in_port=${vms_in_port} | awk '{print$7}'
     @{metadata} =    String.Split string    ${grep_metadata}    ,
     ${get_write_metadata} =    Collections.get from list    ${metadata}    0
     @{complete_metadata} =    String.Split string    ${get_write_metadata}    :
     ${extract_metadata} =    Collections.get from list    ${complete_metadata}    1
     @{split_metadata} =    String.Split string    ${extract_metadata}    /
     ${vm_metadata} =    Collections.Get From List    ${split_metadata}    0
-    [Return]    ${vms_in_port}    ${vm_metadata}
+    RETURN    ${vms_in_port}    ${vm_metadata}
 
 Get Submetadata
-    [Arguments]    ${vm_metadata}
     [Documentation]    Get the submetadata of the VM
-    ${cmd1} =    Utils.Run Command On Remote System And Log    ${OS_CMP1_IP}    ${DUMP_FLOW} | grep ${EGRESS_LPORT_DISPATCHER_TABLE} | grep write_metadata:
+    [Arguments]    ${vm_metadata}
+    ${cmd1} =    Utils.Run Command On Remote System And Log
+    ...    ${OS_CMP1_IP}
+    ...    ${DUMP_FLOW} | grep ${EGRESS_LPORT_DISPATCHER_TABLE} | grep write_metadata:
     ${output1} =    String.Get Regexp Matches    ${cmd1}    reg6=(\\w+)    1
-    ${cmd2} =    Utils.Run Command On Remote System And Log    ${OS_CMP2_IP}    ${DUMP_FLOW} | grep ${EGRESS_LPORT_DISPATCHER_TABLE} | grep write_metadata:
+    ${cmd2} =    Utils.Run Command On Remote System And Log
+    ...    ${OS_CMP2_IP}
+    ...    ${DUMP_FLOW} | grep ${EGRESS_LPORT_DISPATCHER_TABLE} | grep write_metadata:
     ${output2} =    String.Get Regexp Matches    ${cmd2}    reg6=(\\w+)    1
     ${metalist} =    Collections.Combine Lists    ${output1}    ${output2}
     FOR    ${meta}    IN    @{metalist}
         ${metadata_check_status} =    Run Keyword And Return Status    should contain    ${vm_metadata}    ${meta}
-        Return From Keyword if    ${metadata_check_status} == True    ${meta}
+        IF    ${metadata_check_status} == True    RETURN    ${meta}
     END
 
 Verify L3Broadcast With Antispoofing Table
+    [Documentation]    Verify the l3 broadcast requests are hitting to antispoofing table in same subnet
     [Arguments]    ${OS_COMPUTE_IP}    ${EGRESS_ACL_TABLE}    ${BCAST_IP}    ${vm_ip}    ${subnet_var}    ${ping_response}='pingsuccess'
     ...    ${vm_submeta}=''    ${pkt_check}=0    ${additional_args}=${EMPTY}
-    [Documentation]    Verify the l3 broadcast requests are hitting to antispoofing table in same subnet
-    ${get_pkt_count_before_bcast} =    OvsManager.Get Packet Count In Table For IP    ${OS_COMPUTE_IP}    ${EGRESS_ACL_TABLE}    ${BCAST_IP}    additional_args=| grep ${vm_submeta}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance    ${NETWORKS}[0]    ${vm_ip}    ping -c ${PACKET_COUNT} ${BCAST_IP}
-    BuiltIn.Run Keyword If    '${ping_response}'=='pingsuccess'    BuiltIn.Should Contain    ${output}    ${PING_REGEXP}
-    ...    ELSE    BuiltIn.Should Contain    ${output}    ${NO_PING_REGEXP}
-    ${bcast_egress} =    Utils.Run Command On Remote System And Log    ${OS_COMPUTE_IP}    ${DUMP_FLOW} | grep table=${EGRESS_ACL_TABLE} | grep ${BCAST_IP} ${additional_args}
-    ${get_pkt_count_after_bcast} =    OvsManager.Get Packet Count In Table For IP    ${OS_COMPUTE_IP}    ${EGRESS_ACL_TABLE}    ${BCAST_IP}    additional_args=| grep ${vm_submeta}
+    ${get_pkt_count_before_bcast} =    OvsManager.Get Packet Count In Table For IP
+    ...    ${OS_COMPUTE_IP}
+    ...    ${EGRESS_ACL_TABLE}
+    ...    ${BCAST_IP}
+    ...    additional_args=| grep ${vm_submeta}
+    ${output} =    OpenStackOperations.Execute Command on VM Instance
+    ...    ${NETWORKS}[0]
+    ...    ${vm_ip}
+    ...    ping -c ${PACKET_COUNT} ${BCAST_IP}
+    IF    '${ping_response}'=='pingsuccess'
+        BuiltIn.Should Contain    ${output}    ${PING_REGEXP}
+    ELSE
+        BuiltIn.Should Contain    ${output}    ${NO_PING_REGEXP}
+    END
+    ${bcast_egress} =    Utils.Run Command On Remote System And Log
+    ...    ${OS_COMPUTE_IP}
+    ...    ${DUMP_FLOW} | grep table=${EGRESS_ACL_TABLE} | grep ${BCAST_IP} ${additional_args}
+    ${get_pkt_count_after_bcast} =    OvsManager.Get Packet Count In Table For IP
+    ...    ${OS_COMPUTE_IP}
+    ...    ${EGRESS_ACL_TABLE}
+    ...    ${BCAST_IP}
+    ...    additional_args=| grep ${vm_submeta}
     ${pkt_diff} =    Evaluate    int(${get_pkt_count_after_bcast})-int(${get_pkt_count_before_bcast})
     BuiltIn.Should Be Equal As Numbers    ${pkt_diff}    ${pkt_check}
index 3c2ced2f42c4dfb838bc794ee157cc32e88043c4..ec2f894319da9d6e75fbd52e5f9bdc3f6c609183 100644 (file)
@@ -1,96 +1,74 @@
 *** Settings ***
-Documentation     Test suite for running tempest tests. It is assumed that the test environment
-...               is already deployed and ready.
-Suite Setup       Tempest.Suite Setup
-Suite Teardown    OpenStackOperations.OpenStack Suite Teardown
-Test Setup        SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
-Test Teardown     OpenStackOperations.Get Test Teardown Debugs
-Test Template     Tempest.Run Tempest Tests
-Library           OperatingSystem
-Library           SSHLibrary
-Resource          ../../../libraries/DevstackUtils.robot
-Resource          ../../../libraries/OpenStackOperations.robot
-Resource          ../../../libraries/SetupUtils.robot
-Resource          ../../../libraries/SSHKeywords.robot
-Resource          ../../../libraries/Tempest.robot
-Resource          ../../../variables/Variables.robot
-Resource          ../../../variables/netvirt/Variables.robot
+Documentation       Test suite for running tempest tests. It is assumed that the test environment
+...                 is already deployed and ready.
+
+Library             OperatingSystem
+Library             SSHLibrary
+Resource            ../../../libraries/DevstackUtils.robot
+Resource            ../../../libraries/OpenStackOperations.robot
+Resource            ../../../libraries/SetupUtils.robot
+Resource            ../../../libraries/SSHKeywords.robot
+Resource            ../../../libraries/Tempest.robot
+Resource            ../../../variables/Variables.robot
+Resource            ../../../variables/netvirt/Variables.robot
+
+Suite Setup         Tempest.Suite Setup
+Suite Teardown      OpenStackOperations.OpenStack Suite Teardown
+Test Setup          SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
+Test Teardown       OpenStackOperations.Get Test Teardown Debugs
+Test Template       Tempest.Run Tempest Tests
+
 
 *** Test Cases ***
 tempest.api.network
     ${TEST_NAME}    debug=False    timeout=1200s
-
 tempest.scenario.test_aggregates_basic_ops.TestAggregatesBasicOps.test_aggregate_basic_ops
     ${TEST_NAME}    debug=True
-
 tempest.scenario.test_network_advanced_server_ops.TestNetworkAdvancedServerOps.test_server_connectivity_pause_unpause
     ${TEST_NAME}    debug=True
-
 tempest.scenario.test_network_advanced_server_ops.TestNetworkAdvancedServerOps.test_server_connectivity_reboot
     ${TEST_NAME}    debug=True
-
 tempest.scenario.test_network_advanced_server_ops.TestNetworkAdvancedServerOps.test_server_connectivity_rebuild
     ${TEST_NAME}    debug=True
-
 tempest.scenario.test_network_advanced_server_ops.TestNetworkAdvancedServerOps.test_server_connectivity_stop_start
     ${TEST_NAME}    debug=True
-
 tempest.scenario.test_network_advanced_server_ops.TestNetworkAdvancedServerOps.test_server_connectivity_suspend_resume
     ${TEST_NAME}    debug=True
-
 tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_connectivity_between_vms_on_different_networks
     ${TEST_NAME}    debug=True
-
 tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_hotplug_nic
     ${TEST_NAME}    debug=True
-
 tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_mtu_sized_frames
     ${TEST_NAME}    debug=True
-
 tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_network_basic_ops
     ${TEST_NAME}    debug=True
-
 tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_port_security_macspoofing_port
     ${TEST_NAME}    debug=True
-
 tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_preserve_preexisting_port
     ${TEST_NAME}    debug=True
-
 tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_router_rescheduling
     ${TEST_NAME}    debug=True
-
 tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_subnet_details
     ${TEST_NAME}    debug=True
-
 tempest.scenario.test_network_v6.TestGettingAddress.test_dhcp6_stateless_from_os
     ${TEST_NAME}    debug=True
-
 tempest.scenario.test_network_v6.TestGettingAddress.test_dualnet_dhcp6_stateless_from_os
     ${TEST_NAME}    debug=True
-
 tempest.scenario.test_network_v6.TestGettingAddress.test_dualnet_slaac_from_os
     ${TEST_NAME}    debug=True
-
 tempest.scenario.test_network_v6.TestGettingAddress.test_slaac_from_os
     ${TEST_NAME}    debug=True
-
 tempest.scenario.test_security_groups_basic_ops.TestSecurityGroupsBasicOps.test_boot_into_disabled_port_security_network_without_secgroup
     ${TEST_NAME}    debug=True
-
 tempest.scenario.test_security_groups_basic_ops.TestSecurityGroupsBasicOps.test_cross_tenant_traffic
     ${TEST_NAME}    debug=True
-
 tempest.scenario.test_security_groups_basic_ops.TestSecurityGroupsBasicOps.test_in_tenant_traffic
     ${TEST_NAME}    debug=True
-
 tempest.scenario.test_security_groups_basic_ops.TestSecurityGroupsBasicOps.test_multiple_security_groups
     ${TEST_NAME}    debug=True
-
 tempest.scenario.test_security_groups_basic_ops.TestSecurityGroupsBasicOps.test_port_security_disable_security_group
     ${TEST_NAME}    debug=True
-
 tempest.scenario.test_security_groups_basic_ops.TestSecurityGroupsBasicOps.test_port_update_new_security_group
     ${TEST_NAME}    debug=True
-
 tempest.scenario.test_server_basic_ops.TestServerBasicOps.test_server_basic_ops
     ${TEST_NAME}    debug=True
index 7263e4170df1af5a608285bee5947a5f717ee8a7..0a1f4a4a9e24f075f62ffc7ee369e5f2b1a8e36f 100644 (file)
@@ -1,14 +1,17 @@
 *** Settings ***
-Documentation     Test suite for Ovsdb Southbound Cluster - Owner failover and recover
-Suite Setup       Suite Setup
-Suite Teardown    Delete All Sessions
-Test Setup        SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
-Library           Collections
-Library           RequestsLibrary
-Resource          ../../../libraries/ClusterManagement.robot
-Resource          ../../../libraries/ClusterOvsdb.robot
-Resource          ../../../libraries/SetupUtils.robot
-Resource          ../../../variables/Variables.robot
+Documentation       Test suite for Ovsdb Southbound Cluster - Owner failover and recover
+
+Library             Collections
+Library             RequestsLibrary
+Resource            ../../../libraries/ClusterManagement.robot
+Resource            ../../../libraries/ClusterOvsdb.robot
+Resource            ../../../libraries/SetupUtils.robot
+Resource            ../../../variables/Variables.robot
+
+Suite Setup         Suite Setup
+Suite Teardown      Delete All Sessions
+Test Setup          SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
+
 
 *** Test Cases ***
 Check Shards Status Before Fail
@@ -17,12 +20,14 @@ Check Shards Status Before Fail
 
 Start OVS Multiple Connections
     [Documentation]    Connect OVS to all cluster instances.
-    ${ovsdb_uuid}    OVSDB.Add Multiple Managers to OVS
+    ${ovsdb_uuid}    OVSDB.Add Multiple Managers to OVS
     Set Suite Variable    ${ovsdb_uuid}
 
 Check Entity Owner Status And Find Owner and Candidate Before Fail
     [Documentation]    Check Entity Owner Status and identify owner and candidate.
-    ${original_owner}    ${original_candidate_list} =    ClusterOvsdb.Get Ovsdb Entity Owner Status For One Device    ovsdb://uuid/${ovsdb_uuid}    1
+    ${original_owner}    ${original_candidate_list} =    ClusterOvsdb.Get Ovsdb Entity Owner Status For One Device
+    ...    ovsdb://uuid/${ovsdb_uuid}
+    ...    1
     ${original_candidate} =    Collections.Get From List    ${original_candidate_list}    0
     BuiltIn.Set Suite Variable    ${original_owner}
     BuiltIn.Set Suite Variable    ${original_candidate_list}
@@ -83,7 +88,10 @@ Check Shards Status After Fail
 
 Check Entity Owner Status And Find Owner and Candidate After Fail
     [Documentation]    Check Entity Owner Status and identify owner and candidate.
-    ${new_owner}    ${new_candidate_list} =    ClusterOvsdb.Get Ovsdb Entity Owner Status For One Device    ovsdb://uuid/${ovsdb_uuid}    ${original_candidate}    ${new_cluster_list}
+    ${new_owner}    ${new_candidate_list} =    ClusterOvsdb.Get Ovsdb Entity Owner Status For One Device
+    ...    ovsdb://uuid/${ovsdb_uuid}
+    ...    ${original_candidate}
+    ...    ${new_cluster_list}
     ${new_candidate} =    Collections.Get From List    ${new_candidate_list}    0
     BuiltIn.Set Suite Variable    ${new_owner}
     BuiltIn.Set Suite Variable    ${new_candidate}
@@ -134,7 +142,9 @@ Check Shards Status After Recover
 
 Check Entity Owner Status After Recover
     [Documentation]    Check Entity Owner Status and identify owner and candidate.
-    ${new_owner}    ${new_candidate_list} =    ClusterOvsdb.Get Ovsdb Entity Owner Status For One Device    ovsdb://uuid/${ovsdb_uuid}    1
+    ${new_owner}    ${new_candidate_list} =    ClusterOvsdb.Get Ovsdb Entity Owner Status For One Device
+    ...    ovsdb://uuid/${ovsdb_uuid}
+    ...    1
     BuiltIn.Set Suite Variable    ${new_owner}
 
 Create Bridge Manually and Verify After Recover
@@ -197,6 +207,7 @@ Cleans Up Test Environment For Next Suite
     [Documentation]    Cleans up test environment, close existing sessions in teardown.
     ClusterOvsdb.Configure Exit OVSDB Connection
 
+
 *** Keywords ***
 Suite Setup
     SetupUtils.Setup_Utils_For_Setup_And_Teardown
index f6a9740ec9c34f34d9b05b060d81678768bfe975..15e7cac0f4dded718d80ab865c7f45570a5034a3 100644 (file)
@@ -1,14 +1,17 @@
 *** Settings ***
-Documentation     Test suite for Ovsdb Southbound Cluster - Candidate failover and recover
-Suite Setup       Suite Setup
-Suite Teardown    Delete All Sessions
-Test Setup        SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
-Library           Collections
-Library           RequestsLibrary
-Resource          ../../../libraries/ClusterManagement.robot
-Resource          ../../../libraries/ClusterOvsdb.robot
-Resource          ../../../libraries/SetupUtils.robot
-Resource          ../../../variables/Variables.robot
+Documentation       Test suite for Ovsdb Southbound Cluster - Candidate failover and recover
+
+Library             Collections
+Library             RequestsLibrary
+Resource            ../../../libraries/ClusterManagement.robot
+Resource            ../../../libraries/ClusterOvsdb.robot
+Resource            ../../../libraries/SetupUtils.robot
+Resource            ../../../variables/Variables.robot
+
+Suite Setup         Suite Setup
+Suite Teardown      Delete All Sessions
+Test Setup          SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
+
 
 *** Test Cases ***
 Check Shards Status Before Fail
@@ -22,7 +25,9 @@ Start OVS Multiple Connections
 
 Check Entity Owner Status And Find Owner and Candidate Before Fail
     [Documentation]    Check Entity Owner Status and identify owner and candidate.
-    ${original_owner}    ${original_candidate_list} =    ClusterOvsdb.Get Ovsdb Entity Owner Status For One Device    ovsdb://uuid/${ovsdb_uuid}    1
+    ${original_owner}    ${original_candidate_list} =    ClusterOvsdb.Get Ovsdb Entity Owner Status For One Device
+    ...    ovsdb://uuid/${ovsdb_uuid}
+    ...    1
     ${original_candidate} =    Collections.Get From List    ${original_candidate_list}    0
     BuiltIn.Set Suite Variable    ${original_owner}
     BuiltIn.Set Suite Variable    ${original_candidate}
@@ -74,7 +79,10 @@ Check Shards Status After Fail
 
 Check Entity Owner Status And Find Owner and Candidate After Fail
     [Documentation]    Check Entity Owner Status and identify owner and candidate.
-    ${new_owner}    ${new_candidate_list} =    ClusterOvsdb.Get Ovsdb Entity Owner Status For One Device    ovsdb://uuid/${ovsdb_uuid}    ${original_owner}    ${new_cluster_list}
+    ${new_owner}    ${new_candidate_list} =    ClusterOvsdb.Get Ovsdb Entity Owner Status For One Device
+    ...    ovsdb://uuid/${ovsdb_uuid}
+    ...    ${original_owner}
+    ...    ${new_cluster_list}
     ${new_candidate} =    Collections.Get From List    ${new_candidate_list}    0
     BuiltIn.Set Suite Variable    ${new_owner}
     BuiltIn.Set Suite Variable    ${new_candidate}
@@ -117,7 +125,9 @@ Check Shards Status After Recover
 
 Check Entity Owner Status After Recover
     [Documentation]    Check Entity Owner Status and identify owner and candidate.
-    ${new_owner}    ${new_candidate_list} =    ClusterOvsdb.Get Ovsdb Entity Owner Status For One Device    ovsdb://uuid/${ovsdb_uuid}    1
+    ${new_owner}    ${new_candidate_list} =    ClusterOvsdb.Get Ovsdb Entity Owner Status For One Device
+    ...    ovsdb://uuid/${ovsdb_uuid}
+    ...    1
     BuiltIn.Set Suite Variable    ${new_owner}
 
 Create Bridge Manually and Verify After Recover
@@ -172,6 +182,7 @@ Cleans Up Test Environment For Next Suite
     [Documentation]    Cleans up test environment, close existing sessions in teardown.
     ClusterOvsdb.Configure Exit OVSDB Connection
 
+
 *** Keywords ***
 Suite Setup
     SetupUtils.Setup_Utils_For_Setup_And_Teardown
index 8dc90d6fad4a2b690dd0ef1448c06dff7f6dd89e..4067abaa91e2d44a5c56e9b95c39c63cf3ce2193 100644 (file)
@@ -1,23 +1,28 @@
 *** Settings ***
-Documentation     Test suite for Connection Manager
-Suite Setup       OVSDB.Suite Setup
-Suite Teardown    Suite Teardown
-Test Setup        SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
-Force Tags        Southbound
-Library           OperatingSystem
-Library           RequestsLibrary
-Resource          ../../../libraries/OVSDB.robot
-Resource          ../../../libraries/SetupUtils.robot
-Resource          ../../../libraries/Utils.robot
-Resource          ../../../variables/Variables.robot
-Resource          ../../../variables/ovsdb/Variables.robot
+Documentation       Test suite for Connection Manager
+
+Library             OperatingSystem
+Library             RequestsLibrary
+Resource            ../../../libraries/OVSDB.robot
+Resource            ../../../libraries/SetupUtils.robot
+Resource            ../../../libraries/Utils.robot
+Resource            ../../../variables/Variables.robot
+Resource            ../../../variables/ovsdb/Variables.robot
+
+Suite Setup         OVSDB.Suite Setup
+Suite Teardown      Suite Teardown
+Test Setup          SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
+
+Force Tags          southbound
+
 
 *** Variables ***
-${BRIDGE}         ovsconf_br
-${PORT}           ovsconf_vx1
-${QOS}            QOS-1
-${QUEUE}          QUEUE-1
-@{NODE_LIST}      ovsdb://${TOOLS_SYSTEM_IP}:${OVSDB_NODE_PORT}    ${TOOLS_SYSTEM_IP}    ${OVSDB_NODE_PORT}
+${BRIDGE}       ovsconf_br
+${PORT}         ovsconf_vx1
+${QOS}          QOS-1
+${QUEUE}        QUEUE-1
+@{NODE_LIST}    ovsdb://${TOOLS_SYSTEM_IP}:${OVSDB_NODE_PORT}    ${TOOLS_SYSTEM_IP}    ${OVSDB_NODE_PORT}
+
 
 *** Test Cases ***
 Make the OVS instance to listen for connection
@@ -31,11 +36,21 @@ Connect to OVSDB Node
 
 Get Operational Topology
     [Documentation]    This request will fetch the operational topology from the connected OVSDB nodes
-    BuiltIn.Wait Until Keyword Succeeds    8s    2s    Utils.Check For Elements At URI    ${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}    ${NODE_LIST}    pretty_print_json=True
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    8s
+    ...    2s
+    ...    Utils.Check For Elements At URI
+    ...    ${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}
+    ...    ${NODE_LIST}
+    ...    pretty_print_json=True
 
 Create a Bridge
     [Documentation]    This will create bridge on the specified OVSDB node.
-    OVSDB.Add Bridge To Ovsdb Node    ${TOOLS_SYSTEM_IP}:${OVSDB_NODE_PORT}    ${TOOLS_SYSTEM_IP}    ${BRIDGE}    0000000000000040
+    OVSDB.Add Bridge To Ovsdb Node
+    ...    ${TOOLS_SYSTEM_IP}:${OVSDB_NODE_PORT}
+    ...    ${TOOLS_SYSTEM_IP}
+    ...    ${BRIDGE}
+    ...    0000000000000040
 
 Get Config Topology with Bridge
     [Documentation]    This will fetch the configuration topology from configuration data store to verify the bridge is added to the data store
@@ -47,7 +62,13 @@ Get Config Topology with Bridge
 Get Operational Topology with Bridge
     [Documentation]    This request will fetch the operational topology from the connected OVSDB nodes to verify the bridge is added to the data store
     @{list} =    BuiltIn.Create List    ${BRIDGE}
-    BuiltIn.Wait Until Keyword Succeeds    8s    2s    Utils.Check For Elements At URI    ${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}    ${list}    pretty_print_json=True
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    8s
+    ...    2s
+    ...    Utils.Check For Elements At URI
+    ...    ${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}
+    ...    ${list}
+    ...    pretty_print_json=True
 
 Create Port and Attach to a Bridge
     [Documentation]    This request will creates port/interface and attach it to the specific bridge
@@ -56,17 +77,31 @@ Create Port and Attach to a Bridge
 Get Operational Topology with Port
     [Documentation]    This request will fetch the operational topology after the Port is added to the bridge
     @{list} =    BuiltIn.Create List    ${BRIDGE}    ${PORT}
-    BuiltIn.Wait Until Keyword Succeeds    8s    2s    Utils.Check For Elements At URI    ${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}    ${list}    pretty_print_json=True
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    8s
+    ...    2s
+    ...    Utils.Check For Elements At URI
+    ...    ${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}
+    ...    ${list}
+    ...    pretty_print_json=True
 
 Delete the Port
     [Documentation]    This request will delete the port node from the bridge node and data store.
-    ${resp} =    RequestsLibrary.Delete Request    session    ${RFC8040_SOUTHBOUND_NODE_TOOLS_API}%2Fbridge%2F${BRIDGE}/termination-point=${PORT}
+    ${resp} =    RequestsLibrary.Delete Request
+    ...    session
+    ...    ${RFC8040_SOUTHBOUND_NODE_TOOLS_API}%2Fbridge%2F${BRIDGE}/termination-point=${PORT}
     BuiltIn.Should Be Equal As Strings    ${resp.status_code}    204
 
 Get Operational Topology after Deletion of Port
     [Documentation]    This request will fetch the operational topology after the Port is deleted
     @{list} =    BuiltIn.Create List    ${PORT}
-    BuiltIn.Wait Until Keyword Succeeds    8s    2s    Utils.Check For Elements Not At URI    ${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}    ${list}    pretty_print_json=True
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    8s
+    ...    2s
+    ...    Utils.Check For Elements Not At URI
+    ...    ${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}
+    ...    ${list}
+    ...    pretty_print_json=True
 
 Delete the Bridge
     [Documentation]    This request will delete the bridge node from the config data store.
@@ -76,14 +111,26 @@ Delete the Bridge
 Get Operational Topology after Deletion of Bridge
     [Documentation]    This request will fetch the operational topology after the Bridge is deleted
     @{list} =    BuiltIn.Create List    ${BRIDGE}    ${PORT}
-    BuiltIn.Wait Until Keyword Succeeds    8s    2s    Utils.Check For Elements Not At URI    ${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}    ${list}    pretty_print_json=True
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    8s
+    ...    2s
+    ...    Utils.Check For Elements Not At URI
+    ...    ${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}
+    ...    ${list}
+    ...    pretty_print_json=True
 
 Verify Config Still Has OVS Info
     [Documentation]    This will fetch the configuration topology from configuration data store to verify the node is still in the data store
     ${resp} =    RequestsLibrary.Get Request    session    ${RFC8040_CONFIG_TOPO_API}
     OVSDB.Log Request    ${resp.text}
     BuiltIn.Should Be Equal As Strings    ${resp.status_code}    200
-    BuiltIn.Wait Until Keyword Succeeds    8s    2s    Utils.Check For Elements At URI    ${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}    ${NODE_LIST}    pretty_print_json=True
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    8s
+    ...    2s
+    ...    Utils.Check For Elements At URI
+    ...    ${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}
+    ...    ${NODE_LIST}
+    ...    pretty_print_json=True
 
 Delete the OVSDB Node
     [Documentation]    This request will delete the OVSDB node
@@ -93,12 +140,24 @@ Delete the OVSDB Node
 Get Operational Topology to make sure the connection has been deleted
     [Documentation]    This request will fetch the operational topology from the connected OVSDB nodes
     @{list} =    BuiltIn.Create List    ovsdb://${TOOLS_SYSTEM_IP}:${OVSDB_NODE_PORT}
-    BuiltIn.Wait Until Keyword Succeeds    8s    2s    Utils.Check For Elements Not At URI    ${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}    ${list}    pretty_print_json=True
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    8s
+    ...    2s
+    ...    Utils.Check For Elements Not At URI
+    ...    ${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}
+    ...    ${list}
+    ...    pretty_print_json=True
 
 Get Configuration Topology to make sure the connection has been deleted
     [Documentation]    This request will fetch the configuration topology from the connected OVSDB nodes
     @{list} =    BuiltIn.Create List    ovsdb://${TOOLS_SYSTEM_IP}:${OVSDB_NODE_PORT}
-    BuiltIn.Wait Until Keyword Succeeds    8s    2s    Utils.Check For Elements Not At URI    ${RFC8040_CONFIG_TOPO_OVSDB1_API}    ${list}    pretty_print_json=True
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    8s
+    ...    2s
+    ...    Utils.Check For Elements Not At URI
+    ...    ${RFC8040_CONFIG_TOPO_OVSDB1_API}
+    ...    ${list}
+    ...    pretty_print_json=True
 
 Reconnect to OVSDB Node
     [Documentation]    Initiate the connection to OVSDB node from controller
@@ -106,14 +165,26 @@ Reconnect to OVSDB Node
 
 Get Operational Topology After Node Reconnect
     [Documentation]    This request will fetch the operational topology from the connected OVSDB nodes to verify the bridge is added to the data store
-    BuiltIn.Wait Until Keyword Succeeds    8s    2s    Utils.Check For Elements At URI    ${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}    ${NODE_LIST}    pretty_print_json=True
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    8s
+    ...    2s
+    ...    Utils.Check For Elements At URI
+    ...    ${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}
+    ...    ${NODE_LIST}
+    ...    pretty_print_json=True
 
 Get Config Topology After Reconnect
     [Documentation]    This will fetch the configuration topology from configuration data store after reconnect
-    ${resp}    RequestsLibrary.Get Request    session    ${RFC8040_CONFIG_TOPO_API}
+    ${resp}    RequestsLibrary.Get Request    session    ${RFC8040_CONFIG_TOPO_API}
     OVSDB.Log Request    ${resp.text}
     BuiltIn.Should Be Equal As Strings    ${resp.status_code}    200
-    BuiltIn.Wait Until Keyword Succeeds    8s    2s    Utils.Check For Elements At URI    ${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}    ${NODE_LIST}    pretty_print_json=True
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    8s
+    ...    2s
+    ...    Utils.Check For Elements At URI
+    ...    ${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}
+    ...    ${NODE_LIST}
+    ...    pretty_print_json=True
 
 Create OVSDB NODE HOST1
     [Documentation]    This request will create OVSDB NODE HOST1
@@ -145,7 +216,13 @@ Get QOS Config Topology with port
 Get QOS Operational Topology with port
     [Documentation]    This request will fetch the operational topology from the connected OVSDB nodes to verify the QOS is added to the data store
     @{list} =    BuiltIn.Create List    ${QOS}
-    BuiltIn.Wait Until Keyword Succeeds    8s    2s    Utils.Check For Elements At URI    ${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}    ${list}    pretty_print_json=True
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    8s
+    ...    2s
+    ...    Utils.Check For Elements At URI
+    ...    ${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}
+    ...    ${list}
+    ...    pretty_print_json=True
 
 Get Queue Config Topology with port
     [Documentation]    This request will fetch the configuration topology from configuration data store to verify the Queue is added to the data store
@@ -157,21 +234,33 @@ Get Queue Config Topology with port
 Get Queue Operational Topology with port
     [Documentation]    This request will fetch the operational topology from the connected OVSDB nodes to verify the Queue is added to the data store
     @{list} =    BuiltIn.Create List    ${QUEUE}
-    BuiltIn.Wait Until Keyword Succeeds    8s    2s    Utils.Check For Elements At URI    ${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}    ${list}    pretty_print_json=True
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    8s
+    ...    2s
+    ...    Utils.Check For Elements At URI
+    ...    ${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}
+    ...    ${list}
+    ...    pretty_print_json=True
 
 Delete a Queue entry from a Qos entry
     [Documentation]    This request will Delete a Queue entry from a Qos entry
-    ${resp} =    RequestsLibrary.Delete Request    session    ${RFC8040_SOUTHBOUND_NODE_HOST1_API}/ovsdb:qos-entries=${QOS}/queue-list=0
+    ${resp} =    RequestsLibrary.Delete Request
+    ...    session
+    ...    ${RFC8040_SOUTHBOUND_NODE_HOST1_API}/ovsdb:qos-entries=${QOS}/queue-list=0
     BuiltIn.Should Contain    ${ALLOWED_STATUS_CODES}    ${resp.status_code}
 
 Delete a QoS entry from a node
     [Documentation]    This request will Delete a QoS entry from a node.
-    ${resp} =    RequestsLibrary.Delete Request    session    ${RFC8040_SOUTHBOUND_NODE_HOST1_API}/ovsdb:qos-entries=${QOS}
+    ${resp} =    RequestsLibrary.Delete Request
+    ...    session
+    ...    ${RFC8040_SOUTHBOUND_NODE_HOST1_API}/ovsdb:qos-entries=${QOS}
     BuiltIn.Should Contain    ${ALLOWED_STATUS_CODES}    ${resp.status_code}
 
 Delete a Queue entry from an ovsdb node
     [Documentation]    This request will Delete a Queue entry from an ovsdb node
-    ${resp} =    RequestsLibrary.Delete Request    session    ${RFC8040_SOUTHBOUND_NODE_HOST1_API}/ovsdb:queues=${QUEUE}
+    ${resp} =    RequestsLibrary.Delete Request
+    ...    session
+    ...    ${RFC8040_SOUTHBOUND_NODE_HOST1_API}/ovsdb:queues=${QUEUE}
     BuiltIn.Should Contain    ${ALLOWED_STATUS_CODES}    ${resp.status_code}
 
 Delete the OVSDB Node HOST1
@@ -189,15 +278,20 @@ Get Config Topology to verify that deleted configurations are cleaned from confi
 Check For Bug 4756
     [Documentation]    bug 4756 has been seen in the OVSDB Southbound suites. This test case should be one of the last test
     ...    case executed.
-    Utils.Check Karaf Log File Does Not Have Messages    ${ODL_SYSTEM_IP}    SimpleShardDataTreeCohort.*Unexpected failure in validation phase
+    Utils.Check Karaf Log File Does Not Have Messages
+    ...    ${ODL_SYSTEM_IP}
+    ...    SimpleShardDataTreeCohort.*Unexpected failure in validation phase
     [Teardown]    Utils.Report_Failure_Due_To_Bug    4756
 
 Check For Bug 4794
     [Documentation]    bug 4794 has been seen in the OVSDB Southbound suites. This test case should be one of the last test
     ...    case executed.
-    Utils.Check Karaf Log File Does Not Have Messages    ${ODL_SYSTEM_IP}    Shard.*shard-topology-operational An exception occurred while preCommitting transaction
+    Utils.Check Karaf Log File Does Not Have Messages
+    ...    ${ODL_SYSTEM_IP}
+    ...    Shard.*shard-topology-operational An exception occurred while preCommitting transaction
     [Teardown]    Utils.Report_Failure_Due_To_Bug    4794
 
+
 *** Keywords ***
 Suite Teardown
     [Documentation]    Cleans up test environment, close existing sessions.
index 301f8a7711ce72cc7fc0753979f6a2c4629cbf31..04de1db840bc36e032044e7673e5d40a8c16be2c 100644 (file)
@@ -1,21 +1,26 @@
 *** Settings ***
-Documentation     Test suite for Connection Manager
-Suite Setup       OVSDB.Suite Setup
-Suite Teardown    Suite Teardown
-Test Setup        SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
-Force Tags        Southbound
-Library           RequestsLibrary
-Resource          ../../../libraries/SetupUtils.robot
-Resource          ../../../libraries/Utils.robot
-Resource          ../../../libraries/OVSDB.robot
-Resource          ../../../variables/Variables.robot
-Resource          ../../../variables/ovsdb/Variables.robot
+Documentation       Test suite for Connection Manager
+
+Library             RequestsLibrary
+Resource            ../../../libraries/SetupUtils.robot
+Resource            ../../../libraries/Utils.robot
+Resource            ../../../libraries/OVSDB.robot
+Resource            ../../../variables/Variables.robot
+Resource            ../../../variables/ovsdb/Variables.robot
+
+Suite Setup         OVSDB.Suite Setup
+Suite Teardown      Suite Teardown
+Test Setup          SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
+
+Force Tags          southbound
+
 
 *** Variables ***
-${BRIDGE1}        ovscon_br1
-${BRIDGE2}        ovscon_br2
-@{NODE_LIST}      ovsdb://${TOOLS_SYSTEM_IP}:${OVSDB_NODE_PORT}    ${TOOLS_SYSTEM_IP}    ${OVSDB_NODE_PORT}
-${OVSDB_UUID}     ${EMPTY}
+${BRIDGE1}          ovscon_br1
+${BRIDGE2}          ovscon_br2
+@{NODE_LIST}        ovsdb://${TOOLS_SYSTEM_IP}:${OVSDB_NODE_PORT}    ${TOOLS_SYSTEM_IP}    ${OVSDB_NODE_PORT}
+${OVSDB_UUID}       ${EMPTY}
+
 
 *** Test Cases ***
 Connecting an OVS instance to the controller
@@ -26,7 +31,13 @@ Connecting an OVS instance to the controller
 Get Operational Topology to verify the ovs instance is connected to the controller
     [Documentation]    This request will fetch the operational topology from the connected OVSDB nodes
     @{list} =    BuiltIn.Create List    ovsdb://uuid    "remote-ip":"${TOOLS_SYSTEM_IP}"    "local-port":${OVSDBPORT}
-    BuiltIn.Wait Until Keyword Succeeds    8s    2s    Utils.Check For Elements At URI    ${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}    ${list}    pretty_print_json=True
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    8s
+    ...    2s
+    ...    Utils.Check For Elements At URI
+    ...    ${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}
+    ...    ${list}
+    ...    pretty_print_json=True
     ${OVSDB_UUID} =    OVSDB.Get OVSDB UUID    ${TOOLS_SYSTEM_IP}
     BuiltIn.Set Suite Variable    ${OVSDB_UUID}
 
@@ -40,7 +51,13 @@ Create bridge manually
 Get Operational Topology to verify the bridge has been added
     [Documentation]    This request will fetch the operational topology from the connected OVSDB nodes
     @{list} =    BuiltIn.Create List    ${BRIDGE1}
-    BuiltIn.Wait Until Keyword Succeeds    8s    2s    Utils.Check For Elements At URI    ${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}    ${list}    pretty_print_json=True
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    8s
+    ...    2s
+    ...    Utils.Check For Elements At URI
+    ...    ${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}
+    ...    ${list}
+    ...    pretty_print_json=True
 
 Get Config Topology to verify the manually added bridge is not added to the config datastore
     [Documentation]    This request will fetch the configuration topology from configuration data store
@@ -56,7 +73,13 @@ Create a Bridge through controller
 Get Operational Topology to verify the bridge has been added through rest call
     [Documentation]    This request will fetch the operational topology from the connected OVSDB nodes
     @{list} =    BuiltIn.Create List    ${BRIDGE2}
-    BuiltIn.Wait Until Keyword Succeeds    8s    2s    Utils.Check For Elements At URI    ${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}    ${list}    pretty_print_json=True
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    8s
+    ...    2s
+    ...    Utils.Check For Elements At URI
+    ...    ${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}
+    ...    ${list}
+    ...    pretty_print_json=True
 
 Get Config Topology to verify the entry added to the config datastore
     [Documentation]    This request will fetch the configuration topology from configuration data store
@@ -82,7 +105,13 @@ Delete bridge manually
 Get Operational Topology to verify the bridge has been deleted manually
     [Documentation]    This request will fetch the operational topology from the connected OVSDB nodes
     @{list} =    BuiltIn.Create List    ${BRIDGE2}
-    BuiltIn.Wait Until Keyword Succeeds    8s    2s    Utils.Check For Elements Not At URI    ${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}    ${list}    pretty_print_json=True
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    8s
+    ...    2s
+    ...    Utils.Check For Elements Not At URI
+    ...    ${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}
+    ...    ${list}
+    ...    pretty_print_json=True
 
 Config Topology Still Contains Bridge
     [Documentation]    This request will fetch the configuration topology from configuration data store
@@ -93,13 +122,21 @@ Config Topology Still Contains Bridge
 
 Delete the Bridge through rest call
     [Documentation]    This request will delete the bridge node from the config data store.
-    ${resp} =    RequestsLibrary.Delete Request    session    ${RFC8040_SOUTHBOUND_NODE_API}uuid%2F${OVSDB_UUID}%2Fbridge%2F${BRIDGE2}
+    ${resp} =    RequestsLibrary.Delete Request
+    ...    session
+    ...    ${RFC8040_SOUTHBOUND_NODE_API}uuid%2F${OVSDB_UUID}%2Fbridge%2F${BRIDGE2}
     BuiltIn.Should Be Equal As Strings    ${resp.status_code}    204
 
 Get Operational Topology after Deletion of Bridge
     [Documentation]    This request will fetch the operational topology after the Bridge is deleted
     @{list} =    BuiltIn.Create List    ${BRIDGE2}
-    BuiltIn.Wait Until Keyword Succeeds    8s    2s    Utils.Check For Elements Not At URI    ${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}    ${list}    pretty_print_json=True
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    8s
+    ...    2s
+    ...    Utils.Check For Elements Not At URI
+    ...    ${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}
+    ...    ${list}
+    ...    pretty_print_json=True
 
 Trunk And Vlan Tag Is Removed From Operational
     [Documentation]    Verify that when the vlan tag is added and removed from an ovs port, it should be accurately reflected
@@ -113,34 +150,64 @@ Trunk And Vlan Tag Is Removed From Operational
     Utils.Run Command On Mininet    ${TOOLS_SYSTEM_IP}    sudo ovs-vsctl set port vlan-tag-port trunks=[181,182]
     BuiltIn.Wait Until Keyword Succeeds    5s    1s    OVSDB.Verify OVS Reports Connected
     OVSDB.Collect OVSDB Debugs
-    @{list}    BuiltIn.Create List    vlan-tag-br    vlan-tag-port    "ovsdb:vlan-tag":81    "trunk":181    "trunk":182
-    BuiltIn.Wait Until Keyword Succeeds    8s    2s    Utils.Check For Elements At URI    ${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}    ${list}    pretty_print_json=True
+    @{list} =    BuiltIn.Create List
+    ...    vlan-tag-br
+    ...    vlan-tag-port
+    ...    "ovsdb:vlan-tag":81
+    ...    "trunk":181
+    ...    "trunk":182
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    8s
+    ...    2s
+    ...    Utils.Check For Elements At URI
+    ...    ${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}
+    ...    ${list}
+    ...    pretty_print_json=True
     Utils.Run Command On Mininet    ${TOOLS_SYSTEM_IP}    sudo ovs-vsctl clear port vlan-tag-port tag
     Utils.Run Command On Mininet    ${TOOLS_SYSTEM_IP}    sudo ovs-vsctl remove port vlan-tag-port trunks 181
-    @{list}    BuiltIn.Create List    "ovsdb:vlan-tag":81    "trunk":181
+    @{list}    BuiltIn.Create List    "ovsdb:vlan-tag":81    "trunk":181
     OVSDB.Collect OVSDB Debugs
-    BuiltIn.Wait Until Keyword Succeeds    8s    2s    Utils.Check For Elements Not At URI    ${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}    ${list}    pretty_print_json=True
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    8s
+    ...    2s
+    ...    Utils.Check For Elements Not At URI
+    ...    ${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}
+    ...    ${list}
+    ...    pretty_print_json=True
     Utils.Run Command On Mininet    ${TOOLS_SYSTEM_IP}    sudo ovs-vsctl clear port vlan-tag-port trunks
-    @{list}    BuiltIn.Create List    "ovsdb:vlan-tag":81    "trunk":181    "trunk":182
+    @{list}    BuiltIn.Create List    "ovsdb:vlan-tag":81    "trunk":181    "trunk":182
     OVSDB.Collect OVSDB Debugs
-    BuiltIn.Wait Until Keyword Succeeds    8s    2s    Utils.Check For Elements Not At URI    ${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}    ${list}    pretty_print_json=True
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    8s
+    ...    2s
+    ...    Utils.Check For Elements Not At URI
+    ...    ${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}
+    ...    ${list}
+    ...    pretty_print_json=True
     [Teardown]    Builtin.Run Keywords    Clean OVSDB Test Environment    ${TOOLS_SYSTEM_IP}
     ...    AND    Utils.Report_Failure_Due_To_Bug    OVSDB-413
 
 Check For Bug 4756
     [Documentation]    bug 4756 has been seen in the OVSDB Southbound suites. This test case should be one of the last test
     ...    case executed.
-    Utils.Check Karaf Log File Does Not Have Messages    ${ODL_SYSTEM_IP}    SimpleShardDataTreeCohort.*Unexpected failure in validation phase
+    Utils.Check Karaf Log File Does Not Have Messages
+    ...    ${ODL_SYSTEM_IP}
+    ...    SimpleShardDataTreeCohort.*Unexpected failure in validation phase
     [Teardown]    Utils.Report_Failure_Due_To_Bug    4756
 
 Check For Bug 4794
     [Documentation]    bug 4794 has been seen in the OVSDB Southbound suites. This test case should be one of the last test
     ...    case executed.
-    Utils.Check Karaf Log File Does Not Have Messages    ${ODL_SYSTEM_IP}    Shard.*shard-topology-operational An exception occurred while preCommitting transaction
+    Utils.Check Karaf Log File Does Not Have Messages
+    ...    ${ODL_SYSTEM_IP}
+    ...    Shard.*shard-topology-operational An exception occurred while preCommitting transaction
     [Teardown]    Utils.Report_Failure_Due_To_Bug    4794
 
+
 *** Keywords ***
 Suite Teardown
     [Documentation]    Cleans up test environment, close existing sessions.
-    @{uris} =    Builtin.Create List    ${RFC8040_SOUTHBOUND_NODE_API}uuid%2F${OVSDB_UUID}%2Fbridge%2F${BRIDGE1}    ${RFC8040_SOUTHBOUND_NODE_API}uuid%2F${OVSDB_UUID}%2Fbridge%2F${BRIDGE2}
+    @{uris} =    Builtin.Create List
+    ...    ${RFC8040_SOUTHBOUND_NODE_API}uuid%2F${OVSDB_UUID}%2Fbridge%2F${BRIDGE1}
+    ...    ${RFC8040_SOUTHBOUND_NODE_API}uuid%2F${OVSDB_UUID}%2Fbridge%2F${BRIDGE2}
     OVSDB.Suite Teardown    ${uris}
index dd653680201fde31315a703346e6154e057a5e04..ea60bd2b44f63d22520cbbd3a79a8c7b63f0885e 100644 (file)
@@ -1,28 +1,35 @@
 *** Settings ***
-Documentation     Test suite for Connection Manager
-Suite Setup       OVSDB.Suite Setup
-Suite Teardown    Suite Teardown
-Test Setup        SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
-Force Tags        Southbound
-Library           RequestsLibrary
-Resource          ../../../libraries/OVSDB.robot
-Resource          ../../../libraries/SetupUtils.robot
-Resource          ../../../libraries/Utils.robot
-Resource          ../../../variables/Variables.robot
-Resource          ../../../variables/ovsdb/Variables.robot
+Documentation       Test suite for Connection Manager
+
+Library             RequestsLibrary
+Resource            ../../../libraries/OVSDB.robot
+Resource            ../../../libraries/SetupUtils.robot
+Resource            ../../../libraries/Utils.robot
+Resource            ../../../variables/Variables.robot
+Resource            ../../../variables/ovsdb/Variables.robot
+
+Suite Setup         OVSDB.Suite Setup
+Suite Teardown      Suite Teardown
+Test Setup          SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
+
+Force Tags          southbound
+
 
 *** Variables ***
-${BRIDGE}         ovsconf_exit_br
-${PORT1}          vx1
-${PORT2}          vx2
-@{NODE_LIST}      ${BRIDGE}    ${PORT1}
+${BRIDGE}       ovsconf_exit_br
+${PORT1}        vx1
+${PORT2}        vx2
+@{NODE_LIST}    ${BRIDGE}    ${PORT1}
+
 
 *** Test Cases ***
 Create a Topology in OVSDB node
     [Documentation]    Create topology in OVSDB and ready it for further tests
     Utils.Run Command On Mininet    ${TOOLS_SYSTEM_IP}    sudo ovs-vsctl del-manager
     Utils.Run Command On Mininet    ${TOOLS_SYSTEM_IP}    sudo ovs-vsctl add-br ${BRIDGE}
-    Utils.Run Command On Mininet    ${TOOLS_SYSTEM_IP}    sudo ovs-vsctl add-port ${BRIDGE} ${PORT1} -- set Interface ${PORT1} type=vxlan options:remote_ip=192.168.1.11
+    Utils.Run Command On Mininet
+    ...    ${TOOLS_SYSTEM_IP}
+    ...    sudo ovs-vsctl add-port ${BRIDGE} ${PORT1} -- set Interface ${PORT1} type=vxlan options:remote_ip=192.168.1.11
     Utils.Run Command On Mininet    ${TOOLS_SYSTEM_IP}    sudo ovs-vsctl set-manager ptcp:6634
 
 Connect to OVSDB Node
@@ -31,22 +38,44 @@ Connect to OVSDB Node
 
 Get Operational Topology
     [Documentation]    This request will fetch the operational topology from the connected OVSDB nodes
-    BuiltIn.Wait Until Keyword Succeeds    8s    2s    Utils.Check For Elements At URI    ${RFC8040_OPERATIONAL_TOPO_API}    ${NODE_LIST}    pretty_print_json=True
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    8s
+    ...    2s
+    ...    Utils.Check For Elements At URI
+    ...    ${RFC8040_OPERATIONAL_TOPO_API}
+    ...    ${NODE_LIST}
+    ...    pretty_print_json=True
     [Teardown]    Utils.Report_Failure_Due_To_Bug    5221
 
 Verify Bridge Port Not In Config DS
     [Documentation]    This will fetch the configuration topology from configuration data store to verify the bridge is added to the data store
     @{list} =    BuiltIn.Create List    ${PORT1}
-    BuiltIn.Wait Until Keyword Succeeds    8s    2s    Utils.Check For Elements Not At URI    ${RFC8040_CONFIG_TOPO_API}    ${list}    pretty_print_json=True
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    8s
+    ...    2s
+    ...    Utils.Check For Elements Not At URI
+    ...    ${RFC8040_CONFIG_TOPO_API}
+    ...    ${list}
+    ...    pretty_print_json=True
 
 Create bridge of already added bridge
     [Documentation]    This will add bridge to the config datastore
-    OVSDB.Add Bridge To Ovsdb Node    ${TOOLS_SYSTEM_IP}:${OVSDB_NODE_PORT}    ${TOOLS_SYSTEM_IP}    ${BRIDGE}    0000000000000030
+    OVSDB.Add Bridge To Ovsdb Node
+    ...    ${TOOLS_SYSTEM_IP}:${OVSDB_NODE_PORT}
+    ...    ${TOOLS_SYSTEM_IP}
+    ...    ${BRIDGE}
+    ...    0000000000000030
 
 Get Config Topology with Bridge
     [Documentation]    This will fetch the configuration topology from configuration data store to verify the bridge is added to the data store
     @{list} =    BuiltIn.Create List    ${BRIDGE}
-    BuiltIn.Wait Until Keyword Succeeds    8s    2s    Utils.Check For Elements At URI    ${RFC8040_CONFIG_TOPO_API}    ${list}    pretty_print_json=True
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    8s
+    ...    2s
+    ...    Utils.Check For Elements At URI
+    ...    ${RFC8040_CONFIG_TOPO_API}
+    ...    ${list}
+    ...    pretty_print_json=True
 
 Create Port of already added port in OVSDB
     [Documentation]    This will add port/interface to the config datastore
@@ -54,7 +83,13 @@ Create Port of already added port in OVSDB
 
 Get Config Topology with Bridge and Port
     [Documentation]    This will fetch the configuration topology from configuration data store to verify the bridge is added to the data store
-    BuiltIn.Wait Until Keyword Succeeds    8s    2s    Utils.Check For Elements At URI    ${RFC8040_CONFIG_TOPO_API}    ${NODE_LIST}    pretty_print_json=True
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    8s
+    ...    2s
+    ...    Utils.Check For Elements At URI
+    ...    ${RFC8040_CONFIG_TOPO_API}
+    ...    ${NODE_LIST}
+    ...    pretty_print_json=True
 
 Modify the destination IP of Port
     [Documentation]    This will modify the dst ip of existing port
@@ -63,7 +98,13 @@ Modify the destination IP of Port
 Get Operational Topology with modified Port
     [Documentation]    This request will fetch the operational topology after the Port is added to the bridge
     @{list} =    BuiltIn.Create List    ${BRIDGE}    ${PORT1}    10.0.0.19
-    BuiltIn.Wait Until Keyword Succeeds    8s    2s    Utils.Check For Elements At URI    ${RFC8040_OPERATIONAL_TOPO_API}    ${list}    pretty_print_json=True
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    8s
+    ...    2s
+    ...    Utils.Check For Elements At URI
+    ...    ${RFC8040_OPERATIONAL_TOPO_API}
+    ...    ${list}
+    ...    pretty_print_json=True
     [Teardown]    Utils.Report_Failure_Due_To_Bug    5221
 
 Create Port and attach to a Bridge
@@ -73,28 +114,50 @@ Create Port and attach to a Bridge
 Get Operational Topology with Port
     [Documentation]    This request will fetch the operational topology after the Port is added to the bridge
     @{list} =    BuiltIn.Create List    ${BRIDGE}    ${PORT2}
-    BuiltIn.Wait Until Keyword Succeeds    8s    2s    Utils.Check For Elements At URI    ${RFC8040_OPERATIONAL_TOPO_API}    ${list}    pretty_print_json=True
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    8s
+    ...    2s
+    ...    Utils.Check For Elements At URI
+    ...    ${RFC8040_OPERATIONAL_TOPO_API}
+    ...    ${list}
+    ...    pretty_print_json=True
     [Teardown]    Utils.Report_Failure_Due_To_Bug    5221
 
 Delete the Port1
     [Documentation]    This request will delete the port node from the bridge node and data store.
-    ${resp} =    RequestsLibrary.Delete Request    session    ${RFC8040_SOUTHBOUND_NODE_TOOLS_API}%2Fbridge%2F${BRIDGE}/termination-point=${PORT1}
+    ${resp} =    RequestsLibrary.Delete Request
+    ...    session
+    ...    ${RFC8040_SOUTHBOUND_NODE_TOOLS_API}%2Fbridge%2F${BRIDGE}/termination-point=${PORT1}
     BuiltIn.Should Be Equal As Strings    ${resp.status_code}    204
 
 Get Operational Topology after deletion of Port1
     [Documentation]    This request will fetch the operational topology after the Port is added to the bridge
     @{list} =    BuiltIn.Create List    ${PORT1}
-    BuiltIn.Wait Until Keyword Succeeds    8s    2s    Utils.Check For Elements Not At URI    ${RFC8040_OPERATIONAL_TOPO_API}    ${list}    pretty_print_json=True
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    8s
+    ...    2s
+    ...    Utils.Check For Elements Not At URI
+    ...    ${RFC8040_OPERATIONAL_TOPO_API}
+    ...    ${list}
+    ...    pretty_print_json=True
 
 Delete the Port2
     [Documentation]    This request will delete the port node from the bridge node and data store.
-    ${resp} =    RequestsLibrary.Delete Request    session    ${RFC8040_SOUTHBOUND_NODE_TOOLS_API}%2Fbridge%2F${BRIDGE}/termination-point=${PORT2}
+    ${resp} =    RequestsLibrary.Delete Request
+    ...    session
+    ...    ${RFC8040_SOUTHBOUND_NODE_TOOLS_API}%2Fbridge%2F${BRIDGE}/termination-point=${PORT2}
     BuiltIn.Should Be Equal As Strings    ${resp.status_code}    204
 
 Get Operational Topology after Deletion of Port2
     [Documentation]    This request will fetch the operational topology after the Port is deleted
     @{list} =    BuiltIn.Create List    ${PORT2}
-    BuiltIn.Wait Until Keyword Succeeds    8s    2s    Utils.Check For Elements Not At URI    ${RFC8040_OPERATIONAL_TOPO_API}    ${list}    pretty_print_json=True
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    8s
+    ...    2s
+    ...    Utils.Check For Elements Not At URI
+    ...    ${RFC8040_OPERATIONAL_TOPO_API}
+    ...    ${list}
+    ...    pretty_print_json=True
 
 Delete the Bridge
     [Documentation]    This request will delete the bridge node from the config data store.
@@ -104,7 +167,13 @@ Delete the Bridge
 Get Operational Topology after Deletion of Bridge
     [Documentation]    This request will fetch the operational topology after the Bridge is deleted
     @{list} =    BuiltIn.Create List    ${BRIDGE}    ${PORT1}    ${PORT2}
-    BuiltIn.Wait Until Keyword Succeeds    8s    2s    Utils.Check For Elements Not At URI    ${RFC8040_OPERATIONAL_TOPO_API}    ${list}    pretty_print_json=True
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    8s
+    ...    2s
+    ...    Utils.Check For Elements Not At URI
+    ...    ${RFC8040_OPERATIONAL_TOPO_API}
+    ...    ${list}
+    ...    pretty_print_json=True
 
 Delete the OVSDB Node
     [Documentation]    This request will delete the OVSDB node
@@ -113,21 +182,36 @@ Delete the OVSDB Node
 
 Get Operational Topology after Deletion of OVSDB Node
     [Documentation]    This request will fetch the operational topology after the OVSDB node is deleted
-    @{list} =    BuiltIn.Create List    ovsdb://${TOOLS_SYSTEM_IP}:${OVSDB_NODE_PORT}    ${BRIDGE}    ${PORT1}    ${PORT2}
-    BuiltIn.Wait Until Keyword Succeeds    8s    2s    Utils.Check For Elements Not At URI    ${RFC8040_OPERATIONAL_TOPO_API}    ${list}    pretty_print_json=True
+    @{list} =    BuiltIn.Create List
+    ...    ovsdb://${TOOLS_SYSTEM_IP}:${OVSDB_NODE_PORT}
+    ...    ${BRIDGE}
+    ...    ${PORT1}
+    ...    ${PORT2}
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    8s
+    ...    2s
+    ...    Utils.Check For Elements Not At URI
+    ...    ${RFC8040_OPERATIONAL_TOPO_API}
+    ...    ${list}
+    ...    pretty_print_json=True
 
 Check For Bug 4756
     [Documentation]    bug 4756 has been seen in the OVSDB Southbound suites. This test case should be one of the last test
     ...    case executed
-    Utils.Check Karaf Log File Does Not Have Messages    ${ODL_SYSTEM_IP}    SimpleShardDataTreeCohort.*Unexpected failure in validation phase
+    Utils.Check Karaf Log File Does Not Have Messages
+    ...    ${ODL_SYSTEM_IP}
+    ...    SimpleShardDataTreeCohort.*Unexpected failure in validation phase
     [Teardown]    Utils.Report_Failure_Due_To_Bug    4756
 
 Check For Bug 4794
     [Documentation]    bug 4794 has been seen in the OVSDB Southbound suites. This test case should be one of the last test
     ...    case executed.
-    Utils.Check Karaf Log File Does Not Have Messages    ${ODL_SYSTEM_IP}    Shard.*shard-topology-operational An exception occurred while preCommitting transaction
+    Utils.Check Karaf Log File Does Not Have Messages
+    ...    ${ODL_SYSTEM_IP}
+    ...    Shard.*shard-topology-operational An exception occurred while preCommitting transaction
     [Teardown]    Utils.Report_Failure_Due_To_Bug    4794
 
+
 *** Keywords ***
 Suite Teardown
     [Documentation]    Cleans up test environment, close existing sessions.
index 95d3dd4e0f351c643eec10768d665d09ce4436cd..cb085c2568592b2500496d0cab0afd11e689f2fc 100644 (file)
@@ -1,21 +1,32 @@
 *** Settings ***
-Documentation     Test suite for Connection Manager
-Suite Setup       OVSDB.Suite Setup
-Suite Teardown    Suite Teardown
-Test Setup        SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
-Force Tags        Southbound
-Library           RequestsLibrary
-Resource          ../../../libraries/MininetKeywords.robot
-Resource          ../../../libraries/OVSDB.robot
-Resource          ../../../libraries/SetupUtils.robot
-Resource          ../../../libraries/Utils.robot
-Resource          ../../../variables/Variables.robot
-Resource          ../../../variables/ovsdb/Variables.robot
+Documentation       Test suite for Connection Manager
+
+Library             RequestsLibrary
+Resource            ../../../libraries/MininetKeywords.robot
+Resource            ../../../libraries/OVSDB.robot
+Resource            ../../../libraries/SetupUtils.robot
+Resource            ../../../libraries/Utils.robot
+Resource            ../../../variables/Variables.robot
+Resource            ../../../variables/ovsdb/Variables.robot
+
+Suite Setup         OVSDB.Suite Setup
+Suite Teardown      Suite Teardown
+Test Setup          SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
+
+Force Tags          southbound
+
 
 *** Variables ***
-@{NODE_LIST}      ${OVSDB_NODE_PORT}    ovsdb://${TOOLS_SYSTEM_IP}:${OVSDB_NODE_PORT}    ${TOOLS_SYSTEM_IP}    ${OVSDB_NODE_PORT}    ovsdb://${TOOLS_SYSTEM_2_IP}:${OVSDB_NODE_PORT}    ${TOOLS_SYSTEM_2_IP}
-${MN_OPTS_S1}     --custom ovsdb.py --topo host,1
-${MN_OPTS_S2}     --custom ovsdb.py --topo host,2
+@{NODE_LIST}
+...                 ${OVSDB_NODE_PORT}
+...                 ovsdb://${TOOLS_SYSTEM_IP}:${OVSDB_NODE_PORT}
+...                 ${TOOLS_SYSTEM_IP}
+...                 ${OVSDB_NODE_PORT}
+...                 ovsdb://${TOOLS_SYSTEM_2_IP}:${OVSDB_NODE_PORT}
+...                 ${TOOLS_SYSTEM_2_IP}
+${MN_OPTS_S1}       --custom ovsdb.py --topo host,1
+${MN_OPTS_S2}       --custom ovsdb.py --topo host,2
+
 
 *** Test Cases ***
 Make the OVS instance to listen for connection
@@ -34,30 +45,64 @@ Connect controller to OVSDB Node2
 
 Get Operational Topology from OVSDB Node1 and OVSDB Node2
     [Documentation]    This request will fetch the operational topology from the connected OVSDB nodes
-    BuiltIn.Wait Until Keyword Succeeds    8s    2s    Utils.Check For Elements At URI    ${RFC8040_OPERATIONAL_TOPO_API}    ${NODE_LIST}    pretty_print_json=True
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    8s
+    ...    2s
+    ...    Utils.Check For Elements At URI
+    ...    ${RFC8040_OPERATIONAL_TOPO_API}
+    ...    ${NODE_LIST}
+    ...    pretty_print_json=True
 
 Start the Mininet and create custom topology
     [Documentation]    This will start mininet with custom topology on both the Virtual Machines
-    ${conn_id1} =    MininetKeywords.Start Mininet Single Controller    ${TOOLS_SYSTEM_IP}    ${ODL_SYSTEM_IP}    ${MN_OPTS_S1}    ${OVSDB_CONFIG_DIR}/ovsdb.py
-    ${conn_id2} =    MininetKeywords.Start Mininet Single Controller    ${TOOLS_SYSTEM_2_IP}    ${ODL_SYSTEM_IP}    ${MN_OPTS_S2}    ${OVSDB_CONFIG_DIR}/ovsdb.py
+    ${conn_id1} =    MininetKeywords.Start Mininet Single Controller
+    ...    ${TOOLS_SYSTEM_IP}
+    ...    ${ODL_SYSTEM_IP}
+    ...    ${MN_OPTS_S1}
+    ...    ${OVSDB_CONFIG_DIR}/ovsdb.py
+    ${conn_id2} =    MininetKeywords.Start Mininet Single Controller
+    ...    ${TOOLS_SYSTEM_2_IP}
+    ...    ${ODL_SYSTEM_IP}
+    ...    ${MN_OPTS_S2}
+    ...    ${OVSDB_CONFIG_DIR}/ovsdb.py
 
 Get Operational Topology with custom topology
     [Documentation]    This request will fetch the operational topology from the connected OVSDB nodes to make sure the mininet created custom topology
     @{list} =    BuiltIn.Create List    s1    s2
-    BuiltIn.Wait Until Keyword Succeeds    8s    2s    Utils.Check For Elements At URI    ${RFC8040_OPERATIONAL_TOPO_API}    ${list}    pretty_print_json=True
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    8s
+    ...    2s
+    ...    Utils.Check For Elements At URI
+    ...    ${RFC8040_OPERATIONAL_TOPO_API}
+    ...    ${list}
+    ...    pretty_print_json=True
 
 Add the bridge s1 in the config datastore of OVSDB Node1
     [Documentation]    This request will add already operational bridge to the config data store of the OVSDB node.
-    OVSDB.Add Bridge To Ovsdb Node    ${TOOLS_SYSTEM_IP}:${OVSDB_NODE_PORT}    ${TOOLS_SYSTEM_IP}    s1    0000000000000051
+    OVSDB.Add Bridge To Ovsdb Node
+    ...    ${TOOLS_SYSTEM_IP}:${OVSDB_NODE_PORT}
+    ...    ${TOOLS_SYSTEM_IP}
+    ...    s1
+    ...    0000000000000051
 
 Add the bridge s2 in the config datastore of OVSDB Node2
     [Documentation]    This request will add already operational bridge to the config data store of the OVSDB node.
-    OVSDB.Add Bridge To Ovsdb Node    ${TOOLS_SYSTEM2_IP}:${OVSDB_NODE_PORT}    ${TOOLS_SYSTEM_2_IP}    s2    0000000000000052
+    OVSDB.Add Bridge To Ovsdb Node
+    ...    ${TOOLS_SYSTEM2_IP}:${OVSDB_NODE_PORT}
+    ...    ${TOOLS_SYSTEM_2_IP}
+    ...    s2
+    ...    0000000000000052
 
 Get Config Topology with s1 and s2 Bridges
     [Documentation]    This will fetch the configuration topology from configuration data store to verify the bridge is added to the config data store
     @{list} =    BuiltIn.Create List    s1    s2
-    BuiltIn.Wait Until Keyword Succeeds    8s    2s    Utils.Check For Elements At URI    ${RFC8040_CONFIG_TOPO_API}    ${list}    pretty_print_json=True
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    8s
+    ...    2s
+    ...    Utils.Check For Elements At URI
+    ...    ${RFC8040_CONFIG_TOPO_API}
+    ...    ${list}
+    ...    pretty_print_json=True
 
 Create Vxlan Port and attach to s1 Bridge
     [Documentation]    This request will create vxlan port/interface for vxlan tunnel and attach it to the specific bridge s1 of OVSDB node 1
@@ -70,38 +115,55 @@ Create Vxlan Port and attach to s2 Bridge
 Get Operational Topology with vxlan tunnel
     [Documentation]    This request will fetch the operational topology from the connected OVSDB nodes to verify that the vxlan tunnel is created
     @{list} =    BuiltIn.Create List    s1-s2    s2-s1    ${TOOLS_SYSTEM_IP}    ${TOOLS_SYSTEM_2_IP}
-    BuiltIn.Wait Until Keyword Succeeds    8s    2s    Utils.Check For Elements At URI    ${RFC8040_OPERATIONAL_TOPO_API}    ${list}    pretty_print_json=True
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    8s
+    ...    2s
+    ...    Utils.Check For Elements At URI
+    ...    ${RFC8040_OPERATIONAL_TOPO_API}
+    ...    ${list}
+    ...    pretty_print_json=True
 
 Delete Bridges from config datastore
     [Documentation]    This request will delete the bridges from config data store.
-    [Tags]    Southbound
+    [Tags]    southbound
     OVSDB.Delete Bridge From Ovsdb Node    ${TOOLS_SYSTEM_IP}:${OVSDB_NODE_PORT}    s1
     OVSDB.Delete Bridge From Ovsdb Node    ${TOOLS_SYSTEM_2_IP}:${OVSDB_NODE_PORT}    s2
 
 Disconnect controller connection from the connected OVSDBs nodes
     [Documentation]    This request will disconnect the controller from the connected OVSDB node for clean startup for next suite.
-    [Tags]    Southbound
+    [Tags]    southbound
     OVSDB.Disconnect From Ovsdb Node    ${TOOLS_SYSTEM_IP}
     OVSDB.Disconnect From Ovsdb Node    ${TOOLS_SYSTEM_2_IP}
 
 Verify that the operational topology is clean
     [Documentation]    This request will verify the operational toplogy after the mininet is cleaned.
-    [Tags]    Southbound
+    [Tags]    southbound
     @{list} =    BuiltIn.Create List    ${TOOLS_SYSTEM_IP}    ${TOOLS_SYSTEM_2_IP}    s1    s2
-    BuiltIn.Wait Until Keyword Succeeds    8s    2s    Utils.Check For Elements Not At URI    ${RFC8040_OPERATIONAL_TOPO_API}    ${list}    pretty_print_json=True
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    8s
+    ...    2s
+    ...    Utils.Check For Elements Not At URI
+    ...    ${RFC8040_OPERATIONAL_TOPO_API}
+    ...    ${list}
+    ...    pretty_print_json=True
 
 Check For Bug 4756
     [Documentation]    bug 4756 has been seen in the OVSDB Southbound suites. This test case should be one of the last test
     ...    case executed.
-    Utils.Check Karaf Log File Does Not Have Messages    ${ODL_SYSTEM_IP}    SimpleShardDataTreeCohort.*Unexpected failure in validation phase
+    Utils.Check Karaf Log File Does Not Have Messages
+    ...    ${ODL_SYSTEM_IP}
+    ...    SimpleShardDataTreeCohort.*Unexpected failure in validation phase
     [Teardown]    Utils.Report_Failure_Due_To_Bug    4756
 
 Check For Bug 4794
     [Documentation]    bug 4794 has been seen in the OVSDB Southbound suites. This test case should be one of the last test
     ...    case executed.
-    Utils.Check Karaf Log File Does Not Have Messages    ${ODL_SYSTEM_IP}    Shard.*shard-topology-operational An exception occurred while preCommitting transaction
+    Utils.Check Karaf Log File Does Not Have Messages
+    ...    ${ODL_SYSTEM_IP}
+    ...    Shard.*shard-topology-operational An exception occurred while preCommitting transaction
     [Teardown]    Utils.Report_Failure_Due_To_Bug    4794
 
+
 *** Keywords ***
 Suite Teardown
     [Documentation]    Cleans up test environment, close existing sessions.
index ba5c24297562ed96029fa45f44d60b1520c7d5af..f7e5d0768139983377ea974f7fe3e118770ca6a0 100644 (file)
@@ -1,31 +1,36 @@
 *** Settings ***
-Documentation     Collection of test cases to validate OVSDB projects bugs.
+Documentation       Collection of test cases to validate OVSDB projects bugs.
 ...
-...               TODO: there seems to be some thoughts around never having one-off bug reproduction
-...               test cases, but rather they should exist as another test case in some appropriate
-...               suite. Also it was suggested that using bug ids for test case names was not ideal
-...               this to-do is written in case it's decided to refactor all of these test cases out
-...               of this suite and/or to rename the test cases at a later time.
-Suite Setup       Suite Setup
-Suite Teardown    Suite Teardown
-Test Setup        Test Setup
-Test Teardown     Test Teardown
-Force Tags        Southbound
-Library           OperatingSystem
-Library           RequestsLibrary
-Library           String
-Resource          ../../../libraries/KarafKeywords.robot
-Resource          ../../../libraries/OVSDB.robot
-Resource          ../../../libraries/SetupUtils.robot
-Resource          ../../../libraries/Utils.robot
-Resource          ../../../libraries/WaitForFailure.robot
-Resource          ../../../variables/Variables.robot
-Resource          ../../../variables/ovsdb/Variables.robot
+...                 TODO: there seems to be some thoughts around never having one-off bug reproduction
+...                 test cases, but rather they should exist as another test case in some appropriate
+...                 suite. Also it was suggested that using bug ids for test case names was not ideal
+...                 this to-do is written in case it's decided to refactor all of these test cases out
+...                 of this suite and/or to rename the test cases at a later time.
+
+Library             OperatingSystem
+Library             RequestsLibrary
+Library             String
+Resource            ../../../libraries/KarafKeywords.robot
+Resource            ../../../libraries/OVSDB.robot
+Resource            ../../../libraries/SetupUtils.robot
+Resource            ../../../libraries/Utils.robot
+Resource            ../../../libraries/WaitForFailure.robot
+Resource            ../../../variables/Variables.robot
+Resource            ../../../variables/ovsdb/Variables.robot
+
+Suite Setup         Suite Setup
+Suite Teardown      Suite Teardown
+Test Setup          Test Setup
+Test Teardown       Test Teardown
+
+Force Tags          southbound
+
 
 *** Variables ***
-${BRIDGE}         ovsbug_br
-${OVSDB_UUID}     ${EMPTY}
-${OVSDB_UUID2}    ${EMPTY}
+${BRIDGE}           ovsbug_br
+${OVSDB_UUID}       ${EMPTY}
+${OVSDB_UUID2}      ${EMPTY}
+
 
 *** Test Cases ***
 Bug 7414 Same Endpoint Name
@@ -37,7 +42,9 @@ Bug 7414 Same Endpoint Name
     ${bridge} =    BuiltIn.Set Variable    ovsbug_br_7414
     # connect two ovs
     Utils.Run Command On Mininet    ${TOOLS_SYSTEM_IP}    sudo ovs-vsctl set-manager tcp:${ODL_SYSTEM_IP}:${OVSDBPORT}
-    Utils.Run Command On Mininet    ${TOOLS_SYSTEM_2_IP}    sudo ovs-vsctl set-manager tcp:${ODL_SYSTEM_IP}:${OVSDBPORT}
+    Utils.Run Command On Mininet
+    ...    ${TOOLS_SYSTEM_2_IP}
+    ...    sudo ovs-vsctl set-manager tcp:${ODL_SYSTEM_IP}:${OVSDBPORT}
     BuiltIn.Wait Until Keyword Succeeds    5s    1s    OVSDB.Verify OVS Reports Connected    ${TOOLS_SYSTEM_IP}
     BuiltIn.Wait Until Keyword Succeeds    5s    1s    OVSDB.Verify OVS Reports Connected    ${TOOLS_SYSTEM_2_IP}
     # add brtest to both
@@ -46,8 +53,18 @@ Bug 7414 Same Endpoint Name
     # send one rest request to create a TP endpoint on each ovs (same name)
     ${body} =    OVSDB.Modify Multi Port Body    vtep1    vtep1    ${bridge}
     # check that each ovs has the correct endpoint
-    BuiltIn.Wait Until Keyword Succeeds    60s    10s    Verify TEP Creation on OVS    ${TOOLS_SYSTEM_IP}    ${TOOLS_SYSTEM_2_IP}
-    BuiltIn.Wait Until Keyword Succeeds    60s    10s    Verify TEP Creation on OVS    ${TOOLS_SYSTEM_2_IP}    ${TOOLS_SYSTEM_IP}
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    60s
+    ...    10s
+    ...    Verify TEP Creation on OVS
+    ...    ${TOOLS_SYSTEM_IP}
+    ...    ${TOOLS_SYSTEM_2_IP}
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    60s
+    ...    10s
+    ...    Verify TEP Creation on OVS
+    ...    ${TOOLS_SYSTEM_2_IP}
+    ...    ${TOOLS_SYSTEM_IP}
     [Teardown]    BuiltIn.Run Keywords    Test Teardown
     ...    AND    RequestsLibrary.Delete Request    session    ${RFC8040_TOPO_API}    data=${body}
 
@@ -63,7 +80,9 @@ Bug 7414 Different Endpoint Name
     ${bridge} =    BuiltIn.Set Variable    ovsbug_br_7414
     # connect two ovs
     Utils.Run Command On Mininet    ${TOOLS_SYSTEM_IP}    sudo ovs-vsctl set-manager tcp:${ODL_SYSTEM_IP}:${OVSDBPORT}
-    Utils.Run Command On Mininet    ${TOOLS_SYSTEM_2_IP}    sudo ovs-vsctl set-manager tcp:${ODL_SYSTEM_IP}:${OVSDBPORT}
+    Utils.Run Command On Mininet
+    ...    ${TOOLS_SYSTEM_2_IP}
+    ...    sudo ovs-vsctl set-manager tcp:${ODL_SYSTEM_IP}:${OVSDBPORT}
     BuiltIn.Wait Until Keyword Succeeds    5s    1s    OVSDB.Verify OVS Reports Connected    ${TOOLS_SYSTEM_IP}
     BuiltIn.Wait Until Keyword Succeeds    5s    1s    OVSDB.Verify OVS Reports Connected    ${TOOLS_SYSTEM_2_IP}
     # add brtest to both
@@ -72,8 +91,18 @@ Bug 7414 Different Endpoint Name
     # send one rest request to create a TP endpoint on each ovs (different name)
     ${body} =    OVSDB.Modify Multi Port Body    vtep1    vtep2    ${bridge}
     # check that each ovs has the correct endpoint
-    BuiltIn.Wait Until Keyword Succeeds    60s    10s    Verify TEP Creation on OVS    ${TOOLS_SYSTEM_IP}    ${TOOLS_SYSTEM_2_IP}
-    BuiltIn.Wait Until Keyword Succeeds    60s    10s    Verify TEP Creation on OVS    ${TOOLS_SYSTEM_2_IP}    ${TOOLS_SYSTEM_IP}
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    60s
+    ...    10s
+    ...    Verify TEP Creation on OVS
+    ...    ${TOOLS_SYSTEM_IP}
+    ...    ${TOOLS_SYSTEM_2_IP}
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    60s
+    ...    10s
+    ...    Verify TEP Creation on OVS
+    ...    ${TOOLS_SYSTEM_2_IP}
+    ...    ${TOOLS_SYSTEM_IP}
     [Teardown]    BuiltIn.Run Keywords    Test Teardown
     ...    AND    RequestsLibrary.Delete Request    session    ${RFC8040_TOPO_API}    data=${body}
 
@@ -87,15 +116,43 @@ Bug 5221
     OVSDB.Connect To OVSDB Node    ${TOOLS_SYSTEM_IP}
     BuiltIn.Wait Until Keyword Succeeds    5s    1s    OVSDB.Verify OVS Reports Connected
     @{list} =    BuiltIn.Create List    ovsdb://${TOOLS_SYSTEM_IP}:${OVSDB_NODE_PORT}
-    BuiltIn.Wait Until Keyword Succeeds    8s    2s    Utils.Check For Elements At URI    ${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}    ${list}    pretty_print_json=True
-    OVSDB.Add Bridge To Ovsdb Node    ${TOOLS_SYSTEM_IP}:${OVSDB_NODE_PORT}    ${TOOLS_SYSTEM_IP}    ${bridge}    0000000000005221
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    8s
+    ...    2s
+    ...    Utils.Check For Elements At URI
+    ...    ${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}
+    ...    ${list}
+    ...    pretty_print_json=True
+    OVSDB.Add Bridge To Ovsdb Node
+    ...    ${TOOLS_SYSTEM_IP}:${OVSDB_NODE_PORT}
+    ...    ${TOOLS_SYSTEM_IP}
+    ...    ${bridge}
+    ...    0000000000005221
     @{list} =    BuiltIn.Create List    ovsdb://${TOOLS_SYSTEM_IP}:${OVSDB_NODE_PORT}/bridge/${bridge}
-    BuiltIn.Wait Until Keyword Succeeds    8s    2s    Utils.Check For Elements At URI    ${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}    ${list}    pretty_print_json=True
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    8s
+    ...    2s
+    ...    Utils.Check For Elements At URI
+    ...    ${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}
+    ...    ${list}
+    ...    pretty_print_json=True
     Utils.Run Command On Mininet    ${TOOLS_SYSTEM_IP}    sudo /usr/share/openvswitch/scripts/ovs-ctl stop
-    BuiltIn.Wait Until Keyword Succeeds    8s    2s    Utils.Check For Elements Not At URI    ${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}    ${list}    pretty_print_json=True
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    8s
+    ...    2s
+    ...    Utils.Check For Elements Not At URI
+    ...    ${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}
+    ...    ${list}
+    ...    pretty_print_json=True
     Utils.Run Command On Mininet    ${TOOLS_SYSTEM_IP}    sudo /usr/share/openvswitch/scripts/ovs-ctl start
     # Depending on when the retry timers are firing, it may take some 10s of seconds to reconnect, so setting to 30 to cover that.
-    BuiltIn.Wait Until Keyword Succeeds    30s    2s    Utils.Check For Elements At URI    ${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}    ${list}    pretty_print_json=True
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    30s
+    ...    2s
+    ...    Utils.Check For Elements At URI
+    ...    ${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}
+    ...    ${list}
+    ...    pretty_print_json=True
     [Teardown]    BuiltIn.Run Keywords    Test Teardown
     ...    AND    RequestsLibrary.Delete Request    session    ${RFC8040_SOUTHBOUND_NODE_TOOLS_API}%2Fbridge%2F${bridge}
     ...    AND    RequestsLibrary.Delete Request    session    ${RFC8040_SOUTHBOUND_NODE_TOOLS_API}
@@ -121,7 +178,13 @@ Bug 5177
     BuiltIn.Should Contain    ${resp.text}    ${node}/bridge/${BRIDGE}
     Utils.Run Command On Mininet    ${TOOLS_SYSTEM_IP}    sudo ovs-vsctl set-manager tcp:${ODL_SYSTEM_IP}:${OVSDBPORT}
     @{list} =    BuiltIn.Create List    ${BRIDGE}
-    BuiltIn.Wait Until Keyword Succeeds    8s    2s    Utils.Check For Elements At URI    ${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}    ${list}    pretty_print_json=True
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    8s
+    ...    2s
+    ...    Utils.Check For Elements At URI
+    ...    ${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}
+    ...    ${list}
+    ...    pretty_print_json=True
     # Do not cleanup as the next test requires the steps done in this test
     [Teardown]    BuiltIn.Run Keywords    Utils.Report_Failure_Due_To_Bug    5177
     ...    AND    OVSDB.Log Config And Operational Topology
@@ -137,7 +200,12 @@ Bug 4794
     Delete Bridge From Ovsdb Node    ${node_id}    ${BRIDGE}
     Utils.Run Command On Mininet    ${TOOLS_SYSTEM_IP}    sudo ovs-vsctl del-manager
     # If the exception is seen in karaf.log within 10s, the following line will FAIL, which is the point.
-    Verify_Keyword_Does_Not_Fail_Within_Timeout    10s    1s    Utils.Check Karaf Log File Does Not Have Messages    ${ODL_SYSTEM_IP}    Shard.*shard-topology-operational An exception occurred while preCommitting transaction
+    Verify_Keyword_Does_Not_Fail_Within_Timeout
+    ...    10s
+    ...    1s
+    ...    Utils.Check Karaf Log File Does Not Have Messages
+    ...    ${ODL_SYSTEM_IP}
+    ...    Shard.*shard-topology-operational An exception occurred while preCommitting transaction
     # TODO: Bug 5178
     [Teardown]    BuiltIn.Run Keywords    Test Teardown
     ...    AND    RequestsLibrary.Delete Request    session    ${RFC8040_SOUTHBOUND_NODE_API}${node_id}%2Fbridge%2F${BRIDGE}
@@ -189,24 +257,35 @@ Bug 7160
     OVSDB.Log Config And Operational Topology
     OVSDB.Create Qos Linked Queue
     OVSDB.Log Config And Operational Topology
-    ${resp}    RequestsLibrary.Delete Request    session    ${RFC8040_SOUTHBOUND_NODE_HOST1_API}/ovsdb:qos-entries=${qos}/queue-list=0
+    ${resp} =    RequestsLibrary.Delete Request
+    ...    session
+    ...    ${RFC8040_SOUTHBOUND_NODE_HOST1_API}/ovsdb:qos-entries=${qos}/queue-list=0
     OVSDB.Log Config And Operational Topology
-    ${resp}    RequestsLibrary.Delete Request    session    ${RFC8040_SOUTHBOUND_NODE_HOST1_API}/ovsdb:qos-entries=${qos}
+    ${resp} =    RequestsLibrary.Delete Request
+    ...    session
+    ...    ${RFC8040_SOUTHBOUND_NODE_HOST1_API}/ovsdb:qos-entries=${qos}
     OVSDB.Log Config And Operational Topology
-    ${resp}    RequestsLibrary.Delete Request    session    ${RFC8040_SOUTHBOUND_NODE_HOST1_API}/ovsdb:queues=${queue}
+    ${resp} =    RequestsLibrary.Delete Request
+    ...    session
+    ...    ${RFC8040_SOUTHBOUND_NODE_HOST1_API}/ovsdb:queues=${queue}
     OVSDB.Log Config And Operational Topology
-    ${resp}    RequestsLibrary.Delete Request    session    ${RFC8040_SOUTHBOUND_NODE_HOST1_API}
+    ${resp}    RequestsLibrary.Delete Request    session    ${RFC8040_SOUTHBOUND_NODE_HOST1_API}
     OVSDB.Log Config And Operational Topology
     Utils.Run Command On Mininet    ${TOOLS_SYSTEM_IP}    sudo ovs-vsctl del-manager
     RequestsLibrary.Delete Request    session    ${RFC8040_SOUTHBOUND_NODE_TOOLS_API}
     OVSDB.Log Config And Operational Topology
     BuiltIn.Wait Until Keyword Succeeds    5s    1s    OVSDB.Config and Operational Topology Should Be Empty
 
+
 *** Keywords ***
 Suite Setup
     SetupUtils.Setup_Utils_For_Setup_And_Teardown
     KarafKeywords.Open Controller Karaf Console On Background
-    RequestsLibrary.Create Session    session    http://${ODL_SYSTEM_IP}:${RESTCONFPORT}    auth=${AUTH}    headers=${HEADERS}
+    RequestsLibrary.Create Session
+    ...    session
+    ...    http://${ODL_SYSTEM_IP}:${RESTCONFPORT}
+    ...    auth=${AUTH}
+    ...    headers=${HEADERS}
     Clean All Ovs Nodes
     Utils.Run Command On Mininet    ${TOOLS_SYSTEM_IP}    sudo ovs-vsctl set-manager tcp:${ODL_SYSTEM_IP}:${OVSDBPORT}
     BuiltIn.Wait Until Keyword Succeeds    5s    1s    OVSDB.Verify OVS Reports Connected
@@ -217,9 +296,13 @@ Suite Teardown
     [Documentation]    Cleans up test environment, close existing sessions.
     Clean All Ovs Nodes
     # Best effort to clean config store, by deleting all the types of nodes that are used in this suite
-    RequestsLibrary.Delete Request    session    ${RFC8040_SOUTHBOUND_NODE_API}uuid%2F${OVSDB_UUID}%2Fbridge%2F${BRIDGE}
+    RequestsLibrary.Delete Request
+    ...    session
+    ...    ${RFC8040_SOUTHBOUND_NODE_API}uuid%2F${OVSDB_UUID}%2Fbridge%2F${BRIDGE}
     RequestsLibrary.Delete Request    session    ${RFC8040_SOUTHBOUND_NODE_API}uuid%2F${OVSDB_UUID}
-    RequestsLibrary.Delete Request    session    ${RFC8040_SOUTHBOUND_NODE_API}uuid%2F${OVSDB_UUID2}%2Fbridge%2F${BRIDGE}
+    RequestsLibrary.Delete Request
+    ...    session
+    ...    ${RFC8040_SOUTHBOUND_NODE_API}uuid%2F${OVSDB_UUID2}%2Fbridge%2F${BRIDGE}
     RequestsLibrary.Delete Request    session    ${RFC8040_SOUTHBOUND_NODE_API}uuid%2F${OVSDB_UUID2}
     RequestsLibrary.Delete Request    session    ${RFC8040_SOUTHBOUND_NODE_TOOLS_API}%2Fbridge%2F${BRIDGE}
     RequestsLibrary.Delete Request    session    ${RFC8040_SOUTHBOUND_NODE_TOOLS_API}