sentry-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ak...@apache.org
Subject sentry git commit: SENTRY-1489: Categorize e2e tests into slow and regular tests, so that can adapt the timeout and etc. (Anne Yu, reviewed by LiLi)
Date Wed, 26 Apr 2017 07:09:28 GMT
Repository: sentry
Updated Branches:
  refs/heads/sentry-ha-redesign 618260530 -> a13f2fb83


SENTRY-1489: Categorize e2e tests into slow and regular tests, so that can adapt the timeout
and etc. (Anne Yu, reviewed by LiLi)


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

Branch: refs/heads/sentry-ha-redesign
Commit: a13f2fb83c3bdabae22e99973fa4cfc21852498c
Parents: 6182605
Author: Alexander Kolbasov <akolb@cloudera.com>
Authored: Wed Apr 26 00:09:07 2017 -0700
Committer: Alexander Kolbasov <akolb@cloudera.com>
Committed: Wed Apr 26 00:09:07 2017 -0700

----------------------------------------------------------------------
 .../dbprovider/AbstractTestWithDbProvider.java  |  8 ---
 .../e2e/dbprovider/TestDbCrossOperations.java   |  6 +-
 .../e2e/hive/AbstractTestWithHiveServer.java    |  2 +-
 .../AbstractTestWithStaticConfiguration.java    | 41 +-----------
 .../sentry/tests/e2e/hive/RulesForE2ETest.java  | 68 ++++++++++++++++++++
 .../sentry/tests/e2e/hive/SlowE2ETest.java      | 26 ++++++++
 6 files changed, 99 insertions(+), 52 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/sentry/blob/a13f2fb8/sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/dbprovider/AbstractTestWithDbProvider.java
----------------------------------------------------------------------
diff --git a/sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/dbprovider/AbstractTestWithDbProvider.java
b/sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/dbprovider/AbstractTestWithDbProvider.java
index a315843..2ebe561 100644
--- a/sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/dbprovider/AbstractTestWithDbProvider.java
+++ b/sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/dbprovider/AbstractTestWithDbProvider.java
@@ -42,9 +42,6 @@ import org.apache.sentry.tests.e2e.hive.StaticUserGroup;
 import org.apache.sentry.tests.e2e.hive.hiveserver.HiveServerFactory;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Rule;
-import org.junit.rules.Timeout;
 
 import static org.junit.Assume.assumeNotNull;
 
