This is an automated email from the ASF dual-hosted git repository. wchevreuil pushed a commit to branch branch-2 in repository https://gitbox.apache.org/repos/asf/hbase.git
The following commit(s) were added to refs/heads/branch-2 by this push: new 35868ab HBASE-26838 Junit jar is not included in the hbase tar ball, causing … (#4223) 35868ab is described below commit 35868abe8f9d384f543866dc7edffaf159e1cba3 Author: Wellington Ramos Chevreuil <wchevre...@apache.org> AuthorDate: Thu Mar 31 21:22:19 2022 +0100 HBASE-26838 Junit jar is not included in the hbase tar ball, causing … (#4223) Signed-off-by: Josh Elser <els...@apache.org> Singed-off-by: Nick Dimiduk <ndimi...@apache.org> Reviewed-by: Sean Busbey <bus...@apache.org> --- bin/hbase | 7 +++++++ hbase-assembly/pom.xml | 13 ++++++++++++- hbase-assembly/src/main/assembly/client.xml | 12 ++++++++++++ hbase-assembly/src/main/assembly/hadoop-three-compat.xml | 13 +++++++++++++ src/main/asciidoc/_chapters/developer.adoc | 13 ++++++++++++- 5 files changed, 56 insertions(+), 2 deletions(-) diff --git a/bin/hbase b/bin/hbase index 4489a3f..f1ffb11 100755 --- a/bin/hbase +++ b/bin/hbase @@ -729,6 +729,13 @@ elif [ "$COMMAND" = "hbtop" ] ; then HBASE_OPTS="${HBASE_OPTS} ${HBASE_HBTOP_OPTS}" else CLASS=$COMMAND +if [[ "$CLASS" =~ .*IntegrationTest.* ]] ; then + for f in ${HBASE_HOME}/lib/test/*.jar; do + if [ -f "${f}" ]; then + CLASSPATH="${CLASSPATH}:${f}" + fi + done + fi fi # Add lib/jdk11 jars to the classpath diff --git a/hbase-assembly/pom.xml b/hbase-assembly/pom.xml index 198a76e..f5d8a78 100644 --- a/hbase-assembly/pom.xml +++ b/hbase-assembly/pom.xml @@ -388,7 +388,18 @@ <groupId>org.apache.hbase</groupId> <artifactId>hbase-rsgroup</artifactId> </dependency> - </dependencies> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + </dependency> + <dependency> + <groupId>org.mockito</groupId> + <artifactId>mockito-core</artifactId> + <!-- Making it compile here so that it can be downloaded during packaging. --> + <!-- All other modules scope it as test or inherit test scope from parent pom. --> + <scope>compile</scope> + </dependency> + </dependencies> </profile> </profiles> </project> diff --git a/hbase-assembly/src/main/assembly/client.xml b/hbase-assembly/src/main/assembly/client.xml index 2a8e669..54ed2e9 100644 --- a/hbase-assembly/src/main/assembly/client.xml +++ b/hbase-assembly/src/main/assembly/client.xml @@ -52,6 +52,7 @@ <exclude>com.sun.jersey:*</exclude> <exclude>com.sun.jersey.contribs:*</exclude> <exclude>jline:jline</exclude> + <exclude>junit:junit</exclude> <exclude>com.github.stephenc.findbugs:findbugs-annotations</exclude> <exclude>commons-logging:commons-logging</exclude> <exclude>org.apache.hbase:hbase-shaded-client</exclude> @@ -63,6 +64,8 @@ <exclude>org.slf4j:*</exclude> <exclude>org.apache.logging.log4j:*</exclude> <exclude>io.opentelemetry.javaagent:*</exclude> + <exclude>org.hamcrest:hamcrest-core</exclude> + <exclude>org.mockito:mockito-core</exclude> </excludes> </dependencySet> </dependencySets> @@ -157,6 +160,15 @@ <include>io.opentelemetry.javaagent:*</include> </includes> </dependencySet> + <!-- Adds junit libs to lib/test --> + <dependencySet> + <outputDirectory>lib/test</outputDirectory> + <includes> + <include>junit:junit</include> + <include>org.hamcrest:hamcrest-core</include> + <include>org.mockito:mockito-core</include> + </includes> + </dependencySet> </dependencySets> </assembly> diff --git a/hbase-assembly/src/main/assembly/hadoop-three-compat.xml b/hbase-assembly/src/main/assembly/hadoop-three-compat.xml index a1bbcb8..61a2dfa 100644 --- a/hbase-assembly/src/main/assembly/hadoop-three-compat.xml +++ b/hbase-assembly/src/main/assembly/hadoop-three-compat.xml @@ -110,6 +110,9 @@ <exclude>org.slf4j:*</exclude> <exclude>org.apache.logging.log4j:*</exclude> <exclude>io.opentelemetry.javaagent:*</exclude> + <exclude>junit:junit</exclude> + <exclude>org.hamcrest:hamcrest-core</exclude> + <exclude>org.mockito:mockito-core</exclude> </excludes> </dependencySet> </dependencySets> @@ -258,6 +261,16 @@ <include>io.opentelemetry.javaagent:*</include> </includes> </dependencySet> + + <!-- Adds junit libs to lib/test --> + <dependencySet> + <outputDirectory>lib/test</outputDirectory> + <includes> + <include>junit:junit</include> + <include>org.hamcrest:hamcrest-core</include> + <include>org.mockito:mockito-core</include> + </includes> + </dependencySet> </dependencySets> </assembly> diff --git a/src/main/asciidoc/_chapters/developer.adoc b/src/main/asciidoc/_chapters/developer.adoc index b3e2ffe..6eacead 100644 --- a/src/main/asciidoc/_chapters/developer.adoc +++ b/src/main/asciidoc/_chapters/developer.adoc @@ -1677,7 +1677,7 @@ They are generally long-lasting, sizeable (the test can be asked to 1M rows or 1 Integration tests are what you would run when you need to more elaborate proofing of a release candidate beyond what unit tests can do. They are not generally run on the Apache Continuous Integration build server, however, some sites opt to run integration tests as a part of their continuous testing on an actual cluster. -Integration tests currently live under the _src/test_ directory in the hbase-it submodule and will match the regex: _**/IntegrationTest*.java_. +Integration tests currently live under the _src/test_ directory in the hbase-it submodule and will match the regex: _*IntegrationTest*.java_. All integration tests are also annotated with `@Category(IntegrationTests.class)`. Integration tests can be run in two modes: using a mini cluster, or against an actual distributed cluster. @@ -1794,6 +1794,17 @@ Currently tarball deployments, deployments which uses _hbase-daemons.sh_, and li _/etc/init.d/_ scripts are not supported for now, but it can be easily added. For other deployment options, a ClusterManager can be implemented and plugged in. +Some integration tests define a _main_ method as entry point, and can be run on its' own, rather than using the test driver. For example, the _itbll_ test can be run as follows: + +---- +bin/hbase org.apache.hadoop.hbase.test.IntegrationTestBigLinkedList loop 2 1 100000 /temp 1 1000 50 1 0 +---- + +NOTE: The _hbase_ script assumes all integration tests with exposed _main_ methods to be run +against a distributed cluster will follow the *IntegrationTest* regex naming pattern +mentioned above, in order to proper set test dependencies into the classpath. + + [[maven.build.commands.integration.tests.destructive]] ==== Destructive integration / system tests (ChaosMonkey)