From 1738871938e1885b8e4b0c6326ffa521b0aaf9ef Mon Sep 17 00:00:00 2001 From: Wellington Chevreuil Date: Mon, 14 Mar 2022 22:37:41 +0000 Subject: [PATCH 1/8] HBASE-26838 Junit jar is not included in the hbase tar ball, causing issues for some hbase tools that do rely on it --- hbase-assembly/pom.xml | 4 ++++ hbase-assembly/src/main/assembly/client.xml | 3 +++ hbase-assembly/src/main/assembly/hadoop-three-compat.xml | 9 +++++++++ 3 files changed, 16 insertions(+) diff --git a/hbase-assembly/pom.xml b/hbase-assembly/pom.xml index 795f832d97c6..57250b51d428 100644 --- a/hbase-assembly/pom.xml +++ b/hbase-assembly/pom.xml @@ -373,5 +373,9 @@ opentelemetry-javaagent all + + junit + junit + diff --git a/hbase-assembly/src/main/assembly/client.xml b/hbase-assembly/src/main/assembly/client.xml index aaaa6aa99a18..ae483241acb4 100644 --- a/hbase-assembly/src/main/assembly/client.xml +++ b/hbase-assembly/src/main/assembly/client.xml @@ -52,6 +52,7 @@ com.sun.jersey:* com.sun.jersey.contribs:* jline:jline + junit:junit com.github.stephenc.findbugs:findbugs-annotations commons-logging:commons-logging log4j:log4j @@ -159,6 +160,8 @@ io.opentelemetry.javaagent:* + + diff --git a/hbase-assembly/src/main/assembly/hadoop-three-compat.xml b/hbase-assembly/src/main/assembly/hadoop-three-compat.xml index 13d4dcc3a912..6343b06b857c 100644 --- a/hbase-assembly/src/main/assembly/hadoop-three-compat.xml +++ b/hbase-assembly/src/main/assembly/hadoop-three-compat.xml @@ -112,6 +112,7 @@ org.slf4j:* org.apache.logging.log4j:* io.opentelemetry.javaagent:* + junit:junit @@ -261,6 +262,14 @@ io.opentelemetry.javaagent:* + + + + lib/test + + junit:junit + + From ef79b4ea184595dc6c69bd3b8c67ca00e228be66 Mon Sep 17 00:00:00 2001 From: Wellington Chevreuil Date: Tue, 15 Mar 2022 10:33:31 +0000 Subject: [PATCH 2/8] Removing blank lines in client.xml; Also moving hamcrest to lib/test --- hbase-assembly/src/main/assembly/client.xml | 3 +-- hbase-assembly/src/main/assembly/hadoop-three-compat.xml | 2 ++ 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/hbase-assembly/src/main/assembly/client.xml b/hbase-assembly/src/main/assembly/client.xml index ae483241acb4..956a35300db1 100644 --- a/hbase-assembly/src/main/assembly/client.xml +++ b/hbase-assembly/src/main/assembly/client.xml @@ -65,6 +65,7 @@ org.slf4j:* org.apache.logging.log4j:* io.opentelemetry.javaagent:* + org.hamcrest:hamcrest-core @@ -160,8 +161,6 @@ io.opentelemetry.javaagent:* - - diff --git a/hbase-assembly/src/main/assembly/hadoop-three-compat.xml b/hbase-assembly/src/main/assembly/hadoop-three-compat.xml index 6343b06b857c..df11d09d17d1 100644 --- a/hbase-assembly/src/main/assembly/hadoop-three-compat.xml +++ b/hbase-assembly/src/main/assembly/hadoop-three-compat.xml @@ -113,6 +113,7 @@ org.apache.logging.log4j:* io.opentelemetry.javaagent:* junit:junit + org.hamcrest:hamcrest-core @@ -268,6 +269,7 @@ lib/test junit:junit + org.hamcrest:hamcrest-core From 7f7266c51205ac0d187ed1e81fc2348e90b2329e Mon Sep 17 00:00:00 2001 From: Wellington Chevreuil Date: Mon, 21 Mar 2022 22:15:31 +0000 Subject: [PATCH 3/8] adding lib/test jars to IntegrationTestIngest classpath --- bin/hbase | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/bin/hbase b/bin/hbase index 10e6bd18a1e4..04a0a792e947 100755 --- a/bin/hbase +++ b/bin/hbase @@ -757,6 +757,13 @@ elif [ "$COMMAND" = "hbtop" ] ; then HBASE_OPTS="${HBASE_OPTS} ${HBASE_HBTOP_OPTS}" else CLASS=$COMMAND + if [ "$CLASS" = "org.apache.hadoop.hbase.IntegrationTestIngest" ] ; 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 From be7c1e725c44591999f5e2ab901dfed4de2e7b10 Mon Sep 17 00:00:00 2001 From: Wellington Chevreuil Date: Wed, 23 Mar 2022 14:40:32 +0000 Subject: [PATCH 4/8] adding regex check for IntegrationTest in hbase script when deciding to include junit lib in the CP --- bin/hbase | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/hbase b/bin/hbase index 04a0a792e947..1f8b9dadb066 100755 --- a/bin/hbase +++ b/bin/hbase @@ -757,7 +757,7 @@ elif [ "$COMMAND" = "hbtop" ] ; then HBASE_OPTS="${HBASE_OPTS} ${HBASE_HBTOP_OPTS}" else CLASS=$COMMAND - if [ "$CLASS" = "org.apache.hadoop.hbase.IntegrationTestIngest" ] ; then +if [[ "$CLASS" =~ .*IntegrationTest.* ]] ; then for f in ${HBASE_HOME}/lib/test/*.jar; do if [ -f "${f}" ]; then CLASSPATH="${CLASSPATH}:${f}" From 968cb3b3aebb419e7d760950a8395bf8310a4e45 Mon Sep 17 00:00:00 2001 From: Wellington Chevreuil Date: Wed, 30 Mar 2022 23:17:37 +0100 Subject: [PATCH 5/8] adding extra explanation on ref-guide; including mockito in the assembly files; --- hbase-assembly/pom.xml | 4 ++++ hbase-assembly/src/main/assembly/client.xml | 1 + .../src/main/assembly/hadoop-three-compat.xml | 2 ++ pom.xml | 1 - src/main/asciidoc/_chapters/developer.adoc | 13 ++++++++++++- 5 files changed, 19 insertions(+), 2 deletions(-) diff --git a/hbase-assembly/pom.xml b/hbase-assembly/pom.xml index 57250b51d428..4c0696ae547d 100644 --- a/hbase-assembly/pom.xml +++ b/hbase-assembly/pom.xml @@ -377,5 +377,9 @@ junit junit + + org.mockito + mockito-core + diff --git a/hbase-assembly/src/main/assembly/client.xml b/hbase-assembly/src/main/assembly/client.xml index 956a35300db1..d505dc0ad7ea 100644 --- a/hbase-assembly/src/main/assembly/client.xml +++ b/hbase-assembly/src/main/assembly/client.xml @@ -66,6 +66,7 @@ org.apache.logging.log4j:* io.opentelemetry.javaagent:* org.hamcrest:hamcrest-core + org.mockito:mockito-core diff --git a/hbase-assembly/src/main/assembly/hadoop-three-compat.xml b/hbase-assembly/src/main/assembly/hadoop-three-compat.xml index df11d09d17d1..9db45b0d4752 100644 --- a/hbase-assembly/src/main/assembly/hadoop-three-compat.xml +++ b/hbase-assembly/src/main/assembly/hadoop-three-compat.xml @@ -114,6 +114,7 @@ io.opentelemetry.javaagent:* junit:junit org.hamcrest:hamcrest-core + org.mockito:mockito-core @@ -270,6 +271,7 @@ junit:junit org.hamcrest:hamcrest-core + org.mockito:mockito-core diff --git a/pom.xml b/pom.xml index bbd54261b9ed..b402e783dc36 100755 --- a/pom.xml +++ b/pom.xml @@ -2491,7 +2491,6 @@ org.mockito mockito-core ${mockito-core.version} - test io.opentelemetry diff --git a/src/main/asciidoc/_chapters/developer.adoc b/src/main/asciidoc/_chapters/developer.adoc index 3b91593613b1..3bf6d21a9476 100644 --- a/src/main/asciidoc/_chapters/developer.adoc +++ b/src/main/asciidoc/_chapters/developer.adoc @@ -1575,7 +1575,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. @@ -1692,6 +1692,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) From b5701617aee9ce4b9858f7fc55589ae9f9fbb324 Mon Sep 17 00:00:00 2001 From: Wellington Chevreuil Date: Wed, 30 Mar 2022 23:27:15 +0100 Subject: [PATCH 6/8] adding test libs on the client tar ball --- hbase-assembly/src/main/assembly/client.xml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/hbase-assembly/src/main/assembly/client.xml b/hbase-assembly/src/main/assembly/client.xml index d505dc0ad7ea..f0ca402fd058 100644 --- a/hbase-assembly/src/main/assembly/client.xml +++ b/hbase-assembly/src/main/assembly/client.xml @@ -162,6 +162,15 @@ io.opentelemetry.javaagent:* + + + lib/test + + junit:junit + org.hamcrest:hamcrest-core + org.mockito:mockito-core + + From fb8708496669755f6630c7e6e8fe58007d15b22e Mon Sep 17 00:00:00 2001 From: Wellington Chevreuil Date: Thu, 31 Mar 2022 19:19:47 +0100 Subject: [PATCH 7/8] resetting scope test to parent pom and overriding it to compile in assembly module --- hbase-assembly/pom.xml | 1 + pom.xml | 1 + 2 files changed, 2 insertions(+) diff --git a/hbase-assembly/pom.xml b/hbase-assembly/pom.xml index 4c0696ae547d..425f1d7132c2 100644 --- a/hbase-assembly/pom.xml +++ b/hbase-assembly/pom.xml @@ -380,6 +380,7 @@ org.mockito mockito-core + compile diff --git a/pom.xml b/pom.xml index b402e783dc36..bbd54261b9ed 100755 --- a/pom.xml +++ b/pom.xml @@ -2491,6 +2491,7 @@ org.mockito mockito-core ${mockito-core.version} + test io.opentelemetry From 1296a8347e7512a941ac2f99f8db43a735f80045 Mon Sep 17 00:00:00 2001 From: Wellington Chevreuil Date: Thu, 31 Mar 2022 21:17:43 +0100 Subject: [PATCH 8/8] Adding comment on assembly pom explaining mockito compile scope --- hbase-assembly/pom.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hbase-assembly/pom.xml b/hbase-assembly/pom.xml index 425f1d7132c2..b24e4498d9e6 100644 --- a/hbase-assembly/pom.xml +++ b/hbase-assembly/pom.xml @@ -380,6 +380,8 @@ org.mockito mockito-core + + compile