@Test public void testLeaseDisabled() throws Exception { // take care of initial reindex before AsyncIndexUpdate async = new AsyncIndexUpdate(name, store, provider).setLeaseTimeOut(0); async.run(); testContent(store); assertRunOk(async); testContent(store); assertRunOk(async); executed.set(true); }
@Test public void testPreIndexUpdateReindex() throws Exception { testContent(store); final IndexStatusListener l1 = new IndexStatusListener() { @Override protected void preIndexUpdate() { executed.set(true); assertRunKo(new AsyncIndexUpdate(name, store, provider)); } }; assertRunOk(new SpecialAsyncIndexUpdate(name, store, provider, l1)); }
@Test public void testPostIndexUpdateReindex() throws Exception { testContent(store); final IndexStatusListener l1 = new IndexStatusListener() { @Override protected void postIndexUpdate() { executed.set(true); assertRunKo(new AsyncIndexUpdate(name, store, provider)); } }; assertRunOk(new SpecialAsyncIndexUpdate(name, store, provider, l1)); }
testContent(store, AsyncUpdateCallback.LEASE_CHECK_INTERVAL / 2); Set<Long> leaseTimes = Sets.newHashSet(); final Clock.Virtual clock = new Clock.Virtual(); testContent(store, AsyncUpdateCallback.LEASE_CHECK_INTERVAL * 2); assertRunOk(new SpecialAsyncIndexUpdate(name, store, provider, l1, clock) .setLeaseTimeOut(lease));
@Test public void testPreIndexUpdate() throws Exception { // take care of initial reindex before new AsyncIndexUpdate(name, store, provider).run(); testContent(store); final IndexStatusListener l1 = new IndexStatusListener() { @Override protected void preIndexUpdate() { executed.set(true); assertRunKo(new AsyncIndexUpdate(name, store, provider)); } }; assertRunOk(new SpecialAsyncIndexUpdate(name, store, provider, l1)); }
@Test public void testPostIndexUpdate() throws Exception { // take care of initial reindex before new AsyncIndexUpdate(name, store, provider).run(); testContent(store); final IndexStatusListener l1 = new IndexStatusListener() { @Override protected void postIndexUpdate() { executed.set(true); assertRunKo(new AsyncIndexUpdate(name, store, provider)); } }; assertRunOk(new SpecialAsyncIndexUpdate(name, store, provider, l1)); }
@Test public void testPreClose() throws Exception { // take care of initial reindex before new AsyncIndexUpdate(name, store, provider).run(); testContent(store); final IndexStatusListener l1 = new IndexStatusListener() { @Override protected void preClose() { executed.set(true); assertRunKo(new AsyncIndexUpdate(name, store, provider)); } }; assertRunOk(new SpecialAsyncIndexUpdate(name, store, provider, l1)); }
@Test public void testPreIndexUpdateLeaseExpired() throws Exception { // take care of initial reindex before new AsyncIndexUpdate(name, store, provider).run(); // add extra indexed content testContent(store); final long lease = 50; final IndexStatusListener l1 = new IndexStatusListener() { @Override protected void preIndexUpdate() { executed.set(true); try { TimeUnit.MILLISECONDS.sleep(lease * 3); } catch (InterruptedException e) { // } assertRunOk(new AsyncIndexUpdate(name, store, provider)); } }; assertRunKo(new SpecialAsyncIndexUpdate(name, store, provider, l1) .setLeaseTimeOut(lease)); }
@Test public void testPostIndexUpdateLeaseExpired() throws Exception { // take care of initial reindex before new AsyncIndexUpdate(name, store, provider).run(); // add extra indexed content testContent(store); final long lease = 50; final IndexStatusListener l1 = new IndexStatusListener() { @Override protected void postIndexUpdate() { executed.set(true); try { TimeUnit.MILLISECONDS.sleep(lease * 3); } catch (InterruptedException e) { // } assertRunOk(new AsyncIndexUpdate(name, store, provider)); } }; assertRunKo(new SpecialAsyncIndexUpdate(name, store, provider, l1) .setLeaseTimeOut(lease)); }
@Test public void testLeaseExpiredToDisabled() throws Exception { // take care of initial reindex before new AsyncIndexUpdate(name, store, provider).run(); // add extra indexed content testContent(store); // make it look like lease got stuck due to force shutdown NodeBuilder builder = store.getRoot().builder(); builder.getChildNode(AsyncIndexUpdate.ASYNC).setProperty( AsyncIndexUpdate.leasify(name), System.currentTimeMillis() + 500000); store.merge(builder, EmptyHook.INSTANCE, CommitInfo.EMPTY); final IndexStatusListener l1 = new IndexStatusListener() { @Override protected void postIndexUpdate() { executed.set(true); } }; assertRunOk(new SpecialAsyncIndexUpdate(name, store, provider, l1) .setLeaseTimeOut(0)); assertFalse("Stale lease info must be cleaned", store.getRoot().getChildNode(AsyncIndexUpdate.ASYNC) .hasProperty(AsyncIndexUpdate.leasify(name))); }