3454295405ebdc3c567dee95567f47eb41e15177
[integration/test.git] / csit / suites / openflowplugin / Clustering / 010__Cluster_HA_Owner_Failover.robot
1 *** Settings ***
2 Documentation     Test suite for Cluster HA - Device Owner failover
3 Suite Setup       Create Controller Sessions
4 Suite Teardown    Delete All Sessions
5 Library           RequestsLibrary
6 Resource          ../../../libraries/ClusterOpenFlow.robot
7 Resource          ../../../libraries/ClusterKeywords.robot
8 Resource          ../../../libraries/MininetKeywords.robot
9 Variables         ../../../variables/Variables.py
10
11 *** Test Cases ***
12 Create Original Cluster List
13     [Documentation]    Create original cluster list.
14     ${original_cluster_list}    Create Controller Index List
15     Set Suite Variable    ${original_cluster_list}
16
17 Check Shards Status Before Fail
18     [Documentation]    Check Status for all shards in OpenFlow application.
19     Check OpenFlow Shards Status    ${original_cluster_list}
20
21 Start Mininet Multiple Connections
22     [Documentation]    Start mininet with connection to all cluster instances.
23     ${mininet_conn_id}=    Start Mininet Multiple Controllers    ${TOOLS_SYSTEM_IP}    ${original_cluster_list}
24     Set Suite Variable    ${mininet_conn_id}
25
26 Check Entity Owner Status And Find Owner and Candidate Before Fail
27     [Documentation]    Check Entity Owner Status and identify owner and candidate.
28     ${original_owner}    ${original_candidates_list}    Get OpenFlow Entity Owner Status For One Device    ${original_cluster_list}
29     ${original_candidate}=    Get From List    ${original_candidates_list}    0
30     Set Suite Variable    ${original_owner}
31     Set Suite Variable    ${original_candidate}
32
33 Check Network Operational Information Before Fail
34     [Documentation]    Check device is in operational inventory and topology in all cluster instances.
35     Check OpenFlow Network Operational Information For One Device    ${original_cluster_list}
36
37 Add Configuration In Owner and Verify Before Fail
38     [Documentation]    Add Flow in Owner and verify it gets applied from all instances.
39     Add Sample Flow and Verify    ${original_cluster_list}    ${original_owner}
40
41 Modify Configuration In Owner and Verify Before Fail
42     [Documentation]    Modify Flow in Owner and verify it gets applied from all instances.
43     Modify Sample Flow and Verify    ${original_cluster_list}    ${original_owner}
44
45 Delete Configuration In Owner and Verify Before Fail
46     [Documentation]    Delete Flow in Owner and verify it gets applied from all instances.
47     Delete Sample Flow and Verify    ${original_cluster_list}    ${original_owner}
48
49 Add Configuration In Candidate and Verify Before Fail
50     [Documentation]    Add Flow in Owner and verify it gets applied from all instances.
51     Add Sample Flow and Verify    ${original_cluster_list}    ${original_candidate}
52
53 Modify Configuration In Candidate and Verify Before Fail
54     [Documentation]    Modify Flow in Owner and verify it gets applied from all instances.
55     Modify Sample Flow and Verify    ${original_cluster_list}    ${original_candidate}
56
57 Delete Configuration In Candidate and Verify Before Fail
58     [Documentation]    Delete Flow in Owner and verify it gets removed from all instances.
59     Delete Sample Flow and Verify    ${original_cluster_list}    ${original_candidate}
60
61 Send RPC Add to Owner and Verify Before Fail
62     [Documentation]    Add Flow in Owner and verify it gets applied from all instances.
63     Send RPC Add Sample Flow and Verify    ${original_cluster_list}    ${original_owner}
64
65 Send RPC Delete to Owner and Verify Before Fail
66     [Documentation]    Delete Flow in Owner and verify it gets removed from all instances.
67     Send RPC Delete Sample Flow and Verify    ${original_cluster_list}    ${original_owner}
68
69 Send RPC Add to Candidate and Verify Before Fail
70     [Documentation]    Add Flow in Candidate and verify it gets applied from all instances.
71     Send RPC Add Sample Flow and Verify    ${original_cluster_list}    ${original_candidate}
72
73 Send RPC Delete to Candidate and Verify Before Fail
74     [Documentation]    Delete Flow in Candidate and verify it gets removed from all instances.
75     Send RPC Delete Sample Flow and Verify    ${original_cluster_list}    ${original_candidate}
76
77 Modify Network And Verify Before Fail
78     [Documentation]    Take a link down and verify port status in all instances.
79     Take OpenFlow Device Link Down and Verify    ${original_cluster_list}
80
81 Restore Network And Verify Before Fail
82     [Documentation]    Take the link up and verify port status in all instances.
83     Take OpenFlow Device Link Up and Verify    ${original_cluster_list}
84
85 Kill Owner Instance
86     [Documentation]    Kill Owner Instance and verify it is dead
87     Kill Multiple Controllers    ${original_owner}
88     ${new_cluster_list}    Create Controller Index List
89     Remove Values From List    ${new_cluster_list}    ${original_owner}
90     Set Suite Variable    ${new_cluster_list}
91
92 Check Shards Status After Fail
93     [Documentation]    Create original cluster list and check Status for all shards in OpenFlow application.
94     Check OpenFlow Shards Status After Cluster Event    ${new_cluster_list}
95
96 Check Entity Owner Status And Find Owner and Candidate After Fail
97     [Documentation]    Check Entity Owner Status and identify owner and candidate.
98     ${new_owner}    ${new_candidates_list}    Get OpenFlow Entity Owner Status For One Device    ${new_cluster_list}
99     Run Keyword And Continue On Failure    List Should Not Contain Value    ${new_candidates_list}    ${original_owner}    Original owner ${original_owner} still in candidate list.
100     Remove Values From List    ${new_candidates_list}    ${original_owner}
101     ${new_candidate}=    Get From List    ${new_candidates_list}    0
102     Set Suite Variable    ${new_owner}
103     Set Suite Variable    ${new_candidate}
104     [Teardown]    Report_Failure_Due_To_Bug    5004
105
106 Check Network Operational Information After Fail
107     [Documentation]    Check device is in operational inventory and topology in all cluster instances.
108     Check OpenFlow Network Operational Information For One Device    ${new_cluster_list}
109
110 Add Configuration In Owner and Verify After Fail
111     [Documentation]    Add Flow in Owner and verify it gets applied from all instances.
112     Add Sample Flow and Verify    ${new_cluster_list}    ${new_owner}
113
114 Modify Configuration In Owner and Verify After Fail
115     [Documentation]    Modify Flow in Owner and verify it gets applied from all instances.
116     Modify Sample Flow and Verify    ${new_cluster_list}    ${new_owner}
117
118 Delete Configuration In Owner and Verify After Fail
119     [Documentation]    Delete Flow in Owner and verify it gets applied from all instances.
120     Delete Sample Flow and Verify    ${new_cluster_list}    ${new_owner}
121
122 Add Configuration In Candidate and Verify After Fail
123     [Documentation]    Add Flow in Owner and verify it gets applied from all instances.
124     Add Sample Flow and Verify    ${new_cluster_list}    ${new_candidate}
125
126 Modify Configuration In Candidate and Verify After Fail
127     [Documentation]    Modify Flow in Owner and verify it gets applied from all instances.
128     Modify Sample Flow and Verify    ${new_cluster_list}    ${new_candidate}
129
130 Delete Configuration In Candidate and Verify After Fail
131     [Documentation]    Delete Flow in Owner and verify it gets applied from all instances.
132     Delete Sample Flow and Verify    ${new_cluster_list}    ${new_candidate}
133
134 Send RPC Add to Owner and Verify After Fail
135     [Documentation]    Add Flow in Owner and verify it gets applied from all instances.
136     Send RPC Add Sample Flow and Verify    ${new_cluster_list}    ${new_owner}
137
138 Send RPC Delete to Owner and Verify After Fail
139     [Documentation]    Delete Flow in Owner and verify it gets removed from all instances.
140     Send RPC Delete Sample Flow and Verify    ${new_cluster_list}    ${new_owner}
141
142 Send RPC Add to Candidate and Verify After Fail
143     [Documentation]    Add Flow in Owner and verify it gets applied from all instances.
144     Send RPC Add Sample Flow and Verify    ${new_cluster_list}    ${new_candidate}
145
146 Send RPC Delete to Candidate and Verify After Fail
147     [Documentation]    Delete Flow in Owner and verify it gets removed from all instances.
148     Send RPC Delete Sample Flow and Verify    ${new_cluster_list}    ${new_candidate}
149
150 Modify Network and Verify After Fail
151     [Documentation]    Take a link down and verify port status in all instances.
152     Take OpenFlow Device Link Down and Verify    ${new_cluster_list}
153
154 Restore Network and Verify After Fail
155     [Documentation]    Take the link up and verify port status in all instances.
156     Take OpenFlow Device Link Up and Verify    ${new_cluster_list}
157
158 Start Old Owner Instance
159     [Documentation]    Start old Owner Instance and verify it is up
160     Start Multiple Controllers    300s    ${original_owner}
161
162 Check Shards Status After Recover
163     [Documentation]    Create original cluster list and check Status for all shards in OpenFlow application.
164     Check OpenFlow Shards Status After Cluster Event    ${original_cluster_list}
165
166 Check Entity Owner Status After Recover
167     [Documentation]    Check Entity Owner Status and identify owner and candidate.
168     ${new_owner}    ${new_candidates_list}    Get OpenFlow Entity Owner Status For One Device    ${original_cluster_list}
169     Set Suite Variable    ${new_owner}
170
171 Check Network Operational Information After Recover
172     [Documentation]    Check device is in operational inventory and topology in all cluster instances.
173     Check OpenFlow Network Operational Information For One Device    ${original_cluster_list}
174
175 Add Configuration In Owner and Verify After Recover
176     [Documentation]    Add Flow in Owner and verify it gets applied from all instances.
177     Add Sample Flow and Verify    ${original_cluster_list}    ${new_owner}
178
179 Modify Configuration In Owner and Verify After Recover
180     [Documentation]    Modify Flow in Owner and verify it gets applied from all instances.
181     Modify Sample Flow and Verify    ${original_cluster_list}    ${new_owner}
182
183 Delete Configuration In Owner and Verify After Recover
184     [Documentation]    Delete Flow in Owner and verify it gets applied from all instances.
185     Delete Sample Flow and Verify    ${original_cluster_list}    ${new_owner}
186
187 Add Configuration In Old Owner and Verify After Recover
188     [Documentation]    Add Flow in Owner and verify it gets applied from all instances.
189     Add Sample Flow and Verify    ${originalcluster_list}    ${original_owner}
190
191 Modify Configuration In Old Owner and Verify After Recover
192     [Documentation]    Modify Flow in Owner and verify it gets applied from all instances.
193     Modify Sample Flow and Verify    ${original_cluster_list}    ${original_owner}
194
195 Delete Configuration In Old Owner and Verify After Recover
196     [Documentation]    Delete Flow in Owner and verify it gets applied from all instances.
197     Delete Sample Flow and Verify    ${original_cluster_list}    ${original_owner}
198
199 Send RPC Add to Owner and Verify After Recover
200     [Documentation]    Add Flow in Owner and verify it gets applied from all instances.
201     Send RPC Add Sample Flow and Verify    ${original_cluster_list}    ${new_owner}
202
203 Send RPC Delete to Owner and Verify After Recover
204     [Documentation]    Delete Flow in Owner and verify it gets removed from all instances.
205     Send RPC Delete Sample Flow and Verify    ${original_cluster_list}    ${new_owner}
206
207 Send RPC Add to Old Owner and Verify After Recover
208     [Documentation]    Add Flow in Owner and verify it gets applied from all instances.
209     Send RPC Add Sample Flow and Verify    ${original_cluster_list}    ${original_owner}
210
211 Send RPC Delete to Old Owner and Verify After Recover
212     [Documentation]    Delete Flow in Owner and verify it gets removed from all instances.
213     Send RPC Delete Sample Flow and Verify    ${original_cluster_list}    ${original_owner}
214
215 Modify Network and Verify After Recover
216     [Documentation]    Take a link down and verify port status in all instances.
217     Take OpenFlow Device Link Down and Verify    ${original_cluster_list}
218
219 Restore Network and Verify After Recover
220     [Documentation]    Take the link up and verify port status in all instances.
221     Take OpenFlow Device Link Up and Verify    ${original_cluster_list}
222
223 Stop Mininet and Exit
224     [Documentation]    Stop mininet and exit connection.
225     Stop Mininet And Exit    ${mininet_conn_id}
226     Clean Mininet System
227
228 Check No Network Operational Information
229     [Documentation]    Check device is not in operational inventory or topology in all cluster instances.
230     Check No OpenFlow Network Operational Information    ${original_cluster_list}