public void checkManyDeltasPersistFutureDone() throws Exception { appendDeltas(d1, d2, d3); Future<Void> future = target.persist(d3.getResultingVersion()); awaitPersistence(); assertTrue(future.isDone()); assertEquals(null, future.get()); assertEquals(d3.getResultingVersion(), target.getLastPersistedVersion()); }
public void testHashedVersionAccessibleOnDeltaBoundaries() throws Exception { appendDeltas(d1, d2, d3); assertEquals(V0, target.getHashedVersion(0)); assertEquals(d1.getResultingVersion(), target.getHashedVersion(2)); assertEquals(d2.getResultingVersion(), target.getHashedVersion(4)); assertEquals(d3.getResultingVersion(), target.getHashedVersion(5)); assertNull(target.getHashedVersion(1)); assertNull(target.getHashedVersion(3)); assertNull(target.getHashedVersion(6)); }
public void testDeltaHistoryQueriesCorrectHistory() throws Exception { appendDeltas(d1, d2, d3); target.persist(d3.getResultingVersion()); checkHistoryForDeltas(d1); checkHistoryForDeltas(d1, d2); checkHistoryForDeltas(d2, d3); checkHistoryForDeltas(d1, d2, d3); }
public void testDeltaHistoryInterruptQueriesCorrectHistory() throws Exception { appendDeltas(d1, d2, d3); target.persist(d3.getResultingVersion()); checkHistoryForDeltasWithInterrupt(0, d1); checkHistoryForDeltasWithInterrupt(1, d1, d2); checkHistoryForDeltasWithInterrupt(2, d1, d2, d3); }
@SuppressWarnings("rawtypes") private void checkGetTransformedDeltasThrowsException(HashedVersion startVersion, HashedVersion endVersion, Receiver<TransformedWaveletDelta> receiver, Class exceptionClass) { try { target.getTransformedDeltaHistory(startVersion, endVersion, receiver); fail("Expected exception not thrown."); } catch (Exception ex) { assertEquals(IllegalArgumentException.class, exceptionClass); } }
public void testDeltaHistoryRequiresCorrectHash() throws Exception { appendDeltas(d1); target.persist(d1.getResultingVersion()); Receiver<TransformedWaveletDelta> transformedDeltasReceiver = new ListReceiver<TransformedWaveletDelta>(); Receiver<ByteStringMessage<Proto.ProtocolAppliedWaveletDelta>> appliedDeltasReceiver = new ListReceiver<ByteStringMessage<Proto.ProtocolAppliedWaveletDelta>>(); // Wrong start hash. checkGetTransformedDeltasThrowsException(HashedVersion.unsigned(0), d1.getResultingVersion(), transformedDeltasReceiver, IllegalArgumentException.class); checkGetAppliedDeltasThrowsException(HashedVersion.unsigned(0), d1.getResultingVersion(), appliedDeltasReceiver, IllegalArgumentException.class); // Wrong end hash. checkGetTransformedDeltasThrowsException(V0, HashedVersion.unsigned(d1.getResultingVersion().getVersion()), transformedDeltasReceiver, IllegalArgumentException.class); checkGetAppliedDeltasThrowsException(V0, HashedVersion.unsigned(d1.getResultingVersion().getVersion()), appliedDeltasReceiver, IllegalArgumentException.class); }
public void testSnapshotMetadataReflectsDeltas() throws Exception { HashedVersion v2 = d1.getResultingVersion(); appendDeltas(d1); assertEquals(v2, target.getCurrentVersion()); ReadableWaveletData snapshot = target.getSnapshot(); assertEquals(AUTHOR, snapshot.getCreator()); assertEquals(v2, snapshot.getHashedVersion()); assertEquals(TS, snapshot.getCreationTime()); assertEquals(TS, snapshot.getLastModifiedTime()); assertEquals(2, snapshot.getVersion()); HashedVersion v4 = d2.getResultingVersion(); appendDeltas(d2); assertEquals(v4, target.getCurrentVersion()); snapshot = target.getSnapshot(); assertEquals(v4, snapshot.getHashedVersion()); assertEquals(4, snapshot.getVersion()); // Last-modified-time doesn't change due to unworthiness. }
public void testEmptyStateIsEmpty() { assertNull(target.getSnapshot()); assertEquals(V0, target.getCurrentVersion()); assertEquals(V0, target.getHashedVersion(0)); assertNull(target.getTransformedDelta(V0)); assertNull(target.getAppliedDelta(V0)); }
@Override public void setUp() throws Exception { d1 = makeDelta(V0, TS, 2); d2 = makeDelta(d1.getResultingVersion(), TS2, 2); d3 = makeDelta(d2.getResultingVersion(), TS3, 1); target = createEmptyState(NAME); }
assertTrue(Iterables.elementsEqual(expected, transformedDeltas)); assertTrue(Iterables.elementsEqual(expected, appliedDeltas));
public void testReportsWaveletName() { assertEquals(NAME, target.getWaveletName()); }
public void testDeltaHistoryRequiresCorrectHash() throws Exception { appendDeltas(d1); target.persist(d1.getResultingVersion()); Receiver<TransformedWaveletDelta> transformedDeltasReceiver = new ListReceiver<TransformedWaveletDelta>(); Receiver<ByteStringMessage<Proto.ProtocolAppliedWaveletDelta>> appliedDeltasReceiver = new ListReceiver<ByteStringMessage<Proto.ProtocolAppliedWaveletDelta>>(); // Wrong start hash. checkGetTransformedDeltasThrowsException(HashedVersion.unsigned(0), d1.getResultingVersion(), transformedDeltasReceiver, IllegalArgumentException.class); checkGetAppliedDeltasThrowsException(HashedVersion.unsigned(0), d1.getResultingVersion(), appliedDeltasReceiver, IllegalArgumentException.class); // Wrong end hash. checkGetTransformedDeltasThrowsException(V0, HashedVersion.unsigned(d1.getResultingVersion().getVersion()), transformedDeltasReceiver, IllegalArgumentException.class); checkGetAppliedDeltasThrowsException(V0, HashedVersion.unsigned(d1.getResultingVersion().getVersion()), appliedDeltasReceiver, IllegalArgumentException.class); }
@SuppressWarnings("rawtypes") private void checkGetAppliedDeltasThrowsException(HashedVersion startVersion, HashedVersion endVersion, Receiver<ByteStringMessage<Proto.ProtocolAppliedWaveletDelta>> receiver, Class exceptionClass) { try { target.getAppliedDeltaHistory(startVersion, endVersion, receiver); fail("Expected exception not thrown."); } catch (Exception ex) { assertEquals(IllegalArgumentException.class, exceptionClass); } }
public void testSnapshotMetadataReflectsDeltas() throws Exception { HashedVersion v2 = d1.getResultingVersion(); appendDeltas(d1); assertEquals(v2, target.getCurrentVersion()); ReadableWaveletData snapshot = target.getSnapshot(); assertEquals(AUTHOR, snapshot.getCreator()); assertEquals(v2, snapshot.getHashedVersion()); assertEquals(TS, snapshot.getCreationTime()); assertEquals(TS, snapshot.getLastModifiedTime()); assertEquals(2, snapshot.getVersion()); HashedVersion v4 = d2.getResultingVersion(); appendDeltas(d2); assertEquals(v4, target.getCurrentVersion()); snapshot = target.getSnapshot(); assertEquals(v4, snapshot.getHashedVersion()); assertEquals(4, snapshot.getVersion()); // Last-modified-time doesn't change due to unworthiness. }
public void testDeltaHistoryInterruptQueriesCorrectHistory() throws Exception { appendDeltas(d1, d2, d3); target.persist(d3.getResultingVersion()); checkHistoryForDeltasWithInterrupt(0, d1); checkHistoryForDeltasWithInterrupt(1, d1, d2); checkHistoryForDeltasWithInterrupt(2, d1, d2, d3); }
public void testEmptyStateIsEmpty() { assertNull(target.getSnapshot()); assertEquals(V0, target.getCurrentVersion()); assertEquals(V0, target.getHashedVersion(0)); assertNull(target.getTransformedDelta(V0)); assertNull(target.getAppliedDelta(V0)); }
@Override public void setUp() throws Exception { d1 = makeDelta(V0, TS, 2); d2 = makeDelta(d1.getResultingVersion(), TS2, 2); d3 = makeDelta(d2.getResultingVersion(), TS3, 1); target = createEmptyState(NAME); }
assertTrue(Iterables.elementsEqual(expected, transformedDeltas)); assertTrue(Iterables.elementsEqual(expected, appliedDeltas));
public void testReportsWaveletName() { assertEquals(NAME, target.getWaveletName()); }
public void checkSingleDeltaPersistFutureDone() throws Exception { appendDeltas(d1); Future<Void> future = target.persist(d1.getResultingVersion()); awaitPersistence(); assertTrue(future.isDone()); assertEquals(null, future.get()); assertEquals(d1.getResultingVersion(), target.getLastPersistedVersion()); }