From 9aee88e03a376702cad4f5e84acefafad2abf99c Mon Sep 17 00:00:00 2001 From: Sean Busbey Date: Sat, 22 Jun 2019 00:06:39 -0500 Subject: [PATCH] HBASE-22615 Make TestChoreService more robust to timing * phrase fudge factor "deltas" in terms of the original period * increase the delta allowed for chore timing from 5% to 20% * improve some assertions Closes #328 Signed-off-by: Reid Chan Signed-off-by: Sakthi --- .../org/apache/hadoop/hbase/TestChoreService.java | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) 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 ce838fac75..74e4ebf081 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 @@ -354,17 +354,17 @@ public class TestChoreService { public void testFrequencyOfChores() throws InterruptedException { final int period = 100; // Small delta that acts as time buffer (allowing chores to complete if running slowly) - final int delta = 5; + final int delta = period/5; ChoreService service = new ChoreService("testFrequencyOfChores"); CountingChore chore = new CountingChore("countingChore", period); try { service.scheduleChore(chore); Thread.sleep(10 * period + delta); - assertTrue(chore.getCountOfChoreCalls() == 11); + assertEquals("10 periods have elapsed.", 11, chore.getCountOfChoreCalls()); - Thread.sleep(10 * period); - assertTrue(chore.getCountOfChoreCalls() == 21); + Thread.sleep(10 * period + delta); + assertEquals("20 periods have elapsed.", 21, chore.getCountOfChoreCalls()); } finally { shutdownService(service); } @@ -380,14 +380,14 @@ public class TestChoreService { @Test public void testForceTrigger() throws InterruptedException { final int period = 100; - final int delta = 10; + final int delta = period/10; ChoreService service = new ChoreService("testForceTrigger"); final CountingChore chore = new CountingChore("countingChore", period); try { service.scheduleChore(chore); Thread.sleep(10 * period + delta); - assertTrue(chore.getCountOfChoreCalls() == 11); + assertEquals("10 periods have elapsed.", 11, chore.getCountOfChoreCalls()); // Force five runs of the chore to occur, sleeping between triggers to ensure the // chore has time to run @@ -402,12 +402,14 @@ public class TestChoreService { chore.triggerNow(); Thread.sleep(delta); - assertTrue("" + chore.getCountOfChoreCalls(), chore.getCountOfChoreCalls() == 16); + assertEquals("Trigger was called 5 times after 10 periods.", 16, + chore.getCountOfChoreCalls()); Thread.sleep(10 * period + delta); // Be loosey-goosey. It used to be '26' but it was a big flakey relying on timing. - assertTrue("" + chore.getCountOfChoreCalls(), chore.getCountOfChoreCalls() > 16); + assertTrue("Expected at least 16 invocations, instead got " + chore.getCountOfChoreCalls(), + chore.getCountOfChoreCalls() > 16); } finally { shutdownService(service); } @@ -419,7 +421,7 @@ public class TestChoreService { ChoreService service = new ChoreService("testCorePoolIncrease", initialCorePoolSize, false); try { - assertEquals("Should have a core pool of size: " + initialCorePoolSize, initialCorePoolSize, + assertEquals("Setting core pool size gave unexpected results.", initialCorePoolSize, service.getCorePoolSize()); final int slowChorePeriod = 100; @@ -703,7 +705,7 @@ public class TestChoreService { Stoppable stopperForGroup1 = new SampleStopper(); Stoppable stopperForGroup2 = new SampleStopper(); final int period = 100; - final int delta = 10; + final int delta = period/10; try { ScheduledChore chore1_group1 = new DoNothingChore("c1g1", stopperForGroup1, period); -- 2.11.4.GIT