You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by bh...@apache.org on 2014/01/14 21:48:41 UTC
[03/17] git commit: ACCUMULO-2182 Backport of ACCUMULO-1123 to 1.4.x
ACCUMULO-2182 Backport of ACCUMULO-1123 to 1.4.x
Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo
Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/ed4c2273
Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/ed4c2273
Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/ed4c2273
Branch: refs/heads/1.6.0-SNAPSHOT
Commit: ed4c2273f7fd34e27fbda1616321117b0561badf
Parents: 8e0e0e1
Author: Bill Havanki <bh...@cloudera.com>
Authored: Mon Jan 13 14:23:48 2014 -0500
Committer: Bill Havanki <bh...@cloudera.com>
Committed: Mon Jan 13 17:04:15 2014 -0500
----------------------------------------------------------------------
.../accumulo/server/test/randomwalk/State.java | 6 +++++-
.../test/randomwalk/security/ChangePass.java | 2 ++
.../test/randomwalk/security/CreateUser.java | 1 +
.../test/randomwalk/security/SecurityHelper.java | 10 ++++++++++
.../server/test/randomwalk/security/TableOp.java | 18 ++++++++++++++++--
5 files changed, 34 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/accumulo/blob/ed4c2273/src/server/src/main/java/org/apache/accumulo/server/test/randomwalk/State.java
----------------------------------------------------------------------
diff --git a/src/server/src/main/java/org/apache/accumulo/server/test/randomwalk/State.java b/src/server/src/main/java/org/apache/accumulo/server/test/randomwalk/State.java
index 1c73414..344f3b3 100644
--- a/src/server/src/main/java/org/apache/accumulo/server/test/randomwalk/State.java
+++ b/src/server/src/main/java/org/apache/accumulo/server/test/randomwalk/State.java
@@ -78,6 +78,10 @@ public class State {
public Integer getInteger(String key) {
return (Integer) stateMap.get(key);
}
+
+ public Long getLong(String key) {
+ return (Long) stateMap.get(key);
+ }
public String getProperty(String key) {
return props.getProperty(key);
@@ -150,4 +154,4 @@ public class State {
return retval;
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/ed4c2273/src/server/src/main/java/org/apache/accumulo/server/test/randomwalk/security/ChangePass.java
----------------------------------------------------------------------
diff --git a/src/server/src/main/java/org/apache/accumulo/server/test/randomwalk/security/ChangePass.java b/src/server/src/main/java/org/apache/accumulo/server/test/randomwalk/security/ChangePass.java
index 429c8cd..f9f0a7e 100644
--- a/src/server/src/main/java/org/apache/accumulo/server/test/randomwalk/security/ChangePass.java
+++ b/src/server/src/main/java/org/apache/accumulo/server/test/randomwalk/security/ChangePass.java
@@ -97,6 +97,8 @@ public class ChangePass extends Test {
SecurityHelper.setSysUserPass(state, newPass);
} else
SecurityHelper.setTabUserPass(state, newPass);
+ // Waiting 1 second for password to propogate through Zk
+ Thread.sleep(1000);
if (!hasPerm)
throw new AccumuloException("Password change succeeded when it should have failed.");
}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/ed4c2273/src/server/src/main/java/org/apache/accumulo/server/test/randomwalk/security/CreateUser.java
----------------------------------------------------------------------
diff --git a/src/server/src/main/java/org/apache/accumulo/server/test/randomwalk/security/CreateUser.java b/src/server/src/main/java/org/apache/accumulo/server/test/randomwalk/security/CreateUser.java
index afefee8..fe6458f 100644
--- a/src/server/src/main/java/org/apache/accumulo/server/test/randomwalk/security/CreateUser.java
+++ b/src/server/src/main/java/org/apache/accumulo/server/test/randomwalk/security/CreateUser.java
@@ -67,6 +67,7 @@ public class CreateUser extends Test {
}
SecurityHelper.setTabUserPass(state, tabUserPass);
SecurityHelper.setTabUserExists(state, true);
+ Thread.sleep(1000);
if (!hasPermission)
throw new AccumuloException("Didn't get Security Exception when we should have");
}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/ed4c2273/src/server/src/main/java/org/apache/accumulo/server/test/randomwalk/security/SecurityHelper.java
----------------------------------------------------------------------
diff --git a/src/server/src/main/java/org/apache/accumulo/server/test/randomwalk/security/SecurityHelper.java b/src/server/src/main/java/org/apache/accumulo/server/test/randomwalk/security/SecurityHelper.java
index 52a4672..c8d1ea0 100644
--- a/src/server/src/main/java/org/apache/accumulo/server/test/randomwalk/security/SecurityHelper.java
+++ b/src/server/src/main/java/org/apache/accumulo/server/test/randomwalk/security/SecurityHelper.java
@@ -140,8 +140,18 @@ public class SecurityHelper {
public static void setUserAuths(State state, String target, Authorizations auths) {
state.set(target + "_auths", auths);
+ state.set("Auths-" + target + '-' + "time", System.currentTimeMillis());
}
+ public static boolean ambiguousAuthorizations(State state, String target) {
+ Long setTime = state.getLong("Auths-" + target + '-' + "time");
+ if (setTime == null)
+ throw new RuntimeException("WTF? Auths-" + target + '-' + "time is null");
+ if (System.currentTimeMillis() < (setTime + 1000))
+ return true;
+ return false;
+ }
+
@SuppressWarnings("unchecked")
public static Map<String,Integer> getAuthsMap(State state) {
return (Map<String,Integer>) state.get(authsMap);
http://git-wip-us.apache.org/repos/asf/accumulo/blob/ed4c2273/src/server/src/main/java/org/apache/accumulo/server/test/randomwalk/security/TableOp.java
----------------------------------------------------------------------
diff --git a/src/server/src/main/java/org/apache/accumulo/server/test/randomwalk/security/TableOp.java b/src/server/src/main/java/org/apache/accumulo/server/test/randomwalk/security/TableOp.java
index e0b8deb..8d309b8 100644
--- a/src/server/src/main/java/org/apache/accumulo/server/test/randomwalk/security/TableOp.java
+++ b/src/server/src/main/java/org/apache/accumulo/server/test/randomwalk/security/TableOp.java
@@ -83,6 +83,7 @@ public class TableOp extends Test {
case READ:
Authorizations auths = SecurityHelper.getUserAuths(state, SecurityHelper.getTabUserName(state));
boolean canRead = SecurityHelper.getTabPerm(state, SecurityHelper.getTabUserName(state), TablePermission.READ);
+ boolean ambiguousAuths = SecurityHelper.ambiguousAuthorizations(state, SecurityHelper.getTabUserName(state));
try {
Scanner scan = conn.createScanner(tableName, conn.securityOperations().getUserAuthorizations(SecurityHelper.getTabUserName(state)));
int seen = 0;
@@ -91,7 +92,7 @@ public class TableOp extends Test {
Entry<Key,Value> entry = iter.next();
Key k = entry.getKey();
seen++;
- if (!auths.contains(k.getColumnVisibilityData()))
+ if (!auths.contains(k.getColumnVisibilityData()) && !ambiguousAuths)
throw new AccumuloException("Got data I should not be capable of seeing: " + k + " table " + tableName);
}
if (!canRead)
@@ -100,7 +101,7 @@ public class TableOp extends Test {
if (auths.contains(entry.getKey().getBytes()))
seen = seen - entry.getValue();
}
- if (seen != 0)
+ if (seen != 0 && !ambiguousAuths)
throw new AccumuloException("Got mismatched amounts of data");
} catch (TableNotFoundException tnfe) {
if (tableExists)
@@ -113,6 +114,12 @@ public class TableOp extends Test {
else
return;
}
+ if (ae.getErrorCode().equals(SecurityErrorCode.BAD_AUTHORIZATIONS)) {
+ if (ambiguousAuths)
+ return;
+ else
+ throw new AccumuloException("Mismatched authorizations! ", ae);
+ }
throw new AccumuloException("Unexpected exception!", ae);
} catch (RuntimeException re) {
if (re.getCause() instanceof AccumuloSecurityException
@@ -122,6 +129,13 @@ public class TableOp extends Test {
else
return;
}
+ if (re.getCause() instanceof AccumuloSecurityException
+ && ((AccumuloSecurityException) re.getCause()).getErrorCode().equals(SecurityErrorCode.BAD_AUTHORIZATIONS)) {
+ if (ambiguousAuths)
+ return;
+ else
+ throw new AccumuloException("Mismatched authorizations! ", re.getCause());
+ }
throw new AccumuloException("Unexpected exception!", re);
}