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