HBASE-14985 TimeRange constructors should set allTime when appropriate (Geoffrey Jacoby)

This commit is contained in:
tedyu 2016-04-11 16:59:45 -07:00
parent 8964573394
commit ff9c92e168
2 changed files with 47 additions and 2 deletions

View File

@ -36,8 +36,10 @@ import org.apache.hadoop.hbase.util.Bytes;
@InterfaceAudience.Public
@InterfaceStability.Stable
public class TimeRange {
private long minStamp = 0L;
private long maxStamp = Long.MAX_VALUE;
private static final long MIN_TIME = 0L;
private static final long MAX_TIME = Long.MAX_VALUE;
private long minStamp = MIN_TIME;
private long maxStamp = MAX_TIME;
private boolean allTime = false;
/**
@ -54,6 +56,9 @@ public class TimeRange {
*/
public TimeRange(long minStamp) {
this.minStamp = minStamp;
if (this.minStamp == MIN_TIME){
this.allTime = true;
}
}
/**
@ -80,6 +85,9 @@ public class TimeRange {
}
this.minStamp = minStamp;
this.maxStamp = maxStamp;
if (this.minStamp == MIN_TIME && this.maxStamp == MAX_TIME){
this.allTime = true;
}
}
/**

View File

@ -17,6 +17,8 @@
*/
package org.apache.hadoop.hbase.regionserver;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import org.apache.hadoop.hbase.io.TimeRange;
@ -25,6 +27,8 @@ import org.apache.hadoop.hbase.testclassification.RegionServerTests;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import java.io.IOException;
@Category({RegionServerTests.class, SmallTests.class})
public class TestTimeRangeTracker {
@Test
@ -81,6 +85,39 @@ public class TestTimeRangeTracker {
assertTrue(trr.getMinimumTimestamp() == 0);
}
@Test
public void testRangeConstruction() throws IOException {
TimeRange defaultRange = new TimeRange();
assertEquals(0L, defaultRange.getMin());
assertEquals(Long.MAX_VALUE, defaultRange.getMax());
assertTrue(defaultRange.isAllTime());
TimeRange oneArgRange = new TimeRange(0L);
assertEquals(0L, oneArgRange.getMin());
assertEquals(Long.MAX_VALUE, oneArgRange.getMax());
assertTrue(oneArgRange.isAllTime());
TimeRange oneArgRange2 = new TimeRange(1);
assertEquals(1, oneArgRange2.getMin());
assertEquals(Long.MAX_VALUE, oneArgRange2.getMax());
assertFalse(oneArgRange2.isAllTime());
TimeRange twoArgRange = new TimeRange(0L, Long.MAX_VALUE);
assertEquals(0L, twoArgRange.getMin());
assertEquals(Long.MAX_VALUE, twoArgRange.getMax());
assertTrue(twoArgRange.isAllTime());
TimeRange twoArgRange2 = new TimeRange(0L, Long.MAX_VALUE - 1);
assertEquals(0L, twoArgRange2.getMin());
assertEquals(Long.MAX_VALUE - 1, twoArgRange2.getMax());
assertFalse(twoArgRange2.isAllTime());
TimeRange twoArgRange3 = new TimeRange(1, Long.MAX_VALUE);
assertEquals(1, twoArgRange3.getMin());
assertEquals(Long.MAX_VALUE, twoArgRange3.getMax());
assertFalse(twoArgRange3.isAllTime());
}
/**
* Bit of code to test concurrent access on this class.
* @param args