protected void notifyOfDeltas(ImmutableList<WaveletDeltaRecord> deltas, ImmutableSet<String> domainsToNotify) { Preconditions.checkState(writeLock.isHeldByCurrentThread(), "must hold write lock"); Preconditions.checkArgument(!deltas.isEmpty(), "empty deltas"); HashedVersion endVersion = deltas.get(deltas.size() - 1).getResultingVersion(); HashedVersion currentVersion = getCurrentVersion(); Preconditions.checkArgument(endVersion.equals(currentVersion), "cannot notify of deltas ending in %s != current version %s", endVersion, currentVersion); notifiee.waveletUpdate(waveletState.getSnapshot(), deltas, domainsToNotify); }
@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); }
@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); }
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()); }
public void testCanPersistOnlySomeDeltas() throws Exception { appendDeltas(d1, d2, d3); Future<Void> future = target.persist(d2.getResultingVersion()); awaitPersistence(); assertTrue(future.isDone()); assertEquals(null, future.get()); assertEquals(d2.getResultingVersion(), target.getLastPersistedVersion()); future = target.persist(d3.getResultingVersion()); awaitPersistence(); assertTrue(future.isDone()); assertEquals(null, future.get()); assertEquals(d3.getResultingVersion(), target.getLastPersistedVersion()); }
public void testCanPersistOnlySomeDeltas() throws Exception { appendDeltas(d1, d2, d3); Future<Void> future = target.persist(d2.getResultingVersion()); awaitPersistence(); assertTrue(future.isDone()); assertEquals(null, future.get()); assertEquals(d2.getResultingVersion(), target.getLastPersistedVersion()); future = target.persist(d3.getResultingVersion()); awaitPersistence(); assertTrue(future.isDone()); assertEquals(null, future.get()); assertEquals(d3.getResultingVersion(), target.getLastPersistedVersion()); }
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 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()); }
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 testDeltasAccesssibleByEndVersion() throws Exception { appendDeltas(d1, d2, d3); for (WaveletDeltaRecord d : Arrays.asList(d1, d2, d3)) { assertEquals(d.getTransformedDelta(), target.getTransformedDeltaByEndVersion(d.getResultingVersion())); assertEquals(d.getAppliedDelta(), target.getAppliedDeltaByEndVersion(d.getResultingVersion())); } // Wrong hashes return null. assertNull(target.getTransformedDeltaByEndVersion( HashedVersion.unsigned(d1.getResultingVersion().getVersion()))); assertNull(target.getAppliedDeltaByEndVersion( HashedVersion.unsigned(d1.getResultingVersion().getVersion()))); }
public void testDeltasAccesssibleByEndVersion() throws Exception { appendDeltas(d1, d2, d3); for (WaveletDeltaRecord d : Arrays.asList(d1, d2, d3)) { assertEquals(d.getTransformedDelta(), target.getTransformedDeltaByEndVersion(d.getResultingVersion())); assertEquals(d.getAppliedDelta(), target.getAppliedDeltaByEndVersion(d.getResultingVersion())); } // Wrong hashes return null. assertNull(target.getTransformedDeltaByEndVersion( HashedVersion.unsigned(d1.getResultingVersion().getVersion()))); assertNull(target.getAppliedDeltaByEndVersion( HashedVersion.unsigned(d1.getResultingVersion().getVersion()))); }
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 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 testSingleDeltaHistoryAccessible() throws Exception { appendDeltas(d1); target.persist(d1.getResultingVersion()); ListReceiver<TransformedWaveletDelta> transformedDeltasReceiver = new ListReceiver<TransformedWaveletDelta>(); target.getTransformedDeltaHistory(V0, d1.getResultingVersion(), transformedDeltasReceiver); assertEquals(1, transformedDeltasReceiver.size()); assertEquals(d1.getTransformedDelta(), transformedDeltasReceiver.get(0)); ListReceiver<ByteStringMessage<Proto.ProtocolAppliedWaveletDelta>> appliedDeltasReceiver = new ListReceiver<ByteStringMessage<Proto.ProtocolAppliedWaveletDelta>>(); target.getAppliedDeltaHistory(V0, d1.getResultingVersion(), appliedDeltasReceiver); assertEquals(1, appliedDeltasReceiver.size()); assertEquals(d1.getAppliedDelta(), Iterables.getOnlyElement(appliedDeltasReceiver)); }
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 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 testDeltasAccessibleByBeginVersion() throws Exception { appendDeltas(d1, d2, d3); assertEquals(d1.getTransformedDelta(), target.getTransformedDelta(V0)); assertEquals(d1.getAppliedDelta(), target.getAppliedDelta(V0)); assertEquals(d2.getTransformedDelta(), target.getTransformedDelta(d1.getResultingVersion())); assertEquals(d2.getAppliedDelta(), target.getAppliedDelta(d1.getResultingVersion())); assertEquals(d3.getTransformedDelta(), target.getTransformedDelta(d2.getResultingVersion())); assertEquals(d3.getAppliedDelta(), target.getAppliedDelta(d2.getResultingVersion())); // Wrong hashes return null. assertNull(target.getTransformedDelta(HashedVersion.unsigned(0))); assertNull(target.getAppliedDelta(HashedVersion.unsigned(0))); }
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 testDeltasAccessibleByBeginVersion() throws Exception { appendDeltas(d1, d2, d3); assertEquals(d1.getTransformedDelta(), target.getTransformedDelta(V0)); assertEquals(d1.getAppliedDelta(), target.getAppliedDelta(V0)); assertEquals(d2.getTransformedDelta(), target.getTransformedDelta(d1.getResultingVersion())); assertEquals(d2.getAppliedDelta(), target.getAppliedDelta(d1.getResultingVersion())); assertEquals(d3.getTransformedDelta(), target.getTransformedDelta(d2.getResultingVersion())); assertEquals(d3.getAppliedDelta(), target.getAppliedDelta(d2.getResultingVersion())); // Wrong hashes return null. assertNull(target.getTransformedDelta(HashedVersion.unsigned(0))); assertNull(target.getAppliedDelta(HashedVersion.unsigned(0))); }