*** Settings ***
-Documentation DOMDataBroker testing: Module based shards sanity suite
+Documentation DOMDataBroker testing: Module based shards sanity suite
...
-... Copyright (c) 2017 Cisco Systems, Inc. and others. All rights reserved.
+... Copyright (c) 2017 Cisco Systems, Inc. and others. All rights reserved.
...
-... This program and the accompanying materials are made available under the
-... terms of the Eclipse Public License v1.0 which accompanies this distribution,
-... and is available at http://www.eclipse.org/legal/epl-v10.html
+... This program and the accompanying materials are made available under the
+... terms of the Eclipse Public License v1.0 which accompanies this distribution,
+... and is available at http://www.eclipse.org/legal/epl-v10.html
...
-... The goal is to call several basic rpc form ClusterAdmin.robot and
-... MdsalLowlevel.robot to ensute that those rpcs can be safely used in
-... other suites.
-... It also verify the ability of the odl-controller-test-app to perform
-... several activities.
-Suite Setup BuiltIn.Run_Keywords SetupUtils.Setup_Utils_For_Setup_And_Teardown http_timeout=125
-... AND DdbCommons.Create_Prefix_Based_Shard_And_Verify
-Suite Teardown BuiltIn.Run_Keywords DdbCommons.Remove_Prefix_Based_Shard_And_Verify
-... AND SSHLibrary.Close_All_Connections
-Test Setup SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
-Test Teardown SetupUtils.Teardown_Test_Show_Bugs_If_Test_Failed
-Default Tags critical
-Library SSHLibrary
-Library ${CURDIR}/../../../libraries/MdsalLowlevelPy.py
-Resource ${CURDIR}/../../../libraries/ClusterAdmin.robot
-Resource ${CURDIR}/../../../libraries/ClusterManagement.robot
-Resource ${CURDIR}/../../../libraries/controller/DdbCommons.robot
-Resource ${CURDIR}/../../../libraries/SetupUtils.robot
+... The goal is to call several basic rpc form ClusterAdmin.robot and
+... MdsalLowlevel.robot to ensute that those rpcs can be safely used in
+... other suites.
+... It also verify the ability of the odl-controller-test-app to perform
+... several activities.
+
+Library SSHLibrary
+Library ${CURDIR}/../../../libraries/MdsalLowlevelPy.py
+Resource ${CURDIR}/../../../libraries/ClusterAdmin.robot
+Resource ${CURDIR}/../../../libraries/ClusterManagement.robot
+Resource ${CURDIR}/../../../libraries/controller/DdbCommons.robot
+Resource ${CURDIR}/../../../libraries/SetupUtils.robot
+
+Suite Setup BuiltIn.Run_Keywords SetupUtils.Setup_Utils_For_Setup_And_Teardown http_timeout=125
+... AND DdbCommons.Create_Prefix_Based_Shard_And_Verify
+Suite Teardown BuiltIn.Run_Keywords DdbCommons.Remove_Prefix_Based_Shard_And_Verify
+... AND SSHLibrary.Close_All_Connections
+Test Setup SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
+Test Teardown SetupUtils.Teardown_Test_Show_Bugs_If_Test_Failed
+
+Default Tags critical
+
*** Variables ***
-${PREF_BASED_SHARD} id-ints
-${SHARD_TYPE} config
-${TRANSACTION_RATE_1K} ${1000}
-${DURATION} ${30}
-${SIMPLE_TX} ${False}
-${CHAINED_TX} ${True}
-${ID_PREFIX} prefix-
+${PREF_BASED_SHARD} id-ints
+${SHARD_TYPE} config
+${TRANSACTION_RATE_1K} ${1000}
+${DURATION} ${30}
+${SIMPLE_TX} ${False}
+${CHAINED_TX} ${True}
+${ID_PREFIX} prefix-
+
*** Test Cases ***
Get_Prefix_Shard_Role
Subscribe_Listener_To_Leader
[Documentation] Subscribe listener to leader.
${all_indices} = ClusterManagement.List_All_Indices
- ${leader} ${follower_list} = ClusterManagement.Get_Leader_And_Followers_For_Shard shard_name=${SHARD_NAME} shard_type=${SHARD_TYPE} member_index_list=${all_indices} verify_restconf=False
+ ${leader} ${follower_list} = ClusterManagement.Get_Leader_And_Followers_For_Shard
+ ... shard_name=${SHARD_NAME}
+ ... shard_type=${SHARD_TYPE}
+ ... member_index_list=${all_indices}
+ ... verify_restconf=False
MdsalLowlevel.Subscribe_Ddtl ${leader}
BuiltIn.Sleep 5s
${copy_matches} = MdsalLowlevel.Unsubscribe_Ddtl_No_Tx ${leader}
Subscribe_Listener_To_Follower
[Documentation] Subscribe listener to follower.
${all_indices} = ClusterManagement.List_All_Indices
- ${leader} ${follower_list} = ClusterManagement.Get_Leader_And_Followers_For_Shard shard_name=${SHARD_NAME} shard_type=${SHARD_TYPE} member_index_list=${all_indices} verify_restconf=False
+ ${leader} ${follower_list} = ClusterManagement.Get_Leader_And_Followers_For_Shard
+ ... shard_name=${SHARD_NAME}
+ ... shard_type=${SHARD_TYPE}
+ ... member_index_list=${all_indices}
+ ... verify_restconf=False
${follower_idx} = Collections.Get_From_List ${follower_list} ${0}
MdsalLowlevel.Subscribe_Ddtl ${follower_idx}
BuiltIn.Sleep 5s
${shard_name} = BuiltIn.Set_Variable ${PREF_BASED_SHARD}
${shard_type} = BuiltIn.Set_Variable ${SHARD_TYPE}
${all_indices} = ClusterManagement.List_All_Indices
- ${old_leader} ${follower_list} = ClusterManagement.Get_Leader_And_Followers_For_Shard shard_name=${shard_name}!! shard_type=${shard_type} member_index_list=${all_indices} verify_restconf=False
+ ${old_leader} ${follower_list} = ClusterManagement.Get_Leader_And_Followers_For_Shard
+ ... shard_name=${shard_name}!!
+ ... shard_type=${shard_type}
+ ... member_index_list=${all_indices}
+ ... verify_restconf=False
${follower1} = Collections.Get_From_List ${follower_list} ${0}
MdsalLowlevel.Become_Prefix_Leader ${follower1} ${shard_name}
- ${leader} ${follower_list} = BuiltIn.Wait_Until_Keyword_Succeeds 60s 5s ClusterManagement.Verify_Shard_Leader_Elected ${shard_name}!!
- ... ${shard_type} ${True} ${old_leader} member_index_list=${EMPTY}
+ ${leader} ${follower_list} = BuiltIn.Wait_Until_Keyword_Succeeds
+ ... 60s
+ ... 5s
+ ... ClusterManagement.Verify_Shard_Leader_Elected
+ ... ${shard_name}!!
+ ... ${shard_type}
+ ... ${True}
+ ... ${old_leader}
+ ... member_index_list=${EMPTY}
BuiltIn.Should_Be_Equal_As_Numbers ${follower1} ${leader}
Remove_Leader_Prefix_Shard_Replica_And_Add_It_Back
${shard_name} = BuiltIn.Set_Variable ${PREF_BASED_SHARD}
${shard_type} = BuiltIn.Set_Variable ${SHARD_TYPE}
${all_indices} = ClusterManagement.List_All_Indices
- ${old_leader} ${follower_list} = ClusterManagement.Get_Leader_And_Followers_For_Shard shard_name=${shard_name}!! shard_type=${shard_type} member_index_list=${all_indices} verify_restconf=False
+ ${old_leader} ${follower_list} = ClusterManagement.Get_Leader_And_Followers_For_Shard
+ ... shard_name=${shard_name}!!
+ ... shard_type=${shard_type}
+ ... member_index_list=${all_indices}
+ ... verify_restconf=False
ClusterAdmin.Remove_Prefix_Shard_Replica ${old_leader} ${shard_name} member-${old_leader} ${shard_type}
- BuiltIn.Wait_Until_Keyword_Succeeds 60s 5s Verify_Shard_Replica_Not_Present ${old_leader} ${shard_name}!! ${shard_type}
- ${actual_leader} ${actual_follower_list} = BuiltIn.Wait_Until_Keyword_Succeeds 60s 5s ClusterManagement.Get_Leader_And_Followers_For_Shard shard_name=${shard_name}!!
- ... verify_restconf=False shard_type=${shard_type} member_index_list=${follower_list}
+ BuiltIn.Wait_Until_Keyword_Succeeds
+ ... 60s
+ ... 5s
+ ... Verify_Shard_Replica_Not_Present
+ ... ${old_leader}
+ ... ${shard_name}!!
+ ... ${shard_type}
+ ${actual_leader} ${actual_follower_list} = BuiltIn.Wait_Until_Keyword_Succeeds
+ ... 60s
+ ... 5s
+ ... ClusterManagement.Get_Leader_And_Followers_For_Shard
+ ... shard_name=${shard_name}!!
+ ... verify_restconf=False
+ ... shard_type=${shard_type}
+ ... member_index_list=${follower_list}
BuiltIn.Should_Not_Be_Equal_As_Numbers ${old_leader} ${actual_leader}
- BuiltIn.Wait_Until_Keyword_Succeeds 60s 5s ClusterAdmin.Add_Prefix_Shard_Replica ${old_leader} ${shard_name} ${shard_type}
- BuiltIn.Wait_Until_Keyword_Succeeds 60s 5s ClusterManagement.Get_Leader_And_Followers_For_Shard shard_name=${shard_name}!! shard_type=${shard_type} member_index_list=${all_indices}
+ BuiltIn.Wait_Until_Keyword_Succeeds
+ ... 60s
+ ... 5s
+ ... ClusterAdmin.Add_Prefix_Shard_Replica
+ ... ${old_leader}
+ ... ${shard_name}
+ ... ${shard_type}
+ BuiltIn.Wait_Until_Keyword_Succeeds
+ ... 60s
+ ... 5s
+ ... ClusterManagement.Get_Leader_And_Followers_For_Shard
+ ... shard_name=${shard_name}!!
+ ... shard_type=${shard_type}
+ ... member_index_list=${all_indices}
... verify_restconf=False
Remove_Follower_Prefix_Shard_Replica_And_Add_It_Back
${shard_name} = BuiltIn.Set_Variable ${PREF_BASED_SHARD}
${shard_type} = BuiltIn.Set_Variable ${SHARD_TYPE}
${all_indices} = ClusterManagement.List_All_Indices
- ${leader} ${follower_list} = ClusterManagement.Get_Leader_And_Followers_For_Shard shard_name=${shard_name}!! shard_type=${shard_type} member_index_list=${all_indices} verify_restconf=False
+ ${leader} ${follower_list} = ClusterManagement.Get_Leader_And_Followers_For_Shard
+ ... shard_name=${shard_name}!!
+ ... shard_type=${shard_type}
+ ... member_index_list=${all_indices}
+ ... verify_restconf=False
${follower1} = Collections.Get_From_List ${follower_list} ${0}
ClusterAdmin.Remove_Prefix_Shard_Replica ${follower1} ${shard_name} member-${follower1} ${shard_type}
- BuiltIn.Wait_Until_Keyword_Succeeds 60s 5s DdbCommons.Verify_Shard_Replica_Not_Present ${follower1} ${shard_name}!! ${shard_type}
+ BuiltIn.Wait_Until_Keyword_Succeeds
+ ... 60s
+ ... 5s
+ ... DdbCommons.Verify_Shard_Replica_Not_Present
+ ... ${follower1}
+ ... ${shard_name}!!
+ ... ${shard_type}
${new_indices_list} = ClusterManagement.List_Indices_Minus_Member ${follower1}
- ClusterManagement.Verify_Shard_Leader_Elected ${shard_name}!! ${shard_type} ${False} ${leader} member_index_list=${new_indices_list}
- BuiltIn.Wait_Until_Keyword_Succeeds 60s 5s ClusterAdmin.Add_Prefix_Shard_Replica ${follower1} ${shard_name} ${shard_type}
- BuiltIn.Wait_Until_Keyword_Succeeds 60s 5s ClusterManagement.Get_Leader_And_Followers_For_Shard shard_name=${shard_name}!! shard_type=${shard_type} member_index_list=${all_indices}
+ ClusterManagement.Verify_Shard_Leader_Elected
+ ... ${shard_name}!!
+ ... ${shard_type}
+ ... ${False}
+ ... ${leader}
+ ... member_index_list=${new_indices_list}
+ BuiltIn.Wait_Until_Keyword_Succeeds
+ ... 60s
+ ... 5s
+ ... ClusterAdmin.Add_Prefix_Shard_Replica
+ ... ${follower1}
+ ... ${shard_name}
+ ... ${shard_type}
+ BuiltIn.Wait_Until_Keyword_Succeeds
+ ... 60s
+ ... 5s
+ ... ClusterManagement.Get_Leader_And_Followers_For_Shard
+ ... shard_name=${shard_name}!!
+ ... shard_type=${shard_type}
+ ... member_index_list=${all_indices}
... verify_restconf=False
Produce_Transactions_One_Node_Leader
[Documentation] Produce transactions.
${all_indices} = ClusterManagement.List_All_Indices
- ${leader} ${follower_list} = ClusterManagement.Get_Leader_And_Followers_For_Shard shard_name=${SHARD_NAME} shard_type=${SHARD_TYPE} member_index_list=${all_indices} verify_restconf=False
+ ${leader} ${follower_list} = ClusterManagement.Get_Leader_And_Followers_For_Shard
+ ... shard_name=${SHARD_NAME}
+ ... shard_type=${SHARD_TYPE}
+ ... member_index_list=${all_indices}
+ ... verify_restconf=False
${leader_idx_as_list} = BuiltIn.Create_List ${leader}
${leader_ip_as_list} = ClusterManagement.Resolve_IP_Address_For_Members ${leader_idx_as_list}
- MdsalLowlevelPy.Start_Produce_Transactions_On_Nodes ${leader_ip_as_list} ${leader_idx_as_list} ${ID_PREFIX} ${DURATION} ${TRANSACTION_RATE_1K}
+ MdsalLowlevelPy.Start_Produce_Transactions_On_Nodes
+ ... ${leader_ip_as_list}
+ ... ${leader_idx_as_list}
+ ... ${ID_PREFIX}
+ ... ${DURATION}
+ ... ${TRANSACTION_RATE_1K}
${resp_list} = MdsalLowlevelPy.Wait_For_Transactions
FOR ${resp} IN @{resp_list}
TemplatedRequests.Check_Status_Code ${resp}[2]
Produce_Transactions_One_Node_Follower
[Documentation] Produce transactions.
${all_indices} = ClusterManagement.List_All_Indices
- ${leader} ${follower_list} = ClusterManagement.Get_Leader_And_Followers_For_Shard shard_name=${SHARD_NAME} shard_type=${SHARD_TYPE} member_index_list=${all_indices} verify_restconf=False
+ ${leader} ${follower_list} = ClusterManagement.Get_Leader_And_Followers_For_Shard
+ ... shard_name=${SHARD_NAME}
+ ... shard_type=${SHARD_TYPE}
+ ... member_index_list=${all_indices}
+ ... verify_restconf=False
${follower_idx} = Collections.Get_From_List ${follower_list} ${0}
${follower_idx_as_list} = BuiltIn.Create_List ${follower_idx}
${follower_ip_as_list} = ClusterManagement.Resolve_IP_Address_For_Members ${follower_idx_as_list}
- MdsalLowlevelPy.Start_Produce_Transactions_On_Nodes ${follower_ip_as_list} ${follower_idx_as_list} ${ID_PREFIX} ${DURATION} ${TRANSACTION_RATE_1K}
+ MdsalLowlevelPy.Start_Produce_Transactions_On_Nodes
+ ... ${follower_ip_as_list}
+ ... ${follower_idx_as_list}
+ ... ${ID_PREFIX}
+ ... ${DURATION}
+ ... ${TRANSACTION_RATE_1K}
${resp_list} = MdsalLowlevelPy.Wait_For_Transactions
FOR ${resp} IN @{resp_list}
TemplatedRequests.Check_Status_Code ${resp}[2]
[Documentation] Produce transactions.
${all_indices} = ClusterManagement.List_All_Indices
${all_ip_list} = ClusterManagement.Resolve_IP_Address_For_Members ${all_indices}
- MdsalLowlevelPy.Start_Produce_Transactions_On_Nodes ${all_ip_list} ${all_indices} ${ID_PREFIX} ${DURATION} ${TRANSACTION_RATE_1K}
+ MdsalLowlevelPy.Start_Produce_Transactions_On_Nodes
+ ... ${all_ip_list}
+ ... ${all_indices}
+ ... ${ID_PREFIX}
+ ... ${DURATION}
+ ... ${TRANSACTION_RATE_1K}
${resp_list} = MdsalLowlevelPy.Wait_For_Transactions
FOR ${resp} IN @{resp_list}
TemplatedRequests.Check_Status_Code ${resp}[2]