@Test public void testCreateHolderWithBitSet() { createHolderTest(true); }
@Test public void testFillExceptionWithBitSet() { fillException(true); }
@Test public void testFillLargeExceptionWithoutBitSet() { fillLargeException(false); }
@Test public void testFillSpecialExceptionWithBitSet() { RegionVersionHolder h = createHolder(true); h.recordVersion(1l); createSpecialException(h); assertEquals(1, h.getExceptionCount()); RVVException e = (RVVException) h.getExceptionForTest().iterator().next(); assertTrue(h.isSpecialException(e, h)); h.recordVersion(2l); // BUG: the exception is not removed // assertIndexDetailsEquals("unexpected RVV exception : " + h, 0, h.getExceptionCount()); }
private void createHolderTest(boolean useBitSet) { RegionVersionHolder h = createHolder(useBitSet); assertEquals(0, h.getExceptionCount()); }
@Test public void testSkippedVersionCreatesExceptionWithoutBitSet() { skippedVersionCreatesException(false); }
@Test public void testRecordZeroDoesNothingWithBitSet() { recordZeroDoesNothing(true); }
@Test public void testRecordSequentialVersionsWithBitSet() { recordSequentialVersions(true); }
private void recordZeroDoesNothing(boolean useBitSet) { RegionVersionHolder h = createHolder(useBitSet); h.recordVersion(0l); assertEquals(0, h.getExceptionCount()); assertEquals(0l, h.getVersion()); }
@Test public void testSkippedVersionCreatesExceptionWithBitSet() { skippedVersionCreatesException(true); }
@Test public void testRecordZeroDoesNothingWithoutBitSet() { recordZeroDoesNothing(false); }
@Test public void testRecordSequentialVersionsWithoutBitSet() { recordSequentialVersions(false); }
private void skippedVersionCreatesException(boolean useBitSet) { RegionVersionHolder h = createHolder(useBitSet); h.recordVersion(2l); assertEquals(1, h.getExceptionCount()); assertEquals(2l, h.getVersion()); }
@Test public void testFillLargeExceptionWithBitSet() { fillLargeException(true); }
@Test public void testFillExceptionWithoutBitSet() { fillException(false); }
@Test public void testCreateHolderWithoutBitSet() { createHolderTest(false); }
private void fillLargeException(boolean useBitSet) { RegionVersionHolder h = createHolder(useBitSet); long bigVersion = RegionVersionHolder.BIT_SET_WIDTH + 1; h.recordVersion(bigVersion); for (long i = 0l; i < bigVersion; i++) { h.recordVersion(i); } assertEquals("expected no exceptions in " + h, 0, h.getExceptionCount()); assertEquals(bigVersion, h.getVersion()); }
private void recordSequentialVersions(boolean useBitSet) { RegionVersionHolder h = createHolder(useBitSet); h.recordVersion(1l); h.recordVersion(2l); h.recordVersion(3l); assertEquals(0, h.getExceptionCount()); assertEquals(3l, h.getVersion()); }
private void fillException(boolean useBitSet) { RegionVersionHolder h = createHolder(useBitSet); h.recordVersion(3l); h.recordVersion(1l); h.recordVersion(2l); h.recordVersion(2l); assertEquals(0, h.getExceptionCount()); assertEquals(3l, h.getVersion()); }
@Test public void testReceiveDuplicateAfterBitSetFlushWithBitSet() { RegionVersionHolder h = createHolder(true); long bigVersion = RegionVersionHolder.BIT_SET_WIDTH + 1; h.recordVersion(bigVersion); for (long i = 0l; i < bigVersion; i++) { h.recordVersion(i); } h.recordVersion(bigVersion); assertEquals("expected no exceptions in " + h, 0, h.getExceptionCount()); assertEquals(bigVersion, h.getVersion()); }