Search in sources :

Example 71 with MemoryDocumentStore

use of org.apache.jackrabbit.oak.plugins.document.memory.MemoryDocumentStore in project jackrabbit-oak by apache.

the class ClusterRepositoryInfoTest method checkCustomId.

// below test doesn't make sense anymore in the context
// of getOrCreateId (OAK-4006) where that never returns null
//    @Test
//    public void checkGetIdWhenNotRegistered() {
//        MemoryDocumentStore store = new MemoryDocumentStore();
//        DocumentNodeStore ds1 = builderProvider.newBuilder()
//            .setAsyncDelay(0)
//            .setDocumentStore(store)
//            .setClusterId(1)
//            .getNodeStore();
//        // Should be null and no NPE
//        String id = ClusterRepositoryInfo.getOrCreateId(ds1);
//        Assert.assertNull(id);
//    }
@Test
public void checkCustomId() throws Exception {
    MemoryDocumentStore store = new MemoryDocumentStore();
    DocumentNodeStore ds1 = builderProvider.newBuilder().setAsyncDelay(0).setDocumentStore(store).setClusterId(1).getNodeStore();
    String repoId1 = "yyyyyyy";
    setId(ds1, repoId1);
    ds1.runBackgroundOperations();
    String id = ClusterRepositoryInfo.getOrCreateId(ds1);
    Assert.assertEquals(id, repoId1);
}
Also used : MemoryDocumentStore(org.apache.jackrabbit.oak.plugins.document.memory.MemoryDocumentStore) DocumentNodeStore(org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore) Test(org.junit.Test)

Example 72 with MemoryDocumentStore

use of org.apache.jackrabbit.oak.plugins.document.memory.MemoryDocumentStore in project jackrabbit-oak by apache.

the class ClusterRepositoryInfoTest method sameCluster.

@Test
public void sameCluster() throws Exception {
    MemoryDocumentStore store = new MemoryDocumentStore();
    DocumentNodeStore ds1 = builderProvider.newBuilder().setAsyncDelay(0).setDocumentStore(store).setClusterId(1).setBlobStore(blobStore).getNodeStore();
    String repoId1 = ClusterRepositoryInfo.getOrCreateId(ds1);
    ds1.runBackgroundOperations();
    DocumentNodeStore ds2 = builderProvider.newBuilder().setAsyncDelay(0).setDocumentStore(store).setClusterId(2).setBlobStore(blobStore).getNodeStore();
    String repoId2 = ClusterRepositoryInfo.getOrCreateId(ds2);
    // Since the same cluster the ids should be equal
    Assert.assertEquals(repoId1, repoId2);
}
Also used : MemoryDocumentStore(org.apache.jackrabbit.oak.plugins.document.memory.MemoryDocumentStore) DocumentNodeStore(org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore) Test(org.junit.Test)

Example 73 with MemoryDocumentStore

use of org.apache.jackrabbit.oak.plugins.document.memory.MemoryDocumentStore in project jackrabbit-oak by apache.

the class CommitRootUpdateTest method exceptionOnUpdate.

@Test
public void exceptionOnUpdate() throws Exception {
    final AtomicBoolean throwAfterUpdate = new AtomicBoolean(false);
    MemoryDocumentStore store = new MemoryDocumentStore() {

        @Override
        public <T extends Document> T findAndUpdate(Collection<T> collection, UpdateOp update) {
            T doc = super.findAndUpdate(collection, update);
            if (isFinalCommitRootUpdate(update) && throwAfterUpdate.compareAndSet(true, false)) {
                throw new RuntimeException("communication failure");
            }
            return doc;
        }

        private boolean isFinalCommitRootUpdate(UpdateOp update) {
            boolean finalUpdate = true;
            for (Map.Entry<Key, Operation> op : update.getChanges().entrySet()) {
                String name = op.getKey().getName();
                if (NodeDocument.isRevisionsEntry(name) || NodeDocument.MODIFIED_IN_SECS.equals(name)) {
                    continue;
                }
                finalUpdate = false;
                break;
            }
            return finalUpdate;
        }
    };
    DocumentNodeStore ns = builderProvider.newBuilder().setDocumentStore(store).setAsyncDelay(0).getNodeStore();
    NodeBuilder b = ns.getRoot().builder();
    b.child("foo");
    b.child("bar");
    merge(ns, b);
    throwAfterUpdate.set(true);
    boolean success = false;
    Commit c = ns.newCommit(ns.getHeadRevision(), null);
    try {
        c.addNode(new DocumentNodeState(ns, "/foo/node", c.getBaseRevision()));
        c.addNode(new DocumentNodeState(ns, "/bar/node", c.getBaseRevision()));
        c.apply();
        success = true;
    } finally {
        if (success) {
            ns.done(c, false, CommitInfo.EMPTY);
        } else {
            ns.canceled(c);
        }
    }
    NodeState root = ns.getRoot();
    assertTrue(root.getChildNode("foo").getChildNode("node").exists());
    assertTrue(root.getChildNode("bar").getChildNode("node").exists());
    assertFalse(throwAfterUpdate.get());
}
Also used : NodeState(org.apache.jackrabbit.oak.spi.state.NodeState) MemoryDocumentStore(org.apache.jackrabbit.oak.plugins.document.memory.MemoryDocumentStore) Operation(org.apache.jackrabbit.oak.plugins.document.UpdateOp.Operation) NodeBuilder(org.apache.jackrabbit.oak.spi.state.NodeBuilder) AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) Map(java.util.Map) Key(org.apache.jackrabbit.oak.plugins.document.UpdateOp.Key) Test(org.junit.Test)

