@Override protected void prePrepare() { executed.set(true); assertRunOk(new AsyncIndexUpdate(name, store, provider)); } };
@Override protected void postPrepare() { executed.set(true); // lease must prevent this run assertRunKo(new AsyncIndexUpdate(name, store, provider)); } };
@Override protected void preIndexUpdate() { executed.set(true); assertRunKo(new AsyncIndexUpdate(name, store, provider)); } };
@Override protected void postIndexUpdate() { executed.set(true); assertRunKo(new AsyncIndexUpdate(name, store, provider)); } };
@Override protected void preClose() { executed.set(true); assertRunKo(new AsyncIndexUpdate(name, store, provider)); } };
@Override protected void postIndexUpdate() { executed.set(true); assertRunKo(new AsyncIndexUpdate(name, store, provider)); } };
@Override protected void postPrepare() { executed.set(true); // lease must prevent this run assertRunKo(new AsyncIndexUpdate(name, store, provider)); } };
@Override protected void preIndexUpdate() { executed.set(true); assertRunKo(new AsyncIndexUpdate(name, store, provider)); } };
@Override protected void postPrepare() { executed.set(true); try { TimeUnit.MILLISECONDS.sleep(lease * 3); } catch (InterruptedException e) { // } assertRunOk(new AsyncIndexUpdate(name, store, provider)); } };
@Override protected void postIndexUpdate() { executed.set(true); try { TimeUnit.MILLISECONDS.sleep(lease * 3); } catch (InterruptedException e) { // } assertRunOk(new AsyncIndexUpdate(name, store, provider)); } };
@Override protected void preIndexUpdate() { executed.set(true); try { TimeUnit.MILLISECONDS.sleep(lease * 3); } catch (InterruptedException e) { // } assertRunOk(new AsyncIndexUpdate(name, store, provider)); } };
@Override protected void preIndexUpdate() { executed.set(true); try { TimeUnit.MILLISECONDS.sleep(lease * 3); } catch (InterruptedException e) { // } assertRunOk(new AsyncIndexUpdate(name, store, provider)); } };
@Override protected void postIndexUpdate() { executed.set(true); try { TimeUnit.MILLISECONDS.sleep(lease * 3); } catch (InterruptedException e) { // } assertRunOk(new AsyncIndexUpdate(name, store, provider)); } };
@Override protected void postPrepare() { executed.set(true); try { TimeUnit.MILLISECONDS.sleep(lease * 3); } catch (InterruptedException e) { // } assertRunOk(new AsyncIndexUpdate(name, store, provider)); } };
@Test public void indexedUpto() throws Exception{ AsyncIndexUpdate async = new AsyncIndexUpdate("async", store, provider); async.run(); AsyncIndexUpdate async2 = new AsyncIndexUpdate("foo-async", store, provider); async2.run(); Map<String, Long> result = service.getIndexedUptoPerLane(); assertFalse(result.isEmpty()); assertTrue(result.get("async") > -1); assertTrue(result.get("foo-async") > -1); }
@Test public void names() throws Exception{ AsyncIndexUpdate async = new AsyncIndexUpdate("async", store, provider); async.run(); AsyncIndexUpdate async2 = new AsyncIndexUpdate("foo-async", store, provider); async2.run(); Set<String> names = ImmutableSet.copyOf(service.getAsyncLanes()); assertThat(names, containsInAnyOrder("async", "foo-async")); service.bindStatsMBeans(async.getIndexStats()); service.bindStatsMBeans(async2.getIndexStats()); }
@Test public void testAsyncPropertyNoChanges() throws Exception { NodeStore store = new MemoryNodeStore(); assertTrue(Iterables.isEmpty(store.checkpoints())); AsyncIndexUpdate async = new AsyncIndexUpdate(ASYNC_REINDEX_VALUE, store, provider, true); async.run(); async.run(); async.close(); assertTrue(Iterables.isEmpty(store.checkpoints())); } }
@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 asyncStateChanged() throws Exception{ AsyncIndexUpdate async = new AsyncIndexUpdate("async", store, provider); async.run(); AsyncIndexUpdate async2 = new AsyncIndexUpdate("foo-async", store, provider); async2.run(); NodeState root = store.getRoot(); assertFalse(service.hasIndexerUpdatedForAnyLane(root, root)); NodeBuilder builder = store.getRoot().builder(); builder.child(":async").setProperty(AsyncIndexUpdate.lastIndexedTo("async"), 42L); store.merge(builder, EmptyHook.INSTANCE, CommitInfo.EMPTY); assertTrue(service.hasIndexerUpdatedForAnyLane(root, store.getRoot())); }
@Test public void locking() throws Exception{ new AsyncIndexUpdate(name, store, provider).run(); assertFalse(getAsync().hasProperty(AsyncIndexUpdate.leasify(name))); ClusterNodeStoreLock lock = new ClusterNodeStoreLock(store); ClusteredLockToken token = lock.lock("async"); assertTrue(getAsync().hasProperty(AsyncIndexUpdate.leasify(name))); assertTrue(lock.isLocked(name)); lock.unlock(token); assertFalse(getAsync().hasProperty(AsyncIndexUpdate.leasify(name))); assertFalse(lock.isLocked(name)); }