.withNumStatesBetweenSnapshots(5) .build();
HollowProducer producer = HollowProducer.withPublisher(blobStore) .withBlobStager(new HollowInMemoryBlobStager()) .withNumStatesBetweenSnapshots(2) /// do not produce snapshots for v2 or v3 .build();
HollowProducer producer = HollowProducer.withPublisher(blobStore) .withBlobStager(new HollowInMemoryBlobStager()) .withNumStatesBetweenSnapshots(2) /// do not produce snapshots for v2 or v3 .build();
HollowProducer producer = HollowProducer.withPublisher(blobStore) .withBlobStager(new HollowInMemoryBlobStager()) .withNumStatesBetweenSnapshots(2) /// do not produce snapshots for v2 or v3 .build();
HollowProducer producer = HollowProducer.withPublisher(blobStore) .withBlobStager(new HollowInMemoryBlobStager()) .withNumStatesBetweenSnapshots(2) /// do not produce snapshots for v2 or v3 .build();
HollowProducer producer = HollowProducer.withPublisher(blobStore) .withBlobStager(new HollowInMemoryBlobStager()) .withNumStatesBetweenSnapshots(2) /// do not produce snapshots for v2 or v3 .build();
@Test public void consumerRespondsToPinnedAnnouncement() { HollowProducer producer = HollowProducer.withPublisher(blobStore) .withAnnouncer(announcement) .withBlobStager(new HollowInMemoryBlobStager()) .withNumStatesBetweenSnapshots(2) /// do not produce snapshot for v2 or v3 .build(); long v1 = runCycle(producer, 1); runCycle(producer, 2); long v3 = runCycle(producer, 3); HollowConsumer consumer = HollowConsumer.withBlobRetriever(blobStore) .withAnnouncementWatcher(announcement) .build(); consumer.triggerRefresh(); Assert.assertEquals(v3, consumer.getCurrentVersionId()); announcement.pin(v1); Assert.assertEquals(v1, consumer.getCurrentVersionId()); /// another cycle occurs while we're pinned long v4 = runCycle(producer, 4); announcement.unpin(); Assert.assertEquals(v4, consumer.getCurrentVersionId()); }
@Before public void setUp() { blobStore = new InMemoryBlobStore(); listener = new RecordingRefreshListener(); producer = HollowProducer.withPublisher(blobStore) .withBlobStager(new HollowInMemoryBlobStager()) .withNumStatesBetweenSnapshots(Integer.MAX_VALUE) .build(); consumer = HollowConsumer.withBlobRetriever(blobStore) .withRefreshListener(listener) .withObjectLongevityConfig(new ObjectLongevityConfig() { @Override public long usageDetectionPeriodMillis() { return 100L; } @Override public long gracePeriodMillis() { return 100L; } @Override public boolean forceDropData() { return false; } @Override public boolean enableLongLivedObjectSupport() { return true; } @Override public boolean enableExpiredUsageStackTraces() { return false; } @Override public boolean dropDataAutomatically() { return true; } }) .build(); }
@Test public void consumerFollowsReverseDeltas() { HollowProducer producer = HollowProducer.withPublisher(blobStore) .withBlobStager(new HollowInMemoryBlobStager()) .withNumStatesBetweenSnapshots(2) /// do not produce snapshot for v2 or v3 .build(); long v1 = runCycle(producer, 1); runCycle(producer, 2); long v3 = runCycle(producer, 3); HollowConsumer consumer = HollowConsumer.withBlobRetriever(blobStore).build(); consumer.triggerRefreshTo(v3); Assert.assertEquals(v3, consumer.getCurrentVersionId()); blobStore.removeSnapshot( v1); // <-- not necessary to cause following of reverse deltas -- just asserting that's what happened. consumer.triggerRefreshTo(v1); Assert.assertEquals(v1, consumer.getCurrentVersionId()); }
@Test public void initializationTraversesDeltasToGetUpToDate() { HollowProducer producer = HollowProducer.withPublisher(blobStore) .withBlobStager(new HollowInMemoryBlobStager()) .withNumStatesBetweenSnapshots(2) /// do not produce snapshots for v2 or v3 .build(); long v1 = runCycle(producer, 1); long v2 = runCycle(producer, 2); long v3 = runCycle(producer, 3); HollowConsumer consumer = HollowConsumer.withBlobRetriever(blobStore).build(); consumer.triggerRefreshTo(v3); Assert.assertEquals(v3, consumer.getCurrentVersionId()); Assert.assertEquals(v1, blobStore.retrieveSnapshotBlob(v3).getToVersion()); Assert.assertEquals(v2, blobStore.retrieveDeltaBlob(v1).getToVersion()); Assert.assertEquals(v3, blobStore.retrieveDeltaBlob(v2).getToVersion()); }