Skip to content

Commit 5f8c3ca

Browse files
Add new testcases to repro the issue
1 parent 5d08ffa commit 5f8c3ca

File tree

1 file changed

+57
-0
lines changed
  • hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/placement/csmappingrule

1 file changed

+57
-0
lines changed

hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/placement/csmappingrule/TestCSMappingPlacementRule.java

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@
1818

1919
package org.apache.hadoop.yarn.server.resourcemanager.placement.csmappingrule;
2020

21+
import org.apache.commons.logging.Log;
22+
import org.apache.commons.logging.LogFactory;
23+
import org.apache.commons.logging.impl.Log4JLogger;
2124
import org.apache.hadoop.conf.Configuration;
2225
import org.apache.hadoop.security.GroupMappingServiceProvider;
2326
import org.apache.hadoop.thirdparty.com.google.common.collect.ImmutableMap;
@@ -33,6 +36,7 @@
3336
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacitySchedulerConfiguration;
3437
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacitySchedulerQueueManager;
3538
import org.apache.hadoop.yarn.util.Records;
39+
import org.apache.log4j.Level;
3640
import org.junit.Rule;
3741
import org.junit.Test;
3842
import org.junit.rules.TemporaryFolder;
@@ -857,6 +861,59 @@ public List<MappingRule> getMappingRules() {
857861
assertPlace(engine, app, user, "root.man.testGroup0");
858862
}
859863

864+
@Test
865+
public void testUserNameSetDefaultAndPlaceWith2Rules() throws IOException {
866+
Log log = LogFactory.getLog("org.apache.hadoop.yarn.server.resourcemanager.placement");
867+
if (log instanceof Log4JLogger) {
868+
org.apache.log4j.Logger logger = ((Log4JLogger) log).getLogger();
869+
logger.setLevel(Level.DEBUG);
870+
}
871+
872+
List<MappingRule> rules = new ArrayList<>();
873+
rules.add(
874+
new MappingRule(
875+
MappingRuleMatchers.createUserMatcher("test.user"),
876+
(MappingRuleActions.createUpdateDefaultAction("root.user"))
877+
.setFallbackSkip()));
878+
rules.add(new MappingRule(
879+
MappingRuleMatchers.createUserMatcher("test.user"),
880+
(MappingRuleActions.createPlaceToDefaultAction())
881+
.setFallbackReject()));
882+
883+
CSMappingPlacementRule engine = setupEngine(true, rules);
884+
ApplicationSubmissionContext app = createApp("app");
885+
assertPlace(
886+
"test.user should be placed to root.user",
887+
engine, app, "test.user", "root.user");
888+
}
889+
890+
@Test
891+
public void testUserNameSetDefaultAndPlaceWith2RulesUsernameReplacedWithDot() throws IOException {
892+
Log log = LogFactory.getLog("org.apache.hadoop.yarn.server.resourcemanager.placement");
893+
if (log instanceof Log4JLogger) {
894+
org.apache.log4j.Logger logger = ((Log4JLogger) log).getLogger();
895+
logger.setLevel(Level.DEBUG);
896+
}
897+
898+
899+
ArrayList<MappingRule> rules = new ArrayList<>();
900+
rules.add(
901+
new MappingRule(
902+
MappingRuleMatchers.createUserMatcher("test_dot_user"),
903+
(MappingRuleActions.createUpdateDefaultAction("root.user.bob"))
904+
.setFallbackSkip()));
905+
rules.add(new MappingRule(
906+
MappingRuleMatchers.createUserMatcher("test_dot_user"),
907+
(MappingRuleActions.createPlaceToDefaultAction())
908+
.setFallbackReject()));
909+
910+
CSMappingPlacementRule engine = setupEngine(true, rules);
911+
ApplicationSubmissionContext app = createApp("app");
912+
assertPlace(
913+
"test.user should be placed to root.user.bob",
914+
engine, app, "test.user", "root.user.bob");
915+
}
916+
860917
private CSMappingPlacementRule initPlacementEngine(CapacityScheduler cs) throws IOException {
861918
CSMappingPlacementRule engine = new CSMappingPlacementRule();
862919
engine.setFailOnConfigError(true);

0 commit comments

Comments
 (0)