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