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);
}
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);
}
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());
}
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();
}
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);
}
Aggregations