@Override public void awaitTermination(final Timeout timeout) throws InterruptedException { Args.notNull(timeout, "Timeout"); executorService.awaitTermination(timeout.getDuration(), timeout.getTimeUnit()); }
@Override public void awaitTermination(final Timeout timeout) throws InterruptedException { Args.notNull(timeout, "Timeout"); executorService.awaitTermination(timeout.getDuration(), timeout.getTimeUnit()); }
private void testFactory(final TimeUnit timeUnit) { Assert.assertEquals(timeUnit, Timeout.of(1, timeUnit).getTimeUnit()); }
@Test public void testMultithreadingSingleRead() throws Exception { final SharedInputBuffer inputBuffer = new SharedInputBuffer(10); final CapacityChannel capacityChannel = Mockito.mock(CapacityChannel.class); inputBuffer.updateCapacity(capacityChannel); Mockito.verify(capacityChannel).update(10); Mockito.reset(capacityChannel); final ExecutorService executorService = Executors.newFixedThreadPool(2); final Future<Boolean> task1 = executorService.submit(new Callable<Boolean>() { @Override public Boolean call() throws Exception { final Charset charset = StandardCharsets.US_ASCII; inputBuffer.fill(charset.encode("a")); return Boolean.TRUE; } }); final Future<Integer> task2 = executorService.submit(new Callable<Integer>() { @Override public Integer call() throws Exception { return inputBuffer.read(); } }); Assert.assertEquals(Boolean.TRUE, task1.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit())); Assert.assertEquals(Integer.valueOf('a'), task2.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit())); Mockito.verify(capacityChannel).update(10); }
Assert.assertEquals(Boolean.TRUE, task2.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit())); try { task1.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit()); } catch (final ExecutionException ex) { Assert.assertTrue(ex.getCause() instanceof InterruptedIOException);
poolEntry = leaseFuture.get(timeout.getDuration(), timeout.getTimeUnit()); if (poolEntry == null || leaseFuture.isCancelled()) { throw new InterruptedException();
@Test public void testMultithreadingReadStreamAbort() throws Exception { final SharedInputBuffer inputBuffer = new SharedInputBuffer(10); final CapacityChannel capacityChannel = Mockito.mock(CapacityChannel.class); inputBuffer.updateCapacity(capacityChannel); Mockito.verify(capacityChannel).update(10); Mockito.reset(capacityChannel); final ExecutorService executorService = Executors.newFixedThreadPool(2); final Future<Boolean> task1 = executorService.submit(new Callable<Boolean>() { @Override public Boolean call() throws Exception { Thread.sleep(1000); inputBuffer.abort(); return Boolean.TRUE; } }); final Future<Integer> task2 = executorService.submit(new Callable<Integer>() { @Override public Integer call() throws Exception { return inputBuffer.read(); } }); Assert.assertEquals(Boolean.TRUE, task1.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit())); Assert.assertEquals(Integer.valueOf(-1), task2.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit())); Mockito.verify(capacityChannel, Mockito.never()).update(10); }
@Test public void testMultithreadingRead() throws Exception { final SharedInputBuffer inputBuffer = new SharedInputBuffer(10); final CapacityChannel capacityChannel = Mockito.mock(CapacityChannel.class); inputBuffer.updateCapacity(capacityChannel); Mockito.verify(capacityChannel).update(10); Mockito.reset(capacityChannel); final ExecutorService executorService = Executors.newFixedThreadPool(2); final Future<Boolean> task1 = executorService.submit(new Callable<Boolean>() { @Override public Boolean call() throws Exception { final Charset charset = StandardCharsets.US_ASCII; inputBuffer.fill(charset.encode("1234567890")); return Boolean.TRUE; } }); final Future<Integer> task2 = executorService.submit(new Callable<Integer>() { @Override public Integer call() throws Exception { final byte[] tmp = new byte[20]; return inputBuffer.read(tmp, 0, tmp.length); } }); Assert.assertEquals(Boolean.TRUE, task1.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit())); Assert.assertEquals(Integer.valueOf(10), task2.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit())); Mockito.verify(capacityChannel).update(10); }
Assert.assertEquals(Boolean.TRUE, task1.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit())); Assert.assertEquals("12345678901234567890123456789012345678901234567890", task2.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit())); Mockito.verify(capacityChannel, Mockito.atLeast(1)).update(ArgumentMatchers.anyInt());
Assert.assertEquals(Boolean.TRUE, task1.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit())); Assert.assertEquals(Boolean.TRUE, task2.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit()));
final Timeout timeout = Timeout.defaultsToDisabled(connectTimeout); try { poolEntry = leaseFuture.get(timeout.getDuration(), timeout.getTimeUnit()); } catch (final InterruptedException ex) { throw new InterruptedIOException(ex.getMessage());
final Timeout timeout = Timeout.defaultsToDisabled(connectTimeout); try { poolEntry = leaseFuture.get(timeout.getDuration(), timeout.getTimeUnit()); } catch (final InterruptedException ex) { throw new InterruptedIOException(ex.getMessage());