diff --git hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionServerMetrics.java hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionServerMetrics.java index 06db468..2431c1e 100644 --- hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionServerMetrics.java +++ hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionServerMetrics.java @@ -20,12 +20,16 @@ package org.apache.hadoop.hbase.regionserver; 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.*; import org.apache.hadoop.hbase.client.*; import org.apache.hadoop.hbase.test.MetricsAssertHelper; import org.apache.hadoop.hbase.testclassification.MediumTests; import org.apache.hadoop.hbase.testclassification.RegionServerTests; import org.apache.hadoop.hbase.util.Bytes; +import org.apache.hadoop.hbase.util.FSUtils; import org.apache.hadoop.hbase.util.Threads; import org.apache.log4j.Level; import org.apache.log4j.Logger; @@ -71,7 +75,8 @@ public class TestRegionServerMetrics { private static MetricsRegionServerSource serverSource; private static final int NUM_SCAN_NEXT = 30; private static int numScanNext = 0; - private static byte[] cf = Bytes.toBytes("cf"); + private static final String FAM = "cf"; + private static byte[] cf = Bytes.toBytes(FAM); private static byte[] row = Bytes.toBytes("row"); private static byte[] qualifier = Bytes.toBytes("qual"); private static byte[] val = Bytes.toBytes("val"); @@ -90,6 +95,9 @@ public class TestRegionServerMetrics { conf.setInt("hbase.hstore.compaction.max", 100); conf.setInt(HConstants.REGIONSERVER_INFO_PORT, -1); + // Set cleaner chore interval to be 1 second, so it can clean up compacted files faster. + conf.setInt("hbase.hfile.compaction.discharger.interval", 1000); + TEST_UTIL.startMiniCluster(1, 1); cluster = TEST_UTIL.getHBaseCluster(); cluster.waitForActiveAndReadyMaster(); @@ -400,7 +408,7 @@ public class TestRegionServerMetrics { assertCounter("ScanSize_num_ops", numScanNext); } - @Test + @Test (timeout = 20000) public void testMobMetrics() throws IOException, InterruptedException { TableName tableName = TableName.valueOf("testMobMetricsLocal"); int numHfiles = 5; @@ -451,6 +459,22 @@ public class TestRegionServerMetrics { admin.flush(tableName); } region.getTableDesc().getFamily(cf).setMobThreshold(0); + + // Check the store file numbers, wait until cleaner moves compacted files to archive + + Path regionDir = ((HRegion) region).getRegionFileSystem().getRegionDir(); + Path famDir = new Path(regionDir, FAM); + FileSystem fs = ((HRegion) region).getRegionFileSystem().getFileSystem(); + + FileStatus[] files; + + do { + Thread.sleep(200); + + files = FSUtils.listStatus(fs, famDir); + LOG.error("ABC " + files.length + FAM); + } while (files.length > (numHfiles + 1)); + // metrics are reset by the region initialization ((HRegion) region).initialize(); region.compact(true);