Modified: hbase/trunk/src/main/java/org/apache/hadoop/hbase/util/Merge.java
URL: 
http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/util/Merge.java?rev=1138120&r1=1138119&r2=1138120&view=diff
==============================================================================
--- hbase/trunk/src/main/java/org/apache/hadoop/hbase/util/Merge.java (original)
+++ hbase/trunk/src/main/java/org/apache/hadoop/hbase/util/Merge.java Tue Jun 
21 18:31:26 2011
@@ -29,6 +29,7 @@ import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.hbase.HBaseConfiguration;
 import org.apache.hadoop.hbase.HConstants;
 import org.apache.hadoop.hbase.HRegionInfo;
+import org.apache.hadoop.hbase.HTableDescriptor;
 import org.apache.hadoop.hbase.KeyValue;
 import org.apache.hadoop.hbase.MasterNotRunningException;
 import org.apache.hadoop.hbase.ZooKeeperConnectionException;
@@ -153,7 +154,7 @@ public class Merge extends Configured im
     get.addColumn(HConstants.CATALOG_FAMILY, HConstants.REGIONINFO_QUALIFIER);
     List<KeyValue> cells2 =  rootRegion.get(get, null).list();
     HRegionInfo info2 = Writables.getHRegionInfo((cells2 == null)? null: 
cells2.get(0).getValue());
-    HRegion merged = merge(info1, rootRegion, info2, rootRegion);
+    HRegion merged = merge(HTableDescriptor.META_TABLEDESC, info1, rootRegion, 
info2, rootRegion);
     LOG.info("Adding " + merged.getRegionInfo() + " to " +
         rootRegion.getRegionInfo());
     HRegion.addRegionToMETA(rootRegion, merged);
@@ -216,8 +217,9 @@ public class Merge extends Configured im
     Get get = new Get(region1);
     get.addColumn(HConstants.CATALOG_FAMILY, HConstants.REGIONINFO_QUALIFIER);
     List<KeyValue> cells1 =  metaRegion1.get(get, null).list();
-    HRegionInfo info1 = Writables.getHRegionInfo((cells1 == null)? null: 
cells1.get(0).getValue());
-    if (info1== null) {
+    HRegionInfo info1 =
+      Writables.getHRegionInfo((cells1 == null)? null: 
cells1.get(0).getValue());
+    if (info1 == null) {
       throw new NullPointerException("info1 is null using key " +
           Bytes.toStringBinary(region1) + " in " + meta1);
     }
@@ -235,7 +237,9 @@ public class Merge extends Configured im
     if (info2 == null) {
       throw new NullPointerException("info2 is null using key " + meta2);
     }
-    HRegion merged = merge(info1, metaRegion1, info2, metaRegion2);
+    HTableDescriptor htd = 
FSUtils.getTableDescriptor(FileSystem.get(getConf()),
+      this.rootdir, this.tableName);
+    HRegion merged = merge(htd, info1, metaRegion1, info2, metaRegion2);
 
     // Now find the meta region which will contain the newly merged region
 
@@ -267,8 +271,8 @@ public class Merge extends Configured im
    * to scan the meta if the resulting merged region does not go in either)
    * Returns HRegion object for newly merged region
    */
