Repository: hbase Updated Branches: refs/heads/HBASE-14070.HLC 4c56a3c28 -> bc48d841b
HBASE-18509 (ADDENDUM) Fix NPEs when mocking RS clocks in tests Change-Id: I3a302fb2a89ab950bea89a0e9e6bdba30cff5358 Signed-off-by: Apekshit Sharma <a...@apache.org> Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/bc48d841 Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/bc48d841 Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/bc48d841 Branch: refs/heads/HBASE-14070.HLC Commit: bc48d841bce1dbcc31016ff55837b9f1b242e3d6 Parents: 4c56a3c Author: Amit Patel <iamnota...@gmail.com> Authored: Wed Aug 23 13:00:06 2017 -0700 Committer: Apekshit Sharma <a...@apache.org> Committed: Wed Aug 23 15:07:07 2017 -0700 ---------------------------------------------------------------------- .../main/java/org/apache/hadoop/hbase/regionserver/Clocks.java | 5 +++++ .../hadoop/hbase/regionserver/TestHRegionReplayEvents.java | 2 +- .../hadoop/hbase/regionserver/TestRegionSplitPolicy.java | 6 ++---- .../org/apache/hadoop/hbase/regionserver/TestWALLockup.java | 2 +- .../hadoop/hbase/regionserver/wal/AbstractTestWALReplay.java | 5 ++++- 5 files changed, 13 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/bc48d841/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/Clocks.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/Clocks.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/Clocks.java index a401007..ba4d13a 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/Clocks.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/Clocks.java @@ -51,6 +51,11 @@ public class Clocks { clockTypes.add(hybridLogicalClock.getClockType()); } + @VisibleForTesting + public Clocks() { + this(Clock.DEFAULT_MAX_CLOCK_SKEW_IN_MS); + } + public long update(ClockType clockType, long timestamp) { return getClock(clockType).update(timestamp); } http://git-wip-us.apache.org/repos/asf/hbase/blob/bc48d841/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.java index 54eaa57..ac7d28e 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.java @@ -173,7 +173,7 @@ public class TestHRegionReplayEvents { when(rss.getServerName()).thenReturn(ServerName.valueOf("foo", 1, 1)); when(rss.getConfiguration()).thenReturn(CONF); when(rss.getRegionServerAccounting()).thenReturn(new RegionServerAccounting(CONF)); - when(rss.getClocks().getClock(any())).thenReturn(new SystemClock()); + when(rss.getClocks()).thenReturn(new Clocks()); String string = org.apache.hadoop.hbase.executor.EventType.RS_COMPACTED_FILES_DISCHARGER .toString(); ExecutorService es = new ExecutorService(string); http://git-wip-us.apache.org/repos/asf/hbase/blob/bc48d841/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionSplitPolicy.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionSplitPolicy.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionSplitPolicy.java index ecc2d8d..811c0a2 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionSplitPolicy.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionSplitPolicy.java @@ -27,11 +27,9 @@ import java.util.ArrayList; import java.util.List; import org.apache.hadoop.conf.Configuration; -import org.apache.hadoop.hbase.SystemClock; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.HConstants; -import org.apache.hadoop.hbase.ClockType; import org.apache.hadoop.hbase.HRegionInfo; import org.apache.hadoop.hbase.HTableDescriptor; import org.apache.hadoop.hbase.testclassification.RegionServerTests; @@ -108,7 +106,7 @@ public class TestRegionSplitPolicy { final List<Region> regions = new ArrayList<>(); Mockito.when(rss.getOnlineRegions(TABLENAME)).thenReturn(regions); Mockito.when(mockRegion.getRegionServerServices()).thenReturn(rss); - Mockito.when(rss.getClocks().getClock(ClockType.SYSTEM)).thenReturn(new SystemClock()); + Mockito.when(rss.getClocks()).thenReturn(new Clocks()); // Set max size for this 'table'. long maxSplitSize = 1024L; htd.setMaxFileSize(maxSplitSize); @@ -170,7 +168,7 @@ public class TestRegionSplitPolicy { Mockito.when(mockRegion.getRegionServerServices()).thenReturn(rss); Mockito.when(mockRegion.getBlockedRequestsCount()).thenReturn(0L); Mockito.when(mockRegion.getWriteRequestsCount()).thenReturn(0L); - Mockito.when(rss.getClocks().getClock(ClockType.SYSTEM)).thenReturn(new SystemClock()); + Mockito.when(rss.getClocks()).thenReturn(new Clocks()); BusyRegionSplitPolicy policy = (BusyRegionSplitPolicy)RegionSplitPolicy.create(mockRegion, conf); http://git-wip-us.apache.org/repos/asf/hbase/blob/bc48d841/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestWALLockup.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestWALLockup.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestWALLockup.java index cf535c8..da67e29 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestWALLockup.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestWALLockup.java @@ -205,7 +205,7 @@ public class TestWALLockup { Mockito.when(server.isStopped()).thenReturn(false); Mockito.when(server.isAborted()).thenReturn(false); RegionServerServices services = Mockito.mock(RegionServerServices.class); - Mockito.when(services.getClocks().getClock(ClockType.SYSTEM)).thenReturn(new SystemClock()); + Mockito.when(services.getClocks()).thenReturn(new Clocks()); // OK. Now I have my mocked up Server & RegionServerServices and dodgy WAL, go ahead with test. FileSystem fs = FileSystem.get(CONF); http://git-wip-us.apache.org/repos/asf/hbase/blob/bc48d841/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/AbstractTestWALReplay.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/AbstractTestWALReplay.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/AbstractTestWALReplay.java index ebbcf2e..6943932 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/AbstractTestWALReplay.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/AbstractTestWALReplay.java @@ -63,6 +63,7 @@ import org.apache.hadoop.hbase.client.Scan; import org.apache.hadoop.hbase.client.Table; import org.apache.hadoop.hbase.client.TableDescriptorBuilder; import org.apache.hadoop.hbase.monitoring.MonitoredTask; +import org.apache.hadoop.hbase.regionserver.Clocks; import org.apache.hadoop.hbase.shaded.protobuf.generated.ZooKeeperProtos.SplitLogTask.RecoveryMode; import org.apache.hadoop.hbase.regionserver.DefaultStoreEngine; import org.apache.hadoop.hbase.regionserver.DefaultStoreFlusher; @@ -687,7 +688,9 @@ public abstract class AbstractTestWALReplay { WAL wal = createWAL(this.conf, hbaseRootDir, logName); RegionServerServices rsServices = Mockito.mock(RegionServerServices.class); Mockito.doReturn(false).when(rsServices).isAborted(); - when(rsServices.getClocks().getClock(clock.getClockType())).thenReturn(clock); + Clocks clocks = new Clocks(); + clocks.setClock(clock); + Mockito.when(rsServices.getClocks()).thenReturn(clocks); when(rsServices.getServerName()).thenReturn(ServerName.valueOf("foo", 10, 10)); Configuration customConf = new Configuration(this.conf); customConf.set(DefaultStoreEngine.DEFAULT_STORE_FLUSHER_CLASS_KEY,