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]

Reply via email to