You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@falcon.apache.org by ro...@apache.org on 2014/12/24 14:27:08 UTC

incubator-falcon git commit: FALCON-955 enable and fix feedAclUpdate and processAclUpdate tests. Contributed by Raghav Kumar Gautam

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 <ro...@apache.org>
Authored: Wed Dec 24 15:26:22 2014 +0200
Committer: Ruslan Ostafiychuk <ro...@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)