This is an automated email from the ASF dual-hosted git repository.
vjasani pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hbase.git
The following commit(s) were added to refs/heads/master by this push:
new 5b4efe69953 HBASE-29558: Fix for TestShellNoCluster along with code
refactoring and cleanup (#7256)
5b4efe69953 is described below
commit 5b4efe69953898750e09008634ef4d584649606e
Author: Hari Krishna Dara <[email protected]>
AuthorDate: Thu Sep 4 06:32:09 2025 +0530
HBASE-29558: Fix for TestShellNoCluster along with code refactoring and
cleanup (#7256)
Signed-off-by: Nihal Jain <[email protected]>
---
.../hadoop/hbase/client/AbstractTestShell.java | 100 ++++++---------------
.../{TestAdminShell.java => BaseTestShell.java} | 21 ++---
.../{AbstractTestShell.java => RubyShellTest.java} | 85 +++++++-----------
.../hadoop/hbase/client/TestAdminShell2.java | 37 --------
.../hadoop/hbase/client/TestChangeSftShell.java | 46 ----------
.../hadoop/hbase/client/TestListTablesShell.java | 12 +--
.../hadoop/hbase/client/TestQuotasShell.java | 5 +-
.../hadoop/hbase/client/TestRSGroupShell.java | 15 ++--
.../hadoop/hbase/client/TestReplicationShell.java | 5 +-
.../org/apache/hadoop/hbase/client/TestShell.java | 8 +-
.../hadoop/hbase/client/TestShellNoCluster.java | 41 +++------
.../apache/hadoop/hbase/client/TestTableShell.java | 5 +-
.../{admin2_test.rb => admin2_test_cluster.rb} | 0
.../hbase/{admin_test.rb => admin_test_cluster.rb} | 0
...tils_test.rb => balancer_utils_test_cluster.rb} | 0
...no_cluster.rb => connection_test_no_cluster.rb} | 0
.../hbase/{hbase_test.rb => hbase_test_cluster.rb} | 0
...dmin_test.rb => security_admin_test_cluster.rb} | 0
...monitor_test.rb => taskmonitor_test_cluster.rb} | 0
....rb => visibility_labels_admin_test_cluster.rb} | 0
.../src/test/ruby/no_cluster_tests_runner.rb | 94 -------------------
.../{commands_test.rb => commands_test_cluster.rb} | 0
...converter_test.rb => converter_test_cluster.rb} | 0
...formatter_test.rb => formatter_test_cluster.rb} | 0
.../{shell_test.rb => general_test_cluster.rb} | 0
...st_locks_test.rb => list_locks_test_cluster.rb} | 0
...res_test.rb => list_procedures_test_cluster.rb} | 0
...tive_test.rb => noninteractive_test_cluster.rb} | 0
...nge_shell_test.rb => sftchange_test_cluster.rb} | 0
hbase-shell/src/test/ruby/tests_runner.rb | 37 ++------
30 files changed, 101 insertions(+), 410 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 9270715fd8d..806ce92d0d8 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,100 +18,56 @@
package org.apache.hadoop.hbase.client;
import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.hbase.HBaseTestingUtil;
-import org.apache.hadoop.hbase.HConstants;
-import org.apache.hadoop.hbase.coprocessor.CoprocessorHost;
-import org.apache.hadoop.hbase.security.access.SecureTestUtil;
-import org.apache.hadoop.hbase.security.visibility.VisibilityTestUtil;
import org.apache.hadoop.hdfs.DistributedFileSystem;
-import org.jruby.embed.PathType;
import org.jruby.embed.ScriptingContainer;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
+import org.junit.After;
+import org.junit.Before;
import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-public abstract class AbstractTestShell {
+public abstract class AbstractTestShell implements RubyShellTest {
+ protected final HBaseTestingUtil TEST_UTIL = new HBaseTestingUtil();
+ protected final ScriptingContainer jruby = new ScriptingContainer();
- private static final Logger LOG =
LoggerFactory.getLogger(AbstractTestShell.class);
-
- protected final static HBaseTestingUtil TEST_UTIL = new HBaseTestingUtil();
- protected final static ScriptingContainer jruby = new ScriptingContainer();
-
- protected static void setUpConfig() throws IOException {
- Configuration conf = TEST_UTIL.getConfiguration();
- conf.setInt("hbase.regionserver.msginterval", 100);
- conf.setInt("hbase.client.pause", 250);
- conf.setBoolean("hbase.quota.enabled", true);
- conf.setInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER, 6);
- conf.setBoolean(CoprocessorHost.ABORT_ON_ERROR_KEY, false);
- conf.setInt("hfile.format.version", 3);
-
- // Below settings are necessary for task monitor test.
- conf.setInt(HConstants.MASTER_INFO_PORT, 0);
- conf.setInt(HConstants.REGIONSERVER_INFO_PORT, 0);
- conf.setBoolean(HConstants.REGIONSERVER_INFO_PORT_AUTO, true);
- // Security setup configuration
- SecureTestUtil.enableSecurity(conf);
- VisibilityTestUtil.enableVisiblityLabels(conf);
- }
-
- protected static void setUpJRubyRuntime() {
- LOG.debug("Configure jruby runtime, cluster set to {}", TEST_UTIL);
- List<String> loadPaths = new ArrayList<>(2);
- loadPaths.add("src/test/ruby");
- jruby.setLoadPaths(loadPaths);
- jruby.put("$TEST_CLUSTER", TEST_UTIL);
- System.setProperty("jruby.jit.logging.verbose", "true");
- System.setProperty("jruby.jit.logging", "true");
- System.setProperty("jruby.native.verbose", "true");
+ public HBaseTestingUtil getTEST_UTIL() {
+ return TEST_UTIL;
}
- /** Returns comma separated list of ruby script names for tests */
- protected String getIncludeList() {
- return "";
+ public ScriptingContainer getJRuby() {
+ return jruby;
}
- /** Returns comma separated list of ruby script names for tests to skip */
- protected String getExcludeList() {
- return "";
- }
-
- @Test
- public void testRunShellTests() throws IOException {
- final String tests = getIncludeList();
- final String excludes = getExcludeList();
- if (!tests.isEmpty()) {
- System.setProperty("shell.test.include", tests);
- }
- if (!excludes.isEmpty()) {
- System.setProperty("shell.test.exclude", excludes);
- }
- LOG.info("Starting ruby tests. includes: {} excludes: {}", tests,
excludes);
- jruby.runScriptlet(PathType.ABSOLUTE, "src/test/ruby/tests_runner.rb");
+ public String getSuitePattern() {
+ return "**/*_test.rb";
}
- @BeforeClass
- public static void setUpBeforeClass() throws Exception {
- setUpConfig();
+ @Before
+ public void setUp() throws Exception {
+ RubyShellTest.setUpConfig(this);
// Start mini cluster
// 3 datanodes needed for erasure coding checks
TEST_UTIL.startMiniCluster(3);
+
+ 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");
-
- setUpJRubyRuntime();
}
- @AfterClass
- public static void tearDownAfterClass() throws Exception {
+ @After
+ public void tearDown() throws Exception {
TEST_UTIL.shutdownMiniCluster();
}
+
+ @Test
+ public void testRunShellTests() throws IOException {
+ RubyShellTest.testRunShellTests(this);
+ }
}
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/BaseTestShell.java
similarity index 60%
rename from
hbase-shell/src/test/java/org/apache/hadoop/hbase/client/TestAdminShell.java
rename to
hbase-shell/src/test/java/org/apache/hadoop/hbase/client/BaseTestShell.java
index 983d43f9ef8..1cfb06b6bee 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/BaseTestShell.java
@@ -17,21 +17,12 @@
*/
package org.apache.hadoop.hbase.client;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
-import org.apache.hadoop.hbase.testclassification.ClientTests;
-import org.apache.hadoop.hbase.testclassification.LargeTests;
-import org.junit.ClassRule;
-import org.junit.experimental.categories.Category;
+import org.junit.Before;
-@Category({ ClientTests.class, LargeTests.class })
-public class TestAdminShell extends AbstractTestShell {
-
- @ClassRule
- public static final HBaseClassTestRule CLASS_RULE =
- HBaseClassTestRule.forClass(TestAdminShell.class);
-
- @Override
- protected String getIncludeList() {
- return "admin_test.rb";
+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/AbstractTestShell.java
b/hbase-shell/src/test/java/org/apache/hadoop/hbase/client/RubyShellTest.java
similarity index 58%
copy from
hbase-shell/src/test/java/org/apache/hadoop/hbase/client/AbstractTestShell.java
copy to
hbase-shell/src/test/java/org/apache/hadoop/hbase/client/RubyShellTest.java
index 9270715fd8d..9009aebe22a 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/RubyShellTest.java
@@ -21,30 +21,37 @@ import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.hbase.HBaseTestingUtil;
import org.apache.hadoop.hbase.HConstants;
import org.apache.hadoop.hbase.coprocessor.CoprocessorHost;
import org.apache.hadoop.hbase.security.access.SecureTestUtil;
import org.apache.hadoop.hbase.security.visibility.VisibilityTestUtil;
-import org.apache.hadoop.hdfs.DistributedFileSystem;
import org.jruby.embed.PathType;
import org.jruby.embed.ScriptingContainer;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public abstract class AbstractTestShell {
+public interface RubyShellTest {
+ static Logger LOG = LoggerFactory.getLogger(RubyShellTest.class);
- private static final Logger LOG =
LoggerFactory.getLogger(AbstractTestShell.class);
+ HBaseTestingUtil getTEST_UTIL();
- protected final static HBaseTestingUtil TEST_UTIL = new HBaseTestingUtil();
- protected final static ScriptingContainer jruby = new ScriptingContainer();
+ ScriptingContainer getJRuby();
- protected static void setUpConfig() throws IOException {
- Configuration conf = TEST_UTIL.getConfiguration();
+ /** Returns comma separated list of ruby script names for tests */
+ default String getIncludeList() {
+ return "";
+ }
+
+ /** Returns comma separated list of ruby script names for tests to skip */
+ default String getExcludeList() {
+ return "";
+ }
+
+ String getSuitePattern();
+
+ static void setUpConfig(RubyShellTest test) throws IOException {
+ Configuration conf = test.getTEST_UTIL().getConfiguration();
conf.setInt("hbase.regionserver.msginterval", 100);
conf.setInt("hbase.client.pause", 250);
conf.setBoolean("hbase.quota.enabled", true);
@@ -61,57 +68,31 @@ public abstract class AbstractTestShell {
VisibilityTestUtil.enableVisiblityLabels(conf);
}
- protected static void setUpJRubyRuntime() {
- LOG.debug("Configure jruby runtime, cluster set to {}", TEST_UTIL);
+ static void setUpJRubyRuntime(RubyShellTest test) {
+ LOG.debug("Configure jruby runtime, cluster set to {}",
test.getTEST_UTIL());
List<String> loadPaths = new ArrayList<>(2);
loadPaths.add("src/test/ruby");
- jruby.setLoadPaths(loadPaths);
- jruby.put("$TEST_CLUSTER", TEST_UTIL);
+ test.getJRuby().setLoadPaths(loadPaths);
+ test.getJRuby().put("$TEST_CLUSTER", test.getTEST_UTIL());
System.setProperty("jruby.jit.logging.verbose", "true");
System.setProperty("jruby.jit.logging", "true");
System.setProperty("jruby.native.verbose", "true");
}
- /** Returns comma separated list of ruby script names for tests */
- protected String getIncludeList() {
- return "";
- }
-
- /** Returns comma separated list of ruby script names for tests to skip */
- protected String getExcludeList() {
- return "";
- }
-
- @Test
- public void testRunShellTests() throws IOException {
- final String tests = getIncludeList();
- final String excludes = getExcludeList();
- if (!tests.isEmpty()) {
- System.setProperty("shell.test.include", tests);
+ static void doTestSetup(RubyShellTest test) {
+ System.setProperty("shell.test.suite_name",
test.getClass().getSimpleName());
+ System.setProperty("shell.test.suite_pattern", test.getSuitePattern());
+ if (!test.getIncludeList().isEmpty()) {
+ System.setProperty("shell.test.include", test.getIncludeList());
}
- if (!excludes.isEmpty()) {
- System.setProperty("shell.test.exclude", excludes);
+ if (!test.getExcludeList().isEmpty()) {
+ System.setProperty("shell.test.exclude", test.getExcludeList());
}
- LOG.info("Starting ruby tests. includes: {} excludes: {}", tests,
excludes);
- jruby.runScriptlet(PathType.ABSOLUTE, "src/test/ruby/tests_runner.rb");
- }
-
- @BeforeClass
- public static void setUpBeforeClass() throws Exception {
- setUpConfig();
-
- // Start mini cluster
- // 3 datanodes needed for erasure coding checks
- TEST_UTIL.startMiniCluster(3);
- DistributedFileSystem dfs =
- (DistributedFileSystem) FileSystem.get(TEST_UTIL.getConfiguration());
- dfs.enableErasureCodingPolicy("XOR-2-1-1024k");
-
- setUpJRubyRuntime();
+ LOG.info("Starting ruby tests on script: {} includes: {} excludes: {}",
+ test.getClass().getSimpleName(), test.getIncludeList(),
test.getExcludeList());
}
- @AfterClass
- public static void tearDownAfterClass() throws Exception {
- TEST_UTIL.shutdownMiniCluster();
+ static void testRunShellTests(RubyShellTest test) throws IOException {
+ test.getJRuby().runScriptlet(PathType.ABSOLUTE,
"src/test/ruby/tests_runner.rb");
}
}
diff --git
a/hbase-shell/src/test/java/org/apache/hadoop/hbase/client/TestAdminShell2.java
b/hbase-shell/src/test/java/org/apache/hadoop/hbase/client/TestAdminShell2.java
deleted file mode 100644
index 0bf67cdc8b4..00000000000
---
a/hbase-shell/src/test/java/org/apache/hadoop/hbase/client/TestAdminShell2.java
+++ /dev/null
@@ -1,37 +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.apache.hadoop.hbase.HBaseClassTestRule;
-import org.apache.hadoop.hbase.testclassification.ClientTests;
-import org.apache.hadoop.hbase.testclassification.LargeTests;
-import org.junit.ClassRule;
-import org.junit.experimental.categories.Category;
-
-@Category({ ClientTests.class, LargeTests.class })
-public class TestAdminShell2 extends AbstractTestShell {
-
- @ClassRule
- public static final HBaseClassTestRule CLASS_RULE =
- HBaseClassTestRule.forClass(TestAdminShell2.class);
-
- @Override
- protected String getIncludeList() {
- return "admin2_test.rb";
- }
-}
diff --git
a/hbase-shell/src/test/java/org/apache/hadoop/hbase/client/TestChangeSftShell.java
b/hbase-shell/src/test/java/org/apache/hadoop/hbase/client/TestChangeSftShell.java
deleted file mode 100644
index e8127afcc70..00000000000
---
a/hbase-shell/src/test/java/org/apache/hadoop/hbase/client/TestChangeSftShell.java
+++ /dev/null
@@ -1,46 +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.apache.hadoop.hbase.HBaseClassTestRule;
-import org.apache.hadoop.hbase.testclassification.ClientTests;
-import org.apache.hadoop.hbase.testclassification.LargeTests;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.experimental.categories.Category;
-
-@Category({ ClientTests.class, LargeTests.class })
-public class TestChangeSftShell extends AbstractTestShell {
- @ClassRule
- public static final HBaseClassTestRule CLASS_RULE =
- HBaseClassTestRule.forClass(TestChangeSftShell.class);
-
- @BeforeClass
- public static void setUpBeforeClass() throws Exception {
- setUpConfig();
-
- TEST_UTIL.startMiniCluster(3);
-
- setUpJRubyRuntime();
- }
-
- @Override
- protected String getIncludeList() {
- return "sftchange_shell_test.rb";
- }
-}
diff --git
a/hbase-shell/src/test/java/org/apache/hadoop/hbase/client/TestListTablesShell.java
b/hbase-shell/src/test/java/org/apache/hadoop/hbase/client/TestListTablesShell.java
index b823b6fc3aa..ffd80f91a38 100644
---
a/hbase-shell/src/test/java/org/apache/hadoop/hbase/client/TestListTablesShell.java
+++
b/hbase-shell/src/test/java/org/apache/hadoop/hbase/client/TestListTablesShell.java
@@ -20,7 +20,6 @@ package org.apache.hadoop.hbase.client;
import org.apache.hadoop.hbase.HBaseClassTestRule;
import org.apache.hadoop.hbase.testclassification.ClientTests;
import org.apache.hadoop.hbase.testclassification.LargeTests;
-import org.junit.BeforeClass;
import org.junit.ClassRule;
import org.junit.experimental.categories.Category;
@@ -30,17 +29,8 @@ public class TestListTablesShell extends AbstractTestShell {
public static final HBaseClassTestRule CLASS_RULE =
HBaseClassTestRule.forClass(TestListTablesShell.class);
- @BeforeClass
- public static void setUpBeforeClass() throws Exception {
- setUpConfig();
-
- TEST_UTIL.startMiniCluster(3);
-
- setUpJRubyRuntime();
- }
-
@Override
- protected String getIncludeList() {
+ public String getIncludeList() {
return "list_tables_test.rb";
}
}
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 d7b9fab42a3..b4e513daaff 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,14 +24,13 @@ import org.junit.ClassRule;
import org.junit.experimental.categories.Category;
@Category({ ClientTests.class, LargeTests.class })
-public class TestQuotasShell extends AbstractTestShell {
-
+public class TestQuotasShell extends BaseTestShell {
@ClassRule
public static final HBaseClassTestRule CLASS_RULE =
HBaseClassTestRule.forClass(TestQuotasShell.class);
@Override
- protected String getIncludeList() {
+ public String getIncludeList() {
return "quotas_test.rb";
}
}
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 3570f4ac94a..e15892fd16c 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
@@ -21,7 +21,7 @@ import org.apache.hadoop.hbase.HBaseClassTestRule;
import org.apache.hadoop.hbase.rsgroup.RSGroupUtil;
import org.apache.hadoop.hbase.testclassification.ClientTests;
import org.apache.hadoop.hbase.testclassification.LargeTests;
-import org.junit.BeforeClass;
+import org.junit.Before;
import org.junit.ClassRule;
import org.junit.experimental.categories.Category;
@@ -32,20 +32,15 @@ public class TestRSGroupShell extends AbstractTestShell {
public static final HBaseClassTestRule CLASS_RULE =
HBaseClassTestRule.forClass(TestRSGroupShell.class);
- @BeforeClass
- public static void setUpBeforeClass() throws Exception {
- setUpConfig();
-
+ @Before
+ public void setUp() throws Exception {
// enable rs group
RSGroupUtil.enableRSGroup(TEST_UTIL.getConfiguration());
-
- TEST_UTIL.startMiniCluster(3);
-
- setUpJRubyRuntime();
+ super.setUp();
}
@Override
- protected String getIncludeList() {
+ public String getIncludeList() {
return "rsgroup_shell_test.rb";
}
}
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 ced1e7adda1..9a9ea1d7e97 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,14 +24,13 @@ import org.junit.ClassRule;
import org.junit.experimental.categories.Category;
@Category({ ClientTests.class, LargeTests.class })
-public class TestReplicationShell extends AbstractTestShell {
-
+public class TestReplicationShell extends BaseTestShell {
@ClassRule
public static final HBaseClassTestRule CLASS_RULE =
HBaseClassTestRule.forClass(TestReplicationShell.class);
@Override
- protected String getIncludeList() {
+ public String getIncludeList() {
return "replication_admin_test.rb";
}
}
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 47918f68019..999681a0ca2 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,14 +24,12 @@ import org.junit.ClassRule;
import org.junit.experimental.categories.Category;
@Category({ ClientTests.class, LargeTests.class })
-public class TestShell extends AbstractTestShell {
-
+public class TestShell extends BaseTestShell {
@ClassRule
public static final HBaseClassTestRule CLASS_RULE =
HBaseClassTestRule.forClass(TestShell.class);
@Override
- protected String getExcludeList() {
- return
"replication_admin_test.rb,rsgroup_shell_test.rb,admin_test.rb,table_test.rb,"
- + "quotas_test.rb,admin2_test.rb,list_tables_test.rb";
+ public String getSuitePattern() {
+ return "**/*_test_cluster.rb";
}
}
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 c8685f34d19..5c312ec1dac 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
@@ -17,51 +17,38 @@
*/
package org.apache.hadoop.hbase.client;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
import org.apache.hadoop.hbase.HBaseClassTestRule;
import org.apache.hadoop.hbase.testclassification.ClientTests;
import org.apache.hadoop.hbase.testclassification.MediumTests;
-import org.jruby.embed.PathType;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
+import org.junit.After;
+import org.junit.Before;
import org.junit.ClassRule;
-import org.junit.Test;
import org.junit.experimental.categories.Category;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
@Category({ ClientTests.class, MediumTests.class })
public class TestShellNoCluster extends AbstractTestShell {
- private static final Logger LOG =
LoggerFactory.getLogger(TestShellNoCluster.class);
-
@ClassRule
public static final HBaseClassTestRule CLASS_RULE =
HBaseClassTestRule.forClass(TestShellNoCluster.class);
- @BeforeClass
- public static void setUpBeforeClass() throws Exception {
+ @Before
+ public void setUp() throws Exception {
+ RubyShellTest.setUpConfig(this);
+
// no cluster
- List<String> loadPaths = new ArrayList<>(2);
- loadPaths.add("src/test/ruby");
- jruby.setLoadPaths(loadPaths);
- jruby.put("$TEST_CLUSTER", TEST_UTIL);
- System.setProperty("jruby.jit.logging.verbose", "true");
- System.setProperty("jruby.jit.logging", "true");
- System.setProperty("jruby.native.verbose", "true");
+
+ RubyShellTest.setUpJRubyRuntime(this);
+
+ RubyShellTest.doTestSetup(this);
}
- @AfterClass
- public static void tearDownAfterClass() throws Exception {
+ @After
+ public void tearDown() throws Exception {
// no cluster
}
- // Keep the same name so we override the with-a-cluster test
@Override
- @Test
- public void testRunShellTests() throws IOException {
- LOG.info("Start ruby tests without cluster");
- jruby.runScriptlet(PathType.CLASSPATH, "no_cluster_tests_runner.rb");
+ public String getSuitePattern() {
+ return "**/*_test_no_cluster.rb";
}
}
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 1ae56ac669b..e4b27a97835 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,14 +24,13 @@ import org.junit.ClassRule;
import org.junit.experimental.categories.Category;
@Category({ ClientTests.class, MediumTests.class })
-public class TestTableShell extends AbstractTestShell {
-
+public class TestTableShell extends BaseTestShell {
@ClassRule
public static final HBaseClassTestRule CLASS_RULE =
HBaseClassTestRule.forClass(TestTableShell.class);
@Override
- protected String getIncludeList() {
+ public String getIncludeList() {
return "table_test.rb";
}
}
diff --git a/hbase-shell/src/test/ruby/hbase/admin2_test.rb
b/hbase-shell/src/test/ruby/hbase/admin2_test_cluster.rb
similarity index 100%
rename from hbase-shell/src/test/ruby/hbase/admin2_test.rb
rename to hbase-shell/src/test/ruby/hbase/admin2_test_cluster.rb
diff --git a/hbase-shell/src/test/ruby/hbase/admin_test.rb
b/hbase-shell/src/test/ruby/hbase/admin_test_cluster.rb
similarity index 100%
rename from hbase-shell/src/test/ruby/hbase/admin_test.rb
rename to hbase-shell/src/test/ruby/hbase/admin_test_cluster.rb
diff --git a/hbase-shell/src/test/ruby/hbase/balancer_utils_test.rb
b/hbase-shell/src/test/ruby/hbase/balancer_utils_test_cluster.rb
similarity index 100%
rename from hbase-shell/src/test/ruby/hbase/balancer_utils_test.rb
rename to hbase-shell/src/test/ruby/hbase/balancer_utils_test_cluster.rb
diff --git a/hbase-shell/src/test/ruby/hbase/test_connection_no_cluster.rb
b/hbase-shell/src/test/ruby/hbase/connection_test_no_cluster.rb
similarity index 100%
rename from hbase-shell/src/test/ruby/hbase/test_connection_no_cluster.rb
rename to hbase-shell/src/test/ruby/hbase/connection_test_no_cluster.rb
diff --git a/hbase-shell/src/test/ruby/hbase/hbase_test.rb
b/hbase-shell/src/test/ruby/hbase/hbase_test_cluster.rb
similarity index 100%
rename from hbase-shell/src/test/ruby/hbase/hbase_test.rb
rename to hbase-shell/src/test/ruby/hbase/hbase_test_cluster.rb
diff --git a/hbase-shell/src/test/ruby/hbase/security_admin_test.rb
b/hbase-shell/src/test/ruby/hbase/security_admin_test_cluster.rb
similarity index 100%
rename from hbase-shell/src/test/ruby/hbase/security_admin_test.rb
rename to hbase-shell/src/test/ruby/hbase/security_admin_test_cluster.rb
diff --git a/hbase-shell/src/test/ruby/hbase/taskmonitor_test.rb
b/hbase-shell/src/test/ruby/hbase/taskmonitor_test_cluster.rb
similarity index 100%
rename from hbase-shell/src/test/ruby/hbase/taskmonitor_test.rb
rename to hbase-shell/src/test/ruby/hbase/taskmonitor_test_cluster.rb
diff --git a/hbase-shell/src/test/ruby/hbase/visibility_labels_admin_test.rb
b/hbase-shell/src/test/ruby/hbase/visibility_labels_admin_test_cluster.rb
similarity index 100%
rename from hbase-shell/src/test/ruby/hbase/visibility_labels_admin_test.rb
rename to
hbase-shell/src/test/ruby/hbase/visibility_labels_admin_test_cluster.rb
diff --git a/hbase-shell/src/test/ruby/no_cluster_tests_runner.rb
b/hbase-shell/src/test/ruby/no_cluster_tests_runner.rb
deleted file mode 100644
index 0d2f1901438..00000000000
--- a/hbase-shell/src/test/ruby/no_cluster_tests_runner.rb
+++ /dev/null
@@ -1,94 +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.
-#
-
-require 'rubygems'
-require 'rake'
-require 'set'
-
-
-# This runner will only launch shell tests that don't require a HBase cluster
running.
-
-unless defined?($TEST_CLUSTER)
- include Java
-
- # Set logging level to avoid verboseness
- log_level = 'OFF'
- org.apache.hadoop.hbase.logging.Log4jUtils.setRootLevel(log_level)
-
org.apache.hadoop.hbase.logging.Log4jUtils.setAllLevels('org.apache.zookeeper',
log_level)
-
org.apache.hadoop.hbase.logging.Log4jUtils.setAllLevels('org.apache.hadoop.hdfs',
log_level)
-
org.apache.hadoop.hbase.logging.Log4jUtils.setAllLevels('org.apache.hadoop.hbase',
log_level)
- org.apache.hadoop.hbase.logging.Log4jUtils
- .setAllLevels('org.apache.hadoop.ipc.HBaseServer', log_level)
-
- java_import org.apache.hadoop.hbase.HBaseTestingUtility
-
- $TEST_CLUSTER = HBaseTestingUtility.new
- $TEST_CLUSTER.configuration.setInt("hbase.regionserver.msginterval", 100)
- $TEST_CLUSTER.configuration.setInt("hbase.client.pause", 250)
-
$TEST_CLUSTER.configuration.setInt(org.apache.hadoop.hbase.HConstants::HBASE_CLIENT_RETRIES_NUMBER,
6)
-end
-
-require 'test_helper'
-
-puts "Running tests without a cluster..."
-
-if java.lang.System.get_property('shell.test.include')
- includes =
Set.new(java.lang.System.get_property('shell.test.include').split(','))
-end
-
-if java.lang.System.get_property('shell.test.exclude')
- excludes =
Set.new(java.lang.System.get_property('shell.test.exclude').split(','))
-end
-
-files = Dir[ File.dirname(__FILE__) + "/**/*_no_cluster.rb" ]
-files.each do |file|
- filename = File.basename(file)
- if includes != nil && !includes.include?(filename)
- puts "Skip #{filename} because of not included"
- next
- end
- if excludes != nil && excludes.include?(filename)
- puts "Skip #{filename} because of excluded"
- next
- end
- begin
- load(file)
- rescue => e
- puts "ERROR: #{e}"
- raise
- end
-end
-
-# If this system property is set, we'll use it to filter the test cases.
-runner_args = []
-if java.lang.System.get_property('shell.test')
- shell_test_pattern = java.lang.System.get_property('shell.test')
- puts "Only running tests that match #{shell_test_pattern}"
- runner_args << "--testcase=#{shell_test_pattern}"
-end
-# first couple of args are to match the defaults, so we can pass options to
limit the tests run
-if !(Test::Unit::AutoRunner.run(false, nil, runner_args))
- raise "Shell unit tests failed. Check output file for details."
-end
-
-puts "Done with tests! Shutting down the cluster..."
-if @own_cluster
- $TEST_CLUSTER.shutdownMiniCluster
- java.lang.System.exit(0)
-end
diff --git a/hbase-shell/src/test/ruby/shell/commands_test.rb
b/hbase-shell/src/test/ruby/shell/commands_test_cluster.rb
similarity index 100%
rename from hbase-shell/src/test/ruby/shell/commands_test.rb
rename to hbase-shell/src/test/ruby/shell/commands_test_cluster.rb
diff --git a/hbase-shell/src/test/ruby/shell/converter_test.rb
b/hbase-shell/src/test/ruby/shell/converter_test_cluster.rb
similarity index 100%
rename from hbase-shell/src/test/ruby/shell/converter_test.rb
rename to hbase-shell/src/test/ruby/shell/converter_test_cluster.rb
diff --git a/hbase-shell/src/test/ruby/shell/formatter_test.rb
b/hbase-shell/src/test/ruby/shell/formatter_test_cluster.rb
similarity index 100%
rename from hbase-shell/src/test/ruby/shell/formatter_test.rb
rename to hbase-shell/src/test/ruby/shell/formatter_test_cluster.rb
diff --git a/hbase-shell/src/test/ruby/shell/shell_test.rb
b/hbase-shell/src/test/ruby/shell/general_test_cluster.rb
similarity index 100%
rename from hbase-shell/src/test/ruby/shell/shell_test.rb
rename to hbase-shell/src/test/ruby/shell/general_test_cluster.rb
diff --git a/hbase-shell/src/test/ruby/shell/list_locks_test.rb
b/hbase-shell/src/test/ruby/shell/list_locks_test_cluster.rb
similarity index 100%
rename from hbase-shell/src/test/ruby/shell/list_locks_test.rb
rename to hbase-shell/src/test/ruby/shell/list_locks_test_cluster.rb
diff --git a/hbase-shell/src/test/ruby/shell/list_procedures_test.rb
b/hbase-shell/src/test/ruby/shell/list_procedures_test_cluster.rb
similarity index 100%
rename from hbase-shell/src/test/ruby/shell/list_procedures_test.rb
rename to hbase-shell/src/test/ruby/shell/list_procedures_test_cluster.rb
diff --git a/hbase-shell/src/test/ruby/shell/noninteractive_test.rb
b/hbase-shell/src/test/ruby/shell/noninteractive_test_cluster.rb
similarity index 100%
rename from hbase-shell/src/test/ruby/shell/noninteractive_test.rb
rename to hbase-shell/src/test/ruby/shell/noninteractive_test_cluster.rb
diff --git a/hbase-shell/src/test/ruby/shell/sftchange_shell_test.rb
b/hbase-shell/src/test/ruby/shell/sftchange_test_cluster.rb
similarity index 100%
rename from hbase-shell/src/test/ruby/shell/sftchange_shell_test.rb
rename to hbase-shell/src/test/ruby/shell/sftchange_test_cluster.rb
diff --git a/hbase-shell/src/test/ruby/tests_runner.rb
b/hbase-shell/src/test/ruby/tests_runner.rb
index e05d11117e5..4e31b81535a 100644
--- a/hbase-shell/src/test/ruby/tests_runner.rb
+++ b/hbase-shell/src/test/ruby/tests_runner.rb
@@ -23,34 +23,13 @@ require 'set'
puts "Ruby description: #{RUBY_DESCRIPTION}"
-unless defined?($TEST_CLUSTER)
- include Java
-
- # Set logging level to avoid verboseness
- log_level = 'OFF'
- org.apache.hadoop.hbase.logging.Log4jUtils.setRootLevel(log_level)
-
org.apache.hadoop.hbase.logging.Log4jUtils.setAllLevels('org.apache.zookeeper',
log_level)
-
org.apache.hadoop.hbase.logging.Log4jUtils.setAllLevels('org.apache.hadoop.hdfs',
log_level)
-
org.apache.hadoop.hbase.logging.Log4jUtils.setAllLevels('org.apache.hadoop.hbase',
log_level)
- org.apache.hadoop.hbase.logging.Log4jUtils
- .setAllLevels('org.apache.hadoop.ipc.HBaseServer', log_level)
+require 'test_helper'
- java_import org.apache.hadoop.hbase.HBaseTestingUtility
+test_suite_name = java.lang.System.get_property('shell.test.suite_name')
- $TEST_CLUSTER = HBaseTestingUtility.new
- $TEST_CLUSTER.configuration.setInt("hbase.regionserver.msginterval", 100)
- $TEST_CLUSTER.configuration.setInt("hbase.client.pause", 250)
- $TEST_CLUSTER.configuration.set("hbase.quota.enabled", "true")
- $TEST_CLUSTER.configuration.set('hbase.master.quotas.snapshot.chore.period',
5000)
- $TEST_CLUSTER.configuration.set('hbase.master.quotas.snapshot.chore.delay',
5000)
-
$TEST_CLUSTER.configuration.setInt(org.apache.hadoop.hbase.HConstants::HBASE_CLIENT_RETRIES_NUMBER,
6)
- $TEST_CLUSTER.startMiniCluster
- @own_cluster = true
-end
+test_suite_pattern = java.lang.System.get_property('shell.test.suite_pattern')
-require 'test_helper'
-
-puts "Running tests..."
+puts "Running tests for #{test_suite_name} with pattern: #{test_suite_pattern}
..."
if java.lang.System.get_property('shell.test.include')
includes =
Set.new(java.lang.System.get_property('shell.test.include').split(','))
@@ -60,7 +39,7 @@ if java.lang.System.get_property('shell.test.exclude')
excludes =
Set.new(java.lang.System.get_property('shell.test.exclude').split(','))
end
-files = Dir[ File.dirname(__FILE__) + "/**/*_test.rb" ]
+files = Dir[ File.dirname(__FILE__) + "/" + test_suite_pattern ]
files.each do |file|
filename = File.basename(file)
if includes != nil && !includes.include?(filename)
@@ -96,9 +75,3 @@ rescue SystemExit => e
# Unit tests should not raise uncaught SystemExit exceptions. This could
cause tests to be ignored.
raise 'Caught SystemExit during unit test execution! Check output file for
details.'
end
-
-puts "Done with tests! Shutting down the cluster..."
-if @own_cluster
- $TEST_CLUSTER.shutdownMiniCluster
- java.lang.System.exit(0)
-end