diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestRMAdminService.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestRMAdminService.java index 475dd8c..b44dc63 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestRMAdminService.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestRMAdminService.java @@ -503,9 +503,11 @@ public void testAdminAclsWithFileSystemBasedConfigurationProvider() String aclStringAfter = rm.adminService.getAccessControlList().getAclString().trim(); + String user = UserGroupInformation.getCurrentUser().getShortUserName(); + String aclString = buildAclString(user, "world:anyone:rwcda"); + Assert.assertTrue(!aclStringAfter.equals(aclStringBefore)); - Assert.assertEquals(aclStringAfter, "world:anyone:rwcda," + - UserGroupInformation.getCurrentUser().getShortUserName()); + Assert.assertEquals(aclString, aclStringAfter); } @Test @@ -1054,8 +1056,11 @@ public void testRMInitialsWithFileSystemBasedConfigurationProvider() String aclStringAfter = resourceManager.adminService.getAccessControlList() .getAclString().trim(); - Assert.assertEquals(aclStringAfter, "world:anyone:rwcda," + - UserGroupInformation.getCurrentUser().getShortUserName()); + + String user = UserGroupInformation.getCurrentUser().getShortUserName(); + String aclString = buildAclString(user, "world:anyone:rwcda"); + + Assert.assertEquals(aclStringAfter, aclString); // validate values for queue configuration CapacityScheduler cs = @@ -1143,7 +1148,7 @@ public void testRefreshAclWithDaemonUser() throws Exception { fail("Should not get any exceptions"); } - assertEquals(daemonUser + "xyz," + daemonUser, + assertEquals(String.join(",", daemonUser, daemonUser + "xyz"), rm.adminService.getAccessControlList().getAclString().trim()); yarnConf = new YarnConfiguration(); @@ -1159,7 +1164,7 @@ public void testRefreshAclWithDaemonUser() throws Exception { throw e; } - assertEquals(daemonUser + "abc," + daemonUser, + assertEquals(String.join(",", daemonUser, daemonUser + "abc"), rm.adminService.getAccessControlList().getAclString().trim()); } @@ -1693,4 +1698,16 @@ private void setActiveAndInactiveNodes(ResourceManager resourceManager) { rmInactiveNodes.put(NodeId.newInstance("host4", 4444), new RMNodeImpl(null, resourceManager.getRMContext(), "host4", 0, 0, null, null, null)); } + + /** + * ACL Strings will be generated in alphabetical order. This utility puts a + * user name in the correct position relative to other ACL information so that + * it matches the output of AccessControlList. + */ + private String buildAclString(String userName, String other) { + if (userName.compareTo(other) < 0) { + return String.join(",", userName, other); + } + return String.join(",", other, userName); + } }