From: Sangwook Ha Date: Sat, 10 Sep 2022 02:31:25 +0000 (-0700) Subject: Update Robot Framework format - step 13 X-Git-Tag: pre-potassium~23 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=integration%2Ftest.git;a=commitdiff_plain;h=5f2b9deac3984a6b2f0c93408f37ac1ae43d6cfd Update Robot Framework format - step 13 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 --- diff --git a/csit/suites/openstack/clustering/ha_l2.robot b/csit/suites/openstack/clustering/ha_l2.robot index a2d98804d3..0617d44df2 100644 --- a/csit/suites/openstack/clustering/ha_l2.robot +++ b/csit/suites/openstack/clustering/ha_l2.robot @@ -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 diff --git a/csit/suites/openstack/clustering/ha_l3.robot b/csit/suites/openstack/clustering/ha_l3.robot index 19c882ac3a..275ae15f1b 100644 --- a/csit/suites/openstack/clustering/ha_l3.robot +++ b/csit/suites/openstack/clustering/ha_l3.robot @@ -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 diff --git a/csit/suites/openstack/clustering/ha_l3_block_port.robot b/csit/suites/openstack/clustering/ha_l3_block_port.robot index 37230bfa11..3a792d389b 100644 --- a/csit/suites/openstack/clustering/ha_l3_block_port.robot +++ b/csit/suites/openstack/clustering/ha_l3_block_port.robot @@ -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 diff --git a/csit/suites/openstack/connectivity/external_network.robot b/csit/suites/openstack/connectivity/external_network.robot index e7c4883457..22ae1b0eb1 100644 --- a/csit/suites/openstack/connectivity/external_network.robot +++ b/csit/suites/openstack/connectivity/external_network.robot @@ -1,74 +1,103 @@ *** 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} diff --git a/csit/suites/openstack/connectivity/l2.robot b/csit/suites/openstack/connectivity/l2.robot index 5d4f49e887..211ca71048 100644 --- a/csit/suites/openstack/connectivity/l2.robot +++ b/csit/suites/openstack/connectivity/l2.robot @@ -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} diff --git a/csit/suites/openstack/connectivity/l3.robot b/csit/suites/openstack/connectivity/l3.robot index b2bbcb2ba9..0c31eb13c2 100644 --- a/csit/suites/openstack/connectivity/l3.robot +++ b/csit/suites/openstack/connectivity/l3.robot @@ -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} diff --git a/csit/suites/openstack/connectivity/live_migration.robot b/csit/suites/openstack/connectivity/live_migration.robot index 19b15d7a79..ed9b5feb8f 100644 --- a/csit/suites/openstack/connectivity/live_migration.robot +++ b/csit/suites/openstack/connectivity/live_migration.robot @@ -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 diff --git a/csit/suites/openstack/connectivity/security_group.robot b/csit/suites/openstack/connectivity/security_group.robot index f3c2954f64..1c908c2ab6 100644 --- a/csit/suites/openstack/connectivity/security_group.robot +++ b/csit/suites/openstack/connectivity/security_group.robot @@ -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} diff --git a/csit/suites/openstack/extensions/sfc.robot b/csit/suites/openstack/extensions/sfc.robot index d094142b2f..49960a0b9f 100644 --- a/csit/suites/openstack/extensions/sfc.robot +++ b/csit/suites/openstack/extensions/sfc.robot @@ -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} diff --git a/csit/suites/openstack/neutron/001__reachability.robot b/csit/suites/openstack/neutron/001__reachability.robot index 99e46291c5..8cfcefe056 100644 --- a/csit/suites/openstack/neutron/001__reachability.robot +++ b/csit/suites/openstack/neutron/001__reachability.robot @@ -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 diff --git a/csit/suites/openstack/neutron/010__networks.robot b/csit/suites/openstack/neutron/010__networks.robot index 5525ed18b3..d34b040b3d 100644 --- a/csit/suites/openstack/neutron/010__networks.robot +++ b/csit/suites/openstack/neutron/010__networks.robot @@ -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 diff --git a/csit/suites/openstack/neutron/020__subnets.robot b/csit/suites/openstack/neutron/020__subnets.robot index f82653d635..8573f88ad4 100644 --- a/csit/suites/openstack/neutron/020__subnets.robot +++ b/csit/suites/openstack/neutron/020__subnets.robot @@ -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 diff --git a/csit/suites/openstack/neutron/030__ports.robot b/csit/suites/openstack/neutron/030__ports.robot index 83db6eb9b2..8638ede155 100644 --- a/csit/suites/openstack/neutron/030__ports.robot +++ b/csit/suites/openstack/neutron/030__ports.robot @@ -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 diff --git a/csit/suites/openstack/neutron/040__delete_ports.robot b/csit/suites/openstack/neutron/040__delete_ports.robot index a6b67668ff..3f812f8a20 100644 --- a/csit/suites/openstack/neutron/040__delete_ports.robot +++ b/csit/suites/openstack/neutron/040__delete_ports.robot @@ -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} diff --git a/csit/suites/openstack/neutron/050__delete_subnets.robot b/csit/suites/openstack/neutron/050__delete_subnets.robot index cbeacdf2c1..dad6a85245 100644 --- a/csit/suites/openstack/neutron/050__delete_subnets.robot +++ b/csit/suites/openstack/neutron/050__delete_subnets.robot @@ -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} diff --git a/csit/suites/openstack/neutron/060__delete_networks.robot b/csit/suites/openstack/neutron/060__delete_networks.robot index 179d89df8a..0a59865f22 100644 --- a/csit/suites/openstack/neutron/060__delete_networks.robot +++ b/csit/suites/openstack/neutron/060__delete_networks.robot @@ -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} diff --git a/csit/suites/openstack/neutron/__init__.robot b/csit/suites/openstack/neutron/__init__.robot index 212d17c97e..a9aaee670f 100644 --- a/csit/suites/openstack/neutron/__init__.robot +++ b/csit/suites/openstack/neutron/__init__.robot @@ -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 diff --git a/csit/suites/openstack/securitygroup/acl.robot b/csit/suites/openstack/securitygroup/acl.robot index cd90ab20ab..4681ce5aed 100644 --- a/csit/suites/openstack/securitygroup/acl.robot +++ b/csit/suites/openstack/securitygroup/acl.robot @@ -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} diff --git a/csit/suites/openstack/securitygroup/neutron_security_group.robot b/csit/suites/openstack/securitygroup/neutron_security_group.robot index c6fa94f4a8..9fe26cfe0a 100644 --- a/csit/suites/openstack/securitygroup/neutron_security_group.robot +++ b/csit/suites/openstack/securitygroup/neutron_security_group.robot @@ -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} diff --git a/csit/suites/openstack/securitygroup/security_group_l3bcast.robot b/csit/suites/openstack/securitygroup/security_group_l3bcast.robot index 1be1169b2b..54b57b1a71 100644 --- a/csit/suites/openstack/securitygroup/security_group_l3bcast.robot +++ b/csit/suites/openstack/securitygroup/security_group_l3bcast.robot @@ -1,75 +1,142 @@ *** 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} diff --git a/csit/suites/openstack/tempest/tempest.robot b/csit/suites/openstack/tempest/tempest.robot index 3c2ced2f42..ec2f894319 100644 --- a/csit/suites/openstack/tempest/tempest.robot +++ b/csit/suites/openstack/tempest/tempest.robot @@ -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 diff --git a/csit/suites/ovsdb/Southbound_Cluster/010__Ovsdb_Southbound_Cluster.robot b/csit/suites/ovsdb/Southbound_Cluster/010__Ovsdb_Southbound_Cluster.robot index 7263e4170d..0a1f4a4a9e 100644 --- a/csit/suites/ovsdb/Southbound_Cluster/010__Ovsdb_Southbound_Cluster.robot +++ b/csit/suites/ovsdb/Southbound_Cluster/010__Ovsdb_Southbound_Cluster.robot @@ -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 diff --git a/csit/suites/ovsdb/Southbound_Cluster/020__Southbound_Cluster_Extension.robot b/csit/suites/ovsdb/Southbound_Cluster/020__Southbound_Cluster_Extension.robot index f6a9740ec9..15e7cac0f4 100644 --- a/csit/suites/ovsdb/Southbound_Cluster/020__Southbound_Cluster_Extension.robot +++ b/csit/suites/ovsdb/Southbound_Cluster/020__Southbound_Cluster_Extension.robot @@ -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 diff --git a/csit/suites/ovsdb/Southbound_Domain/010__configure_1_ovsdb_node.robot b/csit/suites/ovsdb/Southbound_Domain/010__configure_1_ovsdb_node.robot index 8dc90d6fad..4067abaa91 100644 --- a/csit/suites/ovsdb/Southbound_Domain/010__configure_1_ovsdb_node.robot +++ b/csit/suites/ovsdb/Southbound_Domain/010__configure_1_ovsdb_node.robot @@ -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. diff --git a/csit/suites/ovsdb/Southbound_Domain/020__connection_manager.robot b/csit/suites/ovsdb/Southbound_Domain/020__connection_manager.robot index 301f8a7711..04de1db840 100644 --- a/csit/suites/ovsdb/Southbound_Domain/020__connection_manager.robot +++ b/csit/suites/ovsdb/Southbound_Domain/020__connection_manager.robot @@ -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} diff --git a/csit/suites/ovsdb/Southbound_Domain/030__configure_exit_ovsdb_node.robot b/csit/suites/ovsdb/Southbound_Domain/030__configure_exit_ovsdb_node.robot index dd65368020..ea60bd2b44 100644 --- a/csit/suites/ovsdb/Southbound_Domain/030__configure_exit_ovsdb_node.robot +++ b/csit/suites/ovsdb/Southbound_Domain/030__configure_exit_ovsdb_node.robot @@ -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. diff --git a/csit/suites/ovsdb/Southbound_Domain/040__Vxlan_Extension_Test.robot b/csit/suites/ovsdb/Southbound_Domain/040__Vxlan_Extension_Test.robot index 95d3dd4e0f..cb085c2568 100644 --- a/csit/suites/ovsdb/Southbound_Domain/040__Vxlan_Extension_Test.robot +++ b/csit/suites/ovsdb/Southbound_Domain/040__Vxlan_Extension_Test.robot @@ -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. diff --git a/csit/suites/ovsdb/Southbound_Domain/Bug_Validation.robot b/csit/suites/ovsdb/Southbound_Domain/Bug_Validation.robot index ba5c242975..f7e5d07681 100644 --- a/csit/suites/ovsdb/Southbound_Domain/Bug_Validation.robot +++ b/csit/suites/ovsdb/Southbound_Domain/Bug_Validation.robot @@ -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}