@@ -54,11 +51,6 @@ import com.google.common.io.Files;
 
 public abstract class AbstractTestWithDbProvider extends AbstractTestWithHiveServer {
 
-  @ClassRule
-  public static Timeout classTimeout = new Timeout(600000); //millis, each class runs less
than 600s (10m)
-  @Rule
-  public Timeout timeout = new Timeout(180000); //millis, each test runs less than 180s (3m)
-
   protected static final String SERVER_HOST = "localhost";
 
   protected static Map<String, String> properties = Maps.newHashMap();

http://git-wip-us.apache.org/repos/asf/sentry/blob/a13f2fb8/sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/dbprovider/TestDbCrossOperations.java
----------------------------------------------------------------------
diff --git a/sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/dbprovider/TestDbCrossOperations.java
b/sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/dbprovider/TestDbCrossOperations.java
index 60812cf..6dbe62b 100644
--- a/sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/dbprovider/TestDbCrossOperations.java
+++ b/sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/dbprovider/TestDbCrossOperations.java
@@ -17,8 +17,6 @@
 
 package org.apache.sentry.tests.e2e.dbprovider;
 
-import java.io.File;
-import java.io.FileOutputStream;
 import java.sql.Connection;
 import java.sql.ResultSet;
 import java.sql.Statement;
@@ -26,6 +24,7 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.sentry.tests.e2e.hive.AbstractTestWithStaticConfiguration;
+import org.apache.sentry.tests.e2e.hive.SlowE2ETest;
 
 import org.junit.Before;
 import org.junit.BeforeClass;
@@ -34,8 +33,7 @@ import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.io.Resources;
-
+@SlowE2ETest
 public class TestDbCrossOperations extends AbstractTestWithStaticConfiguration {
   private static final Logger LOGGER = LoggerFactory.
       getLogger(TestDbCrossOperations.class);

http://git-wip-us.apache.org/repos/asf/sentry/blob/a13f2fb8/sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/hive/AbstractTestWithHiveServer.java
----------------------------------------------------------------------
diff --git a/sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/hive/AbstractTestWithHiveServer.java
b/sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/hive/AbstractTestWithHiveServer.java
index a314c0d..c4ee1c0 100644
--- a/sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/hive/AbstractTestWithHiveServer.java
+++ b/sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/hive/AbstractTestWithHiveServer.java
@@ -32,7 +32,7 @@ import org.slf4j.LoggerFactory;
 
 import com.google.common.io.Files;
 
-public abstract class AbstractTestWithHiveServer {
+public abstract class AbstractTestWithHiveServer extends RulesForE2ETest {
   private static final Logger LOGGER = LoggerFactory
       .getLogger(AbstractTestWithHiveServer.class);
   protected static File baseDir;

http://git-wip-us.apache.org/repos/asf/sentry/blob/a13f2fb8/sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/hive/AbstractTestWithStaticConfiguration.java
----------------------------------------------------------------------
diff --git a/sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/hive/AbstractTestWithStaticConfiguration.java
b/sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/hive/AbstractTestWithStaticConfiguration.java
index b8695b2..e2fb36a 100644
--- a/sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/hive/AbstractTestWithStaticConfiguration.java
+++ b/sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/hive/AbstractTestWithStaticConfiguration.java
@@ -21,7 +21,6 @@ import java.io.IOException;
 import java.security.PrivilegedExceptionAction;
 import java.sql.Connection;
 import java.sql.ResultSet;
-import java.sql.SQLException;
 import java.sql.Statement;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -33,17 +32,10 @@ import java.util.HashSet;
 import com.google.common.collect.Sets;
 import org.apache.sentry.tests.e2e.hive.fs.TestFSContants;
 import org.junit.After;
-import org.junit.Assert;
 import org.junit.AfterClass;
+import org.junit.Assert;
 import org.junit.Before;
 import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Rule;
-import org.junit.rules.RuleChain;
-import org.junit.rules.Timeout;
-import org.junit.rules.TestRule;
-import org.junit.rules.TestWatcher;
-import org.junit.runner.Description;
 
 import org.apache.commons.io.FileUtils;
 import org.apache.hadoop.conf.Configuration;
@@ -90,39 +82,10 @@ import static org.apache.sentry.core.common.utils.SentryConstants.AUTHORIZABLE_S
 import static org.apache.sentry.core.common.utils.SentryConstants.PRIVILEGE_PREFIX;
 import static org.apache.sentry.core.common.utils.SentryConstants.ROLE_SPLITTER;
 
-public abstract class AbstractTestWithStaticConfiguration {
+public abstract class AbstractTestWithStaticConfiguration extends RulesForE2ETest {
   private static final Logger LOGGER = LoggerFactory
       .getLogger(AbstractTestWithStaticConfiguration.class);
 
-  @ClassRule
-  public final static TestRule timeoutClass = RuleChain
-      .outerRule(new TestWatcher() {
-        @Override
-        protected void failed(Throwable e, Description description) {
-          LOGGER.error("Time out = " + e);
-          if (e != null) {
-            if (e.getMessage().contains("test timed out after")) {
-              LOGGER.error("Test class time out, but caught by rule, description = " + description
+ "ex = " + e);
-            } else {{
-              LOGGER.error("Unexpected error: ", e);
-            }}
-          }
-        }
-      })
-      .around(new Timeout(600000)); //millis, each test runs less than 600s (or 10m)
-
-  @Rule
-  public final TestRule timeout = RuleChain
-      .outerRule(new TestWatcher() {
-        @Override
-        protected void failed(Throwable e, Description description) {
-          if (e.getMessage()!= null && e.getMessage().contains("test timed out after"))
{
-            LOGGER.error("Test method time out, but caught by rule, description = " + description
+ "ex = " + e);
-          }
-        }
-      })
-      .around(new Timeout(180000)); //millis, each test runs less than 180s (or 3m)
-
   protected static final String SINGLE_TYPE_DATA_FILE_NAME = "kv1.dat";
   protected static final String ALL_DB1 = "server=server1->db=db_1",
       ALL_DB2 = "server=server1->db=db_2",

http://git-wip-us.apache.org/repos/asf/sentry/blob/a13f2fb8/sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/hive/RulesForE2ETest.java
----------------------------------------------------------------------
diff --git a/sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/hive/RulesForE2ETest.java
b/sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/hive/RulesForE2ETest.java
new file mode 100644
index 0000000..5d09b92
--- /dev/null
+++ b/sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/hive/RulesForE2ETest.java
@@ -0,0 +1,68 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.sentry.tests.e2e.hive;
+
+import org.junit.Rule;
+import org.junit.ClassRule;
+import org.junit.internal.runners.statements.FailOnTimeout;
+import org.junit.rules.TestRule;
+import org.junit.runner.Description;
+import org.junit.runners.model.Statement;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * This class contains rules to run e2e tests.
+ * The way to use a rule is to create an annotation class;
+ * then add the rule specifically for test classes annotated by that particular class.
+ */
+public abstract class RulesForE2ETest {
+  private static final Logger LOGGER = LoggerFactory
+      .getLogger(RulesForE2ETest.class);
+
+  final static int slowTestClassRunTime = 900000; //millis, each test runs less than 900s
(or 15m)
+  final static int avgTestClassRunTime = 600000; //millis, each test runs less than 600s
(or 10m)
+  final static int slowTestRunTime = 600000; //millis, each test runs less than 600s (or
10m)
+  final static int avgTestRunTime = 180000; //millis, each test runs less than 180s (or 3m)
+
+  @ClassRule
+  public final static TestRule timeoutClass = new TestRule() {
+    @Override
+    public Statement apply(Statement base, Description description) {
+      if (description != null && description.getAnnotation(SlowE2ETest.class) !=
null) {
+        LOGGER.info("SlowE2ETest class time out is configured as " + slowTestClassRunTime
+ " s.");
+        return new FailOnTimeout(base, slowTestClassRunTime);
+      }
+      LOGGER.info("Average class time out is configured as " + avgTestClassRunTime + " s.");
+      return new FailOnTimeout(base, avgTestClassRunTime); //millis, each test runs less
than 600s (or 10m)
+    }
+  };
+
+  @Rule
+  public final TestRule timeout = new TestRule() {
+    @Override
+    public Statement apply(Statement base, Description description) {
+      if (description != null && description.getAnnotation(SlowE2ETest.class) !=
null) {
+        LOGGER.info("SlowE2ETest time out is configured as " + slowTestRunTime + " s.");
+        return new FailOnTimeout(base, slowTestRunTime);
+      }
+      LOGGER.info("Average test time out is configured as " + avgTestRunTime + " s.");
+      return new FailOnTimeout(base, avgTestRunTime);
+    }
+  };
+}

http://git-wip-us.apache.org/repos/asf/sentry/blob/a13f2fb8/sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/hive/SlowE2ETest.java
----------------------------------------------------------------------
diff --git a/sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/hive/SlowE2ETest.java
b/sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/hive/SlowE2ETest.java
new file mode 100644
index 0000000..4eee40e
--- /dev/null
+++ b/sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/hive/SlowE2ETest.java
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.sentry.tests.e2e.hive;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+@Retention(value=RetentionPolicy.RUNTIME)
+public @interface SlowE2ETest {
+  // Just for tagging a test class and method to adapt the timeout
+}


Mime
View raw message