From 44a11fade6441a54d7a37bbc0d48f346e57a381c Mon Sep 17 00:00:00 2001 From: Hari Dara Date: Fri, 5 Sep 2025 10:39:01 +0530 Subject: [PATCH 1/2] HBASE-29558: Addendum to fix PR validation warnings on the lines of #7276 Also includes the following additional changes done in PR #7274 from branch-2: - Reverted the change admin test, adding back the dedicated driver and renaming the ruby test file. - Removed BaseTestShell as it is no longer needed after serving the requirement of admin test via its own driver - The base setUp() method now uses a single node cluster and only admin and RS group tests override it to 3 nodes. --- .../hbase/client/AbstractTestShell.java | 15 ++--- .../hadoop/hbase/client/BaseTestShell.java | 28 -------- .../hadoop/hbase/client/TestAdminShell.java | 66 +++++++++++++++++++ .../hadoop/hbase/client/TestQuotasShell.java | 2 +- .../hadoop/hbase/client/TestRSGroupShell.java | 10 ++- .../hbase/client/TestReplicationShell.java | 2 +- .../apache/hadoop/hbase/client/TestShell.java | 2 +- .../hbase/client/TestShellNoCluster.java | 2 + .../hadoop/hbase/client/TestTableShell.java | 2 +- .../{admin_test_cluster.rb => admin_test.rb} | 0 10 files changed, 85 insertions(+), 44 deletions(-) delete mode 100644 hbase-shell/src/test/java/org/apache/hadoop/hbase/client/BaseTestShell.java create mode 100644 hbase-shell/src/test/java/org/apache/hadoop/hbase/client/TestAdminShell.java rename hbase-shell/src/test/ruby/hbase/{admin_test_cluster.rb => admin_test.rb} (100%) diff --git a/hbase-shell/src/test/java/org/apache/hadoop/hbase/client/AbstractTestShell.java b/hbase-shell/src/test/java/org/apache/hadoop/hbase/client/AbstractTestShell.java index 806ce92d0d8f..cb59e395b261 100644 --- a/hbase-shell/src/test/java/org/apache/hadoop/hbase/client/AbstractTestShell.java +++ b/hbase-shell/src/test/java/org/apache/hadoop/hbase/client/AbstractTestShell.java @@ -18,9 +18,7 @@ package org.apache.hadoop.hbase.client; import java.io.IOException; -import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.hbase.HBaseTestingUtil; -import org.apache.hadoop.hdfs.DistributedFileSystem; import org.jruby.embed.ScriptingContainer; import org.junit.After; import org.junit.Before; @@ -30,14 +28,17 @@ public abstract class AbstractTestShell implements RubyShellTest { protected final HBaseTestingUtil TEST_UTIL = new HBaseTestingUtil(); protected final ScriptingContainer jruby = new ScriptingContainer(); + @Override public HBaseTestingUtil getTEST_UTIL() { return TEST_UTIL; } + @Override public ScriptingContainer getJRuby() { return jruby; } + @Override public String getSuitePattern() { return "**/*_test.rb"; } @@ -47,20 +48,12 @@ public void setUp() throws Exception { RubyShellTest.setUpConfig(this); // Start mini cluster - // 3 datanodes needed for erasure coding checks - TEST_UTIL.startMiniCluster(3); + TEST_UTIL.startMiniCluster(1); RubyShellTest.setUpJRubyRuntime(this); RubyShellTest.doTestSetup(this); } - - protected void setupDFS() throws IOException { - DistributedFileSystem dfs = - (DistributedFileSystem) FileSystem.get(TEST_UTIL.getConfiguration()); - dfs.enableErasureCodingPolicy("XOR-2-1-1024k"); - } - @After public void tearDown() throws Exception { TEST_UTIL.shutdownMiniCluster(); diff --git a/hbase-shell/src/test/java/org/apache/hadoop/hbase/client/BaseTestShell.java b/hbase-shell/src/test/java/org/apache/hadoop/hbase/client/BaseTestShell.java deleted file mode 100644 index 1cfb06b6bee1..000000000000 --- a/hbase-shell/src/test/java/org/apache/hadoop/hbase/client/BaseTestShell.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.hadoop.hbase.client; - -import org.junit.Before; - -public abstract class BaseTestShell extends AbstractTestShell { - @Before - public void setUp() throws Exception { - super.setUp(); - super.setupDFS(); - } -} diff --git a/hbase-shell/src/test/java/org/apache/hadoop/hbase/client/TestAdminShell.java b/hbase-shell/src/test/java/org/apache/hadoop/hbase/client/TestAdminShell.java new file mode 100644 index 000000000000..c5582c3b116f --- /dev/null +++ b/hbase-shell/src/test/java/org/apache/hadoop/hbase/client/TestAdminShell.java @@ -0,0 +1,66 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.hadoop.hbase.client; + +import java.io.IOException; +import java.util.Collections; +import org.apache.hadoop.fs.FileSystem; +import org.apache.hadoop.hdfs.DistributedFileSystem; +import org.apache.hadoop.hbase.HBaseClassTestRule; +import org.apache.hadoop.hbase.testclassification.ClientTests; +import org.apache.hadoop.hbase.testclassification.LargeTests; +import org.junit.Before; +import org.junit.ClassRule; +import org.junit.experimental.categories.Category; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +@Category({ ClientTests.class, LargeTests.class }) +public class TestAdminShell extends AbstractTestShell { + private static final Logger LOG = LoggerFactory.getLogger(TestAdminShell.class); + + @ClassRule + public static final HBaseClassTestRule CLASS_RULE = + HBaseClassTestRule.forClass(TestAdminShell.class); + + @Override + public String getIncludeList() { + return "admin_test.rb"; + } + + @Before + public void setUp() throws Exception { + RubyShellTest.setUpConfig(this); + + // Start mini cluster + // 3 datanodes needed for erasure coding checks + TEST_UTIL.startMiniCluster(3); + + setupDFS(); + + RubyShellTest.setUpJRubyRuntime(this); + + RubyShellTest.doTestSetup(this); + } + + protected void setupDFS() throws IOException { + DistributedFileSystem dfs = + (DistributedFileSystem) FileSystem.get(TEST_UTIL.getConfiguration()); + dfs.enableErasureCodingPolicy("XOR-2-1-1024k"); + } +} diff --git a/hbase-shell/src/test/java/org/apache/hadoop/hbase/client/TestQuotasShell.java b/hbase-shell/src/test/java/org/apache/hadoop/hbase/client/TestQuotasShell.java index b4e513daaffc..1550478d0a72 100644 --- a/hbase-shell/src/test/java/org/apache/hadoop/hbase/client/TestQuotasShell.java +++ b/hbase-shell/src/test/java/org/apache/hadoop/hbase/client/TestQuotasShell.java @@ -24,7 +24,7 @@ import org.junit.experimental.categories.Category; @Category({ ClientTests.class, LargeTests.class }) -public class TestQuotasShell extends BaseTestShell { +public class TestQuotasShell extends AbstractTestShell { @ClassRule public static final HBaseClassTestRule CLASS_RULE = HBaseClassTestRule.forClass(TestQuotasShell.class); diff --git a/hbase-shell/src/test/java/org/apache/hadoop/hbase/client/TestRSGroupShell.java b/hbase-shell/src/test/java/org/apache/hadoop/hbase/client/TestRSGroupShell.java index e15892fd16c8..0b2fb89cc06b 100644 --- a/hbase-shell/src/test/java/org/apache/hadoop/hbase/client/TestRSGroupShell.java +++ b/hbase-shell/src/test/java/org/apache/hadoop/hbase/client/TestRSGroupShell.java @@ -32,11 +32,19 @@ public class TestRSGroupShell extends AbstractTestShell { public static final HBaseClassTestRule CLASS_RULE = HBaseClassTestRule.forClass(TestRSGroupShell.class); + @Override @Before public void setUp() throws Exception { + RubyShellTest.setUpConfig(this); // enable rs group RSGroupUtil.enableRSGroup(TEST_UTIL.getConfiguration()); - super.setUp(); + + // Start mini cluster, need 3 nodes + TEST_UTIL.startMiniCluster(3); + + RubyShellTest.setUpJRubyRuntime(this); + + RubyShellTest.doTestSetup(this); } @Override diff --git a/hbase-shell/src/test/java/org/apache/hadoop/hbase/client/TestReplicationShell.java b/hbase-shell/src/test/java/org/apache/hadoop/hbase/client/TestReplicationShell.java index 9a9ea1d7e972..5bf0b3a6328d 100644 --- a/hbase-shell/src/test/java/org/apache/hadoop/hbase/client/TestReplicationShell.java +++ b/hbase-shell/src/test/java/org/apache/hadoop/hbase/client/TestReplicationShell.java @@ -24,7 +24,7 @@ import org.junit.experimental.categories.Category; @Category({ ClientTests.class, LargeTests.class }) -public class TestReplicationShell extends BaseTestShell { +public class TestReplicationShell extends AbstractTestShell { @ClassRule public static final HBaseClassTestRule CLASS_RULE = HBaseClassTestRule.forClass(TestReplicationShell.class); diff --git a/hbase-shell/src/test/java/org/apache/hadoop/hbase/client/TestShell.java b/hbase-shell/src/test/java/org/apache/hadoop/hbase/client/TestShell.java index 999681a0ca21..28b1fb59ef01 100644 --- a/hbase-shell/src/test/java/org/apache/hadoop/hbase/client/TestShell.java +++ b/hbase-shell/src/test/java/org/apache/hadoop/hbase/client/TestShell.java @@ -24,7 +24,7 @@ import org.junit.experimental.categories.Category; @Category({ ClientTests.class, LargeTests.class }) -public class TestShell extends BaseTestShell { +public class TestShell extends AbstractTestShell { @ClassRule public static final HBaseClassTestRule CLASS_RULE = HBaseClassTestRule.forClass(TestShell.class); diff --git a/hbase-shell/src/test/java/org/apache/hadoop/hbase/client/TestShellNoCluster.java b/hbase-shell/src/test/java/org/apache/hadoop/hbase/client/TestShellNoCluster.java index 5c312ec1dac0..0071b24103b5 100644 --- a/hbase-shell/src/test/java/org/apache/hadoop/hbase/client/TestShellNoCluster.java +++ b/hbase-shell/src/test/java/org/apache/hadoop/hbase/client/TestShellNoCluster.java @@ -31,6 +31,7 @@ public class TestShellNoCluster extends AbstractTestShell { public static final HBaseClassTestRule CLASS_RULE = HBaseClassTestRule.forClass(TestShellNoCluster.class); + @Override @Before public void setUp() throws Exception { RubyShellTest.setUpConfig(this); @@ -42,6 +43,7 @@ public void setUp() throws Exception { RubyShellTest.doTestSetup(this); } + @Override @After public void tearDown() throws Exception { // no cluster diff --git a/hbase-shell/src/test/java/org/apache/hadoop/hbase/client/TestTableShell.java b/hbase-shell/src/test/java/org/apache/hadoop/hbase/client/TestTableShell.java index e4b27a978354..6158570cc058 100644 --- a/hbase-shell/src/test/java/org/apache/hadoop/hbase/client/TestTableShell.java +++ b/hbase-shell/src/test/java/org/apache/hadoop/hbase/client/TestTableShell.java @@ -24,7 +24,7 @@ import org.junit.experimental.categories.Category; @Category({ ClientTests.class, MediumTests.class }) -public class TestTableShell extends BaseTestShell { +public class TestTableShell extends AbstractTestShell { @ClassRule public static final HBaseClassTestRule CLASS_RULE = HBaseClassTestRule.forClass(TestTableShell.class); diff --git a/hbase-shell/src/test/ruby/hbase/admin_test_cluster.rb b/hbase-shell/src/test/ruby/hbase/admin_test.rb similarity index 100% rename from hbase-shell/src/test/ruby/hbase/admin_test_cluster.rb rename to hbase-shell/src/test/ruby/hbase/admin_test.rb From 9b1807009d1f958a2735cd6a4c03b4fbef2185b7 Mon Sep 17 00:00:00 2001 From: Hari Dara Date: Fri, 5 Sep 2025 11:55:17 +0530 Subject: [PATCH 2/2] spotless:apply --- .../java/org/apache/hadoop/hbase/client/AbstractTestShell.java | 1 + .../java/org/apache/hadoop/hbase/client/TestAdminShell.java | 3 +-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/hbase-shell/src/test/java/org/apache/hadoop/hbase/client/AbstractTestShell.java b/hbase-shell/src/test/java/org/apache/hadoop/hbase/client/AbstractTestShell.java index cb59e395b261..edb7526395db 100644 --- a/hbase-shell/src/test/java/org/apache/hadoop/hbase/client/AbstractTestShell.java +++ b/hbase-shell/src/test/java/org/apache/hadoop/hbase/client/AbstractTestShell.java @@ -54,6 +54,7 @@ public void setUp() throws Exception { RubyShellTest.doTestSetup(this); } + @After public void tearDown() throws Exception { TEST_UTIL.shutdownMiniCluster(); diff --git a/hbase-shell/src/test/java/org/apache/hadoop/hbase/client/TestAdminShell.java b/hbase-shell/src/test/java/org/apache/hadoop/hbase/client/TestAdminShell.java index c5582c3b116f..7bc3e1fd2a24 100644 --- a/hbase-shell/src/test/java/org/apache/hadoop/hbase/client/TestAdminShell.java +++ b/hbase-shell/src/test/java/org/apache/hadoop/hbase/client/TestAdminShell.java @@ -18,12 +18,11 @@ package org.apache.hadoop.hbase.client; import java.io.IOException; -import java.util.Collections; import org.apache.hadoop.fs.FileSystem; -import org.apache.hadoop.hdfs.DistributedFileSystem; import org.apache.hadoop.hbase.HBaseClassTestRule; import org.apache.hadoop.hbase.testclassification.ClientTests; import org.apache.hadoop.hbase.testclassification.LargeTests; +import org.apache.hadoop.hdfs.DistributedFileSystem; import org.junit.Before; import org.junit.ClassRule; import org.junit.experimental.categories.Category;