-  private HRegion merge(HRegionInfo info1, HRegion meta1, HRegionInfo info2,
-      HRegion meta2)
+  private HRegion merge(final HTableDescriptor htd, HRegionInfo info1,
+      HRegion meta1, HRegionInfo info2, HRegion meta2)
   throws IOException {
     if (info1 == null) {
       throw new IOException("Could not find " + Bytes.toStringBinary(region1) 
+ " in " +
@@ -280,9 +284,9 @@ public class Merge extends Configured im
     }
     HRegion merged = null;
     HLog log = utils.getLog();
-    HRegion r1 = HRegion.openHRegion(info1, log, getConf());
+    HRegion r1 = HRegion.openHRegion(info1, htd, log, getConf());
     try {
-      HRegion r2 = HRegion.openHRegion(info2, log, getConf());
+      HRegion r2 = HRegion.openHRegion(info2, htd, log, getConf());
       try {
         merged = HRegion.merge(r1, r2);
       } finally {

Modified: hbase/trunk/src/main/java/org/apache/hadoop/hbase/util/MetaUtils.java
URL: 
http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/util/MetaUtils.java?rev=1138120&r1=1138119&r2=1138120&view=diff
==============================================================================
--- hbase/trunk/src/main/java/org/apache/hadoop/hbase/util/MetaUtils.java 
(original)
+++ hbase/trunk/src/main/java/org/apache/hadoop/hbase/util/MetaUtils.java Tue 
Jun 21 18:31:26 2011
@@ -20,14 +20,23 @@
 
 package org.apache.hadoop.hbase.util;
 
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.TreeMap;
+
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.hbase.HBaseConfiguration;
-import org.apache.hadoop.hbase.HColumnDescriptor;
 import org.apache.hadoop.hbase.HConstants;
+import org.apache.hadoop.hbase.HRegionInfo;
+import org.apache.hadoop.hbase.HTableDescriptor;
+import org.apache.hadoop.hbase.KeyValue;
 import org.apache.hadoop.hbase.client.Delete;
 import org.apache.hadoop.hbase.client.Get;
 import org.apache.hadoop.hbase.client.HTable;
@@ -36,17 +45,7 @@ import org.apache.hadoop.hbase.client.Re
 import org.apache.hadoop.hbase.client.Scan;
 import org.apache.hadoop.hbase.regionserver.HRegion;
 import org.apache.hadoop.hbase.regionserver.InternalScanner;
-import org.apache.hadoop.hbase.regionserver.Store;
 import org.apache.hadoop.hbase.regionserver.wal.HLog;
-import org.apache.hadoop.hbase.HRegionInfo;
-import org.apache.hadoop.hbase.KeyValue;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.TreeMap;
 
 /**
  * Contains utility methods for manipulating HBase meta tables.
@@ -59,7 +58,6 @@ public class MetaUtils {
   private static final Log LOG = LogFactory.getLog(MetaUtils.class);
   private final Configuration conf;
   private FileSystem fs;
-  private Path rootdir;
   private HLog log;
   private HRegion rootRegion;
   private Map<byte [], HRegion> metaRegions = 
Collections.synchronizedSortedMap(
@@ -89,8 +87,6 @@ public class MetaUtils {
    */
   private void initialize() throws IOException {
     this.fs = FileSystem.get(this.conf);
-    // Get root directory of HBase installation
-    this.rootdir = FSUtils.getRootDir(this.conf);
   }
 
   /**
@@ -266,14 +262,16 @@ public class MetaUtils {
     if (this.rootRegion != null) {
       return this.rootRegion;
     }
-    this.rootRegion = HRegion.openHRegion(HRegionInfo.ROOT_REGIONINFO, 
getLog(),
+    this.rootRegion = HRegion.openHRegion(HRegionInfo.ROOT_REGIONINFO,
+      HTableDescriptor.ROOT_TABLEDESC, getLog(),
       this.conf);
     this.rootRegion.compactStores();
     return this.rootRegion;
   }
 
   private HRegion openMetaRegion(HRegionInfo metaInfo) throws IOException {
-    HRegion meta = HRegion.openHRegion(metaInfo, getLog(), this.conf);
+    HRegion meta = HRegion.openHRegion(metaInfo, 
HTableDescriptor.META_TABLEDESC,
+      getLog(), this.conf);
     meta.compactStores();
     return meta;
   }

Modified: hbase/trunk/src/test/java/org/apache/hadoop/hbase/HBaseTestCase.java
URL: 
http://svn.apache.org/viewvc/hbase/trunk/src/test/java/org/apache/hadoop/hbase/HBaseTestCase.java?rev=1138120&r1=1138119&r2=1138120&view=diff
==============================================================================
--- hbase/trunk/src/test/java/org/apache/hadoop/hbase/HBaseTestCase.java 
(original)
+++ hbase/trunk/src/test/java/org/apache/hadoop/hbase/HBaseTestCase.java Tue 
Jun 21 18:31:26 2011
@@ -173,7 +173,7 @@ public abstract class HBaseTestCase exte
   throws IOException {
     HRegion r = new HRegion(closedRegion.getTableDir(), closedRegion.getLog(),
         closedRegion.getFilesystem(), closedRegion.getConf(),
-        closedRegion.getRegionInfo(), null);
+        closedRegion.getRegionInfo(), closedRegion.getTableDesc(), null);
     r.initialize();
     return r;
   }

Modified: 
hbase/trunk/src/test/java/org/apache/hadoop/hbase/TestRegionRebalancing.java
URL: 
http://svn.apache.org/viewvc/hbase/trunk/src/test/java/org/apache/hadoop/hbase/TestRegionRebalancing.java?rev=1138120&r1=1138119&r2=1138120&view=diff
==============================================================================
--- 
hbase/trunk/src/test/java/org/apache/hadoop/hbase/TestRegionRebalancing.java 
(original)
+++ 
hbase/trunk/src/test/java/org/apache/hadoop/hbase/TestRegionRebalancing.java 
Tue Jun 21 18:31:26 2011
@@ -37,6 +37,7 @@ import org.apache.hadoop.hbase.client.Pu
 import org.apache.hadoop.hbase.regionserver.HRegionServer;
 import org.apache.hadoop.hbase.regionserver.HRegion;
 import org.apache.hadoop.hbase.util.Bytes;
+import org.apache.hadoop.hbase.util.FSUtils;
 import org.apache.hadoop.hbase.util.JVMClusterUtil;
 
 /**
@@ -91,6 +92,9 @@ public class TestRegionRebalancing exten
       HRegion.addRegionToMETA(meta, region);
     }
     closeRootAndMeta();
+
+    // Add new table descriptor file
+    FSUtils.createTableDescriptor(this.desc, this.conf);
   }
 
   /**

Modified: 
hbase/trunk/src/test/java/org/apache/hadoop/hbase/coprocessor/TestCoprocessorInterface.java
URL: 
http://svn.apache.org/viewvc/hbase/trunk/src/test/java/org/apache/hadoop/hbase/coprocessor/TestCoprocessorInterface.java?rev=1138120&r1=1138119&r2=1138120&view=diff
==============================================================================
--- 
hbase/trunk/src/test/java/org/apache/hadoop/hbase/coprocessor/TestCoprocessorInterface.java
 (original)
+++ 
hbase/trunk/src/test/java/org/apache/hadoop/hbase/coprocessor/TestCoprocessorInterface.java
 Tue Jun 21 18:31:26 2011
@@ -183,7 +183,7 @@ public class TestCoprocessorInterface ex
     //HRegionInfo info = new HRegionInfo(tableName, null, null, false);
     HRegion r = new HRegion(closedRegion.getTableDir(), closedRegion.getLog(),
         closedRegion.getFilesystem(), closedRegion.getConf(),
-        closedRegion.getRegionInfo(), null);
+        closedRegion.getRegionInfo(), closedRegion.getTableDesc(), null);
     r.initialize();
 
     // this following piece is a hack. currently a coprocessorHost

Modified: 
hbase/trunk/src/test/java/org/apache/hadoop/hbase/coprocessor/TestWALObserver.java
URL: 
http://svn.apache.org/viewvc/hbase/trunk/src/test/java/org/apache/hadoop/hbase/coprocessor/TestWALObserver.java?rev=1138120&r1=1138119&r2=1138120&view=diff
==============================================================================
--- 
hbase/trunk/src/test/java/org/apache/hadoop/hbase/coprocessor/TestWALObserver.java
 (original)
+++ 
hbase/trunk/src/test/java/org/apache/hadoop/hbase/coprocessor/TestWALObserver.java
 Tue Jun 21 18:31:26 2011
@@ -273,9 +273,9 @@ public class TestWALObserver {
         // Make a new wal for new region open.
         HLog wal2 = createWAL(newConf);
         Path tableDir =
-        HTableDescriptor.getTableDir(hbaseRootDir, hri.getTableName());
+          HTableDescriptor.getTableDir(hbaseRootDir, hri.getTableName());
         HRegion region = new HRegion(tableDir, wal2, FileSystem.get(newConf),
-          newConf, hri, TEST_UTIL.getHBaseCluster().getRegionServer(0));
+          newConf, hri, htd, TEST_UTIL.getHBaseCluster().getRegionServer(0));
 
         long seqid2 = region.initialize();
         SampleRegionWALObserver cp2 =

Modified: 
hbase/trunk/src/test/java/org/apache/hadoop/hbase/master/TestCatalogJanitor.java
URL: 
http://svn.apache.org/viewvc/hbase/trunk/src/test/java/org/apache/hadoop/hbase/master/TestCatalogJanitor.java?rev=1138120&r1=1138119&r2=1138120&view=diff
==============================================================================
--- 
hbase/trunk/src/test/java/org/apache/hadoop/hbase/master/TestCatalogJanitor.java
 (original)
+++ 
hbase/trunk/src/test/java/org/apache/hadoop/hbase/master/TestCatalogJanitor.java
 Tue Jun 21 18:31:26 2011
@@ -24,9 +24,11 @@ import static org.junit.Assert.assertNot
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 
+import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.FileSystem;
@@ -40,6 +42,8 @@ import org.apache.hadoop.hbase.KeyValue;
 import org.apache.hadoop.hbase.NotAllMetaRegionsOnlineException;
 import org.apache.hadoop.hbase.Server;
 import org.apache.hadoop.hbase.ServerName;
+import org.apache.hadoop.hbase.TableDescriptors;
+import org.apache.hadoop.hbase.TableExistsException;
 import org.apache.hadoop.hbase.catalog.CatalogTracker;
 import org.apache.hadoop.hbase.client.Result;
 import org.apache.hadoop.hbase.executor.ExecutorService;
@@ -119,11 +123,8 @@ public class TestCatalogJanitor {
     private final AssignmentManager asm;
 
     MockMasterServices(final Server server) throws IOException {
-      this.mfs = new MasterFileSystem(server, null);
-      HTableDescriptor htd = new HTableDescriptor("table");
-      htd.addFamily(new HColumnDescriptor("family"));
+      this.mfs = new MasterFileSystem(server, this, null);
       this.asm = Mockito.mock(AssignmentManager.class);
-      Mockito.when(asm.getTableDescriptor("table")).thenReturn(htd);
     }
 
     @Override
@@ -185,6 +186,43 @@ public class TestCatalogJanitor {
     public boolean isStopped() {
       return false;
     }
+
+    @Override
+    public TableDescriptors getTableDescriptors() {
+      return new TableDescriptors() {
+        @Override
+        public HTableDescriptor remove(String tablename) throws IOException {
+          // TODO Auto-generated method stub
+          return null;
+        }
+        
+        @Override
+        public Map<String, HTableDescriptor> getAll() throws IOException {
+          // TODO Auto-generated method stub
+          return null;
+        }
+        
+        @Override
+        public HTableDescriptor get(byte[] tablename)
+        throws TableExistsException, FileNotFoundException, IOException {
+          return get(Bytes.toString(tablename));
+        }
+        
+        @Override
+        public HTableDescriptor get(String tablename)
+        throws TableExistsException, FileNotFoundException, IOException {
+          HTableDescriptor htd = new HTableDescriptor("table");
+          htd.addFamily(new HColumnDescriptor("family"));
+          return htd;
+        }
+        
+        @Override
+        public void add(HTableDescriptor htd) throws IOException {
+          // TODO Auto-generated method stub
+          
+        }
+      };
+    }
   }
 
   @Test

Modified: 
hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/TestCompactSelection.java
URL: 
http://svn.apache.org/viewvc/hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/TestCompactSelection.java?rev=1138120&r1=1138119&r2=1138120&view=diff
==============================================================================
--- 
hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/TestCompactSelection.java
 (original)
+++ 
hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/TestCompactSelection.java
 Tue Jun 21 18:31:26 2011
@@ -87,7 +87,7 @@ public class TestCompactSelection extend
     HLog hlog = new HLog(fs, logdir, oldLogDir, conf);
     HRegion.createHRegion(info, basedir, conf, htd);
     Path tableDir = new Path(basedir, Bytes.toString(htd.getName()));
-    HRegion region = new HRegion(tableDir, hlog, fs, conf, info, null);
+    HRegion region = new HRegion(tableDir, hlog, fs, conf, info, htd, null);
 
     store = new Store(basedir, region, hcd, fs, conf);
     TEST_FILE = StoreFile.getRandomFilename(fs, store.getHomedir());

Modified: 
hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/TestSplitTransaction.java
URL: 
http://svn.apache.org/viewvc/hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/TestSplitTransaction.java?rev=1138120&r1=1138119&r2=1138120&view=diff
==============================================================================
--- 
hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/TestSplitTransaction.java
 (original)
+++ 
hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/TestSplitTransaction.java
 Tue Jun 21 18:31:26 2011
@@ -154,7 +154,7 @@ public class TestSplitTransaction {
     for (HRegion r: daughters) {
       // Open so can count its content.
       HRegion openRegion = HRegion.openHRegion(this.testdir, r.getRegionInfo(),
-         r.getLog(), r.getConf());
+         r.getTableDesc(), r.getLog(), r.getConf());
       try {
         int count = countRows(openRegion);
         assertTrue(count > 0 && count != rowcount);
@@ -209,7 +209,7 @@ public class TestSplitTransaction {
     for (HRegion r: daughters) {
       // Open so can count its content.
       HRegion openRegion = HRegion.openHRegion(this.testdir, r.getRegionInfo(),
-         r.getLog(), r.getConf());
+         r.getTableDesc(), r.getLog(), r.getConf());
       try {
         int count = countRows(openRegion);
         assertTrue(count > 0 && count != rowcount);
@@ -254,6 +254,7 @@ public class TestSplitTransaction {
     htd.addFamily(hcd);
     HRegionInfo hri = new HRegionInfo(htd.getName(), STARTROW, ENDROW);
     HRegion.createHRegion(hri, testdir, TEST_UTIL.getConfiguration(), htd);
-    return HRegion.openHRegion(testdir, hri, wal, 
TEST_UTIL.getConfiguration());
+    return HRegion.openHRegion(testdir, hri, htd, wal,
+      TEST_UTIL.getConfiguration());
   }
 }
\ No newline at end of file

Modified: 
hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/TestStore.java
URL: 
http://svn.apache.org/viewvc/hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/TestStore.java?rev=1138120&r1=1138119&r2=1138120&view=diff
==============================================================================
--- 
hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/TestStore.java 
(original)
+++ 
hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/TestStore.java 
Tue Jun 21 18:31:26 2011
@@ -56,7 +56,6 @@ import org.apache.hadoop.hbase.security.
 import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;
 import org.apache.hadoop.hbase.util.EnvironmentEdgeManagerTestHelper;
-import org.apache.hadoop.hbase.util.IncrementingEnvironmentEdge;
 import org.apache.hadoop.hbase.util.ManualEnvironmentEdge;
 import org.mockito.Mockito;
 
@@ -129,7 +128,7 @@ public class TestStore extends TestCase 
     htd.addFamily(hcd);
     HRegionInfo info = new HRegionInfo(htd.getName(), null, null, false);
     HLog hlog = new HLog(fs, logdir, oldLogDir, conf);
-    HRegion region = new HRegion(basedir, hlog, fs, conf, info, null);
+    HRegion region = new HRegion(basedir, hlog, fs, conf, info, htd, null);
 
     store = new Store(basedir, region, hcd, fs, conf);
   }

Modified: 
hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/handler/TestOpenRegionHandler.java
URL: 
http://svn.apache.org/viewvc/hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/handler/TestOpenRegionHandler.java?rev=1138120&r1=1138119&r2=1138120&view=diff
==============================================================================
--- 
hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/handler/TestOpenRegionHandler.java
 (original)
+++ 
hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/handler/TestOpenRegionHandler.java
 Tue Jun 21 18:31:26 2011
@@ -238,7 +238,7 @@ public class TestOpenRegionHandler {
     HRegion region =
          HRegion.createHRegion(hri, HBaseTestingUtility.getTestDir(), HTU
             .getConfiguration(), htd);
-    OpenRegionHandler handler = new OpenRegionHandler(server, rss, hri) {
+    OpenRegionHandler handler = new OpenRegionHandler(server, rss, hri, htd) {
       HRegion openRegion() {
         // Open region first, then remove znode as though it'd been hijacked.
         //HRegion region = super.openRegion();

Modified: 
hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestWALReplay.java
URL: 
http://svn.apache.org/viewvc/hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestWALReplay.java?rev=1138120&r1=1138119&r2=1138120&view=diff
==============================================================================
--- 
hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestWALReplay.java
 (original)
+++ 
hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestWALReplay.java
 Tue Jun 21 18:31:26 2011
@@ -165,7 +165,7 @@ public class TestWALReplay {
     wal3.setSequenceNumber(wal2.getSequenceNumber());
     try {
       final HRegion region = new HRegion(basedir, wal3, this.fs, this.conf, 
hri,
-          null);
+        htd, null);
       long seqid = region.initialize();
       assertTrue(seqid > wal3.getSequenceNumber());
 
@@ -193,11 +193,11 @@ public class TestWALReplay {
     final HRegionInfo hri = createBasic3FamilyHRegionInfo(tableNameStr);
     final Path basedir = new Path(this.hbaseRootDir, tableNameStr);
     deleteDir(basedir);
-    HTableDescriptor htd = createBasic3FamilyHTD(tableNameStr);
+    final HTableDescriptor htd = createBasic3FamilyHTD(tableNameStr);
     HRegion region2 = HRegion.createHRegion(hri,
         hbaseRootDir, this.conf, htd);
     HLog wal = createWAL(this.conf);
-    HRegion region = HRegion.openHRegion(hri, wal, this.conf);
+    HRegion region = HRegion.openHRegion(hri, htd, wal, this.conf);
     Path f =  new Path(basedir, "hfile");
     HFile.Writer writer = new HFile.Writer(this.fs, f);
     byte [] family = htd.getFamilies().iterator().next().getName();
@@ -218,7 +218,7 @@ public class TestWALReplay {
         runWALSplit(newConf);
         HLog wal2 = createWAL(newConf);
         HRegion region2 = new HRegion(basedir, wal2, FileSystem.get(newConf),
-          newConf, hri, null);
+          newConf, hri, htd, null);
         long seqid2 = region2.initialize();
         assertTrue(seqid2 > -1);
 
@@ -257,7 +257,7 @@ public class TestWALReplay {
     // of the families during the load of edits so its seqid is not same as
     // others to test we do right thing when different seqids.
     HLog wal = createWAL(this.conf);
-    HRegion region = new HRegion(basedir, wal, this.fs, this.conf, hri, null);
+    HRegion region = new HRegion(basedir, wal, this.fs, this.conf, hri, htd, 
null);
     long seqid = region.initialize();
     // HRegionServer usually does this. It knows the largest seqid across all 
regions.
     wal.setSequenceNumber(seqid);
@@ -282,7 +282,7 @@ public class TestWALReplay {
     wal.close();
     runWALSplit(this.conf);
     HLog wal2 = createWAL(this.conf);
-    HRegion region2 = new HRegion(basedir, wal2, this.fs, this.conf, hri, 
null) {
+    HRegion region2 = new HRegion(basedir, wal2, this.fs, this.conf, hri, htd, 
null) {
       @Override
       protected boolean restoreEdit(Store s, KeyValue kv) {
         super.restoreEdit(s, kv);
@@ -317,7 +317,7 @@ public class TestWALReplay {
         // Make a new wal for new region open.
         HLog wal3 = createWAL(newConf);
         final AtomicInteger countOfRestoredEdits = new AtomicInteger(0);
-        HRegion region3 = new HRegion(basedir, wal3, newFS, newConf, hri, 
null) {
+        HRegion region3 = new HRegion(basedir, wal3, newFS, newConf, hri, htd, 
null) {
           @Override
           protected boolean restoreEdit(Store s, KeyValue kv) {
             boolean b = super.restoreEdit(s, kv);
@@ -409,7 +409,7 @@ public class TestWALReplay {
         final AtomicInteger flushcount = new AtomicInteger(0);
         try {
           final HRegion region =
-              new HRegion(basedir, newWal, newFS, newConf, hri, null) {
+              new HRegion(basedir, newWal, newFS, newConf, hri, htd, null) {
             protected boolean internalFlushcache(
                 final HLog wal, final long myseqid, MonitoredTask status)
             throws IOException {

Added: 
hbase/trunk/src/test/java/org/apache/hadoop/hbase/util/TestFSTableDescriptors.java
URL: 
http://svn.apache.org/viewvc/hbase/trunk/src/test/java/org/apache/hadoop/hbase/util/TestFSTableDescriptors.java?rev=1138120&view=auto
==============================================================================
--- 
hbase/trunk/src/test/java/org/apache/hadoop/hbase/util/TestFSTableDescriptors.java
 (added)
+++ 
hbase/trunk/src/test/java/org/apache/hadoop/hbase/util/TestFSTableDescriptors.java
 Tue Jun 21 18:31:26 2011
@@ -0,0 +1,133 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.hbase.util;
+
+import static org.junit.Assert.*;
+
+import java.io.IOException;
+
+import org.apache.hadoop.fs.FileSystem;
+import org.apache.hadoop.fs.Path;
+import org.apache.hadoop.hbase.HBaseTestingUtility;
+import org.apache.hadoop.hbase.HColumnDescriptor;
+import org.apache.hadoop.hbase.HConstants;
+import org.apache.hadoop.hbase.HTableDescriptor;
+import org.apache.hadoop.hbase.TableDescriptors;
+import org.apache.hadoop.hbase.TableExistsException;
+import org.apache.hadoop.hbase.util.Bytes;
+import org.apache.hadoop.hbase.util.FSUtils;
+import org.junit.Test;
+
+
+/**
+ * Tests for {@link FSTableDescriptors}.
+ */
+public class TestFSTableDescriptors {
+  private static final HBaseTestingUtility UTIL = new HBaseTestingUtility();
+
+  @Test
+  public void testRemoves() throws IOException {
+    final String name = "testRemoves";
+    FileSystem fs = FileSystem.get(UTIL.getConfiguration());
+    // Cleanup old tests if any detrius laying around.
+    Path rootdir = new Path(HBaseTestingUtility.getTestDir(), name);
+    TableDescriptors htds = new FSTableDescriptors(fs, rootdir);
+    HTableDescriptor htd = new HTableDescriptor(name);
+    htds.add(htd);
+    assertNotNull(htds.remove(htd.getNameAsString()));
+    assertNull(htds.remove(htd.getNameAsString()));
+  }
+
+  @Test public void testReadingHTDFromFS() throws IOException {
+    final String name = "testReadingHTDFromFS";
+    FileSystem fs = FileSystem.get(UTIL.getConfiguration());
+    HTableDescriptor htd = new HTableDescriptor(name);
+    Path rootdir = HBaseTestingUtility.getTestDir(name);
+    createHTDInFS(fs, rootdir, htd);
+    HTableDescriptor htd2 =
+      FSUtils.getTableDescriptor(fs, rootdir, htd.getNameAsString());
+    assertTrue(htd.equals(htd2));
+  }
+
+  private void createHTDInFS(final FileSystem fs, Path rootdir,
+      final HTableDescriptor htd)
+  throws IOException {
+    FSUtils.createTableDescriptor(fs, rootdir, htd);
+  }
+
+  @Test public void testHTableDescriptors()
+  throws IOException, InterruptedException {
+    final String name = "testHTableDescriptors";
+    FileSystem fs = FileSystem.get(UTIL.getConfiguration());
+    // Cleanup old tests if any detrius laying around.
+    Path rootdir = new Path(HBaseTestingUtility.getTestDir(), name);
+    final int count = 10;
+    // Write out table infos.
+    for (int i = 0; i < count; i++) {
+      HTableDescriptor htd = new HTableDescriptor(name + i);
+      createHTDInFS(fs, rootdir, htd);
+    }
+    FSTableDescriptors htds = new FSTableDescriptors(fs, rootdir);
+    for (int i = 0; i < count; i++) {
+      assertTrue(htds.get(Bytes.toBytes(name + i)) !=  null);
+    }
+    for (int i = 0; i < count; i++) {
+      assertTrue(htds.get(Bytes.toBytes(name + i)) !=  null);
+    }
+    // Update the table infos
+    for (int i = 0; i < count; i++) {
+      HTableDescriptor htd = new HTableDescriptor(name + i);
+      htd.addFamily(new HColumnDescriptor("" + i));
+      FSUtils.updateHTableDescriptor(fs, rootdir, htd);
+    }
+    for (int i = 0; i < count; i++) {
+      assertTrue(htds.get(Bytes.toBytes(name + i)) !=  null);
+    }
+    for (int i = 0; i < count; i++) {
+      assertTrue(htds.get(Bytes.toBytes(name + i)) !=  null);
+    }
+    assertEquals(htds.invocations, count * 4);
+    assertEquals(htds.cachehits, count * 2);
+    assertTrue(htds.get(HConstants.ROOT_TABLE_NAME) != null);
+    assertEquals(htds.invocations, count * 4 + 1);
+    assertEquals(htds.cachehits, count * 2 + 1);
+  }
+
+  @Test (expected=java.io.FileNotFoundException.class)
+  public void testNoSuchTable() throws IOException {
+    final String name = "testNoSuchTable";
+    FileSystem fs = FileSystem.get(UTIL.getConfiguration());
+    // Cleanup old tests if any detrius laying around.
+    Path rootdir = new Path(HBaseTestingUtility.getTestDir(), name);
+    TableDescriptors htds = new FSTableDescriptors(fs, rootdir);
+    htds.get("NoSuchTable");
+  }
+
+  @Test
+  public void testUpdates() throws IOException {
+    final String name = "testUpdates";
+    FileSystem fs = FileSystem.get(UTIL.getConfiguration());
+    // Cleanup old tests if any detrius laying around.
+    Path rootdir = new Path(HBaseTestingUtility.getTestDir(), name);
+    TableDescriptors htds = new FSTableDescriptors(fs, rootdir);
+    HTableDescriptor htd = new HTableDescriptor(name);
+    htds.add(htd);
+    htds.add(htd);
+    htds.add(htd);
+  }
+}
\ No newline at end of file

Modified: 
hbase/trunk/src/test/java/org/apache/hadoop/hbase/util/TestMergeTool.java
URL: 
http://svn.apache.org/viewvc/hbase/trunk/src/test/java/org/apache/hadoop/hbase/util/TestMergeTool.java?rev=1138120&r1=1138119&r2=1138120&view=diff
==============================================================================
--- hbase/trunk/src/test/java/org/apache/hadoop/hbase/util/TestMergeTool.java 
(original)
+++ hbase/trunk/src/test/java/org/apache/hadoop/hbase/util/TestMergeTool.java 
Tue Jun 21 18:31:26 2011
@@ -190,7 +190,7 @@ public class TestMergeTool extends HBase
 
     // Now verify that we can read all the rows from regions 0, 1
     // in the new merged region.
-    HRegion merged = HRegion.openHRegion(mergedInfo, log, this.conf);
+    HRegion merged = HRegion.openHRegion(mergedInfo, this.desc, log, 
this.conf);
     verifyMerge(merged, upperbound);
     merged.close();
     LOG.info("Verified " + msg);


Reply via email to