@Test public void test48066_1() { DiskStoreID id0 = new DiskStoreID(0, 0); DiskRegionVersionVector rvv0 = new DiskRegionVersionVector(id0); for (int i = 1; i <= 3; i++) { rvv0.recordVersion(id0, i); } System.out.println("rvv0=" + rvv0.fullToString()); DiskRegionVersionVector rvv1 = (DiskRegionVersionVector) rvv0.getCloneForTransmission(); System.out.println("after clone, rvv1=" + rvv1.fullToString()); DiskRegionVersionVector rvv2 = new DiskRegionVersionVector(id0); for (int i = 1; i <= 10; i++) { rvv2.recordVersion(id0, i); } rvv2.recordVersions(rvv1); System.out.println("after init, rvv2=" + rvv2.fullToString()); rvv2.recordVersion(id0, 4); System.out.println("after record 4, rvv2=" + rvv2.fullToString()); assertEquals(4, rvv2.getCurrentVersion()); rvv2.recordVersion(id0, 7); System.out.println("after record 7, rvv2=" + rvv2.fullToString()); assertEquals(7, rvv2.getCurrentVersion()); }
@Test public void testRVVSerialization() throws Exception { DiskStoreID ownerId = new DiskStoreID(0, 0); DiskStoreID id1 = new DiskStoreID(0, 1); DiskStoreID id2 = new DiskStoreID(1, 0); DiskRegionVersionVector rvv = new DiskRegionVersionVector(ownerId); rvv.recordVersion(id1, 5); rvv.recordVersion(id1, 6); rvv.recordVersion(id1, 7); rvv.recordVersion(id1, 9); rvv.recordVersion(id1, 20); rvv.recordVersion(id1, 11); rvv.recordVersion(id1, 12); rvv.recordGCVersion(id2, 5); rvv.recordGCVersion(id1, 3); assertTrue(rvv.sameAs(rvv.getCloneForTransmission())); HeapDataOutputStream out = new HeapDataOutputStream(Version.CURRENT); DataSerializer.writeObject(rvv.getCloneForTransmission(), out); byte[] bytes = out.toByteArray(); DataInputStream dis = new DataInputStream(new ByteArrayInputStream(bytes)); DiskRegionVersionVector rvv2 = DataSerializer.readObject(dis); assertTrue(rvv.sameAs(rvv2)); }
@Test public void test48066_2() { DiskStoreID id0 = new DiskStoreID(0, 0); DiskRegionVersionVector rvv0 = new DiskRegionVersionVector(id0); for (int i = 1; i <= 10; i++) { rvv0.recordVersion(id0, i); } DiskRegionVersionVector rvv1 = new DiskRegionVersionVector(id0); rvv0.recordVersions(rvv1); System.out.println("rvv0=" + rvv0.fullToString()); rvv0.recordVersion(id0, 4); System.out.println("after record 4, rvv0=" + rvv0.fullToString()); assertEquals(4, rvv0.getCurrentVersion()); rvv0.recordVersion(id0, 7); System.out.println("after record 7, rvv0=" + rvv0.fullToString()); assertEquals(7, rvv0.getCurrentVersion()); assertFalse(rvv0.contains(id0, 5)); DiskRegionVersionVector rvv2 = (DiskRegionVersionVector) rvv0.getCloneForTransmission(); System.out.println("after clone, rvv2=" + rvv2.fullToString()); assertEquals(11, rvv0.getNextVersion()); assertFalse(rvv2.contains(id0, 5)); assertEquals(11, rvv2.getNextVersion()); }
@Test public void recordVersionIntoLocalMemberShouldFailIfRegionIsPersistent() { LocalRegion mockRegion = mock(LocalRegion.class); when(mockRegion.isInitialized()).thenReturn(true); when(mockRegion.getDataPolicy()).thenReturn(DataPolicy.PERSISTENT_REPLICATE); final String local = getIPLiteral(); DiskStoreID ownerId = new DiskStoreID(); DiskRegionVersionVector rvv = new DiskRegionVersionVector(ownerId, mockRegion); DiskVersionTag tag = new DiskVersionTag(); tag.setRegionVersion(1L); tag.setMemberID(ownerId); expectedException.expect(InternalGemFireError.class); rvv.recordVersion(ownerId, tag); }
@Test public void testSpecialException() { DiskStoreID id0 = new DiskStoreID(0, 0); DiskStoreID id1 = new DiskStoreID(0, 1); DiskStoreID id2 = new DiskStoreID(1, 0); DiskRegionVersionVector rvv0 = new DiskRegionVersionVector(id0); rvv0.getNextVersion(); rvv0.getNextVersion(); rvv0.getNextVersion(); rvv0.recordVersion(id1, 1); rvv0.recordVersion(id1, 2); DiskRegionVersionVector rvv1 = new DiskRegionVersionVector(id1); rvv1.recordVersions(rvv0); rvv1.recordVersion(id1, 3); RegionVersionHolder holder_at_rvv1 = rvv1.getLocalExceptions(); RegionVersionHolder holder_at_rvv0 = rvv0.getMemberToVersion().get(id1); holder_at_rvv1.addException(2, 4); assertFalse(rvv1.isNewerThanOrCanFillExceptionsFor(rvv0)); assertFalse(rvv0.isNewerThanOrCanFillExceptionsFor(rvv1)); assertTrue(rvv1.dominates(rvv0)); assertTrue(rvv0.dominates(rvv1)); }
private void doExceptionsWithContains(DiskStoreID id, DiskRegionVersionVector rvv) { rvv.recordVersion(id, 10); // Make sure we have exceptions from 0-10 assertFalse(rvv.contains(id, 5)); rvv.recordVersion(id, 5); assertTrue(rvv.contains(id, 5)); assertFalse(rvv.contains(id, 4)); assertFalse(rvv.contains(id, 6)); for (int i = 0; i < 10; i++) { rvv.recordVersion(id, i); } for (int i = 0; i < 10; i++) { assertTrue(rvv.contains(id, i)); } assertEquals(0, rvv.getExceptionCount(id)); }
/** * Test that we can copy the member to version map correctly. */ @Test public void testCopyMemberToVersion() { DiskStoreID id0 = new DiskStoreID(0, 0); DiskStoreID id1 = new DiskStoreID(0, 1); DiskStoreID id2 = new DiskStoreID(1, 0); DiskRegionVersionVector rvv0 = new DiskRegionVersionVector(id0); rvv0.getNextVersion(); rvv0.getNextVersion(); rvv0.getNextVersion(); rvv0.recordVersion(id1, 1); rvv0.recordVersion(id1, 3); DiskRegionVersionVector rvv1 = new DiskRegionVersionVector(id1); rvv1.recordVersions(rvv0); assertEquals(3, rvv1.getCurrentVersion()); assertFalse(rvv1.contains(id1, 2)); assertTrue(rvv1.contains(id1, 1)); assertTrue(rvv1.contains(id1, 3)); assertTrue(rvv1.contains(id0, 3)); assertTrue(rvv0.sameAs(rvv1)); rvv1.recordVersion(id1, 2); assertTrue(rvv1.isNewerThanOrCanFillExceptionsFor(rvv0)); assertFalse(rvv0.isNewerThanOrCanFillExceptionsFor(rvv1)); assertTrue(rvv1.dominates(rvv0)); assertFalse(rvv0.dominates(rvv1)); }
rvv.recordVersion(id1, 1); rvv.recordVersion(id1, 3); rvv.recordVersion(id1, 5); rvv.recordVersion(id2, 5000); rvv.recordVersion(id2, 5001); rvv.recordVersion(id2, 5005);
rvv0.recordVersion(id1, 1); rvv0.recordVersion(id1, 3); rvv0.recordVersion(id1, 5);