Search in sources :

Example 21 with MemoryDocumentStore

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);
}
Also used : MemoryDocumentStore(org.apache.jackrabbit.oak.plugins.document.memory.MemoryDocumentStore) ArrayList(java.util.ArrayList) Test(org.junit.Test)

Example 22 with MemoryDocumentStore

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());
}
Also used : MemoryDocumentStore(org.apache.jackrabbit.oak.plugins.document.memory.MemoryDocumentStore) Test(org.junit.Test)

Example 23 with MemoryDocumentStore

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());
}
Also used : MemoryDocumentStore(org.apache.jackrabbit.oak.plugins.document.memory.MemoryDocumentStore) Test(org.junit.Test)

Example 24 with MemoryDocumentStore

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);
}
Also used : MemoryDocumentStore(org.apache.jackrabbit.oak.plugins.document.memory.MemoryDocumentStore) ByteArrayInputStream(java.io.ByteArrayInputStream) SharedDataStore(org.apache.jackrabbit.oak.plugins.blob.SharedDataStore) Clock(org.apache.jackrabbit.oak.stats.Clock) File(java.io.File) GarbageCollectableBlobStore(org.apache.jackrabbit.oak.spi.blob.GarbageCollectableBlobStore) DataStoreBlobStore(org.apache.jackrabbit.oak.plugins.blob.datastore.DataStoreBlobStore) BlobStore(org.apache.jackrabbit.oak.spi.blob.BlobStore) Before(org.junit.Before)

Example 25 with MemoryDocumentStore

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());
}
Also used : MemoryDocumentStore(org.apache.jackrabbit.oak.plugins.document.memory.MemoryDocumentStore) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) NodeBuilder(org.apache.jackrabbit.oak.spi.state.NodeBuilder) Test(org.junit.Test)

Aggregations

MemoryDocumentStore (org.apache.jackrabbit.oak.plugins.document.memory.MemoryDocumentStore)132 Test (org.junit.Test)113 NodeBuilder (org.apache.jackrabbit.oak.spi.state.NodeBuilder)72 Clock (org.apache.jackrabbit.oak.stats.Clock)21 NodeState (org.apache.jackrabbit.oak.spi.state.NodeState)19 Before (org.junit.Before)13 CommitFailedException (org.apache.jackrabbit.oak.api.CommitFailedException)11 MemoryBlobStore (org.apache.jackrabbit.oak.spi.blob.MemoryBlobStore)10 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)9 Utils.getRootDocument (org.apache.jackrabbit.oak.plugins.document.util.Utils.getRootDocument)9 Random (java.util.Random)8 CONSTRAINT (org.apache.jackrabbit.oak.api.CommitFailedException.CONSTRAINT)8 DocumentNodeStore (org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore)7 ChildNodeEntry (org.apache.jackrabbit.oak.spi.state.ChildNodeEntry)6 ArrayList (java.util.ArrayList)5 AtomicBoolean (java.util.concurrent.atomic.AtomicBoolean)5 StringSort (org.apache.jackrabbit.oak.commons.sort.StringSort)5 List (java.util.List)4 Semaphore (java.util.concurrent.Semaphore)4 VersionGCStats (org.apache.jackrabbit.oak.plugins.document.VersionGarbageCollector.VersionGCStats)4