Junegunn Choi created HBASE-29378: ------------------------------------- Summary: Make TestingHBaseCluster expose address/port information for end users Key: HBASE-29378 URL: https://issues.apache.org/jira/browse/HBASE-29378 Project: HBase Issue Type: Improvement Reporter: Junegunn Choi
h2. Summary HBASE-13126 introduced TestingHBaseCluster which allows external projects to easily start a standalone HBase cluster with configurable number of RegionServers and DataNodes for testing purposes. It is not only useful for writing integration tests, but also for manual testing and debugging. To enhance its usability, especially for manual testing, I suggest that it exposes some most commonly used address and port information. h2. Proposal Extend {{TestingHBaseCluster}} with the following methods to expose key address and port information: * {{Optional<Integer> getActiveZooKeeperClientPort()}} ** ZooKeeper port for clients using {{ZKConnectionRegistry}}) * {{List<String> getMasterAddresses()}} ** Master addresses for clients using {{RpcConnectionRegistry}}. Can be used to construct {{hbase.masters}} configuration. * {{Optional<Integer> getActiveMasterInfoPort()}} ** Info port for the active HBase Master * {{Optional<Integer> getActiveNameNodeInfoPort()}} ** Info port for the active NameNode h2. Example usage The following Kotlin code demonstrates how you can start a standalone HBase cluster with different numbers of components and print the address/port information for manual testing: {code} import org.apache.hadoop.hbase.testing.TestingHBaseCluster import org.apache.hadoop.hbase.testing.TestingHBaseClusterOption fun main() { val cluster = TestingHBaseCluster.create( TestingHBaseClusterOption.builder() .numDataNodes(3) .numRegionServers(3) .numMasters(2) .build() ) cluster.start() // For clients using ZKConnectionRegistry println("ZooKeeper Quorum: localhost:${cluster.activeZooKeeperClientPort.get()}") // For clients using RpcConnectionRegistry println("hbase.masters: ${cluster.masterAddresses.joinToString(",")}") // Info ports for web UIs println("Active HBase Master: http://localhost:${cluster.activeMasterInfoPort.get()}") println("Active HDFS NameNode: http://localhost:${cluster.activeNameNodeInfoPort.get()}") Thread.sleep(Long.MAX_VALUE) } {code} {noformat} ZooKeeper Quorum: localhost:57924 hbase.masters: 192.168.35.49:61755,192.168.35.49:61758 Active HBase Master: http://localhost:61757 Active HDFS NameNode: http://localhost:61736 {noformat} -- This message was sent by Atlassian Jira (v8.20.10#820010)