use of org.apache.jackrabbit.core.SearchManager in project jackrabbit by apache.
the class SearchIndexConsistencyCheckTest method testIndexContainsUnknownNode.
public void testIndexContainsUnknownNode() throws Exception {
Session s = getHelper().getSuperuserSession();
SearchManager searchManager = TestHelper.getSearchManager(s);
SearchIndex searchIndex = (SearchIndex) searchManager.getQueryHandler();
NodeId nodeId = new NodeId(0, 0);
NodeState nodeState = new NodeState(nodeId, null, null, 1, false);
Iterator<NodeId> remove = Collections.<NodeId>emptyList().iterator();
Iterator<NodeState> add = Collections.singletonList(nodeState).iterator();
searchIndex.updateNodes(remove, add);
ConsistencyCheck consistencyCheck = searchIndex.runConsistencyCheck();
List<ConsistencyCheckError> errors = consistencyCheck.getErrors();
assertEquals("Expected 1 index consistency error", 1, errors.size());
ConsistencyCheckError error = errors.iterator().next();
assertEquals("Different node was reported to be unknown", error.id, nodeId);
consistencyCheck.repair(false);
assertFalse("Index was not repaired properly", searchIndexContainsNode(searchIndex, nodeId));
assertTrue("Consistency check still reports errors", searchIndex.runConsistencyCheck().getErrors().isEmpty());
}
use of org.apache.jackrabbit.core.SearchManager in project jackrabbit by apache.
the class SearchIndexConsistencyCheckTest method testMissingAncestorDoubleCheck.
public void testMissingAncestorDoubleCheck() throws Exception {
Session s = getHelper().getSuperuserSession();
SearchManager searchManager = TestHelper.getSearchManager(s);
SearchIndex searchIndex = (SearchIndex) searchManager.getQueryHandler();
Node foo = testRootNode.addNode("foo");
foo.addNode("bar");
testRootNode.getSession().save();
NodeId fooId = new NodeId(foo.getIdentifier());
Iterator<NodeId> remove = Collections.singletonList(fooId).iterator();
Iterator<NodeState> add = Collections.<NodeState>emptyList().iterator();
searchIndex.updateNodes(remove, add);
ConsistencyCheck consistencyCheck = searchIndex.runConsistencyCheck();
List<ConsistencyCheckError> errors = consistencyCheck.getErrors();
assertEquals("Expected 2 index consistency errors", 2, errors.size());
remove = Collections.<NodeId>emptyList().iterator();
add = Collections.singletonList(new NodeState(fooId, null, null, 1, true)).iterator();
searchIndex.updateNodes(remove, add);
consistencyCheck.doubleCheckErrors();
assertTrue("Consistency double check of missing ancestor failed", consistencyCheck.getErrors().isEmpty());
}
use of org.apache.jackrabbit.core.SearchManager in project jackrabbit by apache.
the class SearchIndexConsistencyCheckTest method testDoubleCheckStressTest.
/**
* Stress test on the double check mechanism
*/
public void testDoubleCheckStressTest() throws Exception {
Thread t = new Thread(new Runnable() {
private Session s = getHelper().getReadWriteSession();
@Override
public void run() {
while (keepRunning) {
try {
Node foo = s.getRootNode().getNode(testPath).addNode("foo");
s.save();
foo.remove();
s.save();
} catch (RepositoryException e) {
System.out.println(e);
}
}
}
});
Session s = getHelper().getSuperuserSession();
SearchManager searchManager = TestHelper.getSearchManager(s);
SearchIndex searchIndex = (SearchIndex) searchManager.getQueryHandler();
keepRunning = true;
try {
t.start();
Thread.sleep(100);
for (int i = 100; i > 0; i--) {
final ConsistencyCheck consistencyCheck = searchIndex.runConsistencyCheck();
consistencyCheck.doubleCheckErrors();
final List<ConsistencyCheckError> errors = consistencyCheck.getErrors();
assertTrue(errors.isEmpty());
}
} finally {
keepRunning = false;
}
}
use of org.apache.jackrabbit.core.SearchManager in project jackrabbit by apache.
the class SearchIndexConsistencyCheckTest method testIndexMissesAncestor.
public void testIndexMissesAncestor() throws Exception {
Session s = getHelper().getSuperuserSession();
SearchManager searchManager = TestHelper.getSearchManager(s);
SearchIndex searchIndex = (SearchIndex) searchManager.getQueryHandler();
Node foo = testRootNode.addNode("foo");
Node bar = foo.addNode("bar");
testRootNode.getSession().save();
NodeId fooId = new NodeId(foo.getIdentifier());
NodeId barId = new NodeId(bar.getIdentifier());
Iterator<NodeId> remove = Collections.singletonList(fooId).iterator();
Iterator<NodeState> add = Collections.<NodeState>emptyList().iterator();
searchIndex.updateNodes(remove, add);
ConsistencyCheck consistencyCheck = searchIndex.runConsistencyCheck();
List<ConsistencyCheckError> errors = consistencyCheck.getErrors();
assertEquals("Expected 2 index consistency errors", 2, errors.size());
assertEquals("Different node was reported to have missing parent", errors.get(0).id, barId);
assertEquals("Different node was reported to be missing", errors.get(1).id, fooId);
consistencyCheck.repair(false);
assertTrue("Index was not repaired properly", searchIndexContainsNode(searchIndex, fooId));
assertTrue("Consistency check still reports errors", searchIndex.runConsistencyCheck().getErrors().isEmpty());
}
use of org.apache.jackrabbit.core.SearchManager in project jackrabbit by apache.
the class SearchIndexConsistencyCheckTest method testIndexMissesNode.
public void testIndexMissesNode() throws Exception {
Session s = getHelper().getSuperuserSession();
SearchManager searchManager = TestHelper.getSearchManager(s);
SearchIndex searchIndex = (SearchIndex) searchManager.getQueryHandler();
Node foo = testRootNode.addNode("foo");
testRootNode.getSession().save();
NodeId fooId = new NodeId(foo.getIdentifier());
Iterator<NodeId> remove = Collections.singletonList(fooId).iterator();
Iterator<NodeState> add = Collections.<NodeState>emptyList().iterator();
searchIndex.updateNodes(remove, add);
ConsistencyCheck consistencyCheck = searchIndex.runConsistencyCheck();
List<ConsistencyCheckError> errors = consistencyCheck.getErrors();
assertEquals("Expected 1 index consistency error", 1, errors.size());
ConsistencyCheckError error = errors.iterator().next();
assertEquals("Different node was reported to be missing", error.id, fooId);
consistencyCheck.repair(false);
assertTrue("Index was not repaired properly", searchIndexContainsNode(searchIndex, fooId));
assertTrue("Consistency check still reports errors", searchIndex.runConsistencyCheck().getErrors().isEmpty());
}
Aggregations