Migrate Get Requests invocations(libraries)
[integration/test.git] / csit / suites / controller / dom_data_broker / ddb-sanity-prefix-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         BuiltIn.Run_Keywords    SetupUtils.Setup_Utils_For_Setup_And_Teardown    http_timeout=125
24 ...                     AND    DdbCommons.Create_Prefix_Based_Shard_And_Verify
25 Suite Teardown      BuiltIn.Run_Keywords    DdbCommons.Remove_Prefix_Based_Shard_And_Verify
26 ...                     AND    SSHLibrary.Close_All_Connections
27 Test Setup          SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
28 Test Teardown       SetupUtils.Teardown_Test_Show_Bugs_If_Test_Failed
29
30 Default Tags        critical
31
32
33 *** Variables ***
34 ${PREF_BASED_SHARD}         id-ints
35 ${SHARD_TYPE}               config
36 ${TRANSACTION_RATE_1K}      ${1000}
37 ${DURATION}                 ${30}
38 ${SIMPLE_TX}                ${False}
39 ${CHAINED_TX}               ${True}
40 ${ID_PREFIX}                prefix-
41
42
43 *** Test Cases ***
44 Get_Prefix_Shard_Role
45     [Documentation]    Get prefix shard role.
46     ${all_indices} =    ClusterManagement.List_All_Indices
47     FOR    ${index}    IN    @{all_indices}
48         ${role} =    ClusterAdmin.Get_Prefix_Shard_Role    ${index}    ${PREF_BASED_SHARD}    ${SHARD_TYPE}
49     END
50
51 Subscribe_Listener_To_Leader
52     [Documentation]    Subscribe listener to leader.
53     ${all_indices} =    ClusterManagement.List_All_Indices
54     ${leader}    ${follower_list} =    ClusterManagement.Get_Leader_And_Followers_For_Shard
55     ...    shard_name=${SHARD_NAME}
56     ...    shard_type=${SHARD_TYPE}
57     ...    member_index_list=${all_indices}
58     ...    verify_restconf=False
59     MdsalLowlevel.Subscribe_Ddtl    ${leader}
60     BuiltIn.Sleep    5s
61     ${copy_matches} =    MdsalLowlevel.Unsubscribe_Ddtl_No_Tx    ${leader}
62     BuiltIn.Should_Be_True    ${copy_matches}
63
64 Subscribe_Listener_To_Follower
65     [Documentation]    Subscribe listener to follower.
66     ${all_indices} =    ClusterManagement.List_All_Indices
67     ${leader}    ${follower_list} =    ClusterManagement.Get_Leader_And_Followers_For_Shard
68     ...    shard_name=${SHARD_NAME}
69     ...    shard_type=${SHARD_TYPE}
70     ...    member_index_list=${all_indices}
71     ...    verify_restconf=False
72     ${follower_idx} =    Collections.Get_From_List    ${follower_list}    ${0}
73     MdsalLowlevel.Subscribe_Ddtl    ${follower_idx}
74     BuiltIn.Sleep    5s
75     ${copy_matches} =    MdsalLowlevel.Unsubscribe_Ddtl_No_Tx    ${follower_idx}
76     BuiltIn.Should_Be_True    ${copy_matches}
77
78 Become_Prefix_Leader
79     [Documentation]    Make the loeader local and verify.
80     ${shard_name} =    BuiltIn.Set_Variable    ${PREF_BASED_SHARD}
81     ${shard_type} =    BuiltIn.Set_Variable    ${SHARD_TYPE}
82     ${all_indices} =    ClusterManagement.List_All_Indices
83     ${old_leader}    ${follower_list} =    ClusterManagement.Get_Leader_And_Followers_For_Shard
84     ...    shard_name=${shard_name}!!
85     ...    shard_type=${shard_type}
86     ...    member_index_list=${all_indices}
87     ...    verify_restconf=False
88     ${follower1} =    Collections.Get_From_List    ${follower_list}    ${0}
89     MdsalLowlevel.Become_Prefix_Leader    ${follower1}    ${shard_name}
90     ${leader}    ${follower_list} =    BuiltIn.Wait_Until_Keyword_Succeeds
91     ...    60s
92     ...    5s
93     ...    ClusterManagement.Verify_Shard_Leader_Elected
94     ...    ${shard_name}!!
95     ...    ${shard_type}
96     ...    ${True}
97     ...    ${old_leader}
98     ...    member_index_list=${EMPTY}
99     BuiltIn.Should_Be_Equal_As_Numbers    ${follower1}    ${leader}
100
101 Remove_Leader_Prefix_Shard_Replica_And_Add_It_Back
102     [Documentation]    Remove and add shard replica adn verify it.
103     ${shard_name} =    BuiltIn.Set_Variable    ${PREF_BASED_SHARD}
104     ${shard_type} =    BuiltIn.Set_Variable    ${SHARD_TYPE}
105     ${all_indices} =    ClusterManagement.List_All_Indices
106     ${old_leader}    ${follower_list} =    ClusterManagement.Get_Leader_And_Followers_For_Shard
107     ...    shard_name=${shard_name}!!
108     ...    shard_type=${shard_type}
109     ...    member_index_list=${all_indices}
110     ...    verify_restconf=False
111     ClusterAdmin.Remove_Prefix_Shard_Replica    ${old_leader}    ${shard_name}    member-${old_leader}    ${shard_type}
112     BuiltIn.Wait_Until_Keyword_Succeeds
113     ...    60s
114     ...    5s
115     ...    Verify_Shard_Replica_Not_Present
116     ...    ${old_leader}
117     ...    ${shard_name}!!
118     ...    ${shard_type}
119     ${actual_leader}    ${actual_follower_list} =    BuiltIn.Wait_Until_Keyword_Succeeds
120     ...    60s
121     ...    5s
122     ...    ClusterManagement.Get_Leader_And_Followers_For_Shard
123     ...    shard_name=${shard_name}!!
124     ...    verify_restconf=False
125     ...    shard_type=${shard_type}
126     ...    member_index_list=${follower_list}
127     BuiltIn.Should_Not_Be_Equal_As_Numbers    ${old_leader}    ${actual_leader}
128     BuiltIn.Wait_Until_Keyword_Succeeds
129     ...    60s
130     ...    5s
131     ...    ClusterAdmin.Add_Prefix_Shard_Replica
132     ...    ${old_leader}
133     ...    ${shard_name}
134     ...    ${shard_type}
135     BuiltIn.Wait_Until_Keyword_Succeeds
136     ...    60s
137     ...    5s
138     ...    ClusterManagement.Get_Leader_And_Followers_For_Shard
139     ...    shard_name=${shard_name}!!
140     ...    shard_type=${shard_type}
141     ...    member_index_list=${all_indices}
142     ...    verify_restconf=False
143
144 Remove_Follower_Prefix_Shard_Replica_And_Add_It_Back
145     [Documentation]    Remove and add shard replica adn verify it.
146     ${shard_name} =    BuiltIn.Set_Variable    ${PREF_BASED_SHARD}
147     ${shard_type} =    BuiltIn.Set_Variable    ${SHARD_TYPE}
148     ${all_indices} =    ClusterManagement.List_All_Indices
149     ${leader}    ${follower_list} =    ClusterManagement.Get_Leader_And_Followers_For_Shard
150     ...    shard_name=${shard_name}!!
151     ...    shard_type=${shard_type}
152     ...    member_index_list=${all_indices}
153     ...    verify_restconf=False
154     ${follower1} =    Collections.Get_From_List    ${follower_list}    ${0}
155     ClusterAdmin.Remove_Prefix_Shard_Replica    ${follower1}    ${shard_name}    member-${follower1}    ${shard_type}
156     BuiltIn.Wait_Until_Keyword_Succeeds
157     ...    60s
158     ...    5s
159     ...    DdbCommons.Verify_Shard_Replica_Not_Present
160     ...    ${follower1}
161     ...    ${shard_name}!!
162     ...    ${shard_type}
163     ${new_indices_list} =    ClusterManagement.List_Indices_Minus_Member    ${follower1}
164     ClusterManagement.Verify_Shard_Leader_Elected
165     ...    ${shard_name}!!
166     ...    ${shard_type}
167     ...    ${False}
168     ...    ${leader}
169     ...    member_index_list=${new_indices_list}
170     BuiltIn.Wait_Until_Keyword_Succeeds
171     ...    60s
172     ...    5s
173     ...    ClusterAdmin.Add_Prefix_Shard_Replica
174     ...    ${follower1}
175     ...    ${shard_name}
176     ...    ${shard_type}
177     BuiltIn.Wait_Until_Keyword_Succeeds
178     ...    60s
179     ...    5s
180     ...    ClusterManagement.Get_Leader_And_Followers_For_Shard
181     ...    shard_name=${shard_name}!!
182     ...    shard_type=${shard_type}
183     ...    member_index_list=${all_indices}
184     ...    verify_restconf=False
185
186 Produce_Transactions_One_Node_Leader
187     [Documentation]    Produce transactions.
188     ${all_indices} =    ClusterManagement.List_All_Indices
189     ${leader}    ${follower_list} =    ClusterManagement.Get_Leader_And_Followers_For_Shard
190     ...    shard_name=${SHARD_NAME}
191     ...    shard_type=${SHARD_TYPE}
192     ...    member_index_list=${all_indices}
193     ...    verify_restconf=False
194     ${leader_idx_as_list} =    BuiltIn.Create_List    ${leader}
195     ${leader_ip_as_list} =    ClusterManagement.Resolve_IP_Address_For_Members    ${leader_idx_as_list}
196     MdsalLowlevelPy.Start_Produce_Transactions_On_Nodes
197     ...    ${leader_ip_as_list}
198     ...    ${leader_idx_as_list}
199     ...    ${ID_PREFIX}
200     ...    ${DURATION}
201     ...    ${TRANSACTION_RATE_1K}
202     ${resp_list} =    MdsalLowlevelPy.Wait_For_Transactions
203     FOR    ${resp}    IN    @{resp_list}
204         TemplatedRequests.Check_Status_Code    ${resp}[2]
205     END
206
207 Produce_Transactions_One_Node_Follower
208     [Documentation]    Produce transactions.
209     ${all_indices} =    ClusterManagement.List_All_Indices
210     ${leader}    ${follower_list} =    ClusterManagement.Get_Leader_And_Followers_For_Shard
211     ...    shard_name=${SHARD_NAME}
212     ...    shard_type=${SHARD_TYPE}
213     ...    member_index_list=${all_indices}
214     ...    verify_restconf=False
215     ${follower_idx} =    Collections.Get_From_List    ${follower_list}    ${0}
216     ${follower_idx_as_list} =    BuiltIn.Create_List    ${follower_idx}
217     ${follower_ip_as_list} =    ClusterManagement.Resolve_IP_Address_For_Members    ${follower_idx_as_list}
218     MdsalLowlevelPy.Start_Produce_Transactions_On_Nodes
219     ...    ${follower_ip_as_list}
220     ...    ${follower_idx_as_list}
221     ...    ${ID_PREFIX}
222     ...    ${DURATION}
223     ...    ${TRANSACTION_RATE_1K}
224     ${resp_list} =    MdsalLowlevelPy.Wait_For_Transactions
225     FOR    ${resp}    IN    @{resp_list}
226         TemplatedRequests.Check_Status_Code    ${resp}[2]
227     END
228
229 Produce_Transactions
230     [Documentation]    Produce transactions.
231     ${all_indices} =    ClusterManagement.List_All_Indices
232     ${all_ip_list} =    ClusterManagement.Resolve_IP_Address_For_Members    ${all_indices}
233     MdsalLowlevelPy.Start_Produce_Transactions_On_Nodes
234     ...    ${all_ip_list}
235     ...    ${all_indices}
236     ...    ${ID_PREFIX}
237     ...    ${DURATION}
238     ...    ${TRANSACTION_RATE_1K}
239     ${resp_list} =    MdsalLowlevelPy.Wait_For_Transactions
240     FOR    ${resp}    IN    @{resp_list}
241         TemplatedRequests.Check_Status_Code    ${resp}[2]
242     END