/** * Reads all deltas from persistent storage. */ private static ImmutableList<WaveletDeltaRecord> readAll(WaveletDeltaRecordReader reader, ConcurrentNavigableMap<HashedVersion, WaveletDeltaRecord> cachedDeltas) throws IOException { HashedVersion startVersion = HASH_FACTORY.createVersionZero(reader.getWaveletName()); HashedVersion endVersion = reader.getEndVersion(); ListReceiver<WaveletDeltaRecord> receiver = new ListReceiver<WaveletDeltaRecord>(); readDeltasInRange(reader, cachedDeltas, startVersion, endVersion, receiver); return ImmutableList.copyOf(receiver); }
HashedVersion currentVersion = getCurrentVersion(); Preconditions.checkArgument(!targetVersion.equals(currentVersion)); ListReceiver<TransformedWaveletDelta> receiver = new ListReceiver<TransformedWaveletDelta>(); waveletState.getTransformedDeltaHistory(targetVersion, currentVersion, receiver); DeltaSequence serverDeltas = DeltaSequence.of(receiver);
/** * Checks that a request for the deltas spanning a contiguous sequence of * delta facets produces correct results. */ private void checkHistoryForDeltas(WaveletDeltaRecord... deltas) { HashedVersion beginVersion = deltas[0].getAppliedAtVersion(); HashedVersion endVersion = deltas[deltas.length - 1].getTransformedDelta().getResultingVersion(); { List<TransformedWaveletDelta> expected = Lists.newArrayListWithExpectedSize(deltas.length); for (WaveletDeltaRecord d : deltas) { expected.add(d.getTransformedDelta()); } ListReceiver<TransformedWaveletDelta> transformedDeltasReceiver = new ListReceiver<TransformedWaveletDelta>(); target.getTransformedDeltaHistory(beginVersion, endVersion, transformedDeltasReceiver); assertTrue(Iterables.elementsEqual(expected, transformedDeltasReceiver)); } { List<ByteStringMessage<ProtocolAppliedWaveletDelta>> expected = Lists.newArrayListWithExpectedSize(deltas.length); for (WaveletDeltaRecord d : deltas) { expected.add(d.getAppliedDelta()); } ListReceiver<ByteStringMessage<Proto.ProtocolAppliedWaveletDelta>> appliedDeltasReceiver = new ListReceiver<ByteStringMessage<Proto.ProtocolAppliedWaveletDelta>>(); target.getAppliedDeltaHistory(beginVersion, endVersion, appliedDeltasReceiver); assertTrue(Iterables.elementsEqual(expected, appliedDeltasReceiver)); } }
/** * Checks that a request for the deltas spanning a contiguous sequence of * delta facets produces correct results. */ private void checkHistoryForDeltas(WaveletDeltaRecord... deltas) { HashedVersion beginVersion = deltas[0].getAppliedAtVersion(); HashedVersion endVersion = deltas[deltas.length - 1].getTransformedDelta().getResultingVersion(); { List<TransformedWaveletDelta> expected = Lists.newArrayListWithExpectedSize(deltas.length); for (WaveletDeltaRecord d : deltas) { expected.add(d.getTransformedDelta()); } ListReceiver<TransformedWaveletDelta> transformedDeltasReceiver = new ListReceiver<TransformedWaveletDelta>(); target.getTransformedDeltaHistory(beginVersion, endVersion, transformedDeltasReceiver); assertTrue(Iterables.elementsEqual(expected, transformedDeltasReceiver)); } { List<ByteStringMessage<ProtocolAppliedWaveletDelta>> expected = Lists.newArrayListWithExpectedSize(deltas.length); for (WaveletDeltaRecord d : deltas) { expected.add(d.getAppliedDelta()); } ListReceiver<ByteStringMessage<Proto.ProtocolAppliedWaveletDelta>> appliedDeltasReceiver = new ListReceiver<ByteStringMessage<Proto.ProtocolAppliedWaveletDelta>>(); target.getAppliedDeltaHistory(beginVersion, endVersion, appliedDeltasReceiver); assertTrue(Iterables.elementsEqual(expected, appliedDeltasReceiver)); } }
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 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 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 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); }