@Test public void testBasics() throws InterruptedException { spawnThreadPushOperationThenCountDown(); assertFalse(latch.await(10, TimeUnit.MILLISECONDS)); blocker.operationDone(); assertTrue(latch.await(120, TimeUnit.SECONDS)); }
void operationDone() { semaphore.release(); }
ConcurrentDocumentOperationBlocker { void operationDone() { semaphore.release(); } }
ConcurrentDocumentOperationBlocker { void operationDone() { semaphore.release(); }  }
ConcurrentDocumentOperationBlocker { void operationDone() { semaphore.release(); }   }
ConcurrentDocumentOperationBlocker { void operationDone() { semaphore.release(); }    }