Eliminate getting model dumps when 2 ODL nodes are down
[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    source_pwd=yes
4 Suite Teardown    Close All Connections
5 Test Setup        SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
6 Test Teardown     Get Test Teardown Debugs
7 Library           SSHLibrary
8 Library           OperatingSystem
9 Library           RequestsLibrary
10 Library           Collections
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
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 @{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
28
29 *** Test Cases ***
30 Create All Controller Sessions
31     [Documentation]    Create sessions for all three contorllers.
32     ClusterManagement.ClusterManagement Setup
33
34 Create Networks
35     [Documentation]    Create Network with neutron request.
36     : FOR    ${NetworkElement}    IN    @{NETWORKS_NAME}
37     \    OpenStackOperations.Create Network    ${NetworkElement}
38
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]
42
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]
46
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}
50
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}
54
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}
58
59 Take Down ODL1
60     [Documentation]    Kill the karaf in First Controller
61     ${new_cluster_list} =    ClusterManagement.Kill Single Member    1
62     Set Suite Variable    ${new_cluster_list}
63
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}
67
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}
71
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}
75
76 Bring Up ODL1
77     [Documentation]    Bring up ODL1 again
78     ClusterManagement.Start Single Member    1
79
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}
83
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}
87
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}
91
92 Take Down ODL2
93     [Documentation]    Kill the karaf in Second Controller
94     ClusterManagement.Kill Single Member    2
95
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
99
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
104
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
110     # for dhcp addresses
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 Test Teardown Debugs
128
129 Bring Up ODL2
130     [Documentation]    Bring up ODL2 again
131     ClusterManagement.Start Single Member    2
132
133 Ping Vm Instance1 In l2_net_1
134     [Documentation]    Check reachability of vm instances by pinging to them.
135     Get OvsDebugInfo
136     OpenStackOperations.Ping Vm From DHCP Namespace    l2_net_1    @{NET_1_VM_IPS}[0]
137
138 Ping Vm Instance2 In l2_net_1
139     [Documentation]    Check reachability of vm instances by pinging to them.
140     Get OvsDebugInfo
141     OpenStackOperations.Ping Vm From DHCP Namespace    l2_net_1    @{NET_1_VM_IPS}[1]
142
143 Ping Vm Instance3 In l2_net_1
144     [Documentation]    Check reachability of vm instances by pinging to them.
145     Get OvsDebugInfo
146     OpenStackOperations.Ping Vm From DHCP Namespace    l2_net_1    @{NET_1_VM_IPS}[2]
147
148 Ping Vm Instance1 In l2_net_2
149     [Documentation]    Check reachability of vm instances by pinging to them.
150     Get OvsDebugInfo
151     OpenStackOperations.Ping Vm From DHCP Namespace    l2_net_2    @{NET_2_VM_IPS}[0]
152
153 Ping Vm Instance2 In l2_net_2
154     [Documentation]    Check reachability of vm instances by pinging to them.
155     Get OvsDebugInfo
156     OpenStackOperations.Ping Vm From DHCP Namespace    l2_net_2    @{NET_2_VM_IPS}[1]
157
158 Ping Vm Instance3 In l2_net_2
159     [Documentation]    Check reachability of vm instances by pinging to them.
160     Get OvsDebugInfo
161     OpenStackOperations.Ping Vm From DHCP Namespace    l2_net_2    @{NET_2_VM_IPS}[2]
162
163 Take Down ODL3
164     [Documentation]    Kill the karaf in Third Controller
165     ClusterManagement.Kill Single Member    3
166
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}
170
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}
174
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}
178
179 Bring Up ODL3
180     [Documentation]    Bring up ODL3 again
181     ClusterManagement.Start Single Member    3
182
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}
186     [Teardown]    Get OvsDebugInfo
187
188 Connectivity Tests From Vm Instance1 In l2_net_2
189     [Documentation]    Logging to the vm instance using generated key pair.
190     OpenStackOperations.Test Operations From Vm Instance    l2_net_2    @{NET_2_VM_IPS}[0]    ${NET_2_VM_IPS}
191     [Teardown]    Get OvsDebugInfo
192
193 Connectivity Tests From Vm Instance2 In l2_net_2
194     [Documentation]    Logging to the vm instance using generated key pair.
195     OpenStackOperations.Test Operations From Vm Instance    l2_net_2    @{NET_2_VM_IPS}[1]    ${NET_2_VM_IPS}
196     [Teardown]    Get OvsDebugInfo
197
198 Connectivity Tests From Vm Instance3 In l2_net_2
199     [Documentation]    Logging to the vm instance using generated key pair.
200     OpenStackOperations.Test Operations From Vm Instance    l2_net_2    @{NET_2_VM_IPS}[2]    ${NET_2_VM_IPS}
201     [Teardown]    Get OvsDebugInfo
202
203 Bring Up ODL1 and ODL2
204     [Documentation]    Bring up ODL1 and ODL2 again.
205     ClusterManagement.Start Members From List Or All    ${cluster_down_list}
206
207 Delete Vm Instance
208     [Documentation]    Delete Vm instances using instance names.
209     OpenStackOperations.Delete Vm Instance    VmInstance1_l2_net_1
210
211 No Ping For Deleted Vm
212     [Documentation]    Check non reachability of deleted vm instances by pinging to them.
213     ${output}=    OpenStackOperations.Ping From DHCP Should Not Succeed    l2_network_1    @{NET_1_VM_IPS}[0]
214
215 Delete Vm Instances In network_1
216     [Documentation]    Delete Vm instances using instance names in network_1.
217     : FOR    ${VmElement}    IN    @{NET_1_VM_INSTANCES}
218     \    OpenStackOperations.Delete Vm Instance    ${VmElement}
219
220 Delete Vm Instances In network_2
221     [Documentation]    Delete Vm instances using instance names in network_2.
222     : FOR    ${VmElement}    IN    @{NET_2_VM_INSTANCES}
223     \    OpenStackOperations.Delete Vm Instance    ${VmElement}
224
225 Delete Sub Networks In network_1
226     [Documentation]    Delete Sub Nets for the Networks with neutron request.
227     OpenStackOperations.Delete SubNet    l2_sub_net_1
228
229 Delete Sub Networks In network_2
230     [Documentation]    Delete Sub Nets for the Networks with neutron request.
231     OpenStackOperations.Delete SubNet    l2_sub_net_2
232
233 Delete Networks
234     [Documentation]    Delete Networks with neutron request.
235     : FOR    ${NetworkElement}    IN    @{NETWORKS_NAME}
236     \    OpenStackOperations.Delete Network    ${NetworkElement}