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);
       }