HBASE-20031 Unable to run integration test using mvn due to missing 
HBaseClassTestRule


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

Branch: refs/heads/HBASE-19397-branch-2
Commit: 66ba8aa58cee2bcf74a59cd10238e21604607f40
Parents: e10db9d
Author: tedyu <yuzhih...@gmail.com>
Authored: Wed Feb 21 12:04:17 2018 -0800
Committer: tedyu <yuzhih...@gmail.com>
Committed: Wed Feb 21 12:04:17 2018 -0800

----------------------------------------------------------------------
 .../java/org/apache/hadoop/hbase/HBaseClassTestRule.java  |  4 ++++
 .../apache/hadoop/hbase/HBaseClassTestRuleChecker.java    | 10 ++++++++++
 src/main/asciidoc/_chapters/developer.adoc                |  3 ++-
 3 files changed, 16 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/66ba8aa5/hbase-common/src/test/java/org/apache/hadoop/hbase/HBaseClassTestRule.java
----------------------------------------------------------------------
diff --git 
a/hbase-common/src/test/java/org/apache/hadoop/hbase/HBaseClassTestRule.java 
b/hbase-common/src/test/java/org/apache/hadoop/hbase/HBaseClassTestRule.java
index a41e383..c3bef0f 100644
--- a/hbase-common/src/test/java/org/apache/hadoop/hbase/HBaseClassTestRule.java
+++ b/hbase-common/src/test/java/org/apache/hadoop/hbase/HBaseClassTestRule.java
@@ -19,6 +19,7 @@ package org.apache.hadoop.hbase;
 
 import java.util.concurrent.TimeUnit;
 
+import org.apache.hadoop.hbase.testclassification.IntegrationTests;
 import org.apache.hadoop.hbase.testclassification.LargeTests;
 import org.apache.hadoop.hbase.testclassification.MediumTests;
 import org.apache.hadoop.hbase.testclassification.SmallTests;
@@ -63,6 +64,9 @@ public final class HBaseClassTestRule implements TestRule {
         // All tests have a 10minute timeout.
         return TimeUnit.MINUTES.toSeconds(13);
       }
+      if (c == IntegrationTests.class) {
+        return TimeUnit.MINUTES.toSeconds(Long.MAX_VALUE);
+      }
     }
     throw new IllegalArgumentException(
         clazz.getName() + " does not have SmallTests/MediumTests/LargeTests in 
@Category");

http://git-wip-us.apache.org/repos/asf/hbase/blob/66ba8aa5/hbase-common/src/test/java/org/apache/hadoop/hbase/HBaseClassTestRuleChecker.java
----------------------------------------------------------------------
diff --git 
a/hbase-common/src/test/java/org/apache/hadoop/hbase/HBaseClassTestRuleChecker.java
 
b/hbase-common/src/test/java/org/apache/hadoop/hbase/HBaseClassTestRuleChecker.java
index 97c657f..c374903 100644
--- 
a/hbase-common/src/test/java/org/apache/hadoop/hbase/HBaseClassTestRuleChecker.java
+++ 
b/hbase-common/src/test/java/org/apache/hadoop/hbase/HBaseClassTestRuleChecker.java
@@ -22,8 +22,12 @@ import static org.junit.Assert.fail;
 
 import java.lang.reflect.Field;
 import java.lang.reflect.Modifier;
+import java.util.concurrent.TimeUnit;
+
+import org.apache.hadoop.hbase.testclassification.IntegrationTests;
 import org.apache.yetus.audience.InterfaceAudience;
 import org.junit.ClassRule;
+import org.junit.experimental.categories.Category;
 import org.junit.runner.Description;
 import org.junit.runner.notification.RunListener;
 import org.junit.runner.notification.RunListener.ThreadSafe;
@@ -37,6 +41,12 @@ public class HBaseClassTestRuleChecker extends RunListener {
 
   @Override
   public void testStarted(Description description) throws Exception {
+    Category[] categories = 
description.getTestClass().getAnnotationsByType(Category.class);
+    for (Class<?> c : categories[0].value()) {
+      if (c == IntegrationTests.class) {
+        return;
+      }
+    }
     for (Field field : description.getTestClass().getFields()) {
       if (Modifier.isStatic(field.getModifiers()) && field.getType() == 
HBaseClassTestRule.class &&
         field.isAnnotationPresent(ClassRule.class)) {

http://git-wip-us.apache.org/repos/asf/hbase/blob/66ba8aa5/src/main/asciidoc/_chapters/developer.adoc
----------------------------------------------------------------------
diff --git a/src/main/asciidoc/_chapters/developer.adoc 
b/src/main/asciidoc/_chapters/developer.adoc
index 0cd6ad9..ef9ae25 100644
--- a/src/main/asciidoc/_chapters/developer.adoc
+++ b/src/main/asciidoc/_chapters/developer.adoc
@@ -1015,7 +1015,7 @@ The first three categories, `small`, `medium`, and 
`large`, are for test cases w
 type `$ mvn test`.
 In other words, these three categorizations are for HBase unit tests.
 The `integration` category is not for unit tests, but for integration tests.
-These are run when you invoke `$ mvn verify`.
+These are normally run when you invoke `$ mvn verify`.
 Integration tests are described in <<integration.tests,integration.tests>>.
 
 Keep reading to figure which annotation of the set `small`, `medium`, and 
`large`
@@ -1042,6 +1042,7 @@ Large Tests (((LargeTests)))::
 Integration Tests (((IntegrationTests)))::
   _Integration_ tests are system level tests.
   See <<integration.tests,integration.tests>> for more info.
+  If you invoke `$ mvn test` on integration tests, there is no timeout for the 
test.
 
 [[hbase.unittests.cmds]]
 === Running tests

Reply via email to