HBASE-12581 TestCellACLWithMultipleVersions failing since task 5 HBASE-12404 (HBASE-12404 addendum)

This commit is contained in:
stack 2014-11-25 16:29:53 -08:00
parent e6b4300756
commit 24f19328eb
1 changed files with 347 additions and 370 deletions

View File

@ -33,6 +33,8 @@ import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.TableNotFoundException;
import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.client.Delete;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.HTable;
@ -250,8 +252,8 @@ public class TestCellACLWithMultipleVersions extends SecureTestUtil {
verifyAllowed(new AccessTestAction() {
@Override
public Object run() throws Exception {
Table t = new HTable(conf, TEST_TABLE.getTableName());
try {
try (Connection connection = ConnectionFactory.createConnection(conf)) {
try (Table t = connection.getTable(TEST_TABLE.getTableName())) {
// with rw ACL for "user1"
Put p = new Put(TEST_ROW1);
p.add(TEST_FAMILY1, TEST_Q1, ZERO);
@ -266,8 +268,7 @@ public class TestCellACLWithMultipleVersions extends SecureTestUtil {
p.setACL(user1.getShortName(), new Permission(Permission.Action.READ,
Permission.Action.WRITE));
t.put(p);
} finally {
t.close();
}
}
return null;
}
@ -276,8 +277,8 @@ public class TestCellACLWithMultipleVersions extends SecureTestUtil {
verifyAllowed(new AccessTestAction() {
@Override
public Object run() throws Exception {
Table t = new HTable(conf, TEST_TABLE.getTableName());
try {
try (Connection connection = ConnectionFactory.createConnection(conf)) {
try (Table t = connection.getTable(TEST_TABLE.getTableName())) {
// with rw ACL for "user1" and "user2"
Put p = new Put(TEST_ROW1);
p.add(TEST_FAMILY1, TEST_Q1, ZERO);
@ -295,8 +296,7 @@ public class TestCellACLWithMultipleVersions extends SecureTestUtil {
p.add(TEST_FAMILY1, TEST_Q2, ZERO);
p.setACL(perms);
t.put(p);
} finally {
t.close();
}
}
return null;
}
@ -307,14 +307,13 @@ public class TestCellACLWithMultipleVersions extends SecureTestUtil {
user1.runAs(new PrivilegedExceptionAction<Void>() {
@Override
public Void run() throws Exception {
Table t = new HTable(conf, TEST_TABLE.getTableName());
try {
try (Connection connection = ConnectionFactory.createConnection(conf)) {
try (Table t = connection.getTable(TEST_TABLE.getTableName())) {
Delete d = new Delete(TEST_ROW1);
d.deleteColumns(TEST_FAMILY1, TEST_Q1);
d.deleteColumns(TEST_FAMILY1, TEST_Q2);
t.delete(d);
} finally {
t.close();
}
}
return null;
}
@ -324,8 +323,8 @@ public class TestCellACLWithMultipleVersions extends SecureTestUtil {
user2.runAs(new PrivilegedExceptionAction<Void>() {
@Override
public Void run() throws Exception {
Table t = new HTable(conf, TEST_TABLE.getTableName());
try {
try (Connection connection = ConnectionFactory.createConnection(conf)) {
try (Table t = connection.getTable(TEST_TABLE.getTableName())) {
Delete d = new Delete(TEST_ROW2);
d.deleteColumns(TEST_FAMILY1, TEST_Q1);
d.deleteColumns(TEST_FAMILY1, TEST_Q2);
@ -333,8 +332,7 @@ public class TestCellACLWithMultipleVersions extends SecureTestUtil {
fail("user2 should not be allowed to delete the row");
} catch (Exception e) {
} finally {
t.close();
}
}
return null;
}
@ -343,13 +341,12 @@ public class TestCellACLWithMultipleVersions extends SecureTestUtil {
user1.runAs(new PrivilegedExceptionAction<Void>() {
@Override
public Void run() throws Exception {
Table t = new HTable(conf, TEST_TABLE.getTableName());
try {
try (Connection connection = ConnectionFactory.createConnection(conf)) {
try (Table t = connection.getTable(TEST_TABLE.getTableName())) {
Delete d = new Delete(TEST_ROW2);
d.deleteFamily(TEST_FAMILY1);
t.delete(d);
} finally {
t.close();
}
}
return null;
}
@ -364,21 +361,20 @@ public class TestCellACLWithMultipleVersions extends SecureTestUtil {
verifyAllowed(new AccessTestAction() {
@Override
public Object run() throws Exception {
Table t = new HTable(conf, TEST_TABLE.getTableName());
try {
// Store read only ACL at a future time
Put p = new Put(TEST_ROW).add(TEST_FAMILY1, TEST_Q1,
EnvironmentEdgeManager.currentTime() + 1000000,
ZERO);
p.setACL(USER_OTHER.getShortName(), new Permission(Permission.Action.READ));
t.put(p);
try (Connection connection = ConnectionFactory.createConnection(conf)) {
try (Table t = connection.getTable(TEST_TABLE.getTableName())) {
// Store a read write ACL without a timestamp, server will use current time
p = new Put(TEST_ROW).add(TEST_FAMILY1, TEST_Q2, ONE);
Put p = new Put(TEST_ROW).add(TEST_FAMILY1, TEST_Q2, ONE);
p.setACL(USER_OTHER.getShortName(), new Permission(Permission.Action.READ,
Permission.Action.WRITE));
t.put(p);
} finally {
t.close();
LOG.info("Stored at current time");
// Store read only ACL at a future time
p = new Put(TEST_ROW).add(TEST_FAMILY1, TEST_Q1,
EnvironmentEdgeManager.currentTime() + 1000000, ZERO);
p.setACL(USER_OTHER.getShortName(), new Permission(Permission.Action.READ));
t.put(p);
}
}
return null;
}
@ -390,11 +386,10 @@ public class TestCellACLWithMultipleVersions extends SecureTestUtil {
@Override
public Object run() throws Exception {
Get get = new Get(TEST_ROW).addColumn(TEST_FAMILY1, TEST_Q1);
Table t = new HTable(conf, TEST_TABLE.getTableName());
try {
try (Connection connection = ConnectionFactory.createConnection(conf)) {
try (Table t = connection.getTable(TEST_TABLE.getTableName())) {
return t.get(get).listCells();
} finally {
t.close();
}
}
}
};
@ -403,11 +398,10 @@ public class TestCellACLWithMultipleVersions extends SecureTestUtil {
@Override
public Object run() throws Exception {
Get get = new Get(TEST_ROW).addColumn(TEST_FAMILY1, TEST_Q2);
Table t = new HTable(conf, TEST_TABLE.getTableName());
try {
try (Connection connection = ConnectionFactory.createConnection(conf)) {
try (Table t = connection.getTable(TEST_TABLE.getTableName())) {
return t.get(get).listCells();
} finally {
t.close();
}
}
}
};
@ -423,11 +417,10 @@ public class TestCellACLWithMultipleVersions extends SecureTestUtil {
@Override
public Object run() throws Exception {
Delete delete = new Delete(TEST_ROW).deleteFamily(TEST_FAMILY1);
Table t = new HTable(conf, TEST_TABLE.getTableName());
try {
try (Connection connection = ConnectionFactory.createConnection(conf)) {
try (Table t = connection.getTable(TEST_TABLE.getTableName())) {
t.delete(delete);
} finally {
t.close();
}
}
return null;
}
@ -449,8 +442,8 @@ public class TestCellACLWithMultipleVersions extends SecureTestUtil {
USER_OWNER.runAs(new AccessTestAction() {
@Override
public Object run() throws Exception {
Table t = new HTable(conf, TEST_TABLE.getTableName());
try {
try (Connection connection = ConnectionFactory.createConnection(conf)) {
try (Table t = connection.getTable(TEST_TABLE.getTableName())) {
// This version (TS = 123) with rw ACL for USER_OTHER and USER_OTHER2
Put p = new Put(TEST_ROW);
p.add(TEST_FAMILY1, TEST_Q1, 123L, ZERO);
@ -484,8 +477,7 @@ public class TestCellACLWithMultipleVersions extends SecureTestUtil {
t.put(p);
return null;
} finally {
t.close();
}
}
}
});
@ -494,13 +486,12 @@ public class TestCellACLWithMultipleVersions extends SecureTestUtil {
USER_OTHER2.runAs(new AccessTestAction() {
@Override
public Object run() throws Exception {
Table t = new HTable(conf, TEST_TABLE.getTableName());
try {
try (Connection connection = ConnectionFactory.createConnection(conf)) {
try (Table t = connection.getTable(TEST_TABLE.getTableName())) {
Delete d = new Delete(TEST_ROW, 124L);
d.deleteColumns(TEST_FAMILY1, TEST_Q1);
t.delete(d);
} finally {
t.close();
}
}
return null;
}
@ -510,13 +501,12 @@ public class TestCellACLWithMultipleVersions extends SecureTestUtil {
USER_OTHER2.runAs(new AccessTestAction() {
@Override
public Object run() throws Exception {
Table t = new HTable(conf, TEST_TABLE.getTableName());
try {
try (Connection connection = ConnectionFactory.createConnection(conf)) {
try (Table t = connection.getTable(TEST_TABLE.getTableName())) {
Delete d = new Delete(TEST_ROW);
d.deleteColumns(TEST_FAMILY1, TEST_Q2, 124L);
t.delete(d);
} finally {
t.close();
}
}
return null;
}
@ -536,8 +526,8 @@ public class TestCellACLWithMultipleVersions extends SecureTestUtil {
verifyAllowed(new AccessTestAction() {
@Override
public Object run() throws Exception {
Table t = new HTable(conf, TEST_TABLE.getTableName());
try {
try (Connection connection = ConnectionFactory.createConnection(conf)) {
try (Table t = connection.getTable(TEST_TABLE.getTableName())) {
Map<String, Permission> permsU1andOwner = new HashMap<String, Permission>();
permsU1andOwner.put(user1.getShortName(), new Permission(Permission.Action.READ,
Permission.Action.WRITE));
@ -581,8 +571,7 @@ public class TestCellACLWithMultipleVersions extends SecureTestUtil {
p.add(TEST_FAMILY2, TEST_Q2, 129, ZERO);
p.setACL(permsU1andOwner);
t.put(p);
} finally {
t.close();
}
}
return null;
}
@ -593,15 +582,14 @@ public class TestCellACLWithMultipleVersions extends SecureTestUtil {
user1.runAs(new PrivilegedExceptionAction<Void>() {
@Override
public Void run() throws Exception {
Table t = new HTable(conf, TEST_TABLE.getTableName());
try {
try (Connection connection = ConnectionFactory.createConnection(conf)) {
try (Table t = connection.getTable(TEST_TABLE.getTableName())) {
Delete d = new Delete(TEST_ROW1);
d.deleteColumn(TEST_FAMILY1, TEST_Q1, 123);
d.deleteColumn(TEST_FAMILY1, TEST_Q2);
d.deleteFamilyVersion(TEST_FAMILY2, 125);
t.delete(d);
} finally {
t.close();
}
}
return null;
}
@ -610,8 +598,8 @@ public class TestCellACLWithMultipleVersions extends SecureTestUtil {
user2.runAs(new PrivilegedExceptionAction<Void>() {
@Override
public Void run() throws Exception {
Table t = new HTable(conf, TEST_TABLE.getTableName());
try {
try (Connection connection = ConnectionFactory.createConnection(conf)) {
try (Table t = connection.getTable(TEST_TABLE.getTableName())) {
Delete d = new Delete(TEST_ROW1, 127);
d.deleteColumns(TEST_FAMILY1, TEST_Q1);
d.deleteColumns(TEST_FAMILY1, TEST_Q2);
@ -620,8 +608,7 @@ public class TestCellACLWithMultipleVersions extends SecureTestUtil {
fail("user2 can not do the delete");
} catch (Exception e) {
} finally {
t.close();
}
}
return null;
}
@ -641,8 +628,8 @@ public class TestCellACLWithMultipleVersions extends SecureTestUtil {
verifyAllowed(new AccessTestAction() {
@Override
public Object run() throws Exception {
Table t = new HTable(conf, TEST_TABLE.getTableName());
try {
try (Connection connection = ConnectionFactory.createConnection(conf)) {
try (Table t = connection.getTable(TEST_TABLE.getTableName())) {
Map<String, Permission> permsU1andOwner = new HashMap<String, Permission>();
permsU1andOwner.put(user1.getShortName(), new Permission(Permission.Action.READ,
Permission.Action.WRITE));
@ -670,8 +657,7 @@ public class TestCellACLWithMultipleVersions extends SecureTestUtil {
p.add(TEST_FAMILY1, TEST_Q2, 127, ZERO);
p.setACL(permsU1andOwner);
t.put(p);
} finally {
t.close();
}
}
return null;
}
@ -681,15 +667,14 @@ public class TestCellACLWithMultipleVersions extends SecureTestUtil {
user1.runAs(new PrivilegedExceptionAction<Void>() {
@Override
public Void run() throws Exception {
Table t = new HTable(conf, TEST_TABLE.getTableName());
try {
try (Connection connection = ConnectionFactory.createConnection(conf)) {
try (Table t = connection.getTable(TEST_TABLE.getTableName())) {
Increment inc = new Increment(TEST_ROW1);
inc.setTimeRange(0, 123);
inc.addColumn(TEST_FAMILY1, TEST_Q1, 2L);
t.increment(inc);
t.incrementColumnValue(TEST_ROW1, TEST_FAMILY1, TEST_Q2, 1L);
} finally {
t.close();
}
}
return null;
}
@ -698,8 +683,8 @@ public class TestCellACLWithMultipleVersions extends SecureTestUtil {
user2.runAs(new PrivilegedExceptionAction<Void>() {
@Override
public Void run() throws Exception {
Table t = new HTable(conf, TEST_TABLE.getTableName());
try {
try (Connection connection = ConnectionFactory.createConnection(conf)) {
try (Table t = connection.getTable(TEST_TABLE.getTableName())) {
Increment inc = new Increment(TEST_ROW1);
inc.setTimeRange(0, 127);
inc.addColumn(TEST_FAMILY1, TEST_Q2, 2L);
@ -707,8 +692,7 @@ public class TestCellACLWithMultipleVersions extends SecureTestUtil {
fail();
} catch (Exception e) {
} finally {
t.close();
}
}
return null;
}
@ -728,8 +712,8 @@ public class TestCellACLWithMultipleVersions extends SecureTestUtil {
verifyAllowed(new AccessTestAction() {
@Override
public Object run() throws Exception {
Table t = new HTable(conf, TEST_TABLE.getTableName());
try {
try (Connection connection = ConnectionFactory.createConnection(conf)) {
try (Table t = connection.getTable(TEST_TABLE.getTableName())) {
Map<String, Permission> permsU1andOwner = new HashMap<String, Permission>();
permsU1andOwner.put(user1.getShortName(), new Permission(Permission.Action.READ,
Permission.Action.WRITE));
@ -757,8 +741,7 @@ public class TestCellACLWithMultipleVersions extends SecureTestUtil {
p.add(TEST_FAMILY1, TEST_Q2, 127, ZERO);
p.setACL(permsU1andOwner);
t.put(p);
} finally {
t.close();
}
}
return null;
}
@ -770,16 +753,15 @@ public class TestCellACLWithMultipleVersions extends SecureTestUtil {
user1.runAs(new PrivilegedExceptionAction<Void>() {
@Override
public Void run() throws Exception {
Table t = new HTable(conf, TEST_TABLE.getTableName());
try {
try (Connection connection = ConnectionFactory.createConnection(conf)) {
try (Table t = connection.getTable(TEST_TABLE.getTableName())) {
Put p = new Put(TEST_ROW1);
p.add(TEST_FAMILY1, TEST_Q1, 125, ZERO);
p.add(TEST_FAMILY1, TEST_Q2, ZERO);
p.setACL(user2.getShortName(), new Permission(Permission.Action.READ,
Permission.Action.WRITE));
t.put(p);
} finally {
t.close();
}
}
return null;
}
@ -789,8 +771,8 @@ public class TestCellACLWithMultipleVersions extends SecureTestUtil {
user2.runAs(new PrivilegedExceptionAction<Void>() {
@Override
public Void run() throws Exception {
Table t = new HTable(conf, TEST_TABLE.getTableName());
try {
try (Connection connection = ConnectionFactory.createConnection(conf)) {
try (Table t = connection.getTable(TEST_TABLE.getTableName())) {
Put p = new Put(TEST_ROW1);
// column Q1 covers version at 123 fr which user2 do not have permission
p.add(TEST_FAMILY1, TEST_Q1, 124, ZERO);
@ -799,8 +781,7 @@ public class TestCellACLWithMultipleVersions extends SecureTestUtil {
fail();
} catch (Exception e) {
} finally {
t.close();
}
}
return null;
}
@ -818,8 +799,8 @@ public class TestCellACLWithMultipleVersions extends SecureTestUtil {
verifyAllowed(new AccessTestAction() {
@Override
public Object run() throws Exception {
Table t = new HTable(conf, TEST_TABLE.getTableName());
try {
try (Connection connection = ConnectionFactory.createConnection(conf)) {
try (Table t = connection.getTable(TEST_TABLE.getTableName())) {
Map<String, Permission> permsU1andOwner = new HashMap<String, Permission>();
permsU1andOwner.put(user1.getShortName(), new Permission(Permission.Action.READ,
Permission.Action.WRITE));
@ -859,8 +840,7 @@ public class TestCellACLWithMultipleVersions extends SecureTestUtil {
p.add(TEST_FAMILY1, TEST_Q2, 127, ZERO);
p.setACL(user2.getShortName(), new Permission(Permission.Action.READ));
t.put(p);
} finally {
t.close();
}
}
return null;
}
@ -871,13 +851,12 @@ public class TestCellACLWithMultipleVersions extends SecureTestUtil {
user1.runAs(new PrivilegedExceptionAction<Void>() {
@Override
public Void run() throws Exception {
Table t = new HTable(conf, TEST_TABLE.getTableName());
try {
try (Connection connection = ConnectionFactory.createConnection(conf)) {
try (Table t = connection.getTable(TEST_TABLE.getTableName())) {
Delete d = new Delete(TEST_ROW1);
d.deleteColumns(TEST_FAMILY1, TEST_Q1, 120);
t.checkAndDelete(TEST_ROW1, TEST_FAMILY1, TEST_Q1, ZERO, d);
} finally {
t.close();
}
}
return null;
}
@ -887,15 +866,14 @@ public class TestCellACLWithMultipleVersions extends SecureTestUtil {
user2.runAs(new PrivilegedExceptionAction<Void>() {
@Override
public Void run() throws Exception {
Table t = new HTable(conf, TEST_TABLE.getTableName());
try {
try (Connection connection = ConnectionFactory.createConnection(conf)) {
try (Table t = connection.getTable(TEST_TABLE.getTableName())) {
Delete d = new Delete(TEST_ROW1);
d.deleteColumns(TEST_FAMILY1, TEST_Q1);
t.checkAndDelete(TEST_ROW1, TEST_FAMILY1, TEST_Q1, ZERO, d);
fail("user2 should not be allowed to do checkAndDelete");
} catch (Exception e) {
} finally {
t.close();
}
}
return null;
}
@ -906,13 +884,12 @@ public class TestCellACLWithMultipleVersions extends SecureTestUtil {
user2.runAs(new PrivilegedExceptionAction<Void>() {
@Override
public Void run() throws Exception {
Table t = new HTable(conf, TEST_TABLE.getTableName());
try {
try (Connection connection = ConnectionFactory.createConnection(conf)) {
try (Table t = connection.getTable(TEST_TABLE.getTableName())) {
Delete d = new Delete(TEST_ROW1);
d.deleteColumn(TEST_FAMILY1, TEST_Q2, 120);
t.checkAndDelete(TEST_ROW1, TEST_FAMILY1, TEST_Q2, ZERO, d);
} finally {
t.close();
}
}
return null;
}