@Test public void testPollWait() throws InterruptedException, IOException { final FileBlockingQueue<String> queue = getFileBlockingQueue(); final AtomicLong start = new AtomicLong(System.currentTimeMillis()); String m = queue.poll(1000, TimeUnit.MILLISECONDS); final AtomicLong duration = new AtomicLong(System.currentTimeMillis() - start.get()); assertTrue(duration.get() >= 1000 && duration.get() <= 2000); assertNull(m); ExecutorService e = Executors.newFixedThreadPool(1); e.execute( new Runnable() { @Override public void run() { start.set(System.currentTimeMillis()); String m = null; try { m = queue.poll(5000, TimeUnit.MILLISECONDS); } catch (InterruptedException e1) { throw new RuntimeException(e1); } assertNotNull(m); duration.set(System.currentTimeMillis() - start.get()); } }); Thread.sleep(1000); queue.offer("testString"); assertTrue(duration.get() < 4000); }
private void createFile(FileBlockingQueue<String> queue, int count) throws IOException { for (int i = 0; i < count; ++i) { assertTrue(queue.offer("testString" + i)); } }