From 9a83a95412705071010c7ca5a0737e05f64abf2b Mon Sep 17 00:00:00 2001 From: Michael Stack Date: Fri, 16 Feb 2018 12:51:31 -0800 Subject: [PATCH] Standalone --- .../regionserver/TestStandaloneRegionServer.java | 97 ++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestStandaloneRegionServer.java diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestStandaloneRegionServer.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestStandaloneRegionServer.java new file mode 100644 index 0000000000..582a7ed66d --- /dev/null +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestStandaloneRegionServer.java @@ -0,0 +1,97 @@ +package org.apache.hadoop.hbase.regionserver; + +import org.apache.hadoop.hbase.ClusterId; +import org.apache.hadoop.hbase.HBaseClassTestRule; +import org.apache.hadoop.hbase.HBaseTestingUtility; +import org.apache.hadoop.hbase.HConstants; +import org.apache.hadoop.hbase.TableName; +import org.apache.hadoop.hbase.client.Connection; +import org.apache.hadoop.hbase.client.ConnectionFactory; +import org.apache.hadoop.hbase.client.Get; +import org.apache.hadoop.hbase.client.RegionInfoBuilder; +import org.apache.hadoop.hbase.client.Result; +import org.apache.hadoop.hbase.client.Table; +import org.apache.hadoop.hbase.master.RegionState; +import org.apache.hadoop.hbase.master.procedure.RSProcedureDispatcher; +import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil; +import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos; +import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos; +import org.apache.hadoop.hbase.testclassification.MediumTests; +import org.apache.hadoop.hbase.testclassification.RegionServerTests; +import org.apache.hadoop.hbase.util.Bytes; +import org.apache.hadoop.hbase.util.EnvironmentEdgeManager; +import org.apache.hadoop.hbase.zookeeper.MetaTableLocator; +import org.apache.hadoop.hbase.zookeeper.ZKClusterId; +import org.apache.hbase.thirdparty.com.google.protobuf.ServiceException; +import org.apache.zookeeper.KeeperException; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.ClassRule; +import org.junit.Rule; +import org.junit.Test; +import org.junit.experimental.categories.Category; +import org.junit.rules.TestName; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.IOException; + +@Category({RegionServerTests.class, MediumTests.class}) +public class TestStandaloneRegionServer { + private static final Logger LOG = LoggerFactory.getLogger(TestStandaloneRegionServer.class); + @ClassRule + public static final HBaseClassTestRule CLASS_RULE = + HBaseClassTestRule.forClass(TestSplitLogWorker.class); + private static final HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility(); + @Rule + public TestName name = new TestName(); + + @BeforeClass + public static void beforeClass() throws Exception { + // Configs from HBASE-18846 release notes. + TEST_UTIL.getConfiguration().setBoolean("hbase.masterless", true); + TEST_UTIL.getConfiguration().setBoolean("hbase.cluster.distributed", true); + // HRegionServer wants to register with a RegionServer + TEST_UTIL.startMiniZKCluster(); + // Clients making Connections want a ClusterId up in zk. + ClusterId clusterId = new ClusterId(); + ZKClusterId.setClusterId(TEST_UTIL.getZooKeeperWatcher(), clusterId); + } + + @Before + public void before() { + } + + @AfterClass + public static void afterClass() throws IOException { + TEST_UTIL.shutdownMiniZKCluster(); + } + + @After + public void after() { + } + + @Test + public void testStartStandalone() throws IOException, ServiceException, KeeperException { + HRegionServer hrs = new HRegionServer(TEST_UTIL.getConfiguration()); + hrs.start(); + AdminProtos.OpenRegionRequest.Builder builder = AdminProtos.OpenRegionRequest.newBuilder(); + builder.setServerStartCode(hrs.getStartcode()); + builder.setMasterSystemTime(EnvironmentEdgeManager.currentTime()); + AdminProtos.OpenRegionRequest.RegionOpenInfo.Builder regionInfoBuilder = + AdminProtos.OpenRegionRequest.RegionOpenInfo.newBuilder(); + regionInfoBuilder.setRegion(ProtobufUtil.toRegionInfo(RegionInfoBuilder.FIRST_META_REGIONINFO)); + builder.addOpenInfo(regionInfoBuilder.build()); + hrs.getRSRpcServices().openRegion(null, builder.build()); + MetaTableLocator.setMetaLocation(TEST_UTIL.getZooKeeperWatcher(), hrs.getServerName(), + RegionState.State.OPEN); + try (Connection connection = ConnectionFactory.createConnection(TEST_UTIL.getConfiguration()); + Table table = connection.getTable(TableName.valueOf(this.name.getMethodName()))) { + Result r = table.get(new Get(Bytes.toBytes(this.name.getMethodName()))); + LOG.info("Result=" + r); + } + hrs.stop("Finished"); + } +} -- 2.11.0 (Apple Git-81)