This is an automated email from the ASF dual-hosted git repository.
adoroszlai pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ozone.git
The following commit(s) were added to refs/heads/master by this push:
new f2584fbf33 HDDS-9450. Add more test cases for transferring OM
leadership (#5439)
f2584fbf33 is described below
commit f2584fbf333e149513371fe7daea60ef08c28b0b
Author: Pratyush Bhatt <[email protected]>
AuthorDate: Tue Oct 17 23:07:19 2023 +0530
HDDS-9450. Add more test cases for transferring OM leadership (#5439)
---
.../main/smoketest/omha/om-leader-transfer.robot | 151 ++++++++++++++++-----
1 file changed, 114 insertions(+), 37 deletions(-)
diff --git a/hadoop-ozone/dist/src/main/smoketest/omha/om-leader-transfer.robot
b/hadoop-ozone/dist/src/main/smoketest/omha/om-leader-transfer.robot
index e1895b1db4..d090b4c9f9 100644
--- a/hadoop-ozone/dist/src/main/smoketest/omha/om-leader-transfer.robot
+++ b/hadoop-ozone/dist/src/main/smoketest/omha/om-leader-transfer.robot
@@ -14,60 +14,137 @@
# limitations under the License.
*** Settings ***
-Documentation Smoketest ozone cluster startup
+Documentation Smoketest for OM leader transfer
Library OperatingSystem
Library BuiltIn
Resource ../commonlib.robot
Test Timeout 5 minutes
-** Keywords ***
+
+*** Keywords ***
+Get OM Nodes
+ ${result} = Execute ozone admin om roles
--service-id=omservice --json | jq -r '[.[] | .[] | select(.serverRole ==
"LEADER") | .hostname], [.[] | .[] | select(.serverRole == "FOLLOWER") |
.hostname] | .[]'
+ ${leader}= Get Line ${result} 0
+ ${follower1}= Get Line ${result} 1
+ ${follower2}= Get Line ${result} 2
+ [Return] ${leader} ${follower1} ${follower2}
+
Get OM Leader Node
- ${result} = Execute ozone admin om roles
--service-id=omservice
- LOG ${result}
- Should Contain ${result}
LEADER 1
- Should Contain ${result}
FOLLOWER 2
- ${omLine} = Get Lines Containing String
${result} LEADER
- ${split1} ${split2} Split String
${omLine} :
- ${leaderOM} = Strip String ${split1}
- LOG Leader OM: ${leaderOM}
- [return] ${leaderOM}
+ ${result} = Get OM Nodes
+ [Return] ${result}[0]
Get One OM Follower Node
- ${result} = Execute ozone admin om roles
--service-id=omservice
- LOG ${result}
- Should Contain ${result}
LEADER 1
- Should Contain ${result}
FOLLOWER 2
- ${omLines} = Get Lines Containing String
${result} FOLLOWER
- ${omLine} = Get Line ${omLines} 0
- ${split1} ${split2} Split String
${omLine} :
- ${followerOM} = Strip String ${split1}
- LOG Follower OM: ${followerOM}
- [return] ${followerOM}
-
-
-** Test Cases ***
-Transfer Leadership for OM
+ ${result} = Get OM Nodes
+ [Return] ${result}[1]
+
+Get OM Leader and One Follower Node
+ ${result} = Get OM Nodes
+ [Return] ${result}[0] ${result}[1]
+
+Assert OM leader Role Transitions
+ [arguments] ${leaderOM} ${followerOM} ${isEqualCheck}
+ ${newLeaderOM} = Get OM Leader Node
+ Should not be Equal ${leaderOM}
${newLeaderOM}
+ Run Keyword If '${isEqualCheck}' == 'true' Should be
Equal ${followerOM} ${newLeaderOM}
+
+
+*** Test Cases ***
+Transfer Leadership for OM with Valid ServiceID Specified
# Find Leader OM and one Follower OM
- ${leaderOM} = Get OM Leader Node
- LOG Leader OM: ${leaderOM}
- ${followerOM} = Get One OM Follower Node
- LOG Follower OM: ${followerOM}
+ ${leaderOM} ${followerOM} = Get OM Leader and One Follower Node
+
# Transfer leadership to the Follower OM
${result} = Execute ozone admin om transfer
--service-id=omservice -n ${followerOM}
- LOG ${result}
Should Contain ${result}
Transfer leadership successfully
- ${newLeaderOM} = Get OM Leader Node
- Should be Equal ${followerOM}
${newLeaderOM}
+ Assert OM Leader Role Transitions ${leaderOM} ${followerOM} true
+
+Transfer Leadership for OM with Multiple ServiceIDs, Valid ServiceID Specified
+ # Find Leader OM and one Follower OM
+ ${leaderOM} ${followerOM} = Get OM Leader and One Follower Node
+
+ # Transfer leadership to the Follower OM
+ ${result} = Execute ozone admin
--set=ozone.om.service.ids=omservice,omservice2 om transfer
--service-id=omservice -n ${followerOM}
+ Should Contain ${result}
Transfer leadership successfully
+
+ Assert OM Leader Role Transitions ${leaderOM} ${followerOM} true
+
+Transfer Leadership for OM with Multiple ServiceIDs, Unconfigured ServiceID
Specified
+ # Find one Follower OM
+ ${followerOM} = Get One OM Follower Node
+
+ # Transfer leadership to the Follower OM
+ ${result} = Execute And Ignore Error ozone
admin --set=ozone.om.service.ids=omservice,omservice2 om transfer
--service-id=omservice3 -n ${followerOM}
+ Should Contain ${result} Service
ID specified does not match
+
+Transfer Leadership for OM with Multiple ServiceIDs, Invalid ServiceID
Specified
+ # Find one Follower OM
+ ${followerOM} = Get One OM Follower Node
+
+ # Transfer leadership to the Follower OM
+ ${result} = Execute And Ignore Error ozone
admin --set=ozone.om.service.ids=omservice,omservice2 om transfer
--service-id=omservice2 -n ${followerOM}
+ Should Contain ${result} Could not
find any configured addresses for OM.
+
+Transfer Leadership for OM without ServiceID specified
+ # Find Leader OM and one Follower OM
+ ${leaderOM} ${followerOM} = Get OM Leader and One Follower Node
+
+ # Transfer leadership to the Follower OM
+ ${result} = Execute ozone admin om transfer -n
${followerOM}
+ Should Contain ${result}
Transfer leadership successfully
+
+ Assert OM Leader Role Transitions ${leaderOM} ${followerOM} true
+
+Transfer Leadership for OM with Multiple ServiceIDs, No ServiceID Specified
+ # Find one Follower OM
+ ${followerOM} = Get One OM Follower Node
-Transfer Leadership for OM randomly
+ # Transfer leadership to the Follower OM
+ ${result} = Execute And Ignore Error ozone
admin --set=ozone.om.service.ids=omservice,ozone1 om transfer -n ${followerOM}
+ Should Contain ${result} no Ozone
Manager service ID specified
+
+Transfer Leadership for OM randomly with Valid ServiceID Specified
# Find Leader OM and one Follower OM
${leaderOM} = Get OM Leader Node
- LOG Leader OM: ${leaderOM}
+ # Transfer leadership to the Follower OM
+ ${result} = Execute ozone admin om transfer
--service-id=omservice -r
+ Should Contain ${result}
Transfer leadership successfully
+
+ Assert OM Leader Role Transitions ${leaderOM} "" false
+
+Transfer Leadership for OM randomly with Multiple ServiceIDs, Valid ServiceID
Specified
+ # Find Leader OM and one Follower OM
+ ${leaderOM} = Get OM Leader Node
+
+ # Transfer leadership to the Follower OM
+ ${result} = Execute ozone admin
--set=ozone.om.service.ids=omservice,omservice2 om transfer
--service-id=omservice -r
+ Should Contain ${result}
Transfer leadership successfully
+
+ Assert OM Leader Role Transitions ${leaderOM} "" false
+
+Transfer Leadership for OM randomly with Multiple ServiceIDs, Unconfigured
ServiceID Specified
+ # Transfer leadership to the Follower OM
+ ${result} = Execute And Ignore Error ozone
admin --set=ozone.om.service.ids=omservice,omservice2 om transfer
--service-id=omservice3 -r
+ Should Contain ${result} Service
ID specified does not match
+
+Transfer Leadership for OM randomly with Multiple ServiceIDs, Invalid
ServiceID Specified
+ # Transfer leadership to the Follower OM
+
+ ${result} = Execute And Ignore Error ozone
admin --set=ozone.om.service.ids=omservice,omservice2 om transfer
--service-id=omservice2 -r
+ Should Contain ${result} Could not
find any configured addresses for OM.
+
+Transfer Leadership for OM randomly without ServiceID specified
+ # Find Leader OM and one Follower OM
+ ${leaderOM} = Get OM Leader Node
+
# Transfer leadership to the Follower OM
${result} = Execute ozone admin om transfer -r
- LOG ${result}
Should Contain ${result}
Transfer leadership successfully
- ${newLeaderOM} = Get OM Leader Node
- Should Not be Equal ${leaderOM}
${newLeaderOM}
+ Assert OM Leader Role Transitions ${leaderOM} "" false
+
+Transfer Leadership for OM randomly with Multiple ServiceIDs, No ServiceID
Specified
+ # Transfer leadership to the Follower OM
+
+ ${result} = Execute And Ignore Error ozone
admin --set=ozone.om.service.ids=omservice,ozone1 om transfer -r
+ Should Contain ${result} no Ozone
Manager service ID specified
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]