use of org.apache.jackrabbit.oak.plugins.document.memory.MemoryDocumentStore in project jackrabbit-oak by apache.
the class ValueMapTest method previousDocs2.
@Test
public void previousDocs2() {
MemoryDocumentStore store = new MemoryDocumentStore();
String rootPath = "/";
String rootId = Utils.getIdFromPath(rootPath);
Revision r01 = new Revision(0, 0, 1);
Revision r12 = new Revision(1, 0, 2);
Revision r22 = new Revision(2, 0, 2);
Revision r31 = new Revision(3, 0, 1);
Revision r42 = new Revision(4, 0, 2);
Revision r51 = new Revision(5, 0, 1);
// create previous docs
UpdateOp op = new UpdateOp(Utils.getPreviousIdFor(rootPath, r31, 0), true);
op.setMapEntry("p0", r01, "0");
NodeDocument.setRevision(op, r01, "c");
op.setMapEntry("p1", r31, "1");
NodeDocument.setRevision(op, r31, "c");
store.createOrUpdate(NODES, op);
op = new UpdateOp(Utils.getPreviousIdFor(rootPath, r42, 0), true);
op.setMapEntry("p1", r12, "0");
NodeDocument.setRevision(op, r12, "c");
op.setMapEntry("p1", r22, "1");
NodeDocument.setRevision(op, r22, "c");
op.setMapEntry("p0", r42, "1");
NodeDocument.setRevision(op, r42, "c");
store.createOrUpdate(NODES, op);
// create root doc
op = new UpdateOp(rootId, true);
op.setMapEntry("p0", r51, "2");
op.setMapEntry("p1", r51, "2");
NodeDocument.setRevision(op, r51, "c");
NodeDocument.setPrevious(op, new Range(r42, r12, 0));
NodeDocument.setPrevious(op, new Range(r31, r01, 0));
store.createOrUpdate(NODES, op);
NodeDocument doc = store.find(NODES, rootId);
assertNotNull(doc);
List<NodeDocument> prevDocs = Lists.newArrayList(doc.getPreviousDocs("p1", null));
assertEquals(2, prevDocs.size());
assertEquals(Utils.getPreviousIdFor(rootPath, r31, 0), prevDocs.get(0).getId());
assertEquals(Utils.getPreviousIdFor(rootPath, r42, 0), prevDocs.get(1).getId());
List<Revision> revs = new ArrayList<Revision>();
for (Revision r : doc.getValueMap("p1").keySet()) {
revs.add(r);
}
assertEquals(Arrays.asList(r51, r31, r22, r12), revs);
}
use of org.apache.jackrabbit.oak.plugins.document.memory.MemoryDocumentStore in project jackrabbit-oak by apache.
the class ValueMapTest method previousDocs1.
@Test
public void previousDocs1() {
String rootPath = "/";
String rootId = Utils.getIdFromPath(rootPath);
Revision r0 = new Revision(0, 0, 1);
MemoryDocumentStore store = new MemoryDocumentStore();
// create previous docs
UpdateOp op = new UpdateOp(Utils.getPreviousIdFor(rootPath, r0, 0), true);
op.setMapEntry("prop", r0, "0");
NodeDocument.setRevision(op, r0, "c");
store.createOrUpdate(NODES, op);
Revision r1low = new Revision(1, 0, 1);
Revision r1high = new Revision(1, 10, 1);
op = new UpdateOp(Utils.getPreviousIdFor(rootPath, r1high, 0), true);
for (int i = r1low.getCounter(); i <= r1high.getCounter(); i++) {
Revision r = new Revision(1, i, 1);
op.setMapEntry("foo", r, String.valueOf(i));
NodeDocument.setRevision(op, r, "c");
}
store.createOrUpdate(NODES, op);
// create root doc
op = new UpdateOp(rootId, true);
Revision r2 = new Revision(2, 0, 1);
op.setMapEntry("prop", r2, "1");
NodeDocument.setRevision(op, r2, "c");
NodeDocument.setPrevious(op, new Range(r0, r0, 0));
NodeDocument.setPrevious(op, new Range(r1high, r1low, 0));
store.createOrUpdate(NODES, op);
NodeDocument doc = store.find(NODES, rootId);
assertNotNull(doc);
Set<Revision> revs = doc.getValueMap("prop").keySet();
assertEquals(2, revs.size());
assertTrue(revs.contains(r0));
assertTrue(revs.contains(r2));
Iterator<Revision> it = revs.iterator();
assertTrue(it.hasNext());
assertEquals(r2, it.next());
assertTrue(it.hasNext());
assertEquals(r0, it.next());
}
use of org.apache.jackrabbit.oak.plugins.document.memory.MemoryDocumentStore in project jackrabbit-oak by apache.
the class ValueMapTest method mergeSorted1.
// OAK-2433
@Test
public void mergeSorted1() throws Exception {
MemoryDocumentStore store = new MemoryDocumentStore();
// prev2
Revision r1 = new Revision(1, 0, 1);
// prev2
Revision r2 = new Revision(2, 0, 1);
// root
Revision r3 = new Revision(3, 0, 1);
// prev2
Revision r4 = new Revision(4, 0, 1);
// prev1
Revision r5 = new Revision(5, 0, 1);
// root
Revision r6 = new Revision(6, 0, 1);
// prev1
Revision r7 = new Revision(7, 0, 1);
Range range1 = new Range(r7, r5, 0);
Range range2 = new Range(r4, r1, 0);
String prevId1 = Utils.getPreviousIdFor("/", range1.high, 0);
UpdateOp prevOp1 = new UpdateOp(prevId1, true);
NodeDocument.setRevision(prevOp1, r5, "c");
NodeDocument.setRevision(prevOp1, r7, "c");
String prevId2 = Utils.getPreviousIdFor("/", range2.high, 0);
UpdateOp prevOp2 = new UpdateOp(prevId2, true);
NodeDocument.setRevision(prevOp2, r1, "c");
NodeDocument.setRevision(prevOp2, r2, "c");
NodeDocument.setRevision(prevOp2, r4, "c");
String rootId = Utils.getIdFromPath("/");
UpdateOp op = new UpdateOp(rootId, true);
NodeDocument.setRevision(op, r3, "c");
NodeDocument.setRevision(op, r6, "c");
NodeDocument.setPrevious(op, range1);
NodeDocument.setPrevious(op, range2);
store.create(NODES, Lists.newArrayList(op, prevOp1, prevOp2));
NodeDocument doc = store.find(NODES, rootId);
Iterators.size(doc.getValueMap(NodeDocument.REVISIONS).entrySet().iterator());
}
use of org.apache.jackrabbit.oak.plugins.document.memory.MemoryDocumentStore in project jackrabbit-oak by apache.
the class SharedBlobStoreGCTest method setUp.
@Before
public void setUp() throws Exception {
log.debug("In setUp()");
clock = new Clock.Virtual();
clock.waitUntil(Revision.getCurrentTimestamp());
DataStoreUtils.time = clock.getTime();
File rootFolder = folder.newFolder();
BlobStore blobeStore1 = getBlobStore(rootFolder);
DocumentNodeStore ds1 = new DocumentMK.Builder().setAsyncDelay(0).setDocumentStore(new MemoryDocumentStore()).setBlobStore(blobeStore1).clock(clock).getNodeStore();
String repoId1 = ClusterRepositoryInfo.getOrCreateId(ds1);
// Register the unique repository id in the data store
((SharedDataStore) blobeStore1).addMetadataRecord(new ByteArrayInputStream(new byte[0]), SharedStoreRecordType.REPOSITORY.getNameFromId(repoId1));
BlobStore blobeStore2 = getBlobStore(rootFolder);
DocumentNodeStore ds2 = new DocumentMK.Builder().setAsyncDelay(0).setDocumentStore(new MemoryDocumentStore()).setBlobStore(blobeStore2).clock(clock).getNodeStore();
String repoId2 = ClusterRepositoryInfo.getOrCreateId(ds2);
// Register the unique repository id in the data store
((SharedDataStore) blobeStore2).addMetadataRecord(new ByteArrayInputStream(new byte[0]), SharedStoreRecordType.REPOSITORY.getNameFromId(repoId2));
cluster1 = new Cluster(ds1, repoId1, 20);
cluster1.init();
log.debug("Initialized {}", cluster1);
cluster2 = new Cluster(ds2, repoId2, 100);
cluster2.init();
log.debug("Initialized {}", cluster2);
}
use of org.apache.jackrabbit.oak.plugins.document.memory.MemoryDocumentStore in project jackrabbit-oak by apache.
the class PrefetchDispatcherTest method prefetchVisibleChanges.
@Test
public void prefetchVisibleChanges() throws Exception {
final AtomicInteger numQueries = new AtomicInteger();
MemoryDocumentStore store = new MemoryDocumentStore() {
@Nonnull
@Override
public <T extends Document> List<T> query(Collection<T> collection, String fromKey, String toKey, int limit) {
if (collection == Collection.NODES) {
numQueries.incrementAndGet();
}
return super.query(collection, fromKey, toKey, limit);
}
};
DocumentNodeStore ns1 = builderProvider.newBuilder().setDocumentStore(store).setClusterId(1).setPrefetchExternalChanges(false).setAsyncDelay(0).getNodeStore();
DocumentNodeStore ns2 = builderProvider.newBuilder().setDocumentStore(store).setClusterId(2).setPrefetchExternalChanges(false).setAsyncDelay(0).getNodeStore();
NodeBuilder builder = ns1.getRoot().builder();
builder.child("foo").child("bar").child("baz");
builder.child(":hidden").child("foo").child("bar");
ns1.merge(builder, EmptyHook.INSTANCE, CommitInfo.EMPTY);
ns1.runBackgroundOperations();
DocumentNodeState before = ns2.getRoot();
ns2.runBackgroundOperations();
DocumentNodeState after = ns2.getRoot().fromExternalChange();
PrefetchDispatcher dispatcher = new PrefetchDispatcher(before, MoreExecutors.sameThreadExecutor());
numQueries.set(0);
dispatcher.contentChanged(after, CommitInfo.EMPTY_EXTERNAL);
// expect two queries for children: below /foo and /foo/bar
assertEquals(2, numQueries.get());
}
Aggregations