Upgrade RF syntax for v3.2 compatibility
[integration/test.git] / csit / suites / openflowplugin / Clustering / 020__Cluster_HA_Owner_Restart.robot
1 *** Settings ***
2 Documentation     Test suite for Cluster HA - Device Owner Stop and Start
3 Suite Setup       SetupUtils.Setup_Utils_For_Setup_And_Teardown
4 Suite Teardown    Delete All Sessions
5 Library           RequestsLibrary
6 Resource          ../../../libraries/SetupUtils.robot
7 Resource          ../../../libraries/ClusterOpenFlow.robot
8 Resource          ../../../libraries/MininetKeywords.robot
9 Resource          ../../../libraries/ClusterManagement.robot
10 Variables         ../../../variables/Variables.py
11
12 *** Test Cases ***
13 Check Shards Status Before Stop
14     [Documentation]    Check Status for all shards in OpenFlow application.
15     ClusterOpenFlow.Check OpenFlow Shards Status
16
17 Start Mininet Multiple Connections
18     [Documentation]    Start mininet tree,2 with connection to all cluster instances.
19     ${mininet_conn_id}=    MininetKeywords.Start Mininet Multiple Controllers    ${TOOLS_SYSTEM_IP}    ${ClusterManagement__member_index_list}    --topo tree,2
20     BuiltIn.Set Suite Variable    ${mininet_conn_id}
21     BuiltIn.Wait Until Keyword Succeeds    10s    1s    OVSDB.Check OVS OpenFlow Connections    ${TOOLS_SYSTEM_IP}    9
22
23 Check Entity Owner Status And Find Owner and Successor Before Stop
24     [Documentation]    Check Entity Owner Status and identify owner and successor for first switch s1.
25     ${original_owner}    ${original_successor_list}    ClusterOpenFlow.Get OpenFlow Entity Owner Status For One Device    openflow:1    1
26     ${original_successor}=    Collections.Get From List    ${original_successor_list}    0
27     BuiltIn.Set Suite Variable    ${original_owner}
28     BuiltIn.Set Suite Variable    ${original_successor_list}
29     BuiltIn.Set Suite Variable    ${original_successor}
30
31 Reconnect Extra Switches To Successors And Check OVS Connections
32     [Documentation]    Connect switches s2 and s3 to successor instances.
33     ${controller_opt} =    BuiltIn.Set Variable
34     FOR    ${index}    IN    @{original_successor_list}
35         ${controller_opt} =    BuiltIn.Catenate    ${controller_opt}    ${SPACE}tcp:${ODL_SYSTEM_${index}_IP}:${ODL_OF_PORT}
36         Log    ${controller_opt}
37     END
38     OVSDB.Set Controller In OVS Bridge    ${TOOLS_SYSTEM_IP}    s2    ${controller_opt}
39     OVSDB.Set Controller In OVS Bridge    ${TOOLS_SYSTEM_IP}    s3    ${controller_opt}
40     BuiltIn.Wait Until Keyword Succeeds    10s    1s    OVSDB.Check OVS OpenFlow Connections    ${TOOLS_SYSTEM_IP}    7
41
42 Check Network Operational Information Before Stop
43     [Documentation]    Check devices in operational inventory and topology in all cluster instances.
44     ClusterOpenFlow.Check OpenFlow Network Operational Information For Sample Topology
45
46 Add Configuration In Owner and Verify Before Stop
47     [Documentation]    Add Flow in Owner and verify it gets applied from all instances.
48     ClusterOpenFlow.Add Sample Flow and Verify    ${original_owner}
49
50 Modify Configuration In Owner and Verify Before Stop
51     [Documentation]    Modify Flow in Owner and verify it gets applied from all instances.
52     ClusterOpenFlow.Modify Sample Flow and Verify    ${original_owner}
53
54 Delete Configuration In Owner and Verify Before Stop
55     [Documentation]    Delete Flow in Owner and verify it gets applied from all instances.
56     ClusterOpenFlow.Delete Sample Flow and Verify    ${original_owner}
57
58 Add Configuration In Successor and Verify Before Stop
59     [Documentation]    Add Flow in Successor and verify it gets applied from all instances.
60     ClusterOpenFlow.Add Sample Flow and Verify    ${original_successor}
61
62 Modify Configuration In Successor and Verify Before Stop
63     [Documentation]    Modify Flow in successor and verify it gets applied from all instances.
64     ClusterOpenFlow.Modify Sample Flow and Verify    ${original_successor}
65
66 Delete Configuration In Successor and Verify Before Stop
67     [Documentation]    Delete Flow in Successor and verify it gets removed from all instances.
68     ClusterOpenFlow.Delete Sample Flow and Verify    ${original_successor}
69
70 Send RPC Add to Owner and Verify Before Stop
71     [Documentation]    Add Flow in Owner and verify it gets applied from all instances.
72     ClusterOpenFlow.Send RPC Add Sample Flow and Verify    ${original_owner}
73
74 Send RPC Delete to Owner and Verify Before Stop
75     [Documentation]    Delete Flow in Owner and verify it gets removed from all instances.
76     ClusterOpenFlow.Send RPC Delete Sample Flow and Verify    ${original_owner}
77
78 Send RPC Add to Successor and Verify Before Stop
79     [Documentation]    Add Flow in Successor and verify it gets applied from all instances.
80     ClusterOpenFlow.Send RPC Add Sample Flow and Verify    ${original_successor}
81
82 Send RPC Delete to Successor and Verify Before Stop
83     [Documentation]    Delete Flow in Successor and verify it gets removed from all instances.
84     ClusterOpenFlow.Send RPC Delete Sample Flow and Verify    ${original_successor}
85
86 Modify Network And Verify Before Stop
87     [Documentation]    Take a link down and verify port status in all instances.
88     ClusterOpenFlow.Take OpenFlow Device Link Down and Verify
89
90 Restore Network And Verify Before Stop
91     [Documentation]    Take the link up and verify port status in all instances.
92     ClusterOpenFlow.Take OpenFlow Device Link Up and Verify
93
94 Stop Owner Instance
95     [Documentation]    Stop Owner Instance and verify it is dead
96     ClusterManagement.Stop Single Member    ${original_owner}
97     BuiltIn.Set Suite Variable    ${new_cluster_list}    ${original_successor_list}
98
99 Check Shards Status After Stop
100     [Documentation]    Create original cluster list and check Status for all shards in OpenFlow application.
101     ClusterOpenFlow.Check OpenFlow Shards Status After Cluster Event    ${new_cluster_list}
102
103 Check Entity Owner Status And Find Owner and Successor After Stop
104     [Documentation]    Check Entity Owner Status and identify owner and successor.
105     ${new_owner}    ${new_successor_list}    ClusterOpenFlow.Get OpenFlow Entity Owner Status For One Device    openflow:1    ${original_successor}    ${new_cluster_list}    after_stop=True
106     ${new_successor}=    Collections.Get From List    ${new_successor_list}    0
107     BuiltIn.Set Suite Variable    ${new_owner}
108     BuiltIn.Set Suite Variable    ${new_successor}
109
110 Check Network Operational Information After Stop
111     [Documentation]    Check devices in operational inventory and topology in all cluster instances.
112     ClusterOpenFlow.Check OpenFlow Network Operational Information For Sample Topology    ${new_cluster_list}
113
114 Add Configuration In Owner and Verify After Stop
115     [Documentation]    Add Flow in Owner and verify it gets applied from all instances.
116     ClusterOpenFlow.Add Sample Flow and Verify    ${new_owner}    ${new_cluster_list}
117
118 Modify Configuration In Owner and Verify After Stop
119     [Documentation]    Modify Flow in Owner and verify it gets applied from all instances.
120     ClusterOpenFlow.Modify Sample Flow and Verify    ${new_owner}    ${new_cluster_list}
121
122 Delete Configuration In Owner and Verify After Stop
123     [Documentation]    Delete Flow in Owner and verify it gets applied from all instances.
124     ClusterOpenFlow.Delete Sample Flow and Verify    ${new_owner}    ${new_cluster_list}
125
126 Add Configuration In Successor and Verify After Stop
127     [Documentation]    Add Flow in Successor and verify it gets applied from all instances.
128     ClusterOpenFlow.Add Sample Flow and Verify    ${new_successor}    ${new_cluster_list}
129
130 Modify Configuration In Successor and Verify After Stop
131     [Documentation]    Modify Flow in Successor and verify it gets applied from all instances.
132     ClusterOpenFlow.Modify Sample Flow and Verify    ${new_successor}    ${new_cluster_list}
133
134 Delete Configuration In Successor and Verify After Stop
135     [Documentation]    Delete Flow in Successor and verify it gets applied from all instances.
136     ClusterOpenFlow.Delete Sample Flow and Verify    ${new_successor}    ${new_cluster_list}
137
138 Send RPC Add to Owner and Verify After Stop
139     [Documentation]    Add Flow in Owner and verify it gets applied from all instances.
140     ClusterOpenFlow.Send RPC Add Sample Flow and Verify    ${new_owner}    ${new_cluster_list}
141
142 Send RPC Delete to Owner and Verify After Stop
143     [Documentation]    Delete Flow in Owner and verify it gets removed from all instances.
144     ClusterOpenFlow.Send RPC Delete Sample Flow and Verify    ${new_owner}    ${new_cluster_list}
145
146 Send RPC Add to Successor and Verify After Stop
147     [Documentation]    Add Flow in Successor and verify it gets applied from all instances.
148     ClusterOpenFlow.Send RPC Add Sample Flow and Verify    ${new_successor}    ${new_cluster_list}
149
150 Send RPC Delete to Successor and Verify After Stop
151     [Documentation]    Delete Flow in Successor and verify it gets removed from all instances.
152     ClusterOpenFlow.Send RPC Delete Sample Flow and Verify    ${new_successor}    ${new_cluster_list}
153
154 Modify Network and Verify After Stop
155     [Documentation]    Take a link down and verify port status in all instances.
156     ClusterOpenFlow.Take OpenFlow Device Link Down and Verify    ${new_cluster_list}
157
158 Restore Network and Verify After Stop
159     [Documentation]    Take the link up and verify port status in all instances.
160     ClusterOpenFlow.Take OpenFlow Device Link Up and Verify    ${new_cluster_list}
161
162 Start Old Owner Instance
163     [Documentation]    Start old Owner Instance and verify it is up
164     ClusterManagement.Start Single Member    ${original_owner}
165
166 Check Shards Status After Start
167     [Documentation]    Create original cluster list and check Status for all shards in OpenFlow application.
168     ClusterOpenFlow.Check OpenFlow Shards Status After Cluster Event
169
170 Check Entity Owner Status After Start
171     [Documentation]    Check Entity Owner Status and identify owner and successor.
172     ${new_owner}    ${new_successors_list}    ClusterOpenFlow.Get OpenFlow Entity Owner Status For One Device    openflow:1    1
173     BuiltIn.Set Suite Variable    ${new_owner}
174
175 Check Network Operational Information After Start
176     [Documentation]    Check devices in operational inventory and topology in all cluster instances.
177     ClusterOpenFlow.Check OpenFlow Network Operational Information For Sample Topology
178
179 Add Configuration In Owner and Verify After Start
180     [Documentation]    Add Flow in Owner and verify it gets applied from all instances.
181     ClusterOpenFlow.Add Sample Flow and Verify    ${new_owner}
182
183 Modify Configuration In Owner and Verify After Start
184     [Documentation]    Modify Flow in Owner and verify it gets applied from all instances.
185     ClusterOpenFlow.Modify Sample Flow and Verify    ${new_owner}
186
187 Delete Configuration In Owner and Verify After Start
188     [Documentation]    Delete Flow in Owner and verify it gets applied from all instances.
189     ClusterOpenFlow.Delete Sample Flow and Verify    ${new_owner}
190
191 Add Configuration In Old Owner and Verify After Start
192     [Documentation]    Add Flow in Owner and verify it gets applied from all instances.
193     ClusterOpenFlow.Add Sample Flow and Verify    ${original_owner}
194
195 Modify Configuration In Old Owner and Verify After Start
196     [Documentation]    Modify Flow in Owner and verify it gets applied from all instances.
197     ClusterOpenFlow.Modify Sample Flow and Verify    ${original_owner}
198
199 Delete Configuration In Old Owner and Verify After Start
200     [Documentation]    Delete Flow in Owner and verify it gets applied from all instances.
201     ClusterOpenFlow.Delete Sample Flow and Verify    ${original_owner}
202
203 Send RPC Add to Owner and Verify After Start
204     [Documentation]    Add Flow in Owner and verify it gets applied from all instances.
205     ClusterOpenFlow.Send RPC Add Sample Flow and Verify    ${new_owner}
206
207 Send RPC Delete to Owner and Verify After Start
208     [Documentation]    Delete Flow in Owner and verify it gets removed from all instances.
209     ClusterOpenFlow.Send RPC Delete Sample Flow and Verify    ${new_owner}
210
211 Send RPC Add to Old Owner and Verify After Start
212     [Documentation]    Add Flow in Owner and verify it gets applied from all instances.
213     ClusterOpenFlow.Send RPC Add Sample Flow and Verify    ${original_owner}
214
215 Send RPC Delete to Old Owner and Verify After Start
216     [Documentation]    Delete Flow in Owner and verify it gets removed from all instances.
217     ClusterOpenFlow.Send RPC Delete Sample Flow and Verify    ${original_owner}
218
219 Modify Network and Verify After Start
220     [Documentation]    Take a link down and verify port status in all instances.
221     ClusterOpenFlow.Take OpenFlow Device Link Down and Verify
222
223 Restore Network and Verify After Start
224     [Documentation]    Take the link up and verify port status in all instances.
225     ClusterOpenFlow.Take OpenFlow Device Link Up and Verify
226
227 Stop Mininet and Exit
228     [Documentation]    Stop mininet and exit connection.
229     MininetKeywords.Stop Mininet And Exit    ${mininet_conn_id}
230     Utils.Clean Mininet System
231
232 Check No Network Operational Information
233     [Documentation]    Check device is not in operational inventory or topology in all cluster instances.
234     ClusterOpenFlow.Check No OpenFlow Network Operational Information