Tidy after recent merges
[integration/test.git] / csit / suites / openstack / clustering / 01_l2_tests.robot
1 *** Settings ***
2 Documentation     Test suite to verify packet flows between vm instances.
3 Suite Setup       Devstack Suite Setup Tests    source_pwd=yes
4 Suite Teardown    Close All Connections
5 Test Teardown     Run Keywords    Show Debugs    ${NET_1_VM_INSTANCES}
6 ...               AND    Show Debugs    ${NET_2_VM_INSTANCES}
7 ...               AND    Get OvsDebugInfo
8 Library           SSHLibrary
9 Library           OperatingSystem
10 Library           RequestsLibrary
11 Library           Collections
12 Resource          ../../../libraries/Utils.robot
13 Resource          ../../../libraries/OpenStackOperations.robot
14 Resource          ../../../libraries/DevstackUtils.robot
15 Resource          ../../../libraries/OVSDB.robot
16 Resource          ../../../libraries/ClusterOvsdb.robot
17 Resource          ../../../libraries/ClusterManagement.robot
18 Variables         ../../../variables/Variables.py
19
20 *** Variables ***
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 @{NET_1_VM_IPS}    70.0.0.3    70.0.0.4    70.0.0.5
26 @{NET_2_VM_IPS}    80.0.0.3    80.0.0.4    80.0.0.5
27 @{VM_IPS_NOT_DELETED}    70.0.0.4
28 @{GATEWAY_IPS}    70.0.0.1    80.0.0.1
29 @{DHCP_IPS}       70.0.0.2    80.0.0.2
30 @{cluster_down_list}    ${1}    ${2}
31 @{SUBNETS_RANGE}    70.0.0.0/24    80.0.0.0/24
32
33 *** Test Cases ***
34 Create All Controller Sessions
35     [Documentation]    Create sessions for all three contorllers.
36     ClusterManagement.ClusterManagement Setup
37
38 Check OVS Manager Connection Status
39     [Documentation]    This will verify if the OVS manager is connected
40     ${output}=    Wait Until Keyword Succeeds    5s    1s    Ovsdb.Verify OVS Reports Connected    ${OS_CONTROL_NODE_IP}
41     Log    ${output}
42     Set Suite Variable    ${status}    is_connected: true
43     ${dictionary}=    Create Dictionary    ${status}=9
44     Utils.Check Item Occurrence    ${output}    ${dictionary}
45
46 Create Networks
47     [Documentation]    Create Network with neutron request.
48     : FOR    ${NetworkElement}    IN    @{NETWORKS_NAME}
49     \    OpenStackOperations.Create Network    ${NetworkElement}
50
51 Create Subnets For l2_net_1
52     [Documentation]    Create Sub Nets for the Networks with neutron request.
53     OpenStackOperations.Create SubNet    l2_net_1    l2_sub_net_1    @{SUBNETS_RANGE}[0]
54
55 Create Subnets For l2_net_2
56     [Documentation]    Create Sub Nets for the Networks with neutron request.
57     OpenStackOperations.Create SubNet    l2_net_2    l2_sub_net_2    @{SUBNETS_RANGE}[1]
58
59 Create Bridge Manually and Verify Before Fail
60     [Documentation]    Create bridge with OVS command and verify it gets applied from all instances.
61     ClusterOvsdb.Create Sample Bridge Manually And Verify    ${OS_CONTROL_NODE_IP}
62
63 Add Tap Device Manually and Verify Before Fail
64     [Documentation]    Add tap devices to the bridge with OVS command and verify it gets applied from all instances.
65     ClusterOvsdb.Add Sample Tap Device To The Manual Bridge And Verify    ${OS_CONTROL_NODE_IP}
66
67 Delete the Bridge Manually and Verify Before Fail
68     [Documentation]    Delete bridge with OVS command and verify it gets deleted from all instances.
69     ClusterOvsdb.Delete Sample Bridge Manually And Verify    ${OS_CONTROL_NODE_IP}
70
71 Take Down ODL1
72     [Documentation]    Kill the karaf in First Controller
73     ${new_cluster_list} =    ClusterManagement.Kill Single Member    1
74     Set Suite Variable    ${new_cluster_list}
75
76 Create Bridge Manually and Verify After Fail
77     [Documentation]    Create bridge with OVS command and verify it gets applied from all instances.
78     ClusterOvsdb.Create Sample Bridge Manually And Verify    ${OS_CONTROL_NODE_IP}    ${new_cluster_list}
79
80 Add Tap Device Manually and Verify After Fail
81     [Documentation]    Add tap devices to the bridge with OVS command and verify it gets applied from all instances.
82     ClusterOvsdb.Add Sample Tap Device To The Manual Bridge And Verify    ${OS_CONTROL_NODE_IP}    ${new_cluster_list}
83
84 Delete the Bridge Manually and Verify After Fail
85     [Documentation]    Delete bridge with OVS command and verify it gets deleted from all instances.
86     ClusterOvsdb.Delete Sample Bridge Manually And Verify    ${OS_CONTROL_NODE_IP}    ${new_cluster_list}
87
88 Create Vm Instances For l2_net_1
89     [Documentation]    Create Vm instances using flavor and image names for a network.
90     Log    ${devstack_conn_id}
91     OpenStackOperations.Create Vm Instances    l2_net_1    ${NET_1_VM_INSTANCES}    sg=csit
92
93 Bring Up ODL1
94     [Documentation]    Bring up ODL1 again
95     ClusterManagement.Start Single Member    1
96
97 Create Bridge Manually and Verify After Recover
98     [Documentation]    Create bridge with OVS command and verify it gets applied from all instances.
99     ClusterOvsdb.Create Sample Bridge Manually And Verify    ${OS_CONTROL_NODE_IP}
100
101 Add Tap Device Manually and Verify After Recover
102     [Documentation]    Add tap devices to the bridge with OVS command and verify it gets applied from all instances.
103     ClusterOvsdb.Add Sample Tap Device To The Manual Bridge And Verify    ${OS_CONTROL_NODE_IP}
104
105 Delete the Bridge Manually and Verify After Recover
106     [Documentation]    Delete bridge with OVS command and verify it gets deleted from all instances.
107     ClusterOvsdb.Delete Sample Bridge Manually And Verify    ${OS_CONTROL_NODE_IP}
108
109 Take Down ODL2
110     [Documentation]    Kill the karaf in Second Controller
111     ClusterManagement.Kill Single Member    2
112
113 Create Vm Instances For l2_net_2
114     [Documentation]    Create Vm instances using flavor and image names for a network.
115     OpenStackOperations.Create Vm Instances    l2_net_2    ${NET_2_VM_INSTANCES}    sg=csit
116
117 Bring Up ODL2
118     [Documentation]    Bring up ODL2 again
119     ClusterManagement.Start Single Member    2
120
121 Ping Vm Instance1 In l2_net_1
122     [Documentation]    Check reachability of vm instances by pinging to them.
123     Get OvsDebugInfo
124     OpenStackOperations.Ping Vm From DHCP Namespace    l2_net_1    @{NET_1_VM_IPS}[0]
125
126 Ping Vm Instance2 In l2_net_1
127     [Documentation]    Check reachability of vm instances by pinging to them.
128     Get OvsDebugInfo
129     OpenStackOperations.Ping Vm From DHCP Namespace    l2_net_1    @{NET_1_VM_IPS}[1]
130
131 Ping Vm Instance3 In l2_net_1
132     [Documentation]    Check reachability of vm instances by pinging to them.
133     Get OvsDebugInfo
134     OpenStackOperations.Ping Vm From DHCP Namespace    l2_net_1    @{NET_1_VM_IPS}[2]
135
136 Ping Vm Instance1 In l2_net_2
137     [Documentation]    Check reachability of vm instances by pinging to them.
138     Get OvsDebugInfo
139     OpenStackOperations.Ping Vm From DHCP Namespace    l2_net_2    @{NET_2_VM_IPS}[0]
140
141 Ping Vm Instance2 In l2_net_2
142     [Documentation]    Check reachability of vm instances by pinging to them.
143     Get OvsDebugInfo
144     OpenStackOperations.Ping Vm From DHCP Namespace    l2_net_2    @{NET_2_VM_IPS}[1]
145
146 Ping Vm Instance3 In l2_net_2
147     [Documentation]    Check reachability of vm instances by pinging to them.
148     Get OvsDebugInfo
149     OpenStackOperations.Ping Vm From DHCP Namespace    l2_net_2    @{NET_2_VM_IPS}[2]
150
151 Take Down ODL3
152     [Documentation]    Kill the karaf in Third Controller
153     ClusterManagement.Kill Single Member    3
154
155 Connectivity Tests From Vm Instance1 In l2_net_1
156     [Documentation]    Logging to the vm instance using generated key pair.
157     ${dst_ip_list}=    Create List    @{NET_1_VM_IPS}[1]    @{DHCP_IPS}[0]    @{NET_1_VM_IPS}[2]
158     Log    ${dst_ip_list}
159     Get OvsDebugInfo
160     OpenStackOperations.Test Operations From Vm Instance    l2_net_1    @{NET_1_VM_IPS}[0]    ${dst_ip_list}
161
162 Connectivity Tests From Vm Instance2 In l2_net_1
163     [Documentation]    Logging to the vm instance using generated key pair.
164     ${dst_ip_list}=    Create List    @{NET_1_VM_IPS}[0]    @{DHCP_IPS}[0]    @{NET_1_VM_IPS}[2]
165     Log    ${dst_ip_list}
166     Get OvsDebugInfo
167     OpenStackOperations.Test Operations From Vm Instance    l2_net_1    @{NET_1_VM_IPS}[1]    ${dst_ip_list}
168
169 Connectivity Tests From Vm Instance3 In l2_net_1
170     [Documentation]    Logging to the vm instance using generated key pair.
171     ${dst_ip_list}=    Create List    @{NET_1_VM_IPS}[0]    @{DHCP_IPS}[0]    @{NET_1_VM_IPS}[1]
172     Log    ${dst_ip_list}
173     Get OvsDebugInfo
174     OpenStackOperations.Test Operations From Vm Instance    l2_net_1    @{NET_1_VM_IPS}[2]    ${dst_ip_list}
175
176 Bring Up ODL3
177     [Documentation]    Bring up ODL3 again
178     ClusterManagement.Start Single Member    3
179
180 Take Down ODL1 and ODL2
181     [Documentation]    Kill the karaf in First and Second Controller
182     ClusterManagement.Kill Members From List Or All    ${cluster_down_list}
183
184 Connectivity Tests From Vm Instance1 In l2_net_2
185     [Documentation]    Logging to the vm instance using generated key pair.
186     ${dst_ip_list}=    Create List    @{NET_2_VM_IPS}[1]    @{DHCP_IPS}[1]    @{NET_2_VM_IPS}[2]
187     Log    ${dst_ip_list}
188     Get OvsDebugInfo
189     OpenStackOperations.Test Operations From Vm Instance    l2_net_2    @{NET_2_VM_IPS}[0]    ${dst_ip_list}
190
191 Connectivity Tests From Vm Instance2 In l2_net_2
192     [Documentation]    Logging to the vm instance using generated key pair.
193     ${dst_ip_list}=    Create List    @{NET_2_VM_IPS}[0]    @{DHCP_IPS}[1]    @{NET_2_VM_IPS}[2]
194     Log    ${dst_ip_list}
195     Get OvsDebugInfo
196     OpenStackOperations.Test Operations From Vm Instance    l2_net_2    @{NET_2_VM_IPS}[1]    ${dst_ip_list}
197
198 Connectivity Tests From Vm Instance3 In l2_net_2
199     [Documentation]    Logging to the vm instance using generated key pair.
200     ${dst_ip_list}=    Create List    @{NET_2_VM_IPS}[0]    @{DHCP_IPS}[1]    @{NET_2_VM_IPS}[1]
201     Log    ${dst_ip_list}
202     Get OvsDebugInfo
203     OpenStackOperations.Test Operations From Vm Instance    l2_net_2    @{NET_2_VM_IPS}[2]    ${dst_ip_list}
204
205 Bring Up ODL1 and ODL2
206     [Documentation]    Bring up ODL1 and ODL2 again.
207     ClusterManagement.Start Members From List Or All    ${cluster_down_list}
208
209 Delete Vm Instance
210     [Documentation]    Delete Vm instances using instance names.
211     OpenStackOperations.Delete Vm Instance    VmInstance1_l2_net_1
212
213 No Ping For Deleted Vm
214     [Documentation]    Check non reachability of deleted vm instances by pinging to them.
215     ${output}=    OpenStackOperations.Ping From DHCP Should Not Succeed    l2_network_1    @{NET_1_VM_IPS}[0]
216
217 Delete Vm Instances In network_1
218     [Documentation]    Delete Vm instances using instance names in network_1.
219     : FOR    ${VmElement}    IN    @{NET_1_VM_INSTANCES}
220     \    OpenStackOperations.Delete Vm Instance    ${VmElement}
221
222 Delete Vm Instances In network_2
223     [Documentation]    Delete Vm instances using instance names in network_2.
224     : FOR    ${VmElement}    IN    @{NET_2_VM_INSTANCES}
225     \    OpenStackOperations.Delete Vm Instance    ${VmElement}
226
227 Delete Sub Networks In network_1
228     [Documentation]    Delete Sub Nets for the Networks with neutron request.
229     OpenStackOperations.Delete SubNet    l2_sub_net_1
230
231 Delete Sub Networks In network_2
232     [Documentation]    Delete Sub Nets for the Networks with neutron request.
233     OpenStackOperations.Delete SubNet    l2_sub_net_2
234
235 Delete Networks
236     [Documentation]    Delete Networks with neutron request.
237     : FOR    ${NetworkElement}    IN    @{NETWORKS_NAME}
238     \    OpenStackOperations.Delete Network    ${NetworkElement}