Migrate Get Requests invocations(libraries)
[integration/test.git] / csit / suites / controller / dom_data_broker / ddb-sanity-module-based.robot
1 *** Settings ***
2 Documentation       DOMDataBroker testing: Module based shards sanity suite
3 ...
4 ...                 Copyright (c) 2017 Cisco Systems, Inc. and others. All rights reserved.
5 ...
6 ...                 This program and the accompanying materials are made available under the
7 ...                 terms of the Eclipse Public License v1.0 which accompanies this distribution,
8 ...                 and is available at http://www.eclipse.org/legal/epl-v10.html
9 ...
10 ...                 The goal is to call several basic rpc form ClusterAdmin.robot and
11 ...                 MdsalLowlevel.robot to ensute that those rpcs can be safely used in
12 ...                 other suites.
13 ...                 It also verify the ability of the odl-controller-test-app to perform
14 ...                 several activities.
15
16 Library             SSHLibrary
17 Library             ${CURDIR}/../../../libraries/MdsalLowlevelPy.py
18 Resource            ${CURDIR}/../../../libraries/ClusterAdmin.robot
19 Resource            ${CURDIR}/../../../libraries/ClusterManagement.robot
20 Resource            ${CURDIR}/../../../libraries/controller/DdbCommons.robot
21 Resource            ${CURDIR}/../../../libraries/SetupUtils.robot
22
23 Suite Setup         SetupUtils.Setup_Utils_For_Setup_And_Teardown    http_timeout=125
24 Suite Teardown      SSHLibrary.Close_All_Connections
25 Test Setup          SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
26 Test Teardown       SetupUtils.Teardown_Test_Show_Bugs_If_Test_Failed
27
28 Default Tags        critical
29
30
31 *** Variables ***
32 ${SHARD_NAME}               default
33 ${SHARD_TYPE}               config
34 ${TRANSACTION_RATE_1K}      ${1000}
35 ${DURATION}                 ${60}
36 ${SIMPLE_TX}                ${False}
37 ${CHAINED_TX}               ${True}
38 ${MODULE_SHARD_PREFIX}      prefix-
39
40
41 *** Test Cases ***
42 Get_Shard_Role
43     [Documentation]    Get shard role.
44     ${all_indices} =    ClusterManagement.List_All_Indices
45     FOR    ${index}    IN    @{all_indices}
46         ${role} =    ClusterAdmin.Get_Shard_Role    ${index}    ${SHARD_NAME}    ${SHARD_TYPE}
47     END
48
49 Subscribe_Listener_To_Leader
50     [Documentation]    Subscribe listener to leader.
51     ${all_indices} =    ClusterManagement.List_All_Indices
52     ${leader}    ${follower_list} =    ClusterManagement.Get_Leader_And_Followers_For_Shard
53     ...    shard_name=${SHARD_NAME}
54     ...    shard_type=${SHARD_TYPE}
55     ...    member_index_list=${all_indices}
56     ...    verify_restconf=False
57     MdsalLowlevel.Subscribe_Dtcl    ${leader}
58     BuiltIn.Sleep    5s
59     ${copy_matches} =    MdsalLowlevel.Unsubscribe_Dtcl_No_Tx    ${leader}
60     BuiltIn.Should_Be_True    ${copy_matches}
61
62 Subscribe_Listener_To_Follower
63     [Documentation]    Subscribe listener to follower.
64     ${all_indices} =    ClusterManagement.List_All_Indices
65     ${leader}    ${follower_list} =    ClusterManagement.Get_Leader_And_Followers_For_Shard
66     ...    shard_name=${SHARD_NAME}
67     ...    shard_type=${SHARD_TYPE}
68     ...    member_index_list=${all_indices}
69     ...    verify_restconf=False
70     ${follower_idx} =    Collections.Get_From_List    ${follower_list}    ${0}
71     MdsalLowlevel.Subscribe_Dtcl    ${follower_idx}
72     BuiltIn.Sleep    5s
73     ${copy_matches} =    MdsalLowlevel.Unsubscribe_Dtcl_No_Tx    ${follower_idx}
74     BuiltIn.Should_Be_True    ${copy_matches}
75
76 Make_Leader_Local
77     [Documentation]    Make the loeader local and verify.
78     ${shard_name} =    BuiltIn.Set_Variable    ${SHARD_NAME}
79     ${shard_type} =    BuiltIn.Set_Variable    ${SHARD_TYPE}
80     ${all_indices} =    ClusterManagement.List_All_Indices
81     ${old_leader}    ${follower_list} =    ClusterManagement.Get_Leader_And_Followers_For_Shard
82     ...    shard_name=${SHARD_NAME}
83     ...    shard_type=${SHARD_TYPE}
84     ...    member_index_list=${all_indices}
85     ...    verify_restconf=False
86     ${follower1} =    Collections.Get_From_List    ${follower_list}    ${0}
87     ClusterAdmin.Make_Leader_Local    ${follower1}    ${shard_name}    ${shard_type}
88     ${leader}    ${follower_list} =    BuiltIn.Wait_Until_Keyword_Succeeds
89     ...    60s
90     ...    5s
91     ...    ClusterManagement.Verify_Shard_Leader_Elected
92     ...    ${shard_name}
93     ...    ${shard_type}
94     ...    ${True}
95     ...    ${old_leader}
96     ...    member_index_list=${EMPTY}
97     BuiltIn.Should_Be_Equal_As_Numbers    ${follower1}    ${leader}
98
99 Remove_Leader_Shard_Replica_And_Add_It_Back
100     [Documentation]    Remove and add shard replica adn verify it.
101     ${shard_name} =    BuiltIn.Set_Variable    ${SHARD_NAME}
102     ${shard_type} =    BuiltIn.Set_Variable    ${SHARD_TYPE}
103     ${all_indices} =    ClusterManagement.List_All_Indices
104     ${old_leader}    ${follower_list} =    ClusterManagement.Get_Leader_And_Followers_For_Shard
105     ...    shard_name=${shard_name}
106     ...    shard_type=${shard_type}
107     ...    member_index_list=${all_indices}
108     ...    verify_restconf=False
109     ClusterAdmin.Remove_Shard_Replica    ${old_leader}    ${shard_name}    member-${old_leader}    ${shard_type}
110     BuiltIn.Wait_Until_Keyword_Succeeds
111     ...    60s
112     ...    5s
113     ...    DdbCommons.Verify_Shard_Replica_Not_Present
114     ...    ${old_leader}
115     ...    ${shard_name}
116     ...    ${shard_type}
117     ${actual_leader}    ${actual_follower_list} =    BuiltIn.Wait_Until_Keyword_Succeeds
118     ...    60s
119     ...    5s
120     ...    ClusterManagement.Get_Leader_And_Followers_For_Shard
121     ...    shard_name=${shard_name}
122     ...    verify_restconf=False
123     ...    shard_type=${shard_type}
124     ...    member_index_list=${follower_list}
125     BuiltIn.Should_Not_Be_Equal_As_Numbers    ${old_leader}    ${actual_leader}
126     BuiltIn.Wait_Until_Keyword_Succeeds
127     ...    60s
128     ...    5s
129     ...    ClusterAdmin.Add_Shard_Replica
130     ...    ${old_leader}
131     ...    ${shard_name}
132     ...    ${shard_type}
133     BuiltIn.Wait_Until_Keyword_Succeeds
134     ...    60s
135     ...    5s
136     ...    ClusterManagement.Get_Leader_And_Followers_For_Shard
137     ...    shard_name=${shard_name}
138     ...    shard_type=${shard_type}
139     ...    member_index_list=${all_indices}
140     ...    verify_restconf=False
141
142 Remove_Follower_Shard_Replica_And_Add_It_Back
143     [Documentation]    Remove and add shard replica adn verify it.
144     ${shard_name} =    BuiltIn.Set_Variable    ${SHARD_NAME}
145     ${shard_type} =    BuiltIn.Set_Variable    ${SHARD_TYPE}
146     ${all_indices} =    ClusterManagement.List_All_Indices
147     ${leader}    ${follower_list} =    ClusterManagement.Get_Leader_And_Followers_For_Shard
148     ...    shard_name=${shard_name}
149     ...    shard_type=${shard_type}
150     ...    member_index_list=${all_indices}
151     ...    verify_restconf=False
152     ${follower1} =    Collections.Get_From_List    ${follower_list}    ${0}
153     ClusterAdmin.Remove_Shard_Replica    ${follower1}    ${shard_name}    member-${follower1}    ${shard_type}
154     BuiltIn.Wait_Until_Keyword_Succeeds
155     ...    60s
156     ...    5s
157     ...    DdbCommons.Verify_Shard_Replica_Not_Present
158     ...    ${follower1}
159     ...    ${shard_name}
160     ...    ${shard_type}
161     ${new_indices_list} =    ClusterManagement.List_Indices_Minus_Member    ${follower1}
162     ClusterManagement.Verify_Shard_Leader_Elected
163     ...    ${shard_name}
164     ...    ${shard_type}
165     ...    ${False}
166     ...    ${leader}
167     ...    member_index_list=${new_indices_list}
168     BuiltIn.Wait_Until_Keyword_Succeeds
169     ...    60s
170     ...    5s
171     ...    ClusterAdmin.Add_Shard_Replica
172     ...    ${follower1}
173     ...    ${shard_name}
174     ...    ${shard_type}
175     BuiltIn.Wait_Until_Keyword_Succeeds
176     ...    60s
177     ...    5s
178     ...    ClusterManagement.Get_Leader_And_Followers_For_Shard
179     ...    shard_name=${shard_name}
180     ...    shard_type=${shard_type}
181     ...    member_index_list=${all_indices}
182     ...    verify_restconf=False
183
184 Write_Transactions_One_Node_Leader
185     [Documentation]    Write transactions.
186     ${all_indices} =    ClusterManagement.List_All_Indices
187     ${leader}    ${follower_list} =    ClusterManagement.Get_Leader_And_Followers_For_Shard
188     ...    shard_name=${SHARD_NAME}
189     ...    shard_type=${SHARD_TYPE}
190     ...    member_index_list=${all_indices}
191     ...    verify_restconf=False
192     ${leader_idx_as_list} =    BuiltIn.Create_List    ${leader}
193     ${leader_ip_as_list} =    ClusterManagement.Resolve_IP_Address_For_Members    ${leader_idx_as_list}
194     MdsalLowlevelPy.Start_Write_Transactions_On_Nodes
195     ...    ${leader_ip_as_list}
196     ...    ${leader_idx_as_list}
197     ...    ${MODULE_SHARD_PREFIX}
198     ...    ${DURATION}
199     ...    ${TRANSACTION_RATE_1K}
200     ...    chained_flag=${CHAINED_TX}
201     ${resp_list} =    MdsalLowlevelPy.Wait_For_Transactions
202     FOR    ${resp}    IN    @{resp_list}
203         TemplatedRequests.Check_Status_Code    ${resp}[2]
204     END
205
206 Write_Transactions_One_Node_Follower
207     [Documentation]    Write transactions.
208     ${all_indices} =    ClusterManagement.List_All_Indices
209     ${leader}    ${follower_list} =    ClusterManagement.Get_Leader_And_Followers_For_Shard
210     ...    shard_name=${SHARD_NAME}
211     ...    shard_type=${SHARD_TYPE}
212     ...    member_index_list=${all_indices}
213     ...    verify_restconf=False
214     ${follower_idx} =    Collections.Get_From_List    ${follower_list}    ${0}
215     ${follower_idx_as_list} =    BuiltIn.Create_List    ${follower_idx}
216     ${follower_ip_as_list} =    ClusterManagement.Resolve_IP_Address_For_Members    ${follower_idx_as_list}
217     MdsalLowlevelPy.Start_Write_Transactions_On_Nodes
218     ...    ${follower_ip_as_list}
219     ...    ${follower_idx_as_list}
220     ...    ${MODULE_SHARD_PREFIX}
221     ...    ${DURATION}
222     ...    ${TRANSACTION_RATE_1K}
223     ...    chained_flag=${CHAINED_TX}
224     ${resp_list} =    MdsalLowlevelPy.Wait_For_Transactions
225     FOR    ${resp}    IN    @{resp_list}
226         TemplatedRequests.Check_Status_Code    ${resp}[2]
227     END
228
229 Write_Transactions_All_Nodes
230     [Documentation]    Write transactions.
231     ${all_indices} =    ClusterManagement.List_All_Indices
232     ${all_ip_list} =    ClusterManagement.Resolve_IP_Address_For_Members    ${all_indices}
233     MdsalLowlevelPy.Start_Write_Transactions_On_Nodes
234     ...    ${all_ip_list}
235     ...    ${all_indices}
236     ...    ${MODULE_SHARD_PREFIX}
237     ...    ${DURATION}
238     ...    ${TRANSACTION_RATE_1K}
239     ...    chained_flag=${CHAINED_TX}
240     ${resp_list} =    MdsalLowlevelPy.Wait_For_Transactions
241     FOR    ${resp}    IN    @{resp_list}
242         TemplatedRequests.Check_Status_Code    ${resp}[2]
243     END