You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by jx...@apache.org on 2014/03/25 20:34:55 UTC
svn commit: r1581479 [8/9] - in /hbase/trunk:
hbase-client/src/main/java/org/apache/hadoop/hbase/catalog/
hbase-client/src/main/java/org/apache/hadoop/hbase/client/
hbase-it/src/test/java/org/apache/hadoop/hbase/
hbase-it/src/test/java/org/apache/hadoo...
Modified: hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestDistributedLogSplitting.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestDistributedLogSplitting.java?rev=1581479&r1=1581478&r2=1581479&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestDistributedLogSplitting.java (original)
+++ hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestDistributedLogSplitting.java Tue Mar 25 19:34:52 2014
@@ -25,7 +25,6 @@ import static org.apache.hadoop.hbase.Sp
import static org.apache.hadoop.hbase.SplitLogCounters.tot_wkr_task_done;
import static org.apache.hadoop.hbase.SplitLogCounters.tot_wkr_task_err;
import static org.apache.hadoop.hbase.SplitLogCounters.tot_wkr_task_resigned;
-import static org.junit.Assert.*;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
@@ -40,7 +39,6 @@ import java.util.LinkedList;
import java.util.List;
import java.util.NavigableSet;
import java.util.Set;
-import java.util.TreeSet;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
@@ -55,10 +53,9 @@ import org.apache.hadoop.fs.FSDataOutput
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.hbase.HColumnDescriptor;
-import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HBaseTestingUtility;
+import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HConstants;
import org.apache.hadoop.hbase.HRegionInfo;
import org.apache.hadoop.hbase.HTableDescriptor;
@@ -68,10 +65,11 @@ import org.apache.hadoop.hbase.MiniHBase
import org.apache.hadoop.hbase.NamespaceDescriptor;
import org.apache.hadoop.hbase.ServerName;
import org.apache.hadoop.hbase.SplitLogCounters;
+import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.Waiter;
+import org.apache.hadoop.hbase.client.ConnectionUtils;
import org.apache.hadoop.hbase.client.Delete;
import org.apache.hadoop.hbase.client.Get;
-import org.apache.hadoop.hbase.client.ConnectionUtils;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Increment;
import org.apache.hadoop.hbase.client.NonceGenerator;
@@ -113,6 +111,7 @@ import org.junit.Test;
import org.junit.experimental.categories.Category;
@Category(LargeTests.class)
+@SuppressWarnings("deprecation")
public class TestDistributedLogSplitting {
private static final Log LOG = LogFactory.getLog(TestSplitLogManager.class);
static {
@@ -148,6 +147,7 @@ public class TestDistributedLogSplitting
public static void tearDown() throws IOException {
TEST_UTIL.shutdownMiniZKCluster();
TEST_UTIL.shutdownMiniDFSCluster();
+ TEST_UTIL.shutdownMiniHBaseCluster();
}
private void startCluster(int num_rs) throws Exception {
@@ -159,6 +159,7 @@ public class TestDistributedLogSplitting
conf.setInt(HConstants.REGIONSERVER_INFO_PORT, -1);
conf.setFloat(HConstants.LOAD_BALANCER_SLOP_KEY, (float) 100.0); // no load balancing
conf.setInt("hbase.regionserver.wal.max.splitters", 3);
+ TEST_UTIL.shutdownMiniHBaseCluster();
TEST_UTIL = new HBaseTestingUtility(conf);
TEST_UTIL.setDFSCluster(dfsCluster);
TEST_UTIL.setZkCluster(zkCluster);
@@ -219,7 +220,7 @@ public class TestDistributedLogSplitting
for (int i = 0; i < NUM_RS; i++) {
boolean foundRs = false;
hrs = rsts.get(i).getRegionServer();
- regions = ProtobufUtil.getOnlineRegions(hrs);
+ regions = ProtobufUtil.getOnlineRegions(hrs.getRSRpcServices());
for (HRegionInfo region : regions) {
if (region.getTable().getNameAsString().equalsIgnoreCase("table")) {
foundRs = true;
@@ -248,7 +249,6 @@ public class TestDistributedLogSplitting
for (HRegionInfo hri : regions) {
Path tdir = FSUtils.getTableDir(rootdir, table);
- @SuppressWarnings("deprecation")
Path editsdir =
HLogUtil.getRegionDirRecoveredEditsDir(HRegion.getRegionDir(tdir, hri.getEncodedName()));
LOG.debug("checking edits dir " + editsdir);
@@ -279,7 +279,7 @@ public class TestDistributedLogSplitting
HTable ht = installTable(zkw, "table", "family", NUM_REGIONS_TO_CREATE);
HRegionServer hrs = findRSToKill(false, "table");
- List<HRegionInfo> regions = ProtobufUtil.getOnlineRegions(hrs);
+ List<HRegionInfo> regions = ProtobufUtil.getOnlineRegions(hrs.getRSRpcServices());
makeHLog(hrs.getWAL(), regions, "table", "family", NUM_LOG_LINES, 100);
// wait for abort completes
@@ -328,7 +328,7 @@ public class TestDistributedLogSplitting
List<Increment> reqs = new ArrayList<Increment>();
for (RegionServerThread rst : cluster.getLiveRegionServerThreads()) {
HRegionServer hrs = rst.getRegionServer();
- List<HRegionInfo> hris = ProtobufUtil.getOnlineRegions(hrs);
+ List<HRegionInfo> hris = ProtobufUtil.getOnlineRegions(hrs.getRSRpcServices());
for (HRegionInfo hri : hris) {
if (TABLE_NAME.equalsIgnoreCase(hri.getTable().getNameAsString())) {
byte[] key = hri.getStartKey();
@@ -377,7 +377,7 @@ public class TestDistributedLogSplitting
HTable ht = installTable(zkw, "table", "family", NUM_REGIONS_TO_CREATE);
HRegionServer hrs = findRSToKill(true, "table");
- List<HRegionInfo> regions = ProtobufUtil.getOnlineRegions(hrs);
+ List<HRegionInfo> regions = ProtobufUtil.getOnlineRegions(hrs.getRSRpcServices());
makeHLog(hrs.getWAL(), regions, "table", "family", NUM_LOG_LINES, 100);
this.abortRSAndVerifyRecovery(hrs, ht, zkw, NUM_REGIONS_TO_CREATE, NUM_LOG_LINES);
@@ -412,7 +412,8 @@ public class TestDistributedLogSplitting
TEST_UTIL.waitFor(180000, 200, new Waiter.Predicate<Exception>() {
@Override
public boolean evaluate() throws Exception {
- return (getAllOnlineRegions(tmpCluster).size() >= (numRegions + 1));
+ return (HBaseTestingUtility.getAllOnlineRegions(tmpCluster).size()
+ >= (numRegions + 1));
}
});
@@ -440,12 +441,11 @@ public class TestDistributedLogSplitting
// they will consume recovered.edits
master.balanceSwitch(false);
- List<RegionServerThread> rsts = cluster.getLiveRegionServerThreads();
final ZooKeeperWatcher zkw = new ZooKeeperWatcher(conf, "table-creation", null);
HTable ht = installTable(zkw, "table", "family", NUM_REGIONS_TO_CREATE);
HRegionServer hrs = findRSToKill(false, "table");
- List<HRegionInfo> regions = ProtobufUtil.getOnlineRegions(hrs);
+ List<HRegionInfo> regions = ProtobufUtil.getOnlineRegions(hrs.getRSRpcServices());
makeHLog(hrs.getWAL(), regions, "table", "family", NUM_LOG_LINES, 100);
// abort master
@@ -464,20 +464,20 @@ public class TestDistributedLogSplitting
});
Thread.sleep(2000);
- LOG.info("Current Open Regions:" + getAllOnlineRegions(cluster).size());
-
- startMasterAndWaitUntilLogSplit(cluster);
-
+ LOG.info("Current Open Regions:"
+ + HBaseTestingUtility.getAllOnlineRegions(cluster).size());
+
// wait for abort completes
TEST_UTIL.waitFor(120000, 200, new Waiter.Predicate<Exception>() {
@Override
public boolean evaluate() throws Exception {
- return (getAllOnlineRegions(cluster).size() >= (NUM_REGIONS_TO_CREATE + 1));
+ return (HBaseTestingUtility.getAllOnlineRegions(cluster).size()
+ >= (NUM_REGIONS_TO_CREATE + 1));
}
});
LOG.info("Current Open Regions After Master Node Starts Up:"
- + getAllOnlineRegions(cluster).size());
+ + HBaseTestingUtility.getAllOnlineRegions(cluster).size());
assertEquals(NUM_LOG_LINES, TEST_UTIL.countRows(ht));
@@ -498,12 +498,11 @@ public class TestDistributedLogSplitting
// they will consume recovered.edits
master.balanceSwitch(false);
- List<RegionServerThread> rsts = cluster.getLiveRegionServerThreads();
final ZooKeeperWatcher zkw = new ZooKeeperWatcher(conf, "table-creation", null);
HTable ht = installTable(zkw, "table", "family", NUM_REGIONS_TO_CREATE);
HRegionServer hrs = findRSToKill(false, "table");
- List<HRegionInfo> regions = ProtobufUtil.getOnlineRegions(hrs);
+ List<HRegionInfo> regions = ProtobufUtil.getOnlineRegions(hrs.getRSRpcServices());
makeHLog(hrs.getWAL(), regions, "table", "family", NUM_LOG_LINES, 100);
// abort master
@@ -522,9 +521,8 @@ public class TestDistributedLogSplitting
});
Thread.sleep(2000);
- LOG.info("Current Open Regions:" + getAllOnlineRegions(cluster).size());
-
- startMasterAndWaitUntilLogSplit(cluster);
+ LOG.info("Current Open Regions:"
+ + HBaseTestingUtility.getAllOnlineRegions(cluster).size());
// wait for all regions are fully recovered
TEST_UTIL.waitFor(180000, 200, new Waiter.Predicate<Exception>() {
@@ -537,7 +535,7 @@ public class TestDistributedLogSplitting
});
LOG.info("Current Open Regions After Master Node Starts Up:"
- + getAllOnlineRegions(cluster).size());
+ + HBaseTestingUtility.getAllOnlineRegions(cluster).size());
assertEquals(NUM_LOG_LINES, TEST_UTIL.countRows(ht));
@@ -563,7 +561,7 @@ public class TestDistributedLogSplitting
List<HRegionInfo> regions = null;
HRegionServer hrs1 = findRSToKill(false, "table");
- regions = ProtobufUtil.getOnlineRegions(hrs1);
+ regions = ProtobufUtil.getOnlineRegions(hrs1.getRSRpcServices());
makeHLog(hrs1.getWAL(), regions, "table", "family", NUM_LOG_LINES, 100);
@@ -583,7 +581,8 @@ public class TestDistributedLogSplitting
TEST_UTIL.waitFor(180000, 200, new Waiter.Predicate<Exception>() {
@Override
public boolean evaluate() throws Exception {
- return (getAllOnlineRegions(cluster).size() >= (NUM_REGIONS_TO_CREATE + 1));
+ return (HBaseTestingUtility.getAllOnlineRegions(cluster).size()
+ >= (NUM_REGIONS_TO_CREATE + 1));
}
});
@@ -607,7 +606,8 @@ public class TestDistributedLogSplitting
TEST_UTIL.waitFor(180000, 200, new Waiter.Predicate<Exception>() {
@Override
public boolean evaluate() throws Exception {
- return (getAllOnlineRegions(cluster).size() >= (NUM_REGIONS_TO_CREATE + 1));
+ return (HBaseTestingUtility.getAllOnlineRegions(cluster).size()
+ >= (NUM_REGIONS_TO_CREATE + 1));
}
});
@@ -633,7 +633,7 @@ public class TestDistributedLogSplitting
startCluster(NUM_RS);
master.balanceSwitch(false);
List<RegionServerThread> rsts = cluster.getLiveRegionServerThreads();
- final ZooKeeperWatcher zkw = master.getZooKeeperWatcher();
+ final ZooKeeperWatcher zkw = master.getZooKeeper();
HTable ht = installTable(zkw, "table", "family", 40);
final SplitLogManager slm = master.getMasterFileSystem().splitLogManager;
@@ -644,7 +644,7 @@ public class TestDistributedLogSplitting
ServerName secondFailedServer = null;
for (int i = 0; i < NUM_RS; i++) {
hrs = rsts.get(i).getRegionServer();
- List<HRegionInfo> regions = ProtobufUtil.getOnlineRegions(hrs);
+ List<HRegionInfo> regions = ProtobufUtil.getOnlineRegions(hrs.getRSRpcServices());
if (regions.isEmpty()) continue;
region = regions.get(0);
regionSet.add(region);
@@ -670,7 +670,6 @@ public class TestDistributedLogSplitting
}
});
ht.close();
- zkw.close();
}
@Test(timeout = 300000)
@@ -692,7 +691,7 @@ public class TestDistributedLogSplitting
for (int i = 0; i < NUM_RS; i++) {
boolean isCarryingMeta = false;
hrs = rsts.get(i).getRegionServer();
- regions = ProtobufUtil.getOnlineRegions(hrs);
+ regions = ProtobufUtil.getOnlineRegions(hrs.getRSRpcServices());
for (HRegionInfo region : regions) {
if (region.isMetaRegion()) {
isCarryingMeta = true;
@@ -744,7 +743,7 @@ public class TestDistributedLogSplitting
hasRegionsForBothTables = false;
boolean isCarryingSystem = false;
hrs = rsts.get(i).getRegionServer();
- regions = ProtobufUtil.getOnlineRegions(hrs);
+ regions = ProtobufUtil.getOnlineRegions(hrs.getRSRpcServices());
for (HRegionInfo region : regions) {
if (region.getTable().isSystemTable()) {
isCarryingSystem = true;
@@ -800,7 +799,8 @@ public class TestDistributedLogSplitting
TEST_UTIL.waitFor(180000, 200, new Waiter.Predicate<Exception>() {
@Override
public boolean evaluate() throws Exception {
- return (getAllOnlineRegions(cluster).size() >= (NUM_REGIONS_TO_CREATE + 1));
+ return (HBaseTestingUtility.getAllOnlineRegions(cluster).size()
+ >= (NUM_REGIONS_TO_CREATE + 1));
}
});
@@ -821,7 +821,6 @@ public class TestDistributedLogSplitting
Path rootdir = FSUtils.getRootDir(conf);
Path tdir = FSUtils.getTableDir(rootdir, TableName.valueOf("disableTable"));
for (HRegionInfo hri : regions) {
- @SuppressWarnings("deprecation")
Path editsdir =
HLogUtil.getRegionDirRecoveredEditsDir(HRegion.getRegionDir(tdir, hri.getEncodedName()));
LOG.debug("checking edits dir " + editsdir);
@@ -843,7 +842,6 @@ public class TestDistributedLogSplitting
// clean up
for (HRegionInfo hri : regions) {
- @SuppressWarnings("deprecation")
Path editsdir =
HLogUtil.getRegionDirRecoveredEditsDir(HRegion.getRegionDir(tdir, hri.getEncodedName()));
fs.delete(editsdir, true);
@@ -876,7 +874,7 @@ public class TestDistributedLogSplitting
HRegionServer dstRS = null;
for (int i = 0; i < NUM_RS; i++) {
hrs = rsts.get(i).getRegionServer();
- List<HRegionInfo> regions = ProtobufUtil.getOnlineRegions(hrs);
+ List<HRegionInfo> regions = ProtobufUtil.getOnlineRegions(hrs.getRSRpcServices());
if (regions.isEmpty()) continue;
region = regions.get(0);
regionSet.add(region);
@@ -910,7 +908,6 @@ public class TestDistributedLogSplitting
Put put = new Put(key);
put.add(Bytes.toBytes("family"), Bytes.toBytes("c1"), new byte[]{'b'});
ht.put(put);
- ht.close();
} catch (IOException ioe) {
Assert.assertTrue(ioe instanceof RetriesExhaustedWithDetailsException);
RetriesExhaustedWithDetailsException re = (RetriesExhaustedWithDetailsException) ioe;
@@ -926,6 +923,7 @@ public class TestDistributedLogSplitting
foundRegionInRecoveryException);
}
+ ht.close();
zkw.close();
}
@@ -955,8 +953,8 @@ public class TestDistributedLogSplitting
installTable(new ZooKeeperWatcher(conf, "table-creation", null),
"table", "family", 40);
- makeHLog(hrs.getWAL(), ProtobufUtil.getOnlineRegions(hrs), "table", "family", NUM_LOG_LINES,
- 100);
+ makeHLog(hrs.getWAL(), ProtobufUtil.getOnlineRegions(hrs.getRSRpcServices()),
+ "table", "family", NUM_LOG_LINES, 100);
new Thread() {
public void run() {
@@ -1025,7 +1023,8 @@ public class TestDistributedLogSplitting
}
start = EnvironmentEdgeManager.currentTimeMillis();
- while (getAllOnlineRegions(cluster).size() < (NUM_REGIONS_TO_CREATE + 1)) {
+ while (HBaseTestingUtility.getAllOnlineRegions(cluster).size()
+ < (NUM_REGIONS_TO_CREATE + 1)) {
if (EnvironmentEdgeManager.currentTimeMillis() - start > 60000) {
assertTrue("Timedout", false);
}
@@ -1124,11 +1123,10 @@ public class TestDistributedLogSplitting
// they will consume recovered.edits
master.balanceSwitch(false);
final ZooKeeperWatcher zkw = new ZooKeeperWatcher(conf, "table-creation", null);
- List<RegionServerThread> rsts = cluster.getLiveRegionServerThreads();
// only testing meta recovery in ZK operation
HRegionServer hrs = findRSToKill(true, null);
- List<HRegionInfo> regions = ProtobufUtil.getOnlineRegions(hrs);
+ List<HRegionInfo> regions = ProtobufUtil.getOnlineRegions(hrs.getRSRpcServices());
LOG.info("#regions = " + regions.size());
Set<HRegionInfo> tmpRegions = new HashSet<HRegionInfo>();
@@ -1187,7 +1185,7 @@ public class TestDistributedLogSplitting
for (int i = 0; i < NUM_RS; i++) {
boolean isCarryingMeta = false;
hrs = rsts.get(i).getRegionServer();
- regions = ProtobufUtil.getOnlineRegions(hrs);
+ regions = ProtobufUtil.getOnlineRegions(hrs.getRSRpcServices());
for (HRegionInfo region : regions) {
if (region.isMetaRegion()) {
isCarryingMeta = true;
@@ -1279,7 +1277,7 @@ public class TestDistributedLogSplitting
for (int i = 0; i < NUM_RS; i++) {
boolean isCarryingMeta = false;
hrs = rsts.get(i).getRegionServer();
- regions = ProtobufUtil.getOnlineRegions(hrs);
+ regions = ProtobufUtil.getOnlineRegions(hrs.getRSRpcServices());
for (HRegionInfo region : regions) {
if (region.isMetaRegion()) {
isCarryingMeta = true;
@@ -1377,7 +1375,7 @@ public class TestDistributedLogSplitting
TEST_UTIL.getHBaseAdmin().disableTable(table);
LOG.debug("Waiting for no more RIT\n");
blockUntilNoRIT(zkw, master);
- NavigableSet<String> regions = getAllOnlineRegions(cluster);
+ NavigableSet<String> regions = HBaseTestingUtility.getAllOnlineRegions(cluster);
LOG.debug("Verifying only catalog and namespace regions are assigned\n");
if (regions.size() != 2) {
for (String oregion : regions)
@@ -1389,7 +1387,7 @@ public class TestDistributedLogSplitting
LOG.debug("Waiting for no more RIT\n");
blockUntilNoRIT(zkw, master);
LOG.debug("Verifying there are " + numRegions + " assigned on cluster\n");
- regions = getAllOnlineRegions(cluster);
+ regions = HBaseTestingUtility.getAllOnlineRegions(cluster);
assertEquals(numRegions + 2 + existingRegions, regions.size());
return ht;
}
@@ -1402,7 +1400,7 @@ public class TestDistributedLogSplitting
for (RegionServerThread rst : rsts) {
HRegionServer hrs = rst.getRegionServer();
- List<HRegionInfo> hris = ProtobufUtil.getOnlineRegions(hrs);
+ List<HRegionInfo> hris = ProtobufUtil.getOnlineRegions(hrs.getRSRpcServices());
for (HRegionInfo hri : hris) {
if (hri.getTable().isSystemTable()) {
continue;
@@ -1414,6 +1412,21 @@ public class TestDistributedLogSplitting
putData(region, hri.getStartKey(), nrows, Bytes.toBytes("q"), family);
}
}
+
+ for (MasterThread mt : cluster.getLiveMasterThreads()) {
+ HRegionServer hrs = mt.getMaster();
+ List<HRegionInfo> hris = ProtobufUtil.getOnlineRegions(hrs.getRSRpcServices());
+ for (HRegionInfo hri : hris) {
+ if (hri.getTable().isSystemTable()) {
+ continue;
+ }
+ LOG.debug("adding data to rs = " + mt.getName() +
+ " region = "+ hri.getRegionNameAsString());
+ HRegion region = hrs.getOnlineRegion(hri.getRegionName());
+ assertTrue(region != null);
+ putData(region, hri.getStartKey(), nrows, Bytes.toBytes("q"), family);
+ }
+ }
}
public void makeHLog(HLog log, List<HRegionInfo> regions, String tname, String fname,
@@ -1542,17 +1555,6 @@ public class TestDistributedLogSplitting
t.flushCommits();
}
- private NavigableSet<String> getAllOnlineRegions(MiniHBaseCluster cluster)
- throws IOException {
- NavigableSet<String> online = new TreeSet<String>();
- for (RegionServerThread rst : cluster.getLiveRegionServerThreads()) {
- for (HRegionInfo region : ProtobufUtil.getOnlineRegions(rst.getRegionServer())) {
- online.add(region.getRegionNameAsString());
- }
- }
- return online;
- }
-
private void waitForCounter(AtomicLong ctr, long oldval, long newval,
long timems) {
long curt = System.currentTimeMillis();
@@ -1580,19 +1582,6 @@ public class TestDistributedLogSplitting
LOG.debug("Master is aborted");
}
- private void startMasterAndWaitUntilLogSplit(MiniHBaseCluster cluster)
- throws IOException, InterruptedException {
- cluster.startMaster();
- HMaster master = cluster.getMaster();
- while (!master.isInitialized()) {
- Thread.sleep(100);
- }
- ServerManager serverManager = master.getServerManager();
- while (serverManager.areDeadServersInProgress()) {
- Thread.sleep(100);
- }
- }
-
/**
* Find a RS that has regions of a table.
* @param hasMetaRegion when true, the returned RS has hbase:meta region as well
@@ -1610,7 +1599,7 @@ public class TestDistributedLogSplitting
boolean isCarryingMeta = false;
boolean foundTableRegion = false;
hrs = rsts.get(i).getRegionServer();
- regions = ProtobufUtil.getOnlineRegions(hrs);
+ regions = ProtobufUtil.getOnlineRegions(hrs.getRSRpcServices());
for (HRegionInfo region : regions) {
if (region.isMetaRegion()) {
isCarryingMeta = true;
Modified: hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterFailover.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterFailover.java?rev=1581479&r1=1581478&r2=1581479&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterFailover.java (original)
+++ hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterFailover.java Tue Mar 25 19:34:52 2014
@@ -61,6 +61,7 @@ import org.apache.hadoop.hbase.util.JVMC
import org.apache.hadoop.hbase.util.JVMClusterUtil.MasterThread;
import org.apache.hadoop.hbase.util.JVMClusterUtil.RegionServerThread;
import org.apache.hadoop.hbase.util.Threads;
+import org.apache.hadoop.hbase.zookeeper.MetaRegionTracker;
import org.apache.hadoop.hbase.zookeeper.ZKAssign;
import org.apache.hadoop.hbase.zookeeper.ZKTable;
import org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher;
@@ -284,6 +285,20 @@ public class TestMasterFailover {
* javadoc.
*/
+ // Master is down, so is the meta. We need to assign it somewhere
+ // so that regions can be assigned during the mocking phase.
+ ZKAssign.createNodeOffline(
+ zkw, HRegionInfo.FIRST_META_REGIONINFO, hrs.getServerName());
+ ProtobufUtil.openRegion(hrs.getRSRpcServices(),
+ hrs.getServerName(), HRegionInfo.FIRST_META_REGIONINFO);
+ while (true) {
+ ServerName sn = MetaRegionTracker.getMetaRegionLocation(zkw);
+ if (sn != null && sn.equals(hrs.getServerName())) {
+ break;
+ }
+ Thread.sleep(100);
+ }
+
List<HRegionInfo> regionsThatShouldBeOnline = new ArrayList<HRegionInfo>();
List<HRegionInfo> regionsThatShouldBeOffline = new ArrayList<HRegionInfo>();
@@ -337,7 +352,7 @@ public class TestMasterFailover {
region = enabledRegions.remove(0);
regionsThatShouldBeOnline.add(region);
ZKAssign.createNodeOffline(zkw, region, serverName);
- ProtobufUtil.openRegion(hrs, hrs.getServerName(), region);
+ ProtobufUtil.openRegion(hrs.getRSRpcServices(), hrs.getServerName(), region);
while (true) {
byte [] bytes = ZKAssign.getData(zkw, region.getEncodedName());
RegionTransition rt = RegionTransition.parseFrom(bytes);
@@ -352,7 +367,7 @@ public class TestMasterFailover {
region = disabledRegions.remove(0);
regionsThatShouldBeOffline.add(region);
ZKAssign.createNodeOffline(zkw, region, serverName);
- ProtobufUtil.openRegion(hrs, hrs.getServerName(), region);
+ ProtobufUtil.openRegion(hrs.getRSRpcServices(), hrs.getServerName(), region);
while (true) {
byte [] bytes = ZKAssign.getData(zkw, region.getEncodedName());
RegionTransition rt = RegionTransition.parseFrom(bytes);
@@ -407,7 +422,8 @@ public class TestMasterFailover {
Set<HRegionInfo> onlineRegions = new TreeSet<HRegionInfo>();
for (JVMClusterUtil.RegionServerThread rst :
cluster.getRegionServerThreads()) {
- onlineRegions.addAll(ProtobufUtil.getOnlineRegions(rst.getRegionServer()));
+ onlineRegions.addAll(ProtobufUtil.getOnlineRegions(
+ rst.getRegionServer().getRSRpcServices()));
}
// Now, everything that should be online should be online
@@ -658,6 +674,20 @@ public class TestMasterFailover {
* javadoc.
*/
+ // Master is down, so is the meta. We need to assign it somewhere
+ // so that regions can be assigned during the mocking phase.
+ ZKAssign.createNodeOffline(
+ zkw, HRegionInfo.FIRST_META_REGIONINFO, hrs.getServerName());
+ ProtobufUtil.openRegion(hrs.getRSRpcServices(),
+ hrs.getServerName(), HRegionInfo.FIRST_META_REGIONINFO);
+ while (true) {
+ ServerName sn = MetaRegionTracker.getMetaRegionLocation(zkw);
+ if (sn != null && sn.equals(hrs.getServerName())) {
+ break;
+ }
+ Thread.sleep(100);
+ }
+
List<HRegionInfo> regionsThatShouldBeOnline = new ArrayList<HRegionInfo>();
List<HRegionInfo> regionsThatShouldBeOffline = new ArrayList<HRegionInfo>();
@@ -736,7 +766,8 @@ public class TestMasterFailover {
region = enabledRegions.remove(0);
regionsThatShouldBeOnline.add(region);
ZKAssign.createNodeOffline(zkw, region, deadServerName);
- ProtobufUtil.openRegion(hrsDead, hrsDead.getServerName(), region);
+ ProtobufUtil.openRegion(hrsDead.getRSRpcServices(),
+ hrsDead.getServerName(), region);
while (true) {
byte [] bytes = ZKAssign.getData(zkw, region.getEncodedName());
RegionTransition rt = RegionTransition.parseFrom(bytes);
@@ -752,7 +783,8 @@ public class TestMasterFailover {
region = disabledRegions.remove(0);
regionsThatShouldBeOffline.add(region);
ZKAssign.createNodeOffline(zkw, region, deadServerName);
- ProtobufUtil.openRegion(hrsDead, hrsDead.getServerName(), region);
+ ProtobufUtil.openRegion(hrsDead.getRSRpcServices(),
+ hrsDead.getServerName(), region);
while (true) {
byte [] bytes = ZKAssign.getData(zkw, region.getEncodedName());
RegionTransition rt = RegionTransition.parseFrom(bytes);
@@ -772,7 +804,8 @@ public class TestMasterFailover {
region = enabledRegions.remove(0);
regionsThatShouldBeOnline.add(region);
ZKAssign.createNodeOffline(zkw, region, deadServerName);
- ProtobufUtil.openRegion(hrsDead, hrsDead.getServerName(), region);
+ ProtobufUtil.openRegion(hrsDead.getRSRpcServices(),
+ hrsDead.getServerName(), region);
while (true) {
byte [] bytes = ZKAssign.getData(zkw, region.getEncodedName());
RegionTransition rt = RegionTransition.parseFrom(bytes);
@@ -790,7 +823,8 @@ public class TestMasterFailover {
region = disabledRegions.remove(0);
regionsThatShouldBeOffline.add(region);
ZKAssign.createNodeOffline(zkw, region, deadServerName);
- ProtobufUtil.openRegion(hrsDead, hrsDead.getServerName(), region);
+ ProtobufUtil.openRegion(hrsDead.getRSRpcServices(),
+ hrsDead.getServerName(), region);
while (true) {
byte [] bytes = ZKAssign.getData(zkw, region.getEncodedName());
RegionTransition rt = RegionTransition.parseFrom(bytes);
@@ -863,7 +897,7 @@ public class TestMasterFailover {
}
Thread.sleep(100);
}
- onlineRegions.addAll(ProtobufUtil.getOnlineRegions(rs));
+ onlineRegions.addAll(ProtobufUtil.getOnlineRegions(rs.getRSRpcServices()));
} catch (RegionServerStoppedException e) {
LOG.info("Got RegionServerStoppedException", e);
}
@@ -891,7 +925,8 @@ public class TestMasterFailover {
*/
private void verifyRegionLocation(HRegionServer hrs, List<HRegionInfo> regions)
throws IOException {
- List<HRegionInfo> tmpOnlineRegions = ProtobufUtil.getOnlineRegions(hrs);
+ List<HRegionInfo> tmpOnlineRegions =
+ ProtobufUtil.getOnlineRegions(hrs.getRSRpcServices());
Iterator<HRegionInfo> itr = regions.iterator();
while (itr.hasNext()) {
HRegionInfo tmp = itr.next();
@@ -937,18 +972,9 @@ public class TestMasterFailover {
MiniHBaseCluster cluster = TEST_UTIL.getHBaseCluster();
// Find regionserver carrying meta.
- List<RegionServerThread> regionServerThreads =
- cluster.getRegionServerThreads();
- int count = -1;
- HRegion metaRegion = null;
- for (RegionServerThread regionServerThread : regionServerThreads) {
- HRegionServer regionServer = regionServerThread.getRegionServer();
- metaRegion = regionServer.getOnlineRegion(HRegionInfo.FIRST_META_REGIONINFO.getRegionName());
- count++;
- regionServer.abort("");
- if (null != metaRegion) break;
- }
- HRegionServer regionServer = cluster.getRegionServer(count);
+ HRegionServer regionServer = cluster.getMaster();
+ HRegion metaRegion = regionServer.getOnlineRegion(
+ HRegionInfo.FIRST_META_REGIONINFO.getRegionName());
TEST_UTIL.shutdownMiniHBaseCluster();
@@ -1114,7 +1140,7 @@ public class TestMasterFailover {
assertEquals(2, masterThreads.size());
int rsCount = masterThreads.get(activeIndex).getMaster().getClusterStatus().getServersSize();
LOG.info("Active master " + active.getServerName() + " managing " + rsCount + " regions servers");
- assertEquals(3, rsCount);
+ assertEquals(5, rsCount);
// Check that ClusterStatus reports the correct active and backup masters
assertNotNull(active);
@@ -1147,7 +1173,7 @@ public class TestMasterFailover {
int rss = status.getServersSize();
LOG.info("Active master " + mastername.getServerName() + " managing " +
rss + " region servers");
- assertEquals(3, rss);
+ assertEquals(4, rss);
// Stop the cluster
TEST_UTIL.shutdownMiniCluster();
Modified: hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterMetrics.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterMetrics.java?rev=1581479&r1=1581478&r2=1581479&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterMetrics.java (original)
+++ hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterMetrics.java Tue Mar 25 19:34:52 2014
@@ -27,11 +27,11 @@ import org.apache.hadoop.hbase.HBaseTest
import org.apache.hadoop.hbase.MediumTests;
import org.apache.hadoop.hbase.MiniHBaseCluster;
import org.apache.hadoop.hbase.ServerName;
-import org.apache.hadoop.hbase.MiniHBaseCluster.MiniHBaseClusterRegionServer;
import org.apache.hadoop.hbase.protobuf.ProtobufUtil;
import org.apache.hadoop.hbase.protobuf.generated.ClusterStatusProtos;
import org.apache.hadoop.hbase.protobuf.generated.RegionServerStatusProtos;
import org.apache.hadoop.hbase.test.MetricsAssertHelper;
+import org.apache.zookeeper.KeeperException;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
@@ -48,11 +48,11 @@ public class TestMasterMetrics {
private static HMaster master;
private static HBaseTestingUtility TEST_UTIL;
- private static class MyRegionServer extends MiniHBaseClusterRegionServer {
- public MyRegionServer(Configuration conf) throws IOException,
- InterruptedException {
+ public static class MyMaster extends HMaster {
+ public MyMaster(Configuration conf) throws IOException,
+ KeeperException, InterruptedException {
super(conf);
- }
+ }
@Override
protected void tryRegionServerReport(
@@ -65,7 +65,7 @@ public class TestMasterMetrics {
public static void startCluster() throws Exception {
LOG.info("Starting cluster");
TEST_UTIL = new HBaseTestingUtility();
- TEST_UTIL.startMiniCluster(1, 1, 1, null, HMaster.class, MyRegionServer.class);
+ TEST_UTIL.startMiniCluster(1, 0, 1, null, MyMaster.class, null);
cluster = TEST_UTIL.getHBaseCluster();
LOG.info("Waiting for active/ready master");
cluster.waitForActiveAndReadyMaster();
@@ -85,16 +85,16 @@ public class TestMasterMetrics {
// sending fake request to master to see how metric value has changed
RegionServerStatusProtos.RegionServerReportRequest.Builder request =
RegionServerStatusProtos.RegionServerReportRequest.newBuilder();
- ServerName serverName = cluster.getRegionServer(0).getServerName();
+ ServerName serverName = cluster.getMaster(0).getServerName();
request.setServer(ProtobufUtil.toServerName(serverName));
- MetricsMasterSource masterSource = master.getMetrics().getMetricsSource();
+ MetricsMasterSource masterSource = master.getMasterMetrics().getMetricsSource();
ClusterStatusProtos.ServerLoad sl = ClusterStatusProtos.ServerLoad.newBuilder()
.setTotalNumberOfRequests(10000)
.build();
masterSource.init();
request.setLoad(sl);
- master.regionServerReport(null, request.build());
+ master.getMasterRpcServices().regionServerReport(null, request.build());
metricsHelper.assertCounter("cluster_requests", 10000, masterSource);
@@ -102,11 +102,11 @@ public class TestMasterMetrics {
.setTotalNumberOfRequests(15000)
.build();
request.setLoad(sl);
- master.regionServerReport(null, request.build());
+ master.getMasterRpcServices().regionServerReport(null, request.build());
metricsHelper.assertCounter("cluster_requests", 15000, masterSource);
- master.regionServerReport(null, request.build());
+ master.getMasterRpcServices().regionServerReport(null, request.build());
metricsHelper.assertCounter("cluster_requests", 15000, masterSource);
master.stopMaster();
@@ -114,7 +114,7 @@ public class TestMasterMetrics {
@Test
public void testDefaultMasterMetrics() throws Exception {
- MetricsMasterSource masterSource = master.getMetrics().getMetricsSource();
+ MetricsMasterSource masterSource = master.getMasterMetrics().getMetricsSource();
metricsHelper.assertGauge( "numRegionServers", 1, masterSource);
metricsHelper.assertGauge( "averageLoad", 2, masterSource);
metricsHelper.assertGauge( "numDeadRegionServers", 0, masterSource);
Modified: hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterMetricsWrapper.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterMetricsWrapper.java?rev=1581479&r1=1581478&r2=1581479&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterMetricsWrapper.java (original)
+++ hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterMetricsWrapper.java Tue Mar 25 19:34:52 2014
@@ -55,9 +55,9 @@ public class TestMasterMetricsWrapper {
assertEquals(master.getClusterId(), info.getClusterId());
assertEquals(master.getMasterActiveTime(), info.getActiveTime());
assertEquals(master.getMasterStartTime(), info.getStartTime());
- assertEquals(master.getCoprocessors().length, info.getCoprocessors().length);
+ assertEquals(master.getMasterCoprocessors().length, info.getCoprocessors().length);
assertEquals(master.getServerManager().getOnlineServersList().size(), info.getNumRegionServers());
- assertTrue(info.getNumRegionServers() == 4);
+ assertEquals(5, info.getNumRegionServers());
String zkServers = info.getZookeeperQuorum();
assertEquals(zkServers.split(",").length, TEST_UTIL.getZkCluster().getZooKeeperServerNum());
@@ -69,10 +69,10 @@ public class TestMasterMetricsWrapper {
// We stopped the regionserver but could take a while for the master to notice it so hang here
// until it does... then move forward to see if metrics wrapper notices.
while (TEST_UTIL.getHBaseCluster().getMaster().getServerManager().getOnlineServers().size() !=
- index) {
+ 4) {
Threads.sleep(10);
}
- assertTrue(info.getNumRegionServers() == 3);
- assertTrue(info.getNumDeadRegionServers() == 1);
+ assertEquals(4, info.getNumRegionServers());
+ assertEquals(1, info.getNumDeadRegionServers());
}
}
\ No newline at end of file
Modified: hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterNoCluster.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterNoCluster.java?rev=1581479&r1=1581478&r2=1581479&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterNoCluster.java (original)
+++ hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterNoCluster.java Tue Mar 25 19:34:52 2014
@@ -18,7 +18,6 @@
package org.apache.hadoop.hbase.master;
-import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
@@ -29,16 +28,18 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Set;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.Abortable;
-import org.apache.hadoop.hbase.TableName;
-import org.apache.hadoop.hbase.exceptions.DeserializationException;
import org.apache.hadoop.hbase.HBaseTestingUtility;
import org.apache.hadoop.hbase.HConstants;
import org.apache.hadoop.hbase.HRegionInfo;
-import org.apache.hadoop.hbase.ServerLoad;
+import org.apache.hadoop.hbase.MediumTests;
import org.apache.hadoop.hbase.Server;
+import org.apache.hadoop.hbase.ServerLoad;
import org.apache.hadoop.hbase.ServerName;
+import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.ZooKeeperConnectionException;
import org.apache.hadoop.hbase.catalog.CatalogTracker;
import org.apache.hadoop.hbase.catalog.MetaMockingUtil;
@@ -46,28 +47,24 @@ import org.apache.hadoop.hbase.client.HC
import org.apache.hadoop.hbase.client.HConnectionTestingUtility;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.monitoring.MonitoredTask;
-import org.apache.hadoop.hbase.regionserver.RegionOpeningState;
+import org.apache.hadoop.hbase.protobuf.ProtobufUtil;
+import org.apache.hadoop.hbase.protobuf.generated.RegionServerStatusProtos.RegionServerReportRequest;
import org.apache.hadoop.hbase.util.FSUtils;
import org.apache.hadoop.hbase.util.Threads;
import org.apache.hadoop.hbase.zookeeper.MetaRegionTracker;
+import org.apache.hadoop.hbase.zookeeper.ZKAssign;
import org.apache.hadoop.hbase.zookeeper.ZKUtil;
import org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher;
-import org.apache.hadoop.hbase.MediumTests;
+import org.apache.hadoop.metrics2.lib.DefaultMetricsSystem;
import org.apache.zookeeper.KeeperException;
-import org.apache.hadoop.hbase.protobuf.ProtobufUtil;
-import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.NameStringPair;
-import org.apache.hadoop.hbase.protobuf.generated.RegionServerStatusProtos.RegionServerReportRequest;
-import org.apache.hadoop.hbase.protobuf.generated.RegionServerStatusProtos.RegionServerStartupRequest;
-import org.apache.hadoop.hbase.protobuf.generated.RegionServerStatusProtos.RegionServerStartupResponse;
-import com.google.protobuf.ServiceException;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
-import org.mockito.Mockito;
import org.junit.experimental.categories.Category;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
+import org.mockito.Mockito;
+
+import com.google.protobuf.ServiceException;
/**
* Standup the master and fake it to test various aspects of master function.
@@ -87,6 +84,7 @@ public class TestMasterNoCluster {
Configuration c = TESTUTIL.getConfiguration();
// We use local filesystem. Set it so it writes into the testdir.
FSUtils.setRootDir(c, TESTUTIL.getDataTestDir());
+ DefaultMetricsSystem.setMiniClusterMode(true);
// Startup a mini zk cluster.
TESTUTIL.startMiniZKCluster();
}
@@ -179,6 +177,9 @@ public class TestMasterNoCluster {
InetAddress getRemoteInetAddress(final int port, final long serverStartCode)
throws UnknownHostException {
// Return different address dependent on port passed.
+ if (port > sns.length) {
+ return super.getRemoteInetAddress(port, serverStartCode);
+ }
ServerName sn = sns[port];
return InetAddress.getByAddress(sn.getHostname(),
new byte [] {10, 0, 0, (byte)sn.getPort()});
@@ -190,17 +191,15 @@ public class TestMasterNoCluster {
ServerManager sm = super.createServerManager(master, services);
// Spy on the created servermanager
ServerManager spy = Mockito.spy(sm);
- // Fake a successful open.
- Mockito.doReturn(RegionOpeningState.OPENED).when(spy).
- sendRegionOpen((ServerName)Mockito.any(), (HRegionInfo)Mockito.any(),
- Mockito.anyInt(), Mockito.anyListOf(ServerName.class));
+ // Fake a successful close.
+ Mockito.doReturn(true).when(spy).
+ sendRegionClose((ServerName)Mockito.any(), (HRegionInfo)Mockito.any(),
+ Mockito.anyInt(), (ServerName)Mockito.any(), Mockito.anyBoolean());
return spy;
}
@Override
- CatalogTracker createCatalogTracker(ZooKeeperWatcher zk,
- Configuration conf, Abortable abortable)
- throws IOException {
+ protected CatalogTracker createCatalogTracker() throws IOException {
// Insert a mock for the connection used by the CatalogTracker. Any
// regionserver should do. Use TESTUTIL.getConfiguration rather than
// the conf from the master; the conf will already have an HConnection
@@ -208,7 +207,7 @@ public class TestMasterNoCluster {
HConnection connection =
HConnectionTestingUtility.getMockedConnectionAndDecorate(TESTUTIL.getConfiguration(),
rs0, rs0, rs0.getServerName(), HRegionInfo.FIRST_META_REGIONINFO);
- return new CatalogTracker(zk, conf, connection, abortable);
+ return new CatalogTracker(getZooKeeper(), getConfiguration(), connection, this);
}
@Override
@@ -219,17 +218,24 @@ public class TestMasterNoCluster {
try {
// Wait till master is up ready for RPCs.
- while (!master.isRpcServerOpen()) Threads.sleep(10);
+ while (!master.serviceStarted) Threads.sleep(10);
// Fake master that there are regionservers out there. Report in.
for (int i = 0; i < sns.length; i++) {
RegionServerReportRequest.Builder request = RegionServerReportRequest.newBuilder();;
ServerName sn = ServerName.parseVersionedServerName(sns[i].getVersionedBytes());
request.setServer(ProtobufUtil.toServerName(sn));
request.setLoad(ServerLoad.EMPTY_SERVERLOAD.obtainServerLoadPB());
- master.regionServerReport(null, request.build());
+ master.getMasterRpcServices().regionServerReport(null, request.build());
}
+ ZooKeeperWatcher zkw = master.getZooKeeper();
// Master should now come up.
- while (!master.isInitialized()) {Threads.sleep(10);}
+ while (!master.isInitialized()) {
+ // Fake meta is closed on rs0, try several times in case the event is lost
+ // due to race with HMaster#assignMeta
+ ZKAssign.transitionNodeClosed(zkw,
+ HRegionInfo.FIRST_META_REGIONINFO, sn0, -1);
+ Threads.sleep(100);
+ }
assertTrue(master.isInitialized());
} finally {
rs0.stop("Test is done");
@@ -240,120 +246,6 @@ public class TestMasterNoCluster {
}
}
- /**
- * Test starting master getting it up post initialized state using mocks.
- * @throws IOException
- * @throws KeeperException
- * @throws InterruptedException
- * @throws DeserializationException
- * @throws ServiceException
- */
- @Test (timeout=60000)
- public void testCatalogDeploys()
- throws Exception {
- final Configuration conf = TESTUTIL.getConfiguration();
- conf.setInt(ServerManager.WAIT_ON_REGIONSERVERS_MINTOSTART, 1);
- conf.setInt(ServerManager.WAIT_ON_REGIONSERVERS_MAXTOSTART, 1);
-
- final long now = System.currentTimeMillis();
- // Name for our single mocked up regionserver.
- final ServerName sn = ServerName.valueOf("0.example.org", 0, now);
- // Here is our mocked up regionserver. Create it now. Need it setting up
- // master next.
- final MockRegionServer rs0 = new MockRegionServer(conf, sn);
-
- // Create master. Subclass to override a few methods so we can insert mocks
- // and get notification on transitions. We need to fake out any rpcs the
- // master does opening/closing regions. Also need to fake out the address
- // of the 'remote' mocked up regionservers.
- HMaster master = new HMaster(conf) {
- InetAddress getRemoteInetAddress(final int port, final long serverStartCode)
- throws UnknownHostException {
- // Interject an unchecked, nonsense InetAddress; i.e. no resolve.
- return InetAddress.getByAddress(rs0.getServerName().getHostname(),
- new byte [] {10, 0, 0, 0});
- }
-
- @Override
- ServerManager createServerManager(Server master, MasterServices services)
- throws IOException {
- ServerManager sm = super.createServerManager(master, services);
- // Spy on the created servermanager
- ServerManager spy = Mockito.spy(sm);
- // Fake a successful open.
- Mockito.doReturn(RegionOpeningState.OPENED).when(spy).
- sendRegionOpen((ServerName)Mockito.any(), (HRegionInfo)Mockito.any(),
- Mockito.anyInt(), Mockito.anyListOf(ServerName.class));
- return spy;
- }
-
- @Override
- CatalogTracker createCatalogTracker(ZooKeeperWatcher zk,
- Configuration conf, Abortable abortable)
- throws IOException {
- // Insert a mock for the connection used by the CatalogTracker. Use
- // TESTUTIL.getConfiguration rather than the conf from the master; the
- // conf will already have an HConnection associate so the below mocking
- // of a connection will fail.
- HConnection connection =
- HConnectionTestingUtility.getMockedConnectionAndDecorate(TESTUTIL.getConfiguration(),
- rs0, rs0, rs0.getServerName(), HRegionInfo.FIRST_META_REGIONINFO);
- return new CatalogTracker(zk, conf, connection, abortable);
- }
-
- @Override
- void initNamespace() {
- }
- };
- master.start();
- LOG.info("Master has started");
-
- try {
- // Wait till master is up ready for RPCs.
- while (!master.isRpcServerOpen()) Threads.sleep(10);
- LOG.info("RpcServerOpen has started");
-
- // Fake master that there is a regionserver out there. Report in.
- RegionServerStartupRequest.Builder request = RegionServerStartupRequest.newBuilder();
- request.setPort(rs0.getServerName().getPort());
- request.setServerStartCode(rs0.getServerName().getStartcode());
- request.setServerCurrentTime(now);
- RegionServerStartupResponse result =
- master.regionServerStartup(null, request.build());
- String rshostname = new String();
- for (NameStringPair e : result.getMapEntriesList()) {
- if (e.getName().toString().equals(HConstants.KEY_FOR_HOSTNAME_SEEN_BY_MASTER)) {
- rshostname = e.getValue();
- }
- }
- // Assert hostname is as expected.
- assertEquals(rs0.getServerName().getHostname(), rshostname);
- // Now master knows there is at least one regionserver checked in and so
- // it'll wait a while to see if more and when none, will assign meta
- // to this single server. Will do an rpc open but we've
- // mocked it above in our master override to return 'success'. As part of
- // region open, master will have set an unassigned znode for the region up
- // into zk for the regionserver to transition. Lets do that now to
- // complete fake of a successful open.
- Mocking.fakeRegionServerRegionOpenInZK(master, rs0.getZooKeeper(),
- rs0.getServerName(), HRegionInfo.FIRST_META_REGIONINFO);
- LOG.info("fakeRegionServerRegionOpenInZK has started");
-
- // Need to set meta location as r0. Usually the regionserver does this
- // when its figured it just opened the meta region by setting the meta
- // location up into zk. Since we're mocking regionserver, need to do this
- // ourselves.
- MetaRegionTracker.setMetaLocation(rs0.getZooKeeper(), rs0.getServerName());
- // Master should now come up.
- while (!master.isInitialized()) {Threads.sleep(10);}
- assertTrue(master.isInitialized());
- } finally {
- rs0.stop("Test is done");
- master.stopMaster();
- master.join();
- }
- }
-
@Test
public void testNotPullingDeadRegionServerFromZK()
throws IOException, KeeperException, InterruptedException {
@@ -384,9 +276,7 @@ public class TestMasterNoCluster {
}
@Override
- CatalogTracker createCatalogTracker(ZooKeeperWatcher zk,
- Configuration conf, Abortable abortable)
- throws IOException {
+ protected CatalogTracker createCatalogTracker() throws IOException {
// Insert a mock for the connection used by the CatalogTracker. Any
// regionserver should do. Use TESTUTIL.getConfiguration rather than
// the conf from the master; the conf will already have an HConnection
@@ -394,7 +284,7 @@ public class TestMasterNoCluster {
HConnection connection =
HConnectionTestingUtility.getMockedConnectionAndDecorate(TESTUTIL.getConfiguration(),
rs0, rs0, rs0.getServerName(), HRegionInfo.FIRST_META_REGIONINFO);
- return new CatalogTracker(zk, conf, connection, abortable);
+ return new CatalogTracker(getZooKeeper(), getConfiguration(), connection, this);
}
@Override
Modified: hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterRestartAfterDisablingTable.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterRestartAfterDisablingTable.java?rev=1581479&r1=1581478&r2=1581479&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterRestartAfterDisablingTable.java (original)
+++ hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterRestartAfterDisablingTable.java Tue Mar 25 19:34:52 2014
@@ -21,21 +21,21 @@ package org.apache.hadoop.hbase.master;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
-import java.io.IOException;
import java.util.List;
import java.util.NavigableSet;
-import java.util.TreeSet;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hbase.*;
+import org.apache.hadoop.hbase.HBaseConfiguration;
+import org.apache.hadoop.hbase.HBaseTestingUtility;
+import org.apache.hadoop.hbase.LargeTests;
+import org.apache.hadoop.hbase.MiniHBaseCluster;
+import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.client.HTable;
-import org.apache.hadoop.hbase.protobuf.ProtobufUtil;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.hbase.util.JVMClusterUtil.MasterThread;
-import org.apache.hadoop.hbase.util.JVMClusterUtil.RegionServerThread;
import org.apache.hadoop.hbase.zookeeper.ZKAssign;
import org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher;
import org.apache.zookeeper.KeeperException;
@@ -80,7 +80,7 @@ public class TestMasterRestartAfterDisab
log("Disabling table\n");
TEST_UTIL.getHBaseAdmin().disableTable(table);
- NavigableSet<String> regions = getAllOnlineRegions(cluster);
+ NavigableSet<String> regions = HBaseTestingUtility.getAllOnlineRegions(cluster);
assertEquals(
"The number of regions for the table tableRestart should be 0 and only"
+ "the catalog and namespace tables should be present.", 2, regions.size());
@@ -108,10 +108,10 @@ public class TestMasterRestartAfterDisab
log("Waiting for no more RIT\n");
blockUntilNoRIT(zkw, master);
log("Verifying there are " + numRegions + " assigned on cluster\n");
- regions = getAllOnlineRegions(cluster);
- assertEquals(
- "The assigned regions were not onlined after master switch except for the catalog and namespace tables.",
- 6, regions.size());
+ regions = HBaseTestingUtility.getAllOnlineRegions(cluster);
+ assertEquals("The assigned regions were not onlined after master"
+ + " switch except for the catalog and namespace tables.",
+ 6, regions.size());
assertTrue("The table should be in enabled state", cluster.getMaster()
.getAssignmentManager().getZKTable()
.isEnabledTable(TableName.valueOf("tableRestart")));
@@ -128,17 +128,5 @@ public class TestMasterRestartAfterDisab
ZKAssign.blockUntilNoRIT(zkw);
master.assignmentManager.waitUntilNoRegionsInTransition(60000);
}
-
- private NavigableSet<String> getAllOnlineRegions(MiniHBaseCluster cluster)
- throws IOException {
- NavigableSet<String> online = new TreeSet<String>();
- for (RegionServerThread rst : cluster.getLiveRegionServerThreads()) {
- for (HRegionInfo region : ProtobufUtil.getOnlineRegions(rst.getRegionServer())) {
- online.add(region.getRegionNameAsString());
- }
- }
- return online;
- }
-
}
Modified: hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterShutdown.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterShutdown.java?rev=1581479&r1=1581478&r2=1581479&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterShutdown.java (original)
+++ hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterShutdown.java Tue Mar 25 19:34:52 2014
@@ -25,18 +25,19 @@ import static org.junit.Assert.assertTru
import java.util.List;
-import org.apache.hadoop.hbase.*;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.hbase.ClusterStatus;
+import org.apache.hadoop.hbase.HBaseConfiguration;
+import org.apache.hadoop.hbase.HBaseTestingUtility;
+import org.apache.hadoop.hbase.LargeTests;
+import org.apache.hadoop.hbase.LocalHBaseCluster;
+import org.apache.hadoop.hbase.MiniHBaseCluster;
import org.apache.hadoop.hbase.util.JVMClusterUtil.MasterThread;
import org.junit.Test;
import org.junit.experimental.categories.Category;
@Category(LargeTests.class)
public class TestMasterShutdown {
- private static final Log LOG = LogFactory.getLog(TestMasterShutdown.class);
-
/**
* Simple test of shutdown.
* <p>
@@ -100,6 +101,7 @@ public class TestMasterShutdown {
// Create config to use for this cluster
Configuration conf = HBaseConfiguration.create();
+ conf.setInt("hbase.ipc.client.failed.servers.expiry", 200);
// Start the cluster
final HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility(conf);
Modified: hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterStatusServlet.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterStatusServlet.java?rev=1581479&r1=1581478&r2=1581479&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterStatusServlet.java (original)
+++ hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterStatusServlet.java Tue Mar 25 19:34:52 2014
@@ -35,6 +35,8 @@ import org.apache.hadoop.hbase.client.HB
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.hbase.zookeeper.MasterAddressTracker;
import org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher;
+import org.apache.hadoop.hbase.regionserver.MetricsRegionServer;
+import org.apache.hadoop.hbase.regionserver.MetricsRegionServerWrapperStub;
import org.apache.hadoop.hbase.tmpl.master.AssignmentManagerStatusTmpl;
import org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl;
import org.junit.Before;
@@ -94,13 +96,17 @@ public class TestMasterStatusServlet {
// Fake ZKW
ZooKeeperWatcher zkw = Mockito.mock(ZooKeeperWatcher.class);
Mockito.doReturn("fakequorum").when(zkw).getQuorum();
- Mockito.doReturn(zkw).when(master).getZooKeeperWatcher();
+ Mockito.doReturn(zkw).when(master).getZooKeeper();
// Fake MasterAddressTracker
MasterAddressTracker tracker = Mockito.mock(MasterAddressTracker.class);
Mockito.doReturn(tracker).when(master).getMasterAddressTracker();
Mockito.doReturn(FAKE_HOST).when(tracker).getMasterAddress();
+ MetricsRegionServer rms = Mockito.mock(MetricsRegionServer.class);
+ Mockito.doReturn(new MetricsRegionServerWrapperStub()).when(rms).getRegionServerWrapper();
+ Mockito.doReturn(rms).when(master).getRegionServerMetrics();
+
// Mock admin
admin = Mockito.mock(HBaseAdmin.class);
}
Modified: hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestRollingRestart.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestRollingRestart.java?rev=1581479&r1=1581478&r2=1581479&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestRollingRestart.java (original)
+++ hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestRollingRestart.java Tue Mar 25 19:34:52 2014
@@ -18,7 +18,7 @@
*/
package org.apache.hadoop.hbase.master;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
import java.io.IOException;
import java.util.List;
@@ -29,7 +29,12 @@ import java.util.TreeSet;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hbase.*;
+import org.apache.hadoop.hbase.HBaseConfiguration;
+import org.apache.hadoop.hbase.HBaseTestingUtility;
+import org.apache.hadoop.hbase.HRegionInfo;
+import org.apache.hadoop.hbase.LargeTests;
+import org.apache.hadoop.hbase.MiniHBaseCluster;
+import org.apache.hadoop.hbase.ServerName;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.protobuf.ProtobufUtil;
import org.apache.hadoop.hbase.util.Bytes;
@@ -86,7 +91,7 @@ public class TestRollingRestart {
TEST_UTIL.getHBaseAdmin().disableTable(table);
log("Waiting for no more RIT\n");
blockUntilNoRIT(zkw, master);
- NavigableSet<String> regions = getAllOnlineRegions(cluster);
+ NavigableSet<String> regions = HBaseTestingUtility.getAllOnlineRegions(cluster);
log("Verifying only catalog and namespace regions are assigned\n");
if (regions.size() != 2) {
for (String oregion : regions) log("Region still online: " + oregion);
@@ -97,7 +102,7 @@ public class TestRollingRestart {
log("Waiting for no more RIT\n");
blockUntilNoRIT(zkw, master);
log("Verifying there are " + numRegions + " assigned on cluster\n");
- regions = getAllOnlineRegions(cluster);
+ regions = HBaseTestingUtility.getAllOnlineRegions(cluster);
assertRegionsAssigned(cluster, regions);
assertEquals(expectedNumRS, cluster.getRegionServerThreads().size());
@@ -184,102 +189,6 @@ public class TestRollingRestart {
Thread.sleep(1000);
assertRegionsAssigned(cluster, regions);
- // Bring the RS hosting hbase:meta down
- RegionServerThread metaServer = getServerHostingMeta(cluster);
- log("Stopping server hosting hbase:meta #1");
- metaServer.getRegionServer().stop("Stopping hbase:meta server");
- cluster.hbaseCluster.waitOnRegionServer(metaServer);
- log("Meta server down #1");
- expectedNumRS--;
- log("Waiting for meta server #1 RS shutdown to be handled by master");
- waitForRSShutdownToStartAndFinish(activeMaster,
- metaServer.getRegionServer().getServerName());
- log("Waiting for no more RIT");
- long start = System.currentTimeMillis();
- do {
- blockUntilNoRIT(zkw, master);
- } while (getNumberOfOnlineRegions(cluster) < numRegions
- && System.currentTimeMillis()-start < 60000);
- log("Verifying there are " + numRegions + " assigned on cluster");
- assertRegionsAssigned(cluster, regions);
- assertEquals(expectedNumRS, cluster.getRegionServerThreads().size());
-
- // Kill off the server hosting hbase:meta again
- metaServer = getServerHostingMeta(cluster);
- log("Stopping server hosting hbase:meta #2");
- metaServer.getRegionServer().stop("Stopping hbase:meta server");
- cluster.hbaseCluster.waitOnRegionServer(metaServer);
- log("Meta server down");
- expectedNumRS--;
- log("Waiting for RS shutdown to be handled by master");
- waitForRSShutdownToStartAndFinish(activeMaster,
- metaServer.getRegionServer().getServerName());
- log("RS shutdown done, waiting for no more RIT");
- blockUntilNoRIT(zkw, master);
- log("Verifying there are " + numRegions + " assigned on cluster");
- assertRegionsAssigned(cluster, regions);
- assertEquals(expectedNumRS, cluster.getRegionServerThreads().size());
-
- // Start 3 RS again
- cluster.startRegionServer().waitForServerOnline();
- cluster.startRegionServer().waitForServerOnline();
- cluster.startRegionServer().waitForServerOnline();
- Thread.sleep(1000);
- log("Waiting for no more RIT");
- blockUntilNoRIT(zkw, master);
- log("Verifying there are " + numRegions + " assigned on cluster");
- assertRegionsAssigned(cluster, regions);
- // Shutdown server hosting META
- metaServer = getServerHostingMeta(cluster);
- log("Stopping server hosting hbase:meta (1 of 3)");
- metaServer.getRegionServer().stop("Stopping hbase:meta server");
- cluster.hbaseCluster.waitOnRegionServer(metaServer);
- log("Meta server down (1 of 3)");
- log("Waiting for RS shutdown to be handled by master");
- waitForRSShutdownToStartAndFinish(activeMaster,
- metaServer.getRegionServer().getServerName());
- log("RS shutdown done, waiting for no more RIT");
- blockUntilNoRIT(zkw, master);
- log("Verifying there are " + numRegions + " assigned on cluster");
- assertRegionsAssigned(cluster, regions);
-
- // Shutdown server hosting hbase:meta again
- metaServer = getServerHostingMeta(cluster);
- log("Stopping server hosting hbase:meta (2 of 3)");
- metaServer.getRegionServer().stop("Stopping hbase:meta server");
- cluster.hbaseCluster.waitOnRegionServer(metaServer);
- log("Meta server down (2 of 3)");
- log("Waiting for RS shutdown to be handled by master");
- waitForRSShutdownToStartAndFinish(activeMaster,
- metaServer.getRegionServer().getServerName());
- log("RS shutdown done, waiting for no more RIT");
- blockUntilNoRIT(zkw, master);
- log("Verifying there are " + numRegions + " assigned on cluster");
- assertRegionsAssigned(cluster, regions);
-
- // Shutdown server hosting hbase:meta again
- metaServer = getServerHostingMeta(cluster);
- log("Stopping server hosting hbase:meta (3 of 3)");
- metaServer.getRegionServer().stop("Stopping hbase:meta server");
- cluster.hbaseCluster.waitOnRegionServer(metaServer);
- log("Meta server down (3 of 3)");
- log("Waiting for RS shutdown to be handled by master");
- waitForRSShutdownToStartAndFinish(activeMaster,
- metaServer.getRegionServer().getServerName());
- log("RS shutdown done, waiting for no more RIT");
- blockUntilNoRIT(zkw, master);
- log("Verifying there are " + numRegions + " assigned on cluster");
- assertRegionsAssigned(cluster, regions);
-
- if (cluster.getRegionServerThreads().size() != 1) {
- log("Online regionservers:");
- for (RegionServerThread rst : cluster.getRegionServerThreads()) {
- log("RS: " + rst.getRegionServer().getServerName());
- }
- }
- assertEquals(2, cluster.getRegionServerThreads().size());
-
-
// TODO: Bring random 3 of 4 RS down at the same time
ht.close();
@@ -314,26 +223,14 @@ public class TestRollingRestart {
LOG.debug("\n\nTRR: " + msg + "\n");
}
- private RegionServerThread getServerHostingMeta(MiniHBaseCluster cluster)
- throws IOException {
- return getServerHosting(cluster, HRegionInfo.FIRST_META_REGIONINFO);
- }
-
- private RegionServerThread getServerHosting(MiniHBaseCluster cluster,
- HRegionInfo region) throws IOException {
- for (RegionServerThread rst : cluster.getRegionServerThreads()) {
- if (ProtobufUtil.getOnlineRegions(rst.getRegionServer()).contains(region)) {
- return rst;
- }
- }
- return null;
- }
-
private int getNumberOfOnlineRegions(MiniHBaseCluster cluster) {
int numFound = 0;
for (RegionServerThread rst : cluster.getLiveRegionServerThreads()) {
numFound += rst.getRegionServer().getNumberOfOnlineRegions();
}
+ for (MasterThread mt : cluster.getMasterThreads()) {
+ numFound += mt.getMaster().getNumberOfOnlineRegions();
+ }
return numFound;
}
@@ -343,7 +240,8 @@ public class TestRollingRestart {
if (expectedRegions.size() > numFound) {
log("Expected to find " + expectedRegions.size() + " but only found"
+ " " + numFound);
- NavigableSet<String> foundRegions = getAllOnlineRegions(cluster);
+ NavigableSet<String> foundRegions =
+ HBaseTestingUtility.getAllOnlineRegions(cluster);
for (String region : expectedRegions) {
if (!foundRegions.contains(region)) {
log("Missing region: " + region);
@@ -364,23 +262,13 @@ public class TestRollingRestart {
}
}
- private NavigableSet<String> getAllOnlineRegions(MiniHBaseCluster cluster)
- throws IOException {
- NavigableSet<String> online = new TreeSet<String>();
- for (RegionServerThread rst : cluster.getLiveRegionServerThreads()) {
- for (HRegionInfo region : ProtobufUtil.getOnlineRegions(rst.getRegionServer())) {
- online.add(region.getRegionNameAsString());
- }
- }
- return online;
- }
-
private NavigableSet<String> getDoubleAssignedRegions(
MiniHBaseCluster cluster) throws IOException {
NavigableSet<String> online = new TreeSet<String>();
NavigableSet<String> doubled = new TreeSet<String>();
for (RegionServerThread rst : cluster.getLiveRegionServerThreads()) {
- for (HRegionInfo region : ProtobufUtil.getOnlineRegions(rst.getRegionServer())) {
+ for (HRegionInfo region : ProtobufUtil.getOnlineRegions(
+ rst.getRegionServer().getRSRpcServices())) {
if(!online.add(region.getRegionNameAsString())) {
doubled.add(region.getRegionNameAsString());
}
Modified: hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestTableLockManager.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestTableLockManager.java?rev=1581479&r1=1581478&r2=1581479&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestTableLockManager.java (original)
+++ hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestTableLockManager.java Tue Mar 25 19:34:52 2014
@@ -107,7 +107,7 @@ public class TestTableLockManager {
conf.setInt(TableLockManager.TABLE_WRITE_LOCK_TIMEOUT_MS, 3000);
prepareMiniCluster();
HMaster master = TEST_UTIL.getHBaseCluster().getMaster();
- master.getCoprocessorHost().load(TestLockTimeoutExceptionMasterObserver.class,
+ master.getMasterCoprocessorHost().load(TestLockTimeoutExceptionMasterObserver.class,
0, TEST_UTIL.getConfiguration());
ExecutorService executor = Executors.newSingleThreadExecutor();
@@ -159,7 +159,7 @@ public class TestTableLockManager {
// thread, send a request to disable, and then delete a table.
HMaster master = TEST_UTIL.getHBaseCluster().getMaster();
- master.getCoprocessorHost().load(TestAlterAndDisableMasterObserver.class,
+ master.getMasterCoprocessorHost().load(TestAlterAndDisableMasterObserver.class,
0, TEST_UTIL.getConfiguration());
ExecutorService executor = Executors.newFixedThreadPool(2);
Modified: hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestZKBasedOpenCloseRegion.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestZKBasedOpenCloseRegion.java?rev=1581479&r1=1581478&r2=1581479&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestZKBasedOpenCloseRegion.java (original)
+++ hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestZKBasedOpenCloseRegion.java Tue Mar 25 19:34:52 2014
@@ -111,7 +111,8 @@ public class TestZKBasedOpenCloseRegion
int rsIdx = 0;
HRegionServer regionServer =
TEST_UTIL.getHBaseCluster().getRegionServer(rsIdx);
- HRegionInfo hri = getNonMetaRegion(ProtobufUtil.getOnlineRegions(regionServer));
+ HRegionInfo hri = getNonMetaRegion(
+ ProtobufUtil.getOnlineRegions(regionServer.getRSRpcServices()));
LOG.debug("Asking RS to close region " + hri.getRegionNameAsString());
LOG.info("Unassign " + hri.getRegionNameAsString());
@@ -154,7 +155,7 @@ public class TestZKBasedOpenCloseRegion
cluster.getLiveRegionServerThreads().get(0).getRegionServer();
HRegionServer hr1 =
cluster.getLiveRegionServerThreads().get(1).getRegionServer();
- HRegionInfo hri = getNonMetaRegion(ProtobufUtil.getOnlineRegions(hr0));
+ HRegionInfo hri = getNonMetaRegion(ProtobufUtil.getOnlineRegions(hr0.getRSRpcServices()));
// fake that hr1 is processing the region
hr1.getRegionsInTransitionInRS().putIfAbsent(hri.getEncodedNameAsBytes(), true);
@@ -170,7 +171,7 @@ public class TestZKBasedOpenCloseRegion
hr1.getRegionsInTransitionInRS().remove(hri.getEncodedNameAsBytes());
// now try moving a region when there is no region in transition.
- hri = getNonMetaRegion(ProtobufUtil.getOnlineRegions(hr1));
+ hri = getNonMetaRegion(ProtobufUtil.getOnlineRegions(hr1.getRSRpcServices()));
TEST_UTIL.getHBaseAdmin().move(hri.getEncodedNameAsBytes(),
Bytes.toBytes(hr0.getServerName().toString()));
@@ -192,7 +193,8 @@ public class TestZKBasedOpenCloseRegion
int rsIdx = 0;
HRegionServer regionServer = TEST_UTIL.getHBaseCluster().getRegionServer(rsIdx);
- HRegionInfo hri = getNonMetaRegion(ProtobufUtil.getOnlineRegions(regionServer));
+ HRegionInfo hri = getNonMetaRegion(
+ ProtobufUtil.getOnlineRegions(regionServer.getRSRpcServices()));
LOG.debug("Asking RS to close region " + hri.getRegionNameAsString());
cluster.getMaster().assignmentManager.unassign(hri);
@@ -230,7 +232,8 @@ public class TestZKBasedOpenCloseRegion
Whitebox.setInternalState(regionServer, "tableDescriptors", htd);
Mockito.doThrow(new IOException()).when(htd).get((TableName) Mockito.any());
try {
- ProtobufUtil.openRegion(regionServer, regionServer.getServerName(), REGIONINFO);
+ ProtobufUtil.openRegion(regionServer.getRSRpcServices(),
+ regionServer.getServerName(), REGIONINFO);
fail("It should throw IOException ");
} catch (IOException e) {
}
Modified: hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/balancer/BalancerTestBase.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/balancer/BalancerTestBase.java?rev=1581479&r1=1581478&r2=1581479&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/balancer/BalancerTestBase.java (original)
+++ hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/balancer/BalancerTestBase.java Tue Mar 25 19:34:52 2014
@@ -164,7 +164,7 @@ public class BalancerTestBase {
}
protected BaseLoadBalancer.Cluster mockCluster(int[] mockCluster) {
- return new BaseLoadBalancer.Cluster(mockClusterServers(mockCluster, -1), null, null);
+ return new BaseLoadBalancer.Cluster(null, mockClusterServers(mockCluster, -1), null, null);
}
protected Map<ServerName, List<HRegionInfo>> mockClusterServers(int[] mockCluster, int numTables) {
Modified: hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/balancer/TestBaseLoadBalancer.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/balancer/TestBaseLoadBalancer.java?rev=1581479&r1=1581478&r2=1581479&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/balancer/TestBaseLoadBalancer.java (original)
+++ hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/balancer/TestBaseLoadBalancer.java Tue Mar 25 19:34:52 2014
@@ -18,6 +18,7 @@
package org.apache.hadoop.hbase.master.balancer;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@@ -39,11 +40,13 @@ import org.apache.hadoop.hbase.HRegionIn
import org.apache.hadoop.hbase.MediumTests;
import org.apache.hadoop.hbase.ServerName;
import org.apache.hadoop.hbase.master.LoadBalancer;
+import org.apache.hadoop.hbase.master.MasterServices;
import org.apache.hadoop.hbase.master.RegionPlan;
import org.apache.hadoop.hbase.master.balancer.BaseLoadBalancer.Cluster;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.experimental.categories.Category;
+import org.mockito.Mockito;
import com.google.common.collect.Lists;
@@ -52,6 +55,7 @@ public class TestBaseLoadBalancer extend
private static LoadBalancer loadBalancer;
private static final Log LOG = LogFactory.getLog(TestStochasticLoadBalancer.class);
+ private static final ServerName master = ServerName.valueOf("fake-master", 0, 1L);
int[][] regionsAndServersMocks = new int[][] {
// { num regions, num servers }
@@ -65,6 +69,9 @@ public class TestBaseLoadBalancer extend
Configuration conf = HBaseConfiguration.create();
loadBalancer = new MockBalancer();
loadBalancer.setConf(conf);
+ MasterServices st = Mockito.mock(MasterServices.class);
+ Mockito.when(st.getServerName()).thenReturn(master);
+ loadBalancer.setMasterServices(st);
}
public static class MockBalancer extends BaseLoadBalancer {
@@ -85,6 +92,17 @@ public class TestBaseLoadBalancer extend
*/
@Test
public void testImmediateAssignment() throws Exception {
+ List<ServerName> tmp = getListOfServerNames(randomServers(1, 0));
+ tmp.add(master);
+ ServerName sn = loadBalancer.randomAssignment(HRegionInfo.FIRST_META_REGIONINFO, tmp);
+ assertEquals(master, sn);
+ HRegionInfo hri = randomRegions(1, -1).get(0);
+ sn = loadBalancer.randomAssignment(hri, tmp);
+ assertNotEquals(master, sn);
+ tmp = new ArrayList<ServerName>();
+ tmp.add(master);
+ sn = loadBalancer.randomAssignment(hri, tmp);
+ assertEquals(master, sn);
for (int[] mock : regionsAndServersMocks) {
LOG.debug("testImmediateAssignment with " + mock[0] + " regions and " + mock[1] + " servers");
List<HRegionInfo> regions = randomRegions(mock[0]);
@@ -120,6 +138,18 @@ public class TestBaseLoadBalancer extend
*/
@Test
public void testBulkAssignment() throws Exception {
+ List<ServerName> tmp = getListOfServerNames(randomServers(5, 0));
+ List<HRegionInfo> hris = randomRegions(20);
+ hris.add(HRegionInfo.FIRST_META_REGIONINFO);
+ tmp.add(master);
+ Map<ServerName, List<HRegionInfo>> plans = loadBalancer.roundRobinAssignment(hris, tmp);
+ assertTrue(plans.get(master).contains(HRegionInfo.FIRST_META_REGIONINFO));
+ assertEquals(1, plans.get(master).size());
+ int totalRegion = 0;
+ for (List<HRegionInfo> regions: plans.values()) {
+ totalRegion += regions.size();
+ }
+ assertEquals(hris.size(), totalRegion);
for (int[] mock : regionsAndServersMocks) {
LOG.debug("testBulkAssignment with " + mock[0] + " regions and " + mock[1] + " servers");
List<HRegionInfo> regions = randomRegions(mock[0]);
@@ -256,7 +286,7 @@ public class TestBaseLoadBalancer extend
assignRegions(regions, oldServers, clusterState);
// should not throw exception:
- BaseLoadBalancer.Cluster cluster = new Cluster(clusterState, null, null);
+ BaseLoadBalancer.Cluster cluster = new Cluster(null, clusterState, null, null);
assertEquals(101 + 9, cluster.numRegions);
assertEquals(10, cluster.numServers); // only 10 servers because they share the same host + port
}
@@ -298,7 +328,7 @@ public class TestBaseLoadBalancer extend
when(locationFinder.getTopBlockLocations(regions.get(43))).thenReturn(
Lists.newArrayList(ServerName.valueOf("foo", 0, 0))); // this server does not exists in clusterStatus
- BaseLoadBalancer.Cluster cluster = new Cluster(clusterState, null, locationFinder);
+ BaseLoadBalancer.Cluster cluster = new Cluster(null, clusterState, null, locationFinder);
int r0 = ArrayUtils.indexOf(cluster.regions, regions.get(0)); // this is ok, it is just a test
int r1 = ArrayUtils.indexOf(cluster.regions, regions.get(1));
Modified: hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/cleaner/TestSnapshotFromMaster.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/cleaner/TestSnapshotFromMaster.java?rev=1581479&r1=1581478&r2=1581479&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/cleaner/TestSnapshotFromMaster.java (original)
+++ hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/cleaner/TestSnapshotFromMaster.java Tue Mar 25 19:34:52 2014
@@ -30,7 +30,6 @@ import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hbase.HBaseTestingUtility;
@@ -79,7 +78,6 @@ public class TestSnapshotFromMaster {
private static final HBaseTestingUtility UTIL = new HBaseTestingUtility();
private static final int NUM_RS = 2;
private static Path rootDir;
- private static Path snapshots;
private static FileSystem fs;
private static HMaster master;
@@ -101,7 +99,6 @@ public class TestSnapshotFromMaster {
fs = UTIL.getDFSCluster().getFileSystem();
master = UTIL.getMiniHBaseCluster().getMaster();
rootDir = master.getMasterFileSystem().getRootDir();
- snapshots = SnapshotDescriptionUtils.getSnapshotsDir(rootDir);
archiveDir = new Path(rootDir, HConstants.HFILE_ARCHIVE_DIRECTORY);
}
@@ -194,7 +191,8 @@ public class TestSnapshotFromMaster {
// then do the lookup for the snapshot that it is done
builder.setSnapshot(desc);
- IsSnapshotDoneResponse response = master.isSnapshotDone(null, builder.build());
+ IsSnapshotDoneResponse response =
+ master.getMasterRpcServices().isSnapshotDone(null, builder.build());
assertTrue("Snapshot didn't complete when it should have.", response.getDone());
// now try the case where we are looking for a snapshot we didn't take
@@ -209,7 +207,7 @@ public class TestSnapshotFromMaster {
SnapshotDescriptionUtils.writeSnapshotInfo(desc, snapshotDir, fs);
builder.setSnapshot(desc);
- response = master.isSnapshotDone(null, builder.build());
+ response = master.getMasterRpcServices().isSnapshotDone(null, builder.build());
assertTrue("Completed, on-disk snapshot not found", response.getDone());
}
@@ -217,7 +215,8 @@ public class TestSnapshotFromMaster {
public void testGetCompletedSnapshots() throws Exception {
// first check when there are no snapshots
GetCompletedSnapshotsRequest request = GetCompletedSnapshotsRequest.newBuilder().build();
- GetCompletedSnapshotsResponse response = master.getCompletedSnapshots(null, request);
+ GetCompletedSnapshotsResponse response =
+ master.getMasterRpcServices().getCompletedSnapshots(null, request);
assertEquals("Found unexpected number of snapshots", 0, response.getSnapshotsCount());
// write one snapshot to the fs
@@ -227,7 +226,7 @@ public class TestSnapshotFromMaster {
SnapshotDescriptionUtils.writeSnapshotInfo(snapshot, snapshotDir, fs);
// check that we get one snapshot
- response = master.getCompletedSnapshots(null, request);
+ response = master.getMasterRpcServices().getCompletedSnapshots(null, request);
assertEquals("Found unexpected number of snapshots", 1, response.getSnapshotsCount());
List<SnapshotDescription> snapshots = response.getSnapshotsList();
List<SnapshotDescription> expected = Lists.newArrayList(snapshot);
@@ -241,7 +240,7 @@ public class TestSnapshotFromMaster {
expected.add(snapshot);
// check that we get one snapshot
- response = master.getCompletedSnapshots(null, request);
+ response = master.getMasterRpcServices().getCompletedSnapshots(null, request);
assertEquals("Found unexpected number of snapshots", 2, response.getSnapshotsCount());
snapshots = response.getSnapshotsList();
assertEquals("Returned snapshots don't match created snapshots", expected, snapshots);
@@ -256,7 +255,7 @@ public class TestSnapshotFromMaster {
DeleteSnapshotRequest request = DeleteSnapshotRequest.newBuilder().setSnapshot(snapshot)
.build();
try {
- master.deleteSnapshot(null, request);
+ master.getMasterRpcServices().deleteSnapshot(null, request);
fail("Master didn't throw exception when attempting to delete snapshot that doesn't exist");
} catch (ServiceException e) {
LOG.debug("Correctly failed delete of non-existant snapshot:" + e.getMessage());
@@ -267,7 +266,7 @@ public class TestSnapshotFromMaster {
SnapshotDescriptionUtils.writeSnapshotInfo(snapshot, snapshotDir, fs);
// then delete the existing snapshot,which shouldn't cause an exception to be thrown
- master.deleteSnapshot(null, request);
+ master.getMasterRpcServices().deleteSnapshot(null, request);
}
/**
Modified: hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/OOMERegionServer.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/OOMERegionServer.java?rev=1581479&r1=1581478&r2=1581479&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/OOMERegionServer.java (original)
+++ hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/OOMERegionServer.java Tue Mar 25 19:34:52 2014
@@ -50,7 +50,7 @@ public class OOMERegionServer extends HR
try {
MutateRequest request =
RequestConverter.buildMutateRequest(regionName, put);
- super.mutate(null, request);
+ rpcServices.mutate(null, request);
for (int i = 0; i < 30; i++) {
// Add the batch update 30 times to bring on the OOME faster.
this.retainer.add(put);
Modified: hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestClusterId.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestClusterId.java?rev=1581479&r1=1581478&r2=1581479&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestClusterId.java (original)
+++ hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestClusterId.java Tue Mar 25 19:34:52 2014
@@ -23,8 +23,6 @@ import static org.junit.Assert.assertNot
import java.util.UUID;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
@@ -48,14 +46,10 @@ import org.junit.experimental.categories
@Category(MediumTests.class)
public class TestClusterId {
- private static final Log LOG =
- LogFactory.getLog(TestClusterId.class.getName());
-
private final HBaseTestingUtility TEST_UTIL =
new HBaseTestingUtility();
private JVMClusterUtil.RegionServerThread rst;
- private JVMClusterUtil.MasterThread mst;
@Before
public void setUp() throws Exception {
@@ -113,7 +107,7 @@ public class TestClusterId {
}
TEST_UTIL.startMiniHBaseCluster(1, 1);
HMaster master = TEST_UTIL.getHBaseCluster().getMaster();
- assertEquals(1, master.getServerManager().getOnlineServersList().size());
+ assertEquals(2, master.getServerManager().getOnlineServersList().size());
}
}
Modified: hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestEndToEndSplitTransaction.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestEndToEndSplitTransaction.java?rev=1581479&r1=1581478&r2=1581479&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestEndToEndSplitTransaction.java (original)
+++ hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestEndToEndSplitTransaction.java Tue Mar 25 19:34:52 2014
@@ -158,11 +158,12 @@ public class TestEndToEndSplitTransactio
// get and scan should now succeed without exception
ClientProtos.GetRequest request =
RequestConverter.buildGetRequest(regionName, new Get(row));
- server.get(null, request);
+ server.getRSRpcServices().get(null, request);
ScanRequest scanRequest = RequestConverter.buildScanRequest(
regionName, new Scan(row), 1, true);
try {
- server.scan(new PayloadCarryingRpcController(), scanRequest);
+ server.getRSRpcServices().scan(
+ new PayloadCarryingRpcController(), scanRequest);
} catch (ServiceException se) {
throw ProtobufUtil.getRemoteException(se);
}