Fix DHCP checks in netvirt CSIT, fail and log
[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     : FOR    ${index}    IN RANGE    1    5
114     \    ${NET1_VM_IPS}    ${NET1_DHCP_IP}    Verify VMs Received DHCP Lease    @{NET_1_VM_INSTANCES}
115     \    ${NET2_VM_IPS}    ${NET2_DHCP_IP}    Verify VMs Received DHCP Lease    @{NET_2_VM_INSTANCES}
116     \    ${VM_IPS}=    Collections.Combine Lists    ${NET1_VM_IPS}    ${NET2_VM_IPS}
117     \    ${status}    ${message}    Run Keyword And Ignore Error    List Should Not Contain Value    ${VM_IPS}    None
118     \    Exit For Loop If    '${status}' == 'PASS'
119     \    BuiltIn.Sleep    5s
120     : FOR    ${vm}    IN    @{NET_1_VM_INSTANCES}    @{NET_2_VM_INSTANCES}
121     \    Write Commands Until Prompt    nova console-log ${vm}    30s
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     Should Not Contain    ${NET1_VM_IPS}    None
127     Should Not Contain    ${NET2_VM_IPS}    None
128     [Teardown]    Run Keywords    Show Debugs    @{NET_1_VM_INSTANCES}    @{NET_2_VM_INSTANCES}
129     ...    AND    Get Test Teardown Debugs
130
131 Bring Up ODL2
132     [Documentation]    Bring up ODL2 again
133     ClusterManagement.Start Single Member    2
134
135 Ping Vm Instance1 In l2_net_1
136     [Documentation]    Check reachability of vm instances by pinging to them.
137     Get OvsDebugInfo
138     OpenStackOperations.Ping Vm From DHCP Namespace    l2_net_1    @{NET_1_VM_IPS}[0]
139
140 Ping Vm Instance2 In l2_net_1
141     [Documentation]    Check reachability of vm instances by pinging to them.
142     Get OvsDebugInfo
143     OpenStackOperations.Ping Vm From DHCP Namespace    l2_net_1    @{NET_1_VM_IPS}[1]
144
145 Ping Vm Instance3 In l2_net_1
146     [Documentation]    Check reachability of vm instances by pinging to them.
147     Get OvsDebugInfo
148     OpenStackOperations.Ping Vm From DHCP Namespace    l2_net_1    @{NET_1_VM_IPS}[2]
149
150 Ping Vm Instance1 In l2_net_2
151     [Documentation]    Check reachability of vm instances by pinging to them.
152     Get OvsDebugInfo
153     OpenStackOperations.Ping Vm From DHCP Namespace    l2_net_2    @{NET_2_VM_IPS}[0]
154
155 Ping Vm Instance2 In l2_net_2
156     [Documentation]    Check reachability of vm instances by pinging to them.
157     Get OvsDebugInfo
158     OpenStackOperations.Ping Vm From DHCP Namespace    l2_net_2    @{NET_2_VM_IPS}[1]
159
160 Ping Vm Instance3 In l2_net_2
161     [Documentation]    Check reachability of vm instances by pinging to them.
162     Get OvsDebugInfo
163     OpenStackOperations.Ping Vm From DHCP Namespace    l2_net_2    @{NET_2_VM_IPS}[2]
164
165 Take Down ODL3
166     [Documentation]    Kill the karaf in Third Controller
167     ClusterManagement.Kill Single Member    3
168
169 Connectivity Tests From Vm Instance1 In l2_net_1
170     [Documentation]    Logging to the vm instance using generated key pair.
171     OpenStackOperations.Test Operations From Vm Instance    l2_net_1    @{NET_1_VM_IPS}[0]    ${NET_1_VM_IPS}
172
173 Connectivity Tests From Vm Instance2 In l2_net_1
174     [Documentation]    Logging to the vm instance using generated key pair.
175     OpenStackOperations.Test Operations From Vm Instance    l2_net_1    @{NET_1_VM_IPS}[1]    ${NET_1_VM_IPS}
176
177 Connectivity Tests From Vm Instance3 In l2_net_1
178     [Documentation]    Logging to the vm instance using generated key pair.
179     OpenStackOperations.Test Operations From Vm Instance    l2_net_1    @{NET_1_VM_IPS}[2]    ${NET_1_VM_IPS}
180
181 Bring Up ODL3
182     [Documentation]    Bring up ODL3 again
183     ClusterManagement.Start Single Member    3
184
185 Take Down ODL1 and ODL2
186     [Documentation]    Kill the karaf in First and Second Controller
187     ClusterManagement.Kill Members From List Or All    ${cluster_down_list}
188     [Teardown]    Get OvsDebugInfo
189
190 Connectivity Tests From Vm Instance1 In l2_net_2
191     [Documentation]    Logging to the vm instance using generated key pair.
192     OpenStackOperations.Test Operations From Vm Instance    l2_net_2    @{NET_2_VM_IPS}[0]    ${NET_2_VM_IPS}
193     [Teardown]    Get OvsDebugInfo
194
195 Connectivity Tests From Vm Instance2 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}[1]    ${NET_2_VM_IPS}
198     [Teardown]    Get OvsDebugInfo
199
200 Connectivity Tests From Vm Instance3 In l2_net_2
201     [Documentation]    Logging to the vm instance using generated key pair.
202     OpenStackOperations.Test Operations From Vm Instance    l2_net_2    @{NET_2_VM_IPS}[2]    ${NET_2_VM_IPS}
203     [Teardown]    Get OvsDebugInfo
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}