diff --git a/hbase-client-test-support/pom.xml b/hbase-client-test-support/pom.xml
new file mode 100644
index 000000000000..95a82704bfc4
--- /dev/null
+++ b/hbase-client-test-support/pom.xml
@@ -0,0 +1,61 @@
+
+
+
+ 4.0.0
+
+ hbase-build-configuration
+ org.apache.hbase
+ 3.0.0-alpha-3-SNAPSHOT
+ ../hbase-build-configuration
+
+
+ hbase-client-test-support
+ Apache HBase - Client Test Support
+ Test support for code found in the Client module
+
+
+
+
+
+ maven-assembly-plugin
+
+ true
+
+
+
+
+
+
+
+ org.apache.hbase
+ hbase-common
+
+
+
+ opentelemetry-sdk-trace
+ io.opentelemetry
+
+
+ org.hamcrest
+ hamcrest-library
+
+
+
diff --git a/hbase-client/src/test/java/org/apache/hadoop/hbase/client/trace/hamcrest/AttributesMatchers.java b/hbase-client-test-support/src/main/java/org/apache/hadoop/hbase/trace/hamcrest/AttributesMatchers.java
similarity index 98%
rename from hbase-client/src/test/java/org/apache/hadoop/hbase/client/trace/hamcrest/AttributesMatchers.java
rename to hbase-client-test-support/src/main/java/org/apache/hadoop/hbase/trace/hamcrest/AttributesMatchers.java
index c7bb205076cd..4a190cae5560 100644
--- a/hbase-client/src/test/java/org/apache/hadoop/hbase/client/trace/hamcrest/AttributesMatchers.java
+++ b/hbase-client-test-support/src/main/java/org/apache/hadoop/hbase/trace/hamcrest/AttributesMatchers.java
@@ -15,7 +15,8 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.hadoop.hbase.client.trace.hamcrest;
+
+package org.apache.hadoop.hbase.trace.hamcrest;
import static org.hamcrest.Matchers.allOf;
import static org.hamcrest.Matchers.equalTo;
diff --git a/hbase-client/src/test/java/org/apache/hadoop/hbase/client/trace/hamcrest/SpanDataMatchers.java b/hbase-client-test-support/src/main/java/org/apache/hadoop/hbase/trace/hamcrest/SpanDataMatchers.java
similarity index 98%
rename from hbase-client/src/test/java/org/apache/hadoop/hbase/client/trace/hamcrest/SpanDataMatchers.java
rename to hbase-client-test-support/src/main/java/org/apache/hadoop/hbase/trace/hamcrest/SpanDataMatchers.java
index 2839e7c597c7..e3499a9a643d 100644
--- a/hbase-client/src/test/java/org/apache/hadoop/hbase/client/trace/hamcrest/SpanDataMatchers.java
+++ b/hbase-client-test-support/src/main/java/org/apache/hadoop/hbase/trace/hamcrest/SpanDataMatchers.java
@@ -15,7 +15,8 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.hadoop.hbase.client.trace.hamcrest;
+
+package org.apache.hadoop.hbase.trace.hamcrest;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.is;
diff --git a/hbase-client/pom.xml b/hbase-client/pom.xml
index 885085c5ff8c..d94419182f6a 100644
--- a/hbase-client/pom.xml
+++ b/hbase-client/pom.xml
@@ -93,6 +93,11 @@
test-jar
test
+
+ org.apache.hbase
+ hbase-client-test-support
+ test
+
org.apache.hbase
hbase-protocol-shaded
diff --git a/hbase-client/src/test/java/org/apache/hadoop/hbase/client/TestAsyncRegionLocatorTracing.java b/hbase-client/src/test/java/org/apache/hadoop/hbase/client/TestAsyncRegionLocatorTracing.java
index 1a3feb735da8..38f5327c7179 100644
--- a/hbase-client/src/test/java/org/apache/hadoop/hbase/client/TestAsyncRegionLocatorTracing.java
+++ b/hbase-client/src/test/java/org/apache/hadoop/hbase/client/TestAsyncRegionLocatorTracing.java
@@ -17,15 +17,15 @@
*/
package org.apache.hadoop.hbase.client;
-import static org.apache.hadoop.hbase.client.trace.hamcrest.AttributesMatchers.containsEntry;
-import static org.apache.hadoop.hbase.client.trace.hamcrest.AttributesMatchers.containsEntryWithStringValuesOf;
-import static org.apache.hadoop.hbase.client.trace.hamcrest.SpanDataMatchers.hasAttributes;
-import static org.apache.hadoop.hbase.client.trace.hamcrest.SpanDataMatchers.hasEnded;
-import static org.apache.hadoop.hbase.client.trace.hamcrest.SpanDataMatchers.hasKind;
-import static org.apache.hadoop.hbase.client.trace.hamcrest.SpanDataMatchers.hasName;
-import static org.apache.hadoop.hbase.client.trace.hamcrest.SpanDataMatchers.hasStatusWithCode;
import static org.apache.hadoop.hbase.client.trace.hamcrest.TraceTestUtil.buildConnectionAttributesMatcher;
import static org.apache.hadoop.hbase.client.trace.hamcrest.TraceTestUtil.buildTableAttributesMatcher;
+import static org.apache.hadoop.hbase.trace.hamcrest.AttributesMatchers.containsEntry;
+import static org.apache.hadoop.hbase.trace.hamcrest.AttributesMatchers.containsEntryWithStringValuesOf;
+import static org.apache.hadoop.hbase.trace.hamcrest.SpanDataMatchers.hasAttributes;
+import static org.apache.hadoop.hbase.trace.hamcrest.SpanDataMatchers.hasEnded;
+import static org.apache.hadoop.hbase.trace.hamcrest.SpanDataMatchers.hasKind;
+import static org.apache.hadoop.hbase.trace.hamcrest.SpanDataMatchers.hasName;
+import static org.apache.hadoop.hbase.trace.hamcrest.SpanDataMatchers.hasStatusWithCode;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.allOf;
import static org.hamcrest.Matchers.containsInAnyOrder;
diff --git a/hbase-client/src/test/java/org/apache/hadoop/hbase/client/TestAsyncTableTracing.java b/hbase-client/src/test/java/org/apache/hadoop/hbase/client/TestAsyncTableTracing.java
index d8a645349cb0..60d70ae0ba1f 100644
--- a/hbase-client/src/test/java/org/apache/hadoop/hbase/client/TestAsyncTableTracing.java
+++ b/hbase-client/src/test/java/org/apache/hadoop/hbase/client/TestAsyncTableTracing.java
@@ -17,12 +17,12 @@
*/
package org.apache.hadoop.hbase.client;
-import static org.apache.hadoop.hbase.client.trace.hamcrest.SpanDataMatchers.hasEnded;
-import static org.apache.hadoop.hbase.client.trace.hamcrest.SpanDataMatchers.hasKind;
-import static org.apache.hadoop.hbase.client.trace.hamcrest.SpanDataMatchers.hasName;
-import static org.apache.hadoop.hbase.client.trace.hamcrest.SpanDataMatchers.hasStatusWithCode;
import static org.apache.hadoop.hbase.client.trace.hamcrest.TraceTestUtil.buildConnectionAttributesMatcher;
import static org.apache.hadoop.hbase.client.trace.hamcrest.TraceTestUtil.buildTableAttributesMatcher;
+import static org.apache.hadoop.hbase.trace.hamcrest.SpanDataMatchers.hasEnded;
+import static org.apache.hadoop.hbase.trace.hamcrest.SpanDataMatchers.hasKind;
+import static org.apache.hadoop.hbase.trace.hamcrest.SpanDataMatchers.hasName;
+import static org.apache.hadoop.hbase.trace.hamcrest.SpanDataMatchers.hasStatusWithCode;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.allOf;
import static org.hamcrest.Matchers.containsString;
diff --git a/hbase-client/src/test/java/org/apache/hadoop/hbase/client/trace/hamcrest/TraceTestUtil.java b/hbase-client/src/test/java/org/apache/hadoop/hbase/client/trace/hamcrest/TraceTestUtil.java
index 3a8fc30af933..757ea73279ba 100644
--- a/hbase-client/src/test/java/org/apache/hadoop/hbase/client/trace/hamcrest/TraceTestUtil.java
+++ b/hbase-client/src/test/java/org/apache/hadoop/hbase/client/trace/hamcrest/TraceTestUtil.java
@@ -18,8 +18,8 @@
package org.apache.hadoop.hbase.client.trace.hamcrest;
-import static org.apache.hadoop.hbase.client.trace.hamcrest.AttributesMatchers.containsEntry;
-import static org.apache.hadoop.hbase.client.trace.hamcrest.SpanDataMatchers.hasAttributes;
+import static org.apache.hadoop.hbase.trace.hamcrest.AttributesMatchers.containsEntry;
+import static org.apache.hadoop.hbase.trace.hamcrest.SpanDataMatchers.hasAttributes;
import static org.hamcrest.Matchers.allOf;
import io.opentelemetry.api.trace.Span;
import io.opentelemetry.sdk.trace.data.SpanData;
diff --git a/pom.xml b/pom.xml
index f49c5cd85f7a..c50455b07249 100755
--- a/pom.xml
+++ b/pom.xml
@@ -94,6 +94,7 @@
hbase-asyncfs
hbase-logging
hbase-compression
+ hbase-client-test-support
scm:git:git://gitbox.apache.org/repos/asf/hbase.git
@@ -1932,6 +1933,12 @@
test-jar
test
+
+ org.apache.hbase
+ hbase-client-test-support
+ ${project.version}
+ test
+
org.apache.hbase
hbase-logging