package org.infinispan.query.distributed; import java.util.concurrent.CompletableFuture; import org.infinispan.Cache; import org.infinispan.context.Flag; import org.infinispan.query.Search; import org.infinispan.query.SearchManager; import org.infinispan.query.api.NotIndexedType; import org.infinispan.query.queries.faceting.Car; import org.testng.annotations.Test; /** * Running mass indexer on big bunch of data. * * @author Anna Manukyan */ @Test(groups = "functional", testName = "query.distributed.MassIndexingTest") public class MassIndexingTest extends DistributedMassIndexingTest { public void testReindexing() throws Exception { for(int i = 0; i < 200; i++) { caches.get(i % 2).getAdvancedCache().withFlags(Flag.SKIP_INDEXING).put(key("F" + i + "NUM"), new Car((i % 2 == 0 ? "megane" : "bmw"), "blue", 300 + i)); } //Adding also non-indexed values caches.get(0).getAdvancedCache().put(key("FNonIndexed1NUM"), new NotIndexedType("test1")); caches.get(0).getAdvancedCache().put(key("FNonIndexed2NUM"), new NotIndexedType("test2")); verifyFindsCar(0, "megane"); verifyFindsCar(0, "test1"); verifyFindsCar(0, "test2"); caches.get(0).getAdvancedCache().withFlags(Flag.SKIP_INDEXING).put(key("FNonIndexed3NUM"), new NotIndexedType("test3")); verifyFindsCar(0, "test3"); //re-sync datacontainer with indexes: rebuildIndexes(); verifyFindsCar(100, "megane"); verifyFindsCar(0, "test1"); verifyFindsCar(0, "test2"); } @Override protected void rebuildIndexes() throws Exception { Cache cache = caches.get(0); SearchManager searchManager = Search.getSearchManager(cache); CompletableFuture<Void> future = searchManager.getMassIndexer().startAsync(); future.get(); } }