2 Documentation Test suite to verify packet flows between vm instances.
3 Suite Setup Devstack Suite Setup source_pwd=yes
4 Suite Teardown Close All Connections
5 Test Setup SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
6 Test Teardown Run Keywords Get OvsDebugInfo
8 Library OperatingSystem
9 Library RequestsLibrary
11 Resource ../../../libraries/Utils.robot
12 Resource ../../../libraries/OpenStackOperations.robot
13 Resource ../../../libraries/DevstackUtils.robot
14 Resource ../../../libraries/OVSDB.robot
15 Resource ../../../libraries/ClusterOvsdb.robot
16 Resource ../../../libraries/ClusterManagement.robot
17 Resource ../../../libraries/SetupUtils.robot
18 Variables ../../../variables/Variables.py
21 @{NETWORKS_NAME} l2_net_1 l2_net_2
22 @{SUBNETS_NAME} l2_sub_net_1 l2_sub_net_2
23 @{NET_1_VM_INSTANCES} VmInstance1_l2_net_1 VmInstance2_net_1 VmInstance3_net_1
24 @{NET_2_VM_INSTANCES} VmInstance1_l2_net_2 VmInstance2_net_2 VmInstance3_net_2
25 @{VM_IPS_NOT_DELETED} 70.0.0.4
26 @{cluster_down_list} ${1} ${2}
27 @{SUBNETS_RANGE} 70.0.0.0/24 80.0.0.0/24
30 Create All Controller Sessions
31 [Documentation] Create sessions for all three contorllers.
32 ClusterManagement.ClusterManagement Setup
35 [Documentation] Create Network with neutron request.
36 : FOR ${NetworkElement} IN @{NETWORKS_NAME}
37 \ OpenStackOperations.Create Network ${NetworkElement}
39 Create Subnets For l2_net_1
40 [Documentation] Create Sub Nets for the Networks with neutron request.
41 OpenStackOperations.Create SubNet l2_net_1 l2_sub_net_1 @{SUBNETS_RANGE}[0]
43 Create Subnets For l2_net_2
44 [Documentation] Create Sub Nets for the Networks with neutron request.
45 OpenStackOperations.Create SubNet l2_net_2 l2_sub_net_2 @{SUBNETS_RANGE}[1]
47 Create Bridge Manually and Verify Before Fail
48 [Documentation] Create bridge with OVS command and verify it gets applied from all instances.
49 ClusterOvsdb.Create Sample Bridge Manually And Verify ${OS_CONTROL_NODE_IP}
51 Add Tap Device Manually and Verify Before Fail
52 [Documentation] Add tap devices to the bridge with OVS command and verify it gets applied from all instances.
53 ClusterOvsdb.Add Sample Tap Device To The Manual Bridge And Verify ${OS_CONTROL_NODE_IP}
55 Delete the Bridge Manually and Verify Before Fail
56 [Documentation] Delete bridge with OVS command and verify it gets deleted from all instances.
57 ClusterOvsdb.Delete Sample Bridge Manually And Verify ${OS_CONTROL_NODE_IP}
60 [Documentation] Kill the karaf in First Controller
61 ${new_cluster_list} = ClusterManagement.Kill Single Member 1
62 Set Suite Variable ${new_cluster_list}
64 Create Bridge Manually and Verify After Fail
65 [Documentation] Create bridge with OVS command and verify it gets applied from all instances.
66 ClusterOvsdb.Create Sample Bridge Manually And Verify ${OS_CONTROL_NODE_IP} ${new_cluster_list}
68 Add Tap Device Manually and Verify After Fail
69 [Documentation] Add tap devices to the bridge with OVS command and verify it gets applied from all instances.
70 ClusterOvsdb.Add Sample Tap Device To The Manual Bridge And Verify ${OS_CONTROL_NODE_IP} ${new_cluster_list}
72 Delete the Bridge Manually and Verify After Fail
73 [Documentation] Delete bridge with OVS command and verify it gets deleted from all instances.
74 ClusterOvsdb.Delete Sample Bridge Manually And Verify ${OS_CONTROL_NODE_IP} ${new_cluster_list}
77 [Documentation] Bring up ODL1 again
78 ClusterManagement.Start Single Member 1
80 Create Bridge Manually and Verify After Recover
81 [Documentation] Create bridge with OVS command and verify it gets applied from all instances.
82 ClusterOvsdb.Create Sample Bridge Manually And Verify ${OS_CONTROL_NODE_IP}
84 Add Tap Device Manually and Verify After Recover
85 [Documentation] Add tap devices to the bridge with OVS command and verify it gets applied from all instances.
86 ClusterOvsdb.Add Sample Tap Device To The Manual Bridge And Verify ${OS_CONTROL_NODE_IP}
88 Delete the Bridge Manually and Verify After Recover
89 [Documentation] Delete bridge with OVS command and verify it gets deleted from all instances.
90 ClusterOvsdb.Delete Sample Bridge Manually And Verify ${OS_CONTROL_NODE_IP}
93 [Documentation] Kill the karaf in Second Controller
94 ClusterManagement.Kill Single Member 2
96 Create Vm Instances For l2_net_2
97 [Documentation] Create Vm instances using flavor and image names for a network.
98 OpenStackOperations.Create Vm Instances l2_net_2 ${NET_2_VM_INSTANCES} sg=csit
100 Create Vm Instances For l2_net_1
101 [Documentation] Create Vm instances using flavor and image names for a network.
102 Log ${devstack_conn_id}
103 OpenStackOperations.Create Vm Instances l2_net_1 ${NET_1_VM_INSTANCES} sg=csit
105 Check Vm Instances Have Ip Address
106 [Documentation] Test case to verify that all created VMs are ready and have received their ip addresses.
107 ... We are polling first and longest on the last VM created assuming that if it's received it's address
108 ... already the other instances should have theirs already or at least shortly thereafter.
109 # first, ensure all VMs are in ACTIVE state. if not, we can just fail the test case and not waste time polling
111 : FOR ${vm} IN @{NET_1_VM_INSTANCES} @{NET_2_VM_INSTANCES}
112 \ Wait Until Keyword Succeeds 15s 5s Verify VM Is ACTIVE ${vm}
113 ${NET1_VM_COUNT} Get Length ${NET_1_VM_INSTANCES}
114 ${NET2_VM_COUNT} Get Length ${NET_2_VM_INSTANCES}
115 ${LOOP_COUNT} Evaluate ${NET1_VM_COUNT}+${NET2_VM_COUNT}
116 : FOR ${index} IN RANGE 1 ${LOOP_COUNT}
117 \ ${NET1_VM_IPS} ${NET1_DHCP_IP} Verify VMs Received DHCP Lease @{NET_1_VM_INSTANCES}
118 \ ${NET2_VM_IPS} ${NET2_DHCP_IP} Verify VMs Received DHCP Lease @{NET_2_VM_INSTANCES}
119 \ ${NET1_VM_LIST_LENGTH}= Get Length ${NET1_VM_IPS}
120 \ ${NET2_VM_LIST_LENGTH}= Get Length ${NET2_VM_IPS}
121 \ Exit For Loop If ${NET1_VM_LIST_LENGTH}==${NET1_VM_COUNT} and ${NET2_VM_LIST_LENGTH}==${NET2_VM_COUNT}
122 Append To List ${NET1_VM_IPS} ${NET1_DHCP_IP}
123 Set Suite Variable ${NET1_VM_IPS}
124 Append To List ${NET2_VM_IPS} ${NET2_DHCP_IP}
125 Set Suite Variable ${NET2_VM_IPS}
126 [Teardown] Run Keywords Show Debugs @{NET_1_VM_INSTANCES} @{NET_2_VM_INSTANCES}
127 ... AND Get OvsDebugInfo
130 [Documentation] Bring up ODL2 again
131 ClusterManagement.Start Single Member 2
133 Ping Vm Instance1 In l2_net_1
134 [Documentation] Check reachability of vm instances by pinging to them.
136 OpenStackOperations.Ping Vm From DHCP Namespace l2_net_1 @{NET_1_VM_IPS}[0]
138 Ping Vm Instance2 In l2_net_1
139 [Documentation] Check reachability of vm instances by pinging to them.
141 OpenStackOperations.Ping Vm From DHCP Namespace l2_net_1 @{NET_1_VM_IPS}[1]
143 Ping Vm Instance3 In l2_net_1
144 [Documentation] Check reachability of vm instances by pinging to them.
146 OpenStackOperations.Ping Vm From DHCP Namespace l2_net_1 @{NET_1_VM_IPS}[2]
148 Ping Vm Instance1 In l2_net_2
149 [Documentation] Check reachability of vm instances by pinging to them.
151 OpenStackOperations.Ping Vm From DHCP Namespace l2_net_2 @{NET_2_VM_IPS}[0]
153 Ping Vm Instance2 In l2_net_2
154 [Documentation] Check reachability of vm instances by pinging to them.
156 OpenStackOperations.Ping Vm From DHCP Namespace l2_net_2 @{NET_2_VM_IPS}[1]
158 Ping Vm Instance3 In l2_net_2
159 [Documentation] Check reachability of vm instances by pinging to them.
161 OpenStackOperations.Ping Vm From DHCP Namespace l2_net_2 @{NET_2_VM_IPS}[2]
164 [Documentation] Kill the karaf in Third Controller
165 ClusterManagement.Kill Single Member 3
167 Connectivity Tests From Vm Instance1 In l2_net_1
168 [Documentation] Logging to the vm instance using generated key pair.
169 OpenStackOperations.Test Operations From Vm Instance l2_net_1 @{NET_1_VM_IPS}[0] ${NET_1_VM_IPS}
171 Connectivity Tests From Vm Instance2 In l2_net_1
172 [Documentation] Logging to the vm instance using generated key pair.
173 OpenStackOperations.Test Operations From Vm Instance l2_net_1 @{NET_1_VM_IPS}[1] ${NET_1_VM_IPS}
175 Connectivity Tests From Vm Instance3 In l2_net_1
176 [Documentation] Logging to the vm instance using generated key pair.
177 OpenStackOperations.Test Operations From Vm Instance l2_net_1 @{NET_1_VM_IPS}[2] ${NET_1_VM_IPS}
180 [Documentation] Bring up ODL3 again
181 ClusterManagement.Start Single Member 3
183 Take Down ODL1 and ODL2
184 [Documentation] Kill the karaf in First and Second Controller
185 ClusterManagement.Kill Members From List Or All ${cluster_down_list}
187 Connectivity Tests From Vm Instance1 In l2_net_2
188 [Documentation] Logging to the vm instance using generated key pair.
189 OpenStackOperations.Test Operations From Vm Instance l2_net_2 @{NET_2_VM_IPS}[0] ${NET_2_VM_IPS}
191 Connectivity Tests From Vm Instance2 In l2_net_2
192 [Documentation] Logging to the vm instance using generated key pair.
193 OpenStackOperations.Test Operations From Vm Instance l2_net_2 @{NET_2_VM_IPS}[1] ${NET_2_VM_IPS}
195 Connectivity Tests From Vm Instance3 In l2_net_2
196 [Documentation] Logging to the vm instance using generated key pair.
197 OpenStackOperations.Test Operations From Vm Instance l2_net_2 @{NET_2_VM_IPS}[2] ${NET_2_VM_IPS}
199 Bring Up ODL1 and ODL2
200 [Documentation] Bring up ODL1 and ODL2 again.
201 ClusterManagement.Start Members From List Or All ${cluster_down_list}
204 [Documentation] Delete Vm instances using instance names.
205 OpenStackOperations.Delete Vm Instance VmInstance1_l2_net_1
207 No Ping For Deleted Vm
208 [Documentation] Check non reachability of deleted vm instances by pinging to them.
209 ${output}= OpenStackOperations.Ping From DHCP Should Not Succeed l2_network_1 @{NET_1_VM_IPS}[0]
211 Delete Vm Instances In network_1
212 [Documentation] Delete Vm instances using instance names in network_1.
213 : FOR ${VmElement} IN @{NET_1_VM_INSTANCES}
214 \ OpenStackOperations.Delete Vm Instance ${VmElement}
216 Delete Vm Instances In network_2
217 [Documentation] Delete Vm instances using instance names in network_2.
218 : FOR ${VmElement} IN @{NET_2_VM_INSTANCES}
219 \ OpenStackOperations.Delete Vm Instance ${VmElement}
221 Delete Sub Networks In network_1
222 [Documentation] Delete Sub Nets for the Networks with neutron request.
223 OpenStackOperations.Delete SubNet l2_sub_net_1
225 Delete Sub Networks In network_2
226 [Documentation] Delete Sub Nets for the Networks with neutron request.
227 OpenStackOperations.Delete SubNet l2_sub_net_2
230 [Documentation] Delete Networks with neutron request.
231 : FOR ${NetworkElement} IN @{NETWORKS_NAME}
232 \ OpenStackOperations.Delete Network ${NetworkElement}