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)