HBASE-14637 Loosen TestChoreService assert AND have TestDataBlockEncoders do less work (and add timeouts)
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/71b38d60 Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/71b38d60 Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/71b38d60 Branch: refs/heads/hbase-12439 Commit: 71b38d60bbd26ff80ac23c53149d8da85976f39b Parents: d9ee191 Author: stack <st...@apache.org> Authored: Sat Oct 17 16:14:45 2015 -0700 Committer: stack <st...@apache.org> Committed: Sat Oct 17 16:14:45 2015 -0700 ---------------------------------------------------------------------- .../java/org/apache/hadoop/hbase/TestChoreService.java | 9 ++++----- .../hbase/io/encoding/TestDataBlockEncoders.java | 13 ++++++++++++- 2 files changed, 16 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/71b38d60/hbase-common/src/test/java/org/apache/hadoop/hbase/TestChoreService.java ---------------------------------------------------------------------- diff --git a/hbase-common/src/test/java/org/apache/hadoop/hbase/TestChoreService.java b/hbase-common/src/test/java/org/apache/hadoop/hbase/TestChoreService.java index 14a2cbb..9ee6b40 100644 --- a/hbase-common/src/test/java/org/apache/hadoop/hbase/TestChoreService.java +++ b/hbase-common/src/test/java/org/apache/hadoop/hbase/TestChoreService.java @@ -38,8 +38,6 @@ import org.junit.experimental.categories.Category; @Category(SmallTests.class) public class TestChoreService { - private static final Log LOG = LogFactory.getLog(TestChoreService.class); - /** * A few ScheduledChore samples that are useful for testing with ChoreService */ @@ -373,7 +371,7 @@ public class TestChoreService { final int period = 100; final int delta = 5; ChoreService service = ChoreService.getInstance("testForceTrigger"); - CountingChore chore = new CountingChore("countingChore", period); + final CountingChore chore = new CountingChore("countingChore", period); try { service.scheduleChore(chore); Thread.sleep(10 * period + delta); @@ -393,11 +391,12 @@ public class TestChoreService { chore.triggerNow(); Thread.sleep(delta); - assertTrue(chore.getCountOfChoreCalls() == 16); + assertTrue("" + chore.getCountOfChoreCalls(), chore.getCountOfChoreCalls() == 16); Thread.sleep(10 * period + delta); - assertTrue(chore.getCountOfChoreCalls() == 26); + // Be loosey-goosey. It used to be '26' but it was a big flakey relying on timing. + assertTrue("" + chore.getCountOfChoreCalls(), chore.getCountOfChoreCalls() > 16); } finally { shutdownService(service); } http://git-wip-us.apache.org/repos/asf/hbase/blob/71b38d60/hbase-server/src/test/java/org/apache/hadoop/hbase/io/encoding/TestDataBlockEncoders.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/io/encoding/TestDataBlockEncoders.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/io/encoding/TestDataBlockEncoders.java index 075c6fe..63fe57b 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/io/encoding/TestDataBlockEncoders.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/io/encoding/TestDataBlockEncoders.java @@ -30,6 +30,7 @@ import java.util.Collection; import java.util.List; import java.util.Random; +import org.apache.hadoop.hbase.CategoryBasedTimeout; import org.apache.hadoop.hbase.Cell; import org.apache.hadoop.hbase.CellComparator; import org.apache.hadoop.hbase.CellUtil; @@ -49,11 +50,14 @@ import org.apache.hadoop.hbase.testclassification.IOTests; import org.apache.hadoop.hbase.testclassification.LargeTests; import org.apache.hadoop.hbase.util.Bytes; import org.apache.hadoop.hbase.util.test.RedundantKVGenerator; +import org.junit.Rule; import org.junit.Test; import org.junit.experimental.categories.Category; +import org.junit.rules.TestRule; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.junit.runners.Parameterized.Parameters; +import org.mortbay.log.Log; /** * Test all of the data block encoding algorithms for correctness. Most of the @@ -62,9 +66,11 @@ import org.junit.runners.Parameterized.Parameters; @Category({IOTests.class, LargeTests.class}) @RunWith(Parameterized.class) public class TestDataBlockEncoders { + @Rule public final TestRule timeout = CategoryBasedTimeout.builder(). + withTimeout(this.getClass()).withLookingForStuckThread(true).build(); private static int NUMBER_OF_KV = 10000; - private static int NUM_RANDOM_SEEKS = 10000; + private static int NUM_RANDOM_SEEKS = 1000; private static int ENCODED_DATA_OFFSET = HConstants.HFILEBLOCK_HEADER_SIZE + DataBlockEncoding.ID_SIZE; @@ -182,6 +188,7 @@ public class TestDataBlockEncoders { List<DataBlockEncoder.EncodedSeeker> encodedSeekers = new ArrayList<DataBlockEncoder.EncodedSeeker>(); for (DataBlockEncoding encoding : DataBlockEncoding.values()) { + Log.info("Encoding: " + encoding); // Off heap block data support not added for PREFIX_TREE DBE yet. // TODO remove this once support is added. HBASE-12298 if (this.useOffheapData && encoding == DataBlockEncoding.PREFIX_TREE) continue; @@ -189,6 +196,7 @@ public class TestDataBlockEncoders { if (encoder == null) { continue; } + Log.info("Encoder: " + encoder); ByteBuffer encodedBuffer = encodeKeyValues(encoding, sampleKv, getEncodingContext(Compression.Algorithm.NONE, encoding), this.useOffheapData); HFileContext meta = new HFileContextBuilder() @@ -202,6 +210,7 @@ public class TestDataBlockEncoders { seeker.setCurrentBuffer(new SingleByteBuff(encodedBuffer)); encodedSeekers.add(seeker); } + Log.info("Testing it!"); // test it! // try a few random seeks for (boolean seekBefore : new boolean[] { false, true }) { @@ -219,6 +228,7 @@ public class TestDataBlockEncoders { } // check edge cases + Log.info("Checking edge cases"); checkSeekingConsistency(encodedSeekers, false, sampleKv.get(0)); for (boolean seekBefore : new boolean[] { false, true }) { checkSeekingConsistency(encodedSeekers, seekBefore, sampleKv.get(sampleKv.size() - 1)); @@ -226,6 +236,7 @@ public class TestDataBlockEncoders { Cell lastMidKv =CellUtil.createLastOnRowCol(midKv); checkSeekingConsistency(encodedSeekers, seekBefore, lastMidKv); } + Log.info("Done"); } static ByteBuffer encodeKeyValues(DataBlockEncoding encoding, List<KeyValue> kvs,