You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sentry.apache.org by an...@apache.org on 2016/01/23 02:52:48 UTC

incubator-sentry git commit: Sentry-1009: Improve TestDatabaseProvider to validate test object names instead of validating vague numbers. (Anne Yu, reviewed by Lenni Kuff>)

Repository: incubator-sentry
Updated Branches:
  refs/heads/master 0ce626c11 -> ef9b73884


Sentry-1009: Improve TestDatabaseProvider to validate test object names instead of validating vague numbers. (Anne Yu, reviewed by Lenni Kuff>)


Project: http://git-wip-us.apache.org/repos/asf/incubator-sentry/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-sentry/commit/ef9b7388
Tree: http://git-wip-us.apache.org/repos/asf/incubator-sentry/tree/ef9b7388
Diff: http://git-wip-us.apache.org/repos/asf/incubator-sentry/diff/ef9b7388

Branch: refs/heads/master
Commit: ef9b73884896fe63ec8182cc0f7fa428389cf43d
Parents: 0ce626c
Author: Anne Yu <an...@apache.org>
Authored: Thu Jan 21 14:24:15 2016 -0800
Committer: Anne Yu <an...@apache.org>
Committed: Fri Jan 22 17:57:18 2016 -0800

----------------------------------------------------------------------
 .../e2e/dbprovider/TestDatabaseProvider.java    | 85 ++++++++++++++------
 1 file changed, 61 insertions(+), 24 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-sentry/blob/ef9b7388/sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/dbprovider/TestDatabaseProvider.java
----------------------------------------------------------------------
diff --git a/sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/dbprovider/TestDatabaseProvider.java b/sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/dbprovider/TestDatabaseProvider.java
index 98de57d..06967bd 100644
--- a/sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/dbprovider/TestDatabaseProvider.java
+++ b/sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/dbprovider/TestDatabaseProvider.java
@@ -46,8 +46,12 @@ import org.junit.Ignore;
 import org.junit.Test;
 
 import com.google.common.io.Resources;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class TestDatabaseProvider extends AbstractTestWithStaticConfiguration {
+  private static final Logger LOGGER = LoggerFactory
+      .getLogger(TestDatabaseProvider.class);
 
   @BeforeClass
   public static void setupTestStaticConfiguration() throws Exception{
@@ -56,8 +60,6 @@ public class TestDatabaseProvider extends AbstractTestWithStaticConfiguration {
     AbstractTestWithStaticConfiguration.setupAdmin();
   }
 
-
-
   @Test
   public void testBasic() throws Exception {
     Connection connection = context.createConnection(ADMIN1);
@@ -1184,6 +1186,20 @@ public class TestDatabaseProvider extends AbstractTestWithStaticConfiguration {
     assertThat(count, is(expected));
   }
 
+  private void assertTestRoles(ResultSet resultSet, List<String> expected, boolean isAdmin) throws SQLException{
+    List<String> returned = new ArrayList<>();
+    while(resultSet.next()) {
+      String role = resultSet.getString(1);
+      if (role.startsWith("role") || (isAdmin && role.startsWith("admin_role"))) {
+        LOGGER.info("Found role " + role);
+        returned.add(role);
+      } else {
+        LOGGER.error("Found an incorrect role so ignore it from validation: " + role);
+      }
+    }
+    validateReturnedResult(expected, returned);
+  }
+
   /**
    * Create and Drop role by admin
    * @throws Exception
@@ -1194,10 +1210,16 @@ public class TestDatabaseProvider extends AbstractTestWithStaticConfiguration {
     Statement statement = context.createStatement(connection);
     statement.execute("CREATE ROLE role1");
     ResultSet resultSet = statement.executeQuery("SHOW roles");
-    assertResultSize(resultSet, 2);
+    List<String> expected = new ArrayList<String>();
+    expected.add("role1");
+    expected.add("admin_role");
+    assertTestRoles(resultSet, expected, true);
+
     statement.execute("DROP ROLE role1");
     resultSet = statement.executeQuery("SHOW roles");
-    assertResultSize(resultSet, 1);
+    expected.clear();
+    expected.add("admin_role");
+    assertTestRoles(resultSet, expected, true);
   }
 
   /**
@@ -1343,7 +1365,10 @@ public class TestDatabaseProvider extends AbstractTestWithStaticConfiguration {
     Connection connection = context.createConnection(ADMIN1);
     Statement statement = context.createStatement(connection);
     ResultSet resultSet = statement.executeQuery("SHOW ROLES");
-    assertResultSize(resultSet, 1);
+    List<String> expected = new ArrayList<>();
+    expected.add("admin_role");
+    assertTestRoles(resultSet, expected, true);
+
     statement.execute("CREATE ROLE role1");
     statement.execute("CREATE ROLE role2");
     resultSet = statement.executeQuery("SHOW ROLES");
@@ -1351,13 +1376,9 @@ public class TestDatabaseProvider extends AbstractTestWithStaticConfiguration {
     assertThat(resultSetMetaData.getColumnCount(), is(1));
     assertThat(resultSetMetaData.getColumnName(1), equalToIgnoringCase("role"));
 
-    Set<String> roles = new HashSet<String>();
-    while ( resultSet.next()) {
-      roles.add(resultSet.getString(1));
-    }
-    assertThat(roles.size(), is(3));
-    assertTrue(roles.contains("role1"));
-    assertTrue(roles.contains("role2"));
+    expected.add("role1");
+    expected.add("role2");
+    assertTestRoles(resultSet, expected, true);
     statement.close();
     connection.close();
   }
@@ -1872,7 +1893,7 @@ public class TestDatabaseProvider extends AbstractTestWithStaticConfiguration {
   public void testShowAllCurrentRoles() throws Exception {
     Connection connection = context.createConnection(ADMIN1);
     Statement statement = context.createStatement(connection);
-    String testRole1 = "testRole1", testRole2 = "testRole2";
+    String testRole1 = "role1", testRole2 = "role2";
     statement.execute("CREATE ROLE " + testRole1);
     statement.execute("CREATE ROLE " + testRole2);
     statement.execute("GRANT ROLE " + testRole1 + " TO GROUP " + ADMINGROUP);
@@ -1881,11 +1902,17 @@ public class TestDatabaseProvider extends AbstractTestWithStaticConfiguration {
     statement.execute("GRANT ROLE " + testRole2 + " TO GROUP " + USERGROUP1);
 
     ResultSet resultSet = statement.executeQuery("SHOW CURRENT ROLES");
-    assertResultSize(resultSet, 3);
+    List<String> expected = new ArrayList<>();
+    expected.add("admin_role");
+    expected.add(testRole1);
+    expected.add(testRole2);
+    assertTestRoles(resultSet, expected, true);
 
     statement.execute("SET ROLE " + testRole1);
     resultSet = statement.executeQuery("SHOW CURRENT ROLES");
-    assertResultSize(resultSet, 1);
+    expected.clear();
+    expected.add(testRole1);
+    assertTestRoles(resultSet, expected, true);
 
     statement.close();
     connection.close();
@@ -1901,11 +1928,16 @@ public class TestDatabaseProvider extends AbstractTestWithStaticConfiguration {
     statement = context.createStatement(connection);
 
     resultSet = statement.executeQuery("SHOW CURRENT ROLES");
-    assertResultSize(resultSet, 2);
+    expected.clear();
+    expected.add(testRole1);
+    expected.add(testRole2);
+    assertTestRoles(resultSet, expected, false);
 
     statement.execute("SET ROLE " + testRole2);
     resultSet = statement.executeQuery("SHOW CURRENT ROLES");
-    assertResultSize(resultSet, 1);
+    expected.clear();
+    expected.add(testRole2);
+    assertTestRoles(resultSet, expected, false);
 
     statement.close();
     connection.close();
@@ -1915,7 +1947,7 @@ public class TestDatabaseProvider extends AbstractTestWithStaticConfiguration {
   public void testSetRole() throws Exception {
     Connection connection = context.createConnection(ADMIN1);
     Statement statement = context.createStatement(connection);
-    String testRole0 = "testRole1", testRole1 = "testRole2";
+    String testRole0 = "role1", testRole1 = "role2";
     statement.execute("CREATE ROLE " + testRole0);
     statement.execute("CREATE ROLE " + testRole1);
 
@@ -1974,16 +2006,21 @@ public class TestDatabaseProvider extends AbstractTestWithStaticConfiguration {
   }
 
   @Test
-  public void caseSensitiveGroupNames() throws Exception {
+  public void testCaseSensitiveGroupNames() throws Exception {
     Connection connection = context.createConnection(ADMIN1);
     Statement statement = context.createStatement(connection);
-    String testRole1 = "testRole1";
+    ResultSet resultSet;
+    resultSet = statement.executeQuery("SHOW ROLE GRANT GROUP " + ADMINGROUP);
+    List<String> expected = new ArrayList<>();
+    assertTestRoles(resultSet, expected, false);
+
+    String testRole1 = "role1";
     statement.execute("CREATE ROLE " + testRole1);
     statement.execute("GRANT ROLE " + testRole1 + " TO GROUP " + ADMINGROUP);
-
-    ResultSet resultSet;
     resultSet = statement.executeQuery("SHOW ROLE GRANT GROUP " + ADMINGROUP);
-    assertResultSize(resultSet, 2);
+    expected.clear();
+    expected.add(testRole1);
+    assertTestRoles(resultSet, expected, false);
 
     context.assertSentryException(statement, "SHOW ROLE GRANT GROUP Admin",
         SentryNoSuchObjectException.class.getSimpleName());
@@ -2004,7 +2041,7 @@ public class TestDatabaseProvider extends AbstractTestWithStaticConfiguration {
     statement.execute("CREATE DATABASE " + DB1);
     statement.execute("USE " + DB1);
     statement.execute("DROP TABLE IF EXISTS t1");
-    statement.execute("CREATE TABLE t1 (c1 string)");
+    statement.execute("CREATE TABLE t1 (c1 string,c2 string,c3 string,c4 string,c5 string)");
     statement.execute("CREATE ROLE user_role");
     statement.execute("GRANT ALL ON TABLE t1 TO ROLE user_role");