Example 74 with MemoryDocumentStore

use of org.apache.jackrabbit.oak.plugins.document.memory.MemoryDocumentStore in project jackrabbit-oak by apache.

the class ClusterTest method clusterNodeInfo.

@Test
public void clusterNodeInfo() {
    MemoryDocumentStore store = new MemoryDocumentStore();
    ClusterNodeInfo c1, c2, c3, c4;
    c1 = ClusterNodeInfo.getInstance(store, "m1", null);
    assertEquals(1, c1.getId());
    c1.dispose();
    // get the same id
    c1 = ClusterNodeInfo.getInstance(store, "m1", null);
    assertEquals(1, c1.getId());
    c1.dispose();
    // now try to add another one:
    // must get a new id
    c2 = ClusterNodeInfo.getInstance(store, "m2", null);
    assertEquals(2, c2.getId());
    // a different machine
    c3 = ClusterNodeInfo.getInstance(store, "m3", "/a");
    assertEquals(3, c3.getId());
    c2.dispose();
    c3.dispose();
    c3 = ClusterNodeInfo.getInstance(store, "m3", "/a");
    assertEquals(3, c3.getId());
    c3.dispose();
    c4 = ClusterNodeInfo.getInstance(store, "m3", "/b");
    assertEquals(4, c4.getId());
    c1.dispose();
}
Also used : MemoryDocumentStore(org.apache.jackrabbit.oak.plugins.document.memory.MemoryDocumentStore) Test(org.junit.Test)

Example 75 with MemoryDocumentStore

use of org.apache.jackrabbit.oak.plugins.document.memory.MemoryDocumentStore in project jackrabbit-oak by apache.

the class ClusterTest method openCloseOpen.

@Test
public void openCloseOpen() {
    MemoryDocumentStore ds = new MemoryDocumentStore();
    MemoryBlobStore bs = new MemoryBlobStore();
    DocumentMK mk1 = createMK(1, 0, ds, bs);
    mk1.commit("/", "+\"a\": {}", null, null);
    mk1.commit("/", "-\"a\"", null, null);
    mk1.runBackgroundOperations();
    DocumentMK mk2 = createMK(2, 0, ds, bs);
    mk2.commit("/", "+\"a\": {}", null, null);
    mk2.commit("/", "-\"a\"", null, null);
    mk2.runBackgroundOperations();
    DocumentMK mk3 = createMK(3, 0, ds, bs);
    mk3.commit("/", "+\"a\": {}", null, null);
    mk3.commit("/", "-\"a\"", null, null);
    mk3.runBackgroundOperations();
    DocumentMK mk4 = createMK(4, 0, ds, bs);
    mk4.commit("/", "+\"a\": {}", null, null);
    mk4.runBackgroundOperations();
    DocumentMK mk5 = createMK(5, 0, ds, bs);
    mk5.commit("/", "-\"a\"", null, null);
    mk5.commit("/", "+\"a\": {}", null, null);
}
Also used : MemoryDocumentStore(org.apache.jackrabbit.oak.plugins.document.memory.MemoryDocumentStore) MemoryBlobStore(org.apache.jackrabbit.oak.spi.blob.MemoryBlobStore) 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