Repository: incubator-falcon Updated Branches: refs/heads/master e99cebd3d -> c936ca47a
FALCON-955 enable and fix feedAclUpdate and processAclUpdate tests. Contributed by Raghav Kumar Gautam Project: http://git-wip-us.apache.org/repos/asf/incubator-falcon/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-falcon/commit/c936ca47 Tree: http://git-wip-us.apache.org/repos/asf/incubator-falcon/tree/c936ca47 Diff: http://git-wip-us.apache.org/repos/asf/incubator-falcon/diff/c936ca47 Branch: refs/heads/master Commit: c936ca47a65f933bff73960e405df9968f1f5ef5 Parents: e99cebd Author: Ruslan Ostafiychuk <rostafiyc...@apache.org> Authored: Wed Dec 24 15:26:22 2014 +0200 Committer: Ruslan Ostafiychuk <rostafiyc...@apache.org> Committed: Wed Dec 24 15:26:22 2014 +0200 ---------------------------------------------------------------------- falcon-regression/CHANGES.txt | 3 ++ .../core/enumsAndConstants/MerlinConstants.java | 1 + .../falcon/regression/security/FeedAclTest.java | 45 +++++++++++------ .../regression/security/ProcessAclTest.java | 52 ++++++++++++-------- 4 files changed, 66 insertions(+), 35 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/c936ca47/falcon-regression/CHANGES.txt ---------------------------------------------------------------------- diff --git a/falcon-regression/CHANGES.txt b/falcon-regression/CHANGES.txt index e7272e5..91a1b6c 100644 --- a/falcon-regression/CHANGES.txt +++ b/falcon-regression/CHANGES.txt @@ -188,6 +188,9 @@ Trunk (Unreleased) FALCON-681 delete duplicate feed retention test from falcon regression (SamarthG) BUG FIXES + FALCON-955 enable and fix feedAclUpdate and processAclUpdate tests (Raghav Kumar Gautam via + Ruslan Ostafiychuk) + FALCON-948 Enabling late rerun tests (Paul Isaychuk via Ruslan Ostafiychuk) FALCON-956 Fix testProcessInstanceStatusTimedOut (Paul Isaychuk via Raghav Kumar Gautam) http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/c936ca47/falcon-regression/merlin-core/src/main/java/org/apache/falcon/regression/core/enumsAndConstants/MerlinConstants.java ---------------------------------------------------------------------- diff --git a/falcon-regression/merlin-core/src/main/java/org/apache/falcon/regression/core/enumsAndConstants/MerlinConstants.java b/falcon-regression/merlin-core/src/main/java/org/apache/falcon/regression/core/enumsAndConstants/MerlinConstants.java index 10cddf0..76ebb29 100644 --- a/falcon-regression/merlin-core/src/main/java/org/apache/falcon/regression/core/enumsAndConstants/MerlinConstants.java +++ b/falcon-regression/merlin-core/src/main/java/org/apache/falcon/regression/core/enumsAndConstants/MerlinConstants.java @@ -66,6 +66,7 @@ public final class MerlinConstants { /** a user that belongs to falcon super user group but is not FALCON_SUPER_USER_NAME. */ public static final String FALCON_SUPER_USER2_NAME = Config.getProperty("falcon.super.user2.name", "falcon2"); + /** a user that has same group as that of current user. */ private static final String USER_2_NAME_STR = "user2_name"; private static final String USER_2_KEYTAB_STR = "user2_keytab"; public static final String USER2_NAME; http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/c936ca47/falcon-regression/merlin/src/test/java/org/apache/falcon/regression/security/FeedAclTest.java ---------------------------------------------------------------------- diff --git a/falcon-regression/merlin/src/test/java/org/apache/falcon/regression/security/FeedAclTest.java b/falcon-regression/merlin/src/test/java/org/apache/falcon/regression/security/FeedAclTest.java index 74275ab..9b49957 100644 --- a/falcon-regression/merlin/src/test/java/org/apache/falcon/regression/security/FeedAclTest.java +++ b/falcon-regression/merlin/src/test/java/org/apache/falcon/regression/security/FeedAclTest.java @@ -18,6 +18,7 @@ package org.apache.falcon.regression.security; +import org.apache.falcon.entity.v0.feed.ACL; import org.apache.falcon.regression.Entities.FeedMerlin; import org.apache.falcon.regression.core.bundle.Bundle; import org.apache.falcon.regression.core.enumsAndConstants.MerlinConstants; @@ -204,35 +205,49 @@ public class FeedAclTest extends BaseTestClass { * Test feed acl modification. * @throws Exception */ - @Test(enabled = false) - public void feedAclUpdate() throws Exception { + @Test(dataProvider = "generateAclOwnerAndGroup") + public void feedAclUpdate(final String newOwner, final String newGroup) throws Exception { bundles[0].submitClusters(prism); final String oldFeed = bundles[0].getInputFeedFromBundle(); AssertUtil.assertSucceeded(feedHelper.submitAndSchedule(oldFeed)); final FeedMerlin feedMerlin = new FeedMerlin(oldFeed); - feedMerlin.setACL(MerlinConstants.DIFFERENT_USER_NAME, - MerlinConstants.DIFFERENT_USER_GROUP, "*"); + feedMerlin.setACL(newOwner, newGroup, "*"); final String newFeed = feedMerlin.toString(); AssertUtil.assertSucceeded(feedHelper.update(oldFeed, newFeed)); - //check that current user can't access the feed + //check that current user can access the feed for(EntityOp op : new EntityOp[]{EntityOp.status, EntityOp.dependency, EntityOp.listing, EntityOp.definition, }) { final boolean executeRes = - op.executeAs(MerlinConstants.DIFFERENT_USER_NAME, feedHelper, newFeed); - Assert.assertFalse(executeRes, "Unexpected result: user " - + MerlinConstants.DIFFERENT_USER_GROUP + " was not able to perform: " + op); + op.executeAs(MerlinConstants.CURRENT_USER_NAME, feedHelper, newFeed); + Assert.assertEquals(executeRes, newGroup.equals(MerlinConstants.CURRENT_USER_GROUP), + "Unexpected result user "+ MerlinConstants.CURRENT_USER_NAME + + " performing: " + op); } - //check that different user can access the feed + //check that second user can access the feed for(EntityOp op : new EntityOp[]{EntityOp.status, EntityOp.dependency, EntityOp.listing, EntityOp.definition, }) { final boolean executeRes = - op.executeAs(MerlinConstants.DIFFERENT_USER_NAME, feedHelper, newFeed); - Assert.assertTrue(executeRes, "Unexpected result: user " - + MerlinConstants.DIFFERENT_USER_GROUP + " was not able to perform: " + op); + op.executeAs(newOwner, feedHelper, newFeed); + Assert.assertTrue(executeRes, "Unexpected result: user " + newOwner + + " was not able to perform: " + op); } - //check modification permissions - AssertUtil.assertSucceeded(feedHelper.update(newFeed, oldFeed, - MerlinConstants.DIFFERENT_USER_NAME)); + //check modified permissions + final String retrievedFeed = feedHelper.getEntityDefinition(newFeed).getMessage(); + final ACL retrievedFeedAcl = new FeedMerlin(retrievedFeed).getACL(); + Assert.assertEquals(retrievedFeedAcl.getOwner(), newOwner, + "Expecting " + newOwner + " to be the acl owner."); + Assert.assertEquals(retrievedFeedAcl.getGroup(), newGroup, + "Expecting " + newGroup + " to be the acl group."); + //check that second user can modify feed acl + AssertUtil.assertSucceeded(feedHelper.update(newFeed, oldFeed, newOwner)); + } + + @DataProvider(name = "generateAclOwnerAndGroup") + public Object[][] generateAclOwnerAndGroup() { + return new Object[][]{ + //{MerlinConstants.USER2_NAME, MerlinConstants.CURRENT_USER_GROUP}, + {MerlinConstants.DIFFERENT_USER_NAME, MerlinConstants.DIFFERENT_USER_GROUP}, + }; } @AfterMethod(alwaysRun = true) http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/c936ca47/falcon-regression/merlin/src/test/java/org/apache/falcon/regression/security/ProcessAclTest.java ---------------------------------------------------------------------- diff --git a/falcon-regression/merlin/src/test/java/org/apache/falcon/regression/security/ProcessAclTest.java b/falcon-regression/merlin/src/test/java/org/apache/falcon/regression/security/ProcessAclTest.java index f5fcdee..a5c67bf 100644 --- a/falcon-regression/merlin/src/test/java/org/apache/falcon/regression/security/ProcessAclTest.java +++ b/falcon-regression/merlin/src/test/java/org/apache/falcon/regression/security/ProcessAclTest.java @@ -18,6 +18,7 @@ package org.apache.falcon.regression.security; +import org.apache.falcon.entity.v0.process.ACL; import org.apache.falcon.regression.Entities.ProcessMerlin; import org.apache.falcon.regression.core.bundle.Bundle; import org.apache.falcon.regression.core.enumsAndConstants.MerlinConstants; @@ -105,7 +106,7 @@ public class ProcessAclTest extends BaseTestClass { final Object[][] allowedCombinations = MatrixUtil.crossProduct( new String[]{MerlinConstants.FALCON_SUPER_USER_NAME, MerlinConstants.FALCON_SUPER_USER2_NAME, - MerlinConstants.USER2_NAME, }, + MerlinConstants.USER2_NAME,}, falconReadOps, new Boolean[]{true} ); @@ -215,35 +216,46 @@ public class ProcessAclTest extends BaseTestClass { * Test process acl modification. * @throws Exception */ - @Test(enabled = false) - public void processAclUpdate() throws Exception { + @Test(dataProvider = "generateAclOwnerAndGroup") + public void processAclUpdate(final String newOwner, final String newGroup) throws Exception { bundles[0].submitFeedsScheduleProcess(); - final String oldProcess = bundles[0].getProcessData(); - AssertUtil.assertSucceeded(prism.getProcessHelper().submitAndSchedule(oldProcess)); - final ProcessMerlin processMerlin = new ProcessMerlin(oldProcess); - processMerlin.setACL(MerlinConstants.DIFFERENT_USER_NAME, - MerlinConstants.DIFFERENT_USER_GROUP, "*"); + final ProcessMerlin processMerlin = new ProcessMerlin(processString); + processMerlin.setACL(newOwner, newGroup, "*"); final String newProcess = processMerlin.toString(); - AssertUtil.assertSucceeded(processHelper.update(oldProcess, newProcess)); - //check that current user can't access the feed + AssertUtil.assertSucceeded(processHelper.update(processString, newProcess)); + //check that current user can access the feed for(EntityOp op : new EntityOp[]{EntityOp.status, EntityOp.dependency, EntityOp.listing, EntityOp.definition, }) { final boolean executeRes = - op.executeAs(MerlinConstants.DIFFERENT_USER_NAME, processHelper, newProcess); - Assert.assertFalse(executeRes, "Unexpected result: user " - + MerlinConstants.DIFFERENT_USER_GROUP + " was not able to perform: " + op); + op.executeAs(MerlinConstants.CURRENT_USER_NAME, processHelper, newProcess); + Assert.assertEquals(executeRes, newGroup.equals(MerlinConstants.CURRENT_USER_GROUP), + "Unexpected result: user " + MerlinConstants.CURRENT_USER_NAME + + " was not able to perform: " + op); } - //check that different user can access the feed + //check that second user can access the feed for(EntityOp op : new EntityOp[]{EntityOp.status, EntityOp.dependency, EntityOp.listing, EntityOp.definition, }) { - final boolean executeRes = - op.executeAs(MerlinConstants.DIFFERENT_USER_NAME, processHelper, newProcess); + final boolean executeRes = op.executeAs(newOwner, processHelper, newProcess); Assert.assertTrue(executeRes, "Unexpected result: user " - + MerlinConstants.DIFFERENT_USER_GROUP + " was not able to perform: " + op); + + newOwner + " was not able to perform: " + op); } - //check modification permissions - AssertUtil.assertSucceeded(processHelper.update(newProcess, oldProcess, - MerlinConstants.DIFFERENT_USER_NAME)); + //check modified permissions + final String retrievedProcess = processHelper.getEntityDefinition(newProcess).getMessage(); + final ACL retrievedProcessAcl = new ProcessMerlin(retrievedProcess).getACL(); + Assert.assertEquals(retrievedProcessAcl.getOwner(), newOwner, + "Expecting " + newOwner + " to be the acl owner."); + Assert.assertEquals(retrievedProcessAcl.getGroup(), newGroup, + "Expecting " + newGroup + " to be the acl group."); + //check that second user can modify process acl + AssertUtil.assertSucceeded(processHelper.update(newProcess, processString, newOwner)); + } + + @DataProvider(name = "generateAclOwnerAndGroup") + public Object[][] generateAclOwnerAndGroup() { + return new Object[][]{ + //{MerlinConstants.USER2_NAME, MerlinConstants.CURRENT_USER_GROUP}, + {MerlinConstants.DIFFERENT_USER_NAME, MerlinConstants.DIFFERENT_USER_GROUP}, + }; } @AfterMethod(alwaysRun = true)