public virtual void TestNestedUserQueuePrimaryGroup() { StringBuilder sb = new StringBuilder(); sb.Append("<queuePlacementPolicy>"); sb.Append(" <rule name='specified' create='false' />"); sb.Append(" <rule name='nestedUserQueue'>"); sb.Append(" <rule name='primaryGroup'/>"); sb.Append(" </rule>"); sb.Append(" <rule name='default' />"); sb.Append("</queuePlacementPolicy>"); // User queue would be created under primary group queue QueuePlacementPolicy policy = Parse(sb.ToString()); NUnit.Framework.Assert.AreEqual("root.user1group.user1", policy.AssignAppToQueue( "root.default", "user1")); // Other rules above and below hierarchical user queue rule should work as // usual configuredQueues[FSQueueType.Leaf].AddItem("root.specifiedq"); // test if specified rule(above nestedUserQueue rule) works ok NUnit.Framework.Assert.AreEqual("root.specifiedq", policy.AssignAppToQueue("root.specifiedq" , "user2")); // test if default rule(below nestedUserQueue rule) works configuredQueues[FSQueueType.Leaf].AddItem("root.user3group"); NUnit.Framework.Assert.AreEqual("root.default", policy.AssignAppToQueue("root.default" , "user3")); }
public virtual void TestSpecifiedThenReject() { StringBuilder sb = new StringBuilder(); sb.Append("<queuePlacementPolicy>"); sb.Append(" <rule name='specified' />"); sb.Append(" <rule name='reject' />"); sb.Append("</queuePlacementPolicy>"); QueuePlacementPolicy policy = Parse(sb.ToString()); NUnit.Framework.Assert.AreEqual("root.specifiedq", policy.AssignAppToQueue("specifiedq" , "someuser")); NUnit.Framework.Assert.AreEqual(null, policy.AssignAppToQueue("default", "someuser" )); }
public virtual void TestNestedUserQueuePrimaryGroupNoCreate() { // Primary group rule has create='false' StringBuilder sb = new StringBuilder(); sb.Append("<queuePlacementPolicy>"); sb.Append(" <rule name='nestedUserQueue'>"); sb.Append(" <rule name='primaryGroup' create='false'/>"); sb.Append(" </rule>"); sb.Append(" <rule name='default' />"); sb.Append("</queuePlacementPolicy>"); QueuePlacementPolicy policy = Parse(sb.ToString()); // Should return root.default since primary group 'root.user1group' is not // configured NUnit.Framework.Assert.AreEqual("root.default", policy.AssignAppToQueue("root.default" , "user1")); // Let's configure primary group and check if user queue is created configuredQueues[FSQueueType.Parent].AddItem("root.user1group"); policy = Parse(sb.ToString()); NUnit.Framework.Assert.AreEqual("root.user1group.user1", policy.AssignAppToQueue( "root.default", "user1")); // Both Primary group and nestedUserQueue rule has create='false' sb = new StringBuilder(); sb.Append("<queuePlacementPolicy>"); sb.Append(" <rule name='nestedUserQueue' create='false'>"); sb.Append(" <rule name='primaryGroup' create='false'/>"); sb.Append(" </rule>"); sb.Append(" <rule name='default' />"); sb.Append("</queuePlacementPolicy>"); // Should return root.default since primary group and user queue for user 2 // are not configured. NUnit.Framework.Assert.AreEqual("root.default", policy.AssignAppToQueue("root.default" , "user2")); // Now configure both primary group and the user queue for user2 configuredQueues[FSQueueType.Parent].AddItem("root.user2group"); configuredQueues[FSQueueType.Leaf].AddItem("root.user2group.user2"); policy = Parse(sb.ToString()); NUnit.Framework.Assert.AreEqual("root.user2group.user2", policy.AssignAppToQueue( "root.default", "user2")); }
public virtual void TestNoCreate() { StringBuilder sb = new StringBuilder(); sb.Append("<queuePlacementPolicy>"); sb.Append(" <rule name='specified' />"); sb.Append(" <rule name='user' create=\"false\" />"); sb.Append(" <rule name='default' />"); sb.Append("</queuePlacementPolicy>"); configuredQueues[FSQueueType.Leaf].AddItem("root.someuser"); QueuePlacementPolicy policy = Parse(sb.ToString()); NUnit.Framework.Assert.AreEqual("root.specifiedq", policy.AssignAppToQueue("specifiedq" , "someuser")); NUnit.Framework.Assert.AreEqual("root.someuser", policy.AssignAppToQueue("default" , "someuser")); NUnit.Framework.Assert.AreEqual("root.specifiedq", policy.AssignAppToQueue("specifiedq" , "otheruser")); NUnit.Framework.Assert.AreEqual("root.default", policy.AssignAppToQueue("default" , "otheruser")); }
public virtual void TestNestedUserQueueSpecificRule() { // This test covers the use case where users can specify different parent // queues and want user queues under those. StringBuilder sb = new StringBuilder(); sb.Append("<queuePlacementPolicy>"); sb.Append(" <rule name='nestedUserQueue'>"); sb.Append(" <rule name='specified' create='false'/>"); sb.Append(" </rule>"); sb.Append(" <rule name='default' />"); sb.Append("</queuePlacementPolicy>"); // Let's create couple of parent queues configuredQueues[FSQueueType.Parent].AddItem("root.parent1"); configuredQueues[FSQueueType.Parent].AddItem("root.parent2"); QueuePlacementPolicy policy = Parse(sb.ToString()); NUnit.Framework.Assert.AreEqual("root.parent1.user1", policy.AssignAppToQueue("root.parent1" , "user1")); NUnit.Framework.Assert.AreEqual("root.parent2.user2", policy.AssignAppToQueue("root.parent2" , "user2")); }
public virtual void TestNestedUserQueueSecondaryGroup() { StringBuilder sb = new StringBuilder(); sb.Append("<queuePlacementPolicy>"); sb.Append(" <rule name='nestedUserQueue'>"); sb.Append(" <rule name='secondaryGroupExistingQueue'/>"); sb.Append(" </rule>"); sb.Append(" <rule name='default' />"); sb.Append("</queuePlacementPolicy>"); QueuePlacementPolicy policy = Parse(sb.ToString()); // Should return root.default since secondary groups are not configured NUnit.Framework.Assert.AreEqual("root.default", policy.AssignAppToQueue("root.default" , "user1")); // configure secondary group for user1 configuredQueues[FSQueueType.Parent].AddItem("root.user1subgroup1"); policy = Parse(sb.ToString()); // user queue created should be created under secondary group NUnit.Framework.Assert.AreEqual("root.user1subgroup1.user1", policy.AssignAppToQueue ("root.default", "user1")); }
public virtual void TestUserContainsPeriod() { // This test covers the user case where the username contains periods. StringBuilder sb = new StringBuilder(); sb.Append("<queuePlacementPolicy>"); sb.Append(" <rule name='user' />"); sb.Append("</queuePlacementPolicy>"); QueuePlacementPolicy policy = Parse(sb.ToString()); NUnit.Framework.Assert.AreEqual("root.first_dot_last", policy.AssignAppToQueue("default" , "first.last")); sb = new StringBuilder(); sb.Append("<queuePlacementPolicy>"); sb.Append(" <rule name='specified' create='false' />"); sb.Append(" <rule name='nestedUserQueue'>"); sb.Append(" <rule name='default'/>"); sb.Append(" </rule>"); sb.Append(" <rule name='default' />"); sb.Append("</queuePlacementPolicy>"); policy = Parse(sb.ToString()); NUnit.Framework.Assert.AreEqual("root.default.first_dot_last", policy.AssignAppToQueue ("root.default", "first.last")); }
public virtual void TestDefaultRuleWithQueueAttribute() { // This test covers the use case where we would like default rule // to point to a different queue by default rather than root.default configuredQueues[FSQueueType.Leaf].AddItem("root.someDefaultQueue"); StringBuilder sb = new StringBuilder(); sb.Append("<queuePlacementPolicy>"); sb.Append(" <rule name='specified' create='false' />"); sb.Append(" <rule name='default' queue='root.someDefaultQueue'/>"); sb.Append("</queuePlacementPolicy>"); QueuePlacementPolicy policy = Parse(sb.ToString()); NUnit.Framework.Assert.AreEqual("root.someDefaultQueue", policy.AssignAppToQueue( "root.default", "user1")); }
public virtual void TestNestedUserQueueDefaultRule() { // This test covers the use case where we would like user queues to be // created under a default parent queue configuredQueues[FSQueueType.Parent].AddItem("root.parentq"); StringBuilder sb = new StringBuilder(); sb.Append("<queuePlacementPolicy>"); sb.Append(" <rule name='specified' create='false' />"); sb.Append(" <rule name='nestedUserQueue'>"); sb.Append(" <rule name='default' queue='root.parentq'/>"); sb.Append(" </rule>"); sb.Append(" <rule name='default' />"); sb.Append("</queuePlacementPolicy>"); QueuePlacementPolicy policy = Parse(sb.ToString()); NUnit.Framework.Assert.AreEqual("root.parentq.user1", policy.AssignAppToQueue("root.default" , "user1")); }
public virtual void TestGroupContainsPeriod() { StringBuilder sb = new StringBuilder(); sb.Append("<queuePlacementPolicy>"); sb.Append(" <rule name='specified' create='false' />"); sb.Append(" <rule name='nestedUserQueue'>"); sb.Append(" <rule name='primaryGroup'/>"); sb.Append(" </rule>"); sb.Append(" <rule name='default' />"); sb.Append("</queuePlacementPolicy>"); conf.SetClass(CommonConfigurationKeys.HadoopSecurityGroupMapping, typeof(PeriodGroupsMapping ), typeof(GroupMappingServiceProvider)); // User queue would be created under primary group queue, and the period // in the group name should be converted into _dot_ QueuePlacementPolicy policy = Parse(sb.ToString()); NUnit.Framework.Assert.AreEqual("root.user1_dot_group.user1", policy.AssignAppToQueue ("root.default", "user1")); conf.SetClass(CommonConfigurationKeys.HadoopSecurityGroupMapping, typeof(SimpleGroupsMapping ), typeof(GroupMappingServiceProvider)); }