/** * Constructs a wavelet state with the given deltas and snapshot. * The deltas must be the contents of deltasAccess, and they * must be contiguous from version zero. * The snapshot must be the composition of the deltas, or null if there * are no deltas. The constructed object takes ownership of the * snapshot and will mutate it if appendDelta() is called. */ @VisibleForTesting DeltaStoreBasedWaveletState(DeltaStore.DeltasAccess deltasAccess, List<WaveletDeltaRecord> deltas, WaveletData snapshot, Executor persistExecutor) { Preconditions.checkArgument(deltasAccess.isEmpty() == deltas.isEmpty()); Preconditions.checkArgument(deltas.isEmpty() == (snapshot == null)); this.persistExecutor = persistExecutor; this.versionZero = HASH_FACTORY.createVersionZero(deltasAccess.getWaveletName()); this.deltasAccess = deltasAccess; this.snapshot = snapshot; this.lastPersistedVersion = new AtomicReference<HashedVersion>(deltasAccess.getEndVersion()); }
HashedVersion deltaResultingVersion = sourceDeltas.getEndVersion();
public void testWriteToNewWavelet() throws Exception { Pair<DeltaStore,WaveletDeltaRecord> pair = newDeltaStoreWithRecord(WAVE1_WAVELET1); DeltaStore store = pair.first; WaveletDeltaRecord record = pair.second; DeltasAccess wavelet = store.open(WAVE1_WAVELET1); assertFalse(wavelet.isEmpty()); assertEquals(WAVE1_WAVELET1, wavelet.getWaveletName()); assertEquals(record.getResultingVersion(), wavelet.getEndVersion()); assertEquals(record, wavelet.getDelta(0)); assertEquals(record, wavelet.getDeltaByEndVersion(record.getResultingVersion().getVersion())); assertEquals(record.getAppliedAtVersion(), wavelet.getAppliedAtVersion(0)); assertEquals(record.getAppliedDelta(), wavelet.getAppliedDelta(0)); assertEquals(record.getTransformedDelta(), wavelet.getTransformedDelta(0)); wavelet.close(); }
public void testOpenNonexistantWavelet() throws Exception { DeltaStore store = newDeltaStore(); DeltasAccess wavelet = store.open(WAVE1_WAVELET1); // Sanity check a bunch of values in the wavelet. assertTrue(wavelet.isEmpty()); assertEquals(WAVE1_WAVELET1, wavelet.getWaveletName()); assertNull(wavelet.getEndVersion()); assertNull(wavelet.getDelta(0)); assertNull(wavelet.getDeltaByEndVersion(0)); assertNull(wavelet.getAppliedAtVersion(0)); assertNull(wavelet.getResultingVersion(0)); assertNull(wavelet.getAppliedDelta(0)); assertNull(wavelet.getTransformedDelta(0)); wavelet.close(); }
public void testWriteToNewWavelet() throws Exception { Pair<DeltaStore,WaveletDeltaRecord> pair = newDeltaStoreWithRecord(WAVE1_WAVELET1); DeltaStore store = pair.first; WaveletDeltaRecord record = pair.second; DeltasAccess wavelet = store.open(WAVE1_WAVELET1); assertFalse(wavelet.isEmpty()); assertEquals(WAVE1_WAVELET1, wavelet.getWaveletName()); assertEquals(record.getResultingVersion(), wavelet.getEndVersion()); assertEquals(record, wavelet.getDelta(0)); assertEquals(record, wavelet.getDeltaByEndVersion(record.getResultingVersion().getVersion())); assertEquals(record.getAppliedAtVersion(), wavelet.getAppliedAtVersion(0)); assertEquals(record.getAppliedDelta(), wavelet.getAppliedDelta(0)); assertEquals(record.getTransformedDelta(), wavelet.getTransformedDelta(0)); wavelet.close(); }
public void testOpenNonexistantWavelet() throws Exception { DeltaStore store = newDeltaStore(); DeltasAccess wavelet = store.open(WAVE1_WAVELET1); // Sanity check a bunch of values in the wavelet. assertTrue(wavelet.isEmpty()); assertEquals(WAVE1_WAVELET1, wavelet.getWaveletName()); assertNull(wavelet.getEndVersion()); assertNull(wavelet.getDelta(0)); assertNull(wavelet.getDeltaByEndVersion(0)); assertNull(wavelet.getAppliedAtVersion(0)); assertNull(wavelet.getResultingVersion(0)); assertNull(wavelet.getAppliedDelta(0)); assertNull(wavelet.getTransformedDelta(0)); wavelet.close(); }