*** 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.
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}
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
*** 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.
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
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}
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.
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.
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
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
*** 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
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
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}
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]
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
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
*** 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)
[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
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}
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
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}
*** 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
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}
*** 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)
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}
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}
*** 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
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
*** 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
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
[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
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
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.
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
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
${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}
*** 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
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
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
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
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
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
END
OpenStackOperations.Delete SecurityGroup ${SECURITY_GROUP}
+
*** Keywords ***
Suite Setup
OpenStackOperations.OpenStack Suite Setup
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
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}
*** 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
*** 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
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
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
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
*** 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
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
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
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
*** 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
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
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
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
*** 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
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}
${resp} get request ODLSession ${NEUTRON_PORTS_API}/${PORTID}
Should be Equal As Strings ${resp.status_code} 404
+
*** Keywords ***
Check Port Exists
[Arguments] ${portid}
*** 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
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}
${resp} get request ODLSession ${NEUTRON_SUBNETS_API}/${SUBNETID}
Should be Equal As Strings ${resp.status_code} 404
+
*** Keywords ***
Check Subnet Exists
[Arguments] ${subnetid}
*** 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
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}
${resp} get request ODLSession ${NEUTRON_NETWORKS_API}/${NETID}
Should be Equal As Strings ${resp.status_code} 404
+
*** Keywords ***
Check Network Exists
[Arguments] ${netid}
*** 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
*** 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}
${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}
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
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}
*** 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}
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}
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}
*** 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
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}
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}
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}
*** 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
*** 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
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}
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}
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
[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
*** 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
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}
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}
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
[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
*** 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
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
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
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.
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
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
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
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
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
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.
*** 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
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}
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
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
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
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
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}
*** 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
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
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
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
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.
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
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.
*** 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
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
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.
*** 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
${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
# 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}
${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
# 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}
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}
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
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}
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
[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}