/*
* Copyright 2004-2009 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.compass.core.test.engine.lucene.transaction;
import org.compass.core.Resource;
import org.compass.core.engine.SearchEngine;
import org.compass.core.engine.SearchEngineHits;
import org.compass.core.engine.SearchEngineQuery;
import org.compass.core.test.engine.lucene.AbstractLuceneEngineTests;
/**
* @author kimchy
*/
public abstract class AbstractTransactionEngineTests extends AbstractLuceneEngineTests {
public void testCreateResource() {
getSearchEngine().begin();
Resource singleId = createSingleIdResource(getSearchEngine());
getSearchEngine().create(singleId);
Resource multiId = createMultiIdResource(getSearchEngine());
getSearchEngine().create(multiId);
getSearchEngine().commit(true);
sleepForChangesToOccur();
getSearchEngine().begin();
assertSingleIdResourceExists(getSearchEngine());
assertMulitIdResourceExists(getSearchEngine());
getSearchEngine().rollback();
}
public void testSaveResource() {
getSearchEngine().begin();
Resource singleId = createSingleIdResource(getSearchEngine());
getSearchEngine().create(singleId);
Resource multiId = createMultiIdResource(getSearchEngine());
getSearchEngine().create(multiId);
getSearchEngine().commit(true);
sleepForChangesToOccur();
getSearchEngine().begin();
assertSingleIdResourceExists(getSearchEngine());
assertSingleIdResourceOriginal(getSearchEngine());
assertMulitIdResourceExists(getSearchEngine());
assertMulitIdResourceOriginal(getSearchEngine());
getSearchEngine().rollback();
sleepForChangesToOccur();
getSearchEngine().begin();
singleId = createUpdatedSingleIdResource(getSearchEngine());
getSearchEngine().save(singleId);
getSearchEngine().commit(true);
sleepForChangesToOccur();
getSearchEngine().begin();
assertSingleIdResourceExists(getSearchEngine());
assertSingleIdResourceUpdated(getSearchEngine());
assertMulitIdResourceExists(getSearchEngine());
assertMulitIdResourceOriginal(getSearchEngine());
getSearchEngine().rollback();
}
public void testDeleteResource() {
getSearchEngine().begin();
assertSingleIdResourceNotExists(getSearchEngine());
assertMulitIdResourceNotExists(getSearchEngine());
Resource singleId = createSingleIdResource(getSearchEngine());
getSearchEngine().create(singleId);
Resource multiId = createMultiIdResource(getSearchEngine());
getSearchEngine().create(multiId);
getSearchEngine().commit(true);
sleepForChangesToOccur();
getSearchEngine().begin();
assertSingleIdResourceExists(getSearchEngine());
assertMulitIdResourceExists(getSearchEngine());
getSearchEngine().delete(singleId);
getSearchEngine().commit(true);
sleepForChangesToOccur();
getSearchEngine().begin();
assertSingleIdResourceNotExists(getSearchEngine());
assertMulitIdResourceExists(getSearchEngine());
getSearchEngine().commit(true);
sleepForChangesToOccur();
getSearchEngine().begin();
getSearchEngine().delete(multiId);
getSearchEngine().commit(true);
sleepForChangesToOccur();
getSearchEngine().begin();
assertSingleIdResourceNotExists(getSearchEngine());
assertMulitIdResourceNotExists(getSearchEngine());
getSearchEngine().commit(true);
sleepForChangesToOccur();
getSearchEngine().begin();
multiId = createMultiIdResource(getSearchEngine());
getSearchEngine().create(multiId);
getSearchEngine().commit(true);
sleepForChangesToOccur();
getSearchEngine().begin();
assertMulitIdResourceExists(getSearchEngine());
getSearchEngine().delete(multiId);
getSearchEngine().commit(true);
sleepForChangesToOccur();
getSearchEngine().begin();
assertSingleIdResourceNotExists(getSearchEngine());
assertMulitIdResourceNotExists(getSearchEngine());
getSearchEngine().commit(true);
}
public void testMultiIdDoubleEntries() throws Exception {
getSearchEngine().begin();
assertMulitIdResourceNotExists(getSearchEngine());
assertMulitIdResource2NotExists(getSearchEngine());
Resource multiId = createMultiIdResource(getSearchEngine());
getSearchEngine().create(multiId);
getSearchEngine().commit(true);
sleepForChangesToOccur();
getSearchEngine().begin();
assertMulitIdResourceExists(getSearchEngine());
assertMulitIdResource2NotExists(getSearchEngine());
getSearchEngine().commit(true);
sleepForChangesToOccur();
getSearchEngine().begin();
Resource multiId2 = createMultiIdResource2(getSearchEngine());
getSearchEngine().create(multiId2);
getSearchEngine().commit(true);
sleepForChangesToOccur();
getSearchEngine().begin();
assertMulitIdResourceExists(getSearchEngine());
assertMulitIdResource2Exists(getSearchEngine());
getSearchEngine().delete(multiId2);
getSearchEngine().commit(true);
sleepForChangesToOccur();
getSearchEngine().begin();
assertMulitIdResourceExists(getSearchEngine());
assertMulitIdResource2NotExists(getSearchEngine());
getSearchEngine().delete(multiId);
getSearchEngine().commit(true);
sleepForChangesToOccur();
getSearchEngine().begin();
assertMulitIdResourceNotExists(getSearchEngine());
assertMulitIdResource2NotExists(getSearchEngine());
getSearchEngine().rollback();
}
public void testFindResource() {
getSearchEngine().begin();
assertSingleIdResourceNotExists(getSearchEngine());
assertMulitIdResourceNotExists(getSearchEngine());
Resource singleId = createSingleIdResource(getSearchEngine());
getSearchEngine().create(singleId);
Resource multiId = createMultiIdResource(getSearchEngine());
getSearchEngine().create(multiId);
getSearchEngine().commit(true);
sleepForChangesToOccur();
getSearchEngine().begin();
SearchEngineQuery query = getSearchEngine().queryBuilder().queryString(PROPERTY_VAL1 + ":" + VALUE_VAL1).toQuery();
SearchEngineHits hits = query.hits(getSearchEngine());
assertEquals(1, hits.getLength());
Resource r = hits.getResource(0);
assertEquals(VALUE_ID1, r.getProperty(PROPERTY_ID1).getStringValue());
query = getSearchEngine().queryBuilder().queryString(PROPERTY_VAL2 + ":" + VALUE_VAL2).toQuery();
hits = query.hits(getSearchEngine());
assertEquals(1, hits.getLength());
r = hits.getResource(0);
assertEquals(VALUE_ID2, r.getProperty(PROPERTY_ID2).getStringValue());
query = getSearchEngine().queryBuilder().queryString(PROPERTY_VAL4 + ":" + VALUE_VAL4).toQuery();
hits = query.hits(getSearchEngine());
assertEquals(2, hits.getLength());
getSearchEngine().delete(r);
getSearchEngine().commit(true);
sleepForChangesToOccur();
getSearchEngine().begin();
query = getSearchEngine().queryBuilder().queryString(PROPERTY_VAL2 + ":" + VALUE_VAL2).toQuery();
hits = query.hits(getSearchEngine());
assertEquals(0, hits.getLength());
query = getSearchEngine().queryBuilder().queryString(PROPERTY_VAL4 + ":" + VALUE_VAL4).toQuery();
hits = query.hits(getSearchEngine());
assertEquals(1, hits.getLength());
getSearchEngine().rollback();
}
public void testCreateResourceWithCommit() {
getSearchEngine().begin();
assertSingleIdResourceNotExists(getSearchEngine());
assertMulitIdResourceNotExists(getSearchEngine());
Resource singleId = createSingleIdResource(getSearchEngine());
getSearchEngine().create(singleId);
Resource multiId = createMultiIdResource(getSearchEngine());
getSearchEngine().create(multiId);
getSearchEngine().commit(true);
sleepForChangesToOccur();
getSearchEngine().begin();
assertSingleIdResourceExists(getSearchEngine());
assertMulitIdResourceExists(getSearchEngine());
getSearchEngine().rollback();
}
public void testCreateResourceWithRollback() {
getSearchEngine().begin();
assertSingleIdResourceNotExists(getSearchEngine());
assertMulitIdResourceNotExists(getSearchEngine());
Resource singleId = createSingleIdResource(getSearchEngine());
getSearchEngine().create(singleId);
Resource multiId = createMultiIdResource(getSearchEngine());
getSearchEngine().create(multiId);
getSearchEngine().rollback();
sleepForChangesToOccur();
getSearchEngine().begin();
assertSingleIdResourceNotExists(getSearchEngine());
assertMulitIdResourceNotExists(getSearchEngine());
getSearchEngine().rollback();
}
public void testDeleteResourceWithCommit() {
getSearchEngine().begin();
assertSingleIdResourceNotExists(getSearchEngine());
assertMulitIdResourceNotExists(getSearchEngine());
Resource singleId = createSingleIdResource(getSearchEngine());
getSearchEngine().create(singleId);
Resource multiId = createMultiIdResource(getSearchEngine());
getSearchEngine().create(multiId);
getSearchEngine().commit(true);
sleepForChangesToOccur();
getSearchEngine().begin();
assertSingleIdResourceExists(getSearchEngine());
assertMulitIdResourceExists(getSearchEngine());
getSearchEngine().delete(singleId);
getSearchEngine().commit(true);
sleepForChangesToOccur();
getSearchEngine().begin();
assertSingleIdResourceNotExists(getSearchEngine());
assertMulitIdResourceExists(getSearchEngine());
getSearchEngine().commit(true);
sleepForChangesToOccur();
getSearchEngine().begin();
assertSingleIdResourceNotExists(getSearchEngine());
assertMulitIdResourceExists(getSearchEngine());
getSearchEngine().commit(true);
getSearchEngine().begin();
getSearchEngine().delete(multiId);
getSearchEngine().commit(true);
sleepForChangesToOccur();
getSearchEngine().begin();
assertSingleIdResourceNotExists(getSearchEngine());
assertMulitIdResourceNotExists(getSearchEngine());
getSearchEngine().commit(true);
getSearchEngine().begin();
assertSingleIdResourceNotExists(getSearchEngine());
assertMulitIdResourceNotExists(getSearchEngine());
getSearchEngine().commit(true);
}
public void testDeleteQueryWithCommit() {
getSearchEngine().begin();
assertSingleIdResourceNotExists(getSearchEngine());
assertMulitIdResourceNotExists(getSearchEngine());
Resource singleId = createSingleIdResource(getSearchEngine());
getSearchEngine().create(singleId);
Resource multiId = createMultiIdResource(getSearchEngine());
getSearchEngine().create(multiId);
getSearchEngine().commit(true);
sleepForChangesToOccur();
getSearchEngine().begin();
assertSingleIdResourceExists(getSearchEngine());
assertMulitIdResourceExists(getSearchEngine());
getSearchEngine().delete(createSinlgeResourceDeleteQuery(getSearchEngine()));
getSearchEngine().commit(true);
sleepForChangesToOccur();
getSearchEngine().begin();
assertSingleIdResourceNotExists(getSearchEngine());
assertMulitIdResourceExists(getSearchEngine());
getSearchEngine().commit(true);
sleepForChangesToOccur();
getSearchEngine().begin();
assertSingleIdResourceNotExists(getSearchEngine());
assertMulitIdResourceExists(getSearchEngine());
getSearchEngine().commit(true);
getSearchEngine().begin();
getSearchEngine().delete(createMultiResourceDeteteQuery(getSearchEngine()));
getSearchEngine().commit(true);
sleepForChangesToOccur();
getSearchEngine().begin();
assertSingleIdResourceNotExists(getSearchEngine());
assertMulitIdResourceNotExists(getSearchEngine());
getSearchEngine().commit(true);
getSearchEngine().begin();
assertSingleIdResourceNotExists(getSearchEngine());
assertMulitIdResourceNotExists(getSearchEngine());
getSearchEngine().commit(true);
}
public void testDoubleDeletes() throws Exception {
getSearchEngine().begin();
assertSingleIdResourceNotExists(getSearchEngine());
assertMulitIdResourceNotExists(getSearchEngine());
Resource singleId = createSingleIdResource(getSearchEngine());
getSearchEngine().create(singleId);
Resource multiId = createMultiIdResource(getSearchEngine());
getSearchEngine().create(multiId);
getSearchEngine().delete(multiId);
getSearchEngine().delete(multiId);
getSearchEngine().commit(true);
sleepForChangesToOccur();
getSearchEngine().begin();
assertMulitIdResourceNotExists(getSearchEngine());
getSearchEngine().commit(true);
}
public void testDeleteResource2WithCommit() {
getSearchEngine().begin();
assertSingleIdResourceNotExists(getSearchEngine());
assertMulitIdResourceNotExists(getSearchEngine());
assertSingleIdResource2NotExists(getSearchEngine());
assertMulitIdResource2NotExists(getSearchEngine());
Resource singleId = createSingleIdResource(getSearchEngine());
getSearchEngine().create(singleId);
Resource multiId = createMultiIdResource(getSearchEngine());
getSearchEngine().create(multiId);
getSearchEngine().commit(true);
sleepForChangesToOccur();
getSearchEngine().begin();
Resource singleId2 = createSingleIdResource2(getSearchEngine());
getSearchEngine().create(singleId2);
Resource multiId2 = createMultiIdResource2(getSearchEngine());
getSearchEngine().create(multiId2);
getSearchEngine().commit(true);
sleepForChangesToOccur();
getSearchEngine().begin();
assertSingleIdResourceExists(getSearchEngine());
assertMulitIdResourceExists(getSearchEngine());
assertSingleIdResource2Exists(getSearchEngine());
assertMulitIdResource2Exists(getSearchEngine());
getSearchEngine().delete(singleId);
getSearchEngine().commit(true);
sleepForChangesToOccur();
getSearchEngine().begin();
assertSingleIdResourceNotExists(getSearchEngine());
assertMulitIdResourceExists(getSearchEngine());
assertSingleIdResource2Exists(getSearchEngine());
getSearchEngine().delete(singleId2);
getSearchEngine().commit(true);
sleepForChangesToOccur();
getSearchEngine().begin();
assertSingleIdResourceNotExists(getSearchEngine());
assertMulitIdResourceExists(getSearchEngine());
assertSingleIdResource2NotExists(getSearchEngine());
getSearchEngine().commit(true);
}
public void testDeleteResourceWithRollback() {
getSearchEngine().begin();
assertSingleIdResourceNotExists(getSearchEngine());
assertMulitIdResourceNotExists(getSearchEngine());
Resource singleId = createSingleIdResource(getSearchEngine());
getSearchEngine().create(singleId);
Resource multiId = createMultiIdResource(getSearchEngine());
getSearchEngine().create(multiId);
getSearchEngine().commit(true);
sleepForChangesToOccur();
getSearchEngine().begin();
assertSingleIdResourceExists(getSearchEngine());
assertMulitIdResourceExists(getSearchEngine());
getSearchEngine().delete(singleId);
getSearchEngine().commit(true);
sleepForChangesToOccur();
getSearchEngine().begin();
assertSingleIdResourceNotExists(getSearchEngine());
assertMulitIdResourceExists(getSearchEngine());
getSearchEngine().commit(true);
sleepForChangesToOccur();
getSearchEngine().begin();
assertSingleIdResourceNotExists(getSearchEngine());
assertMulitIdResourceExists(getSearchEngine());
getSearchEngine().commit(true);
sleepForChangesToOccur();
getSearchEngine().begin();
getSearchEngine().delete(multiId);
getSearchEngine().rollback();
sleepForChangesToOccur();
getSearchEngine().begin();
assertSingleIdResourceNotExists(getSearchEngine());
assertMulitIdResourceExists(getSearchEngine());
getSearchEngine().commit(true);
}
public void testDeleteQueryWithRollback() {
getSearchEngine().begin();
assertSingleIdResourceNotExists(getSearchEngine());
assertMulitIdResourceNotExists(getSearchEngine());
Resource singleId = createSingleIdResource(getSearchEngine());
getSearchEngine().create(singleId);
Resource multiId = createMultiIdResource(getSearchEngine());
getSearchEngine().create(multiId);
getSearchEngine().commit(true);
sleepForChangesToOccur();
getSearchEngine().begin();
assertSingleIdResourceExists(getSearchEngine());
assertMulitIdResourceExists(getSearchEngine());
getSearchEngine().delete(createSinlgeResourceDeleteQuery(getSearchEngine()));
getSearchEngine().commit(true);
sleepForChangesToOccur();
getSearchEngine().begin();
assertSingleIdResourceNotExists(getSearchEngine());
assertMulitIdResourceExists(getSearchEngine());
getSearchEngine().commit(true);
sleepForChangesToOccur();
getSearchEngine().begin();
assertSingleIdResourceNotExists(getSearchEngine());
assertMulitIdResourceExists(getSearchEngine());
getSearchEngine().commit(true);
sleepForChangesToOccur();
getSearchEngine().begin();
getSearchEngine().delete(createMultiResourceDeteteQuery(getSearchEngine()));
getSearchEngine().rollback();
sleepForChangesToOccur();
getSearchEngine().begin();
assertSingleIdResourceNotExists(getSearchEngine());
assertMulitIdResourceExists(getSearchEngine());
getSearchEngine().commit(true);
}
public void testFindResourceWithCommit() {
getSearchEngine().begin();
assertSingleIdResourceNotExists(getSearchEngine());
assertMulitIdResourceNotExists(getSearchEngine());
Resource singleId = createSingleIdResource(getSearchEngine());
getSearchEngine().create(singleId);
Resource multiId = createMultiIdResource(getSearchEngine());
getSearchEngine().create(multiId);
getSearchEngine().commit(true);
sleepForChangesToOccur();
getSearchEngine().begin();
SearchEngineQuery query = getSearchEngine().queryBuilder().queryString(PROPERTY_VAL1 + ":" + VALUE_VAL1).toQuery();
SearchEngineHits hits = query.hits(getSearchEngine());
assertEquals(1, hits.getLength());
Resource r = hits.getResource(0);
assertEquals(VALUE_ID1, r.getProperty(PROPERTY_ID1).getStringValue());
getSearchEngine().commit(true);
sleepForChangesToOccur();
getSearchEngine().begin();
query = getSearchEngine().queryBuilder().queryString(PROPERTY_VAL1 + ":" + VALUE_VAL1).toQuery();
hits = query.hits(getSearchEngine());
assertEquals(1, hits.getLength());
r = hits.getResource(0);
assertEquals(VALUE_ID1, r.getProperty(PROPERTY_ID1).getStringValue());
query = getSearchEngine().queryBuilder().queryString(PROPERTY_VAL2 + ":" + VALUE_VAL2).toQuery();
hits = query.hits(getSearchEngine());
assertEquals(1, hits.getLength());
r = hits.getResource(0);
assertEquals(VALUE_ID2, r.getProperty(PROPERTY_ID2).getStringValue());
getSearchEngine().commit(true);
sleepForChangesToOccur();
getSearchEngine().begin();
getSearchEngine().delete(r);
getSearchEngine().commit(true);
sleepForChangesToOccur();
getSearchEngine().begin();
assertMulitIdResourceNotExists(getSearchEngine());
query = getSearchEngine().queryBuilder().queryString(PROPERTY_VAL1 + ":" + VALUE_VAL1).toQuery();
hits = query.hits(getSearchEngine());
assertEquals(1, hits.getLength());
r = hits.getResource(0);
assertEquals(VALUE_ID1, r.getProperty(PROPERTY_ID1).getStringValue());
query = getSearchEngine().queryBuilder().queryString(PROPERTY_VAL2 + ":" + VALUE_VAL2).toQuery();
hits = query.hits(getSearchEngine());
assertEquals(0, hits.getLength());
getSearchEngine().commit(true);
sleepForChangesToOccur();
getSearchEngine().begin();
assertMulitIdResourceNotExists(getSearchEngine());
query = getSearchEngine().queryBuilder().queryString(PROPERTY_VAL1 + ":" + VALUE_VAL1).toQuery();
hits = query.hits(getSearchEngine());
assertEquals(1, hits.getLength());
r = hits.getResource(0);
assertEquals(VALUE_ID1, r.getProperty(PROPERTY_ID1).getStringValue());
query = getSearchEngine().queryBuilder().queryString(PROPERTY_VAL2 + ":" + VALUE_VAL2).toQuery();
hits = query.hits(getSearchEngine());
assertEquals(0, hits.getLength());
query = getSearchEngine().queryBuilder().queryString(PROPERTY_VAL4 + ":" + VALUE_VAL4).toQuery();
hits = query.hits(getSearchEngine());
assertEquals(1, hits.getLength());
getSearchEngine().commit(true);
}
public void testTwoPhaseCreatePrepareRollback() {
// create an index with data and commit it
getSearchEngine().begin();
Resource singleId = createSingleIdResource(getSearchEngine());
getSearchEngine().create(singleId);
Resource multiId = createMultiIdResource(getSearchEngine());
getSearchEngine().create(multiId);
getSearchEngine().prepare();
getSearchEngine().rollback();
sleepForChangesToOccur();
getSearchEngine().begin();
assertSingleIdResourceNotExists(getSearchEngine());
assertMulitIdResourceNotExists(getSearchEngine());
getSearchEngine().rollback();
}
public void testTwoPhaseSavePrepareRollback() {
// create an index with data and commit it
getSearchEngine().begin();
Resource singleId = createSingleIdResource(getSearchEngine());
getSearchEngine().create(singleId);
Resource multiId = createMultiIdResource(getSearchEngine());
getSearchEngine().create(multiId);
getSearchEngine().commit(true);
sleepForChangesToOccur();
getSearchEngine().begin();
assertSingleIdResourceOriginal(getSearchEngine());
assertMulitIdResourceOriginal(getSearchEngine());
singleId = createUpdatedSingleIdResource(getSearchEngine());
getSearchEngine().save(singleId);
getSearchEngine().prepare();
getSearchEngine().rollback();
sleepForChangesToOccur();
getSearchEngine().begin();
assertSingleIdResourceOriginal(getSearchEngine());
assertMulitIdResourceOriginal(getSearchEngine());
getSearchEngine().commit(true);
}
public void testTwoPhaseDeletePrepareRollback() {
// create an index with data and commit it
getSearchEngine().begin();
Resource singleId = createSingleIdResource(getSearchEngine());
getSearchEngine().create(singleId);
Resource multiId = createMultiIdResource(getSearchEngine());
getSearchEngine().create(multiId);
getSearchEngine().prepare();
getSearchEngine().commit(false);
sleepForChangesToOccur();
getSearchEngine().begin();
assertSingleIdResourceExists(getSearchEngine());
assertMulitIdResourceExists(getSearchEngine());
getSearchEngine().rollback();
sleepForChangesToOccur();
getSearchEngine().begin();
getSearchEngine().delete(singleId);
getSearchEngine().prepare();
getSearchEngine().rollback();
sleepForChangesToOccur();
getSearchEngine().begin();
assertSingleIdResourceExists(getSearchEngine());
assertMulitIdResourceExists(getSearchEngine());
getSearchEngine().rollback();
}
public void testTwoPhasePrepareCommit() {
// create an index with data and commit it
getSearchEngine().begin();
Resource singleId = createSingleIdResource(getSearchEngine());
getSearchEngine().create(singleId);
Resource multiId = createMultiIdResource(getSearchEngine());
getSearchEngine().create(multiId);
getSearchEngine().prepare();
getSearchEngine().commit(false);
sleepForChangesToOccur();
getSearchEngine().begin();
assertSingleIdResourceExists(getSearchEngine());
assertMulitIdResourceExists(getSearchEngine());
getSearchEngine().rollback();
}
public void testTwoPhaseSavePrepareCommit() {
// create an index with data and commit it
getSearchEngine().begin();
Resource singleId = createSingleIdResource(getSearchEngine());
getSearchEngine().create(singleId);
Resource multiId = createMultiIdResource(getSearchEngine());
getSearchEngine().create(multiId);
getSearchEngine().commit(true);
sleepForChangesToOccur();
getSearchEngine().begin();
assertSingleIdResourceOriginal(getSearchEngine());
assertMulitIdResourceOriginal(getSearchEngine());
singleId = createUpdatedSingleIdResource(getSearchEngine());
getSearchEngine().save(singleId);
getSearchEngine().prepare();
getSearchEngine().commit(false);
sleepForChangesToOccur();
getSearchEngine().begin();
assertSingleIdResourceExists(getSearchEngine());
assertSingleIdResourceUpdated(getSearchEngine());
assertMulitIdResourceExists(getSearchEngine());
assertMulitIdResourceOriginal(getSearchEngine());
getSearchEngine().rollback();
}
public void testFlushCommit() {
// create a search search engine
SearchEngine searchSearchEngine = createNewSearchEngine();
searchSearchEngine.begin();
// verify that there is no resources there
assertSingleIdResourceNotExists(searchSearchEngine);
assertMulitIdResourceNotExists(searchSearchEngine);
// start the search engine the perfoms the actual dirty operations
getSearchEngine().begin();
Resource singleId = createSingleIdResource(getSearchEngine());
getSearchEngine().create(singleId);
Resource multiId = createMultiIdResource(getSearchEngine());
getSearchEngine().create(multiId);
sleepForChangesToOccur();
// clear the cache and verify that we don't see the changes in the search SearchEngine
getSearchEngineFactory().getIndexManager().clearCache();
assertSingleIdResourceNotExists(searchSearchEngine);
assertMulitIdResourceNotExists(searchSearchEngine);
// flush commit, and now check that we see the changes in the search SearchEgnine
getSearchEngine().flushCommit();
sleepForChangesToOccur();
getSearchEngineFactory().getIndexManager().clearCache();
assertSingleIdResourceExists(searchSearchEngine);
assertMulitIdResourceExists(searchSearchEngine);
// create new resources (after flush commit), make sure we can do that
Resource singleId2 = createSingleIdResource2(getSearchEngine());
getSearchEngine().create(singleId2);
Resource multiId2 = createMultiIdResource2(getSearchEngine());
getSearchEngine().create(multiId2);
sleepForChangesToOccur();
// verify that we don't see them in the search SearchEngine
getSearchEngineFactory().getIndexManager().clearCache();
assertSingleIdResource2NotExists(searchSearchEngine);
assertMulitIdResource2NotExists(searchSearchEngine);
// flush commit and see that we can see them
getSearchEngine().flushCommit();
sleepForChangesToOccur();
getSearchEngineFactory().getIndexManager().clearCache();
assertSingleIdResource2Exists(searchSearchEngine);
assertMulitIdResource2Exists(searchSearchEngine);
// now delete the resource
getSearchEngine().delete(singleId);
getSearchEngine().delete(multiId);
sleepForChangesToOccur();
// check that we don't see it in the search SearchEngine
getSearchEngineFactory().getIndexManager().clearCache();
assertSingleIdResourceExists(searchSearchEngine);
assertMulitIdResourceExists(searchSearchEngine);
// now flush commit, and see that we don't see it in the search SearchEngine
getSearchEngine().flushCommit(ALIAS_SINGLE);
sleepForChangesToOccur();
getSearchEngineFactory().getIndexManager().clearCache();
assertSingleIdResourceNotExists(searchSearchEngine);
assertMulitIdResourceExists(searchSearchEngine);
assertSingleIdResource2Exists(searchSearchEngine);
assertMulitIdResource2Exists(searchSearchEngine);
searchSearchEngine.commit(true);
getSearchEngine().commit(true);
}
protected void sleepForChangesToOccur() {
}
}