@Test @SuppressFBWarnings("PRMC_POSSIBLY_REDUNDANT_METHOD_CALLS") public void testBuild2() throws ObjectCreationException, InterruptedException, ObjectBorrowException, ExecutionException, TimeoutException { final RecyclingSupplier<ExpensiveTestObject> pool = new RecyclingSupplierBuilder(10, new ExpensiveTestObjectFactory()) .withMaintenance(DefaultScheduler.INSTANCE, 1L, true) .build(); LOG.debug("pool = {}", pool); final ExpensiveTestObject object = pool.get(); LOG.debug("pool = {}", pool); Future<Void> submit = DefaultExecutor.INSTANCE.submit(() -> { pool.recycle(object, null); return null; }); submit.get(); Thread.sleep(100); final ExpensiveTestObject object2 = pool.get(); LOG.debug("pool = {}", pool); Assert.assertNotNull(object2); }
@Test @SuppressFBWarnings("PRMC_POSSIBLY_REDUNDANT_METHOD_CALLS") public void testBuild3() throws ObjectCreationException, InterruptedException, ObjectBorrowException, ExecutionException, TimeoutException { final RecyclingSupplier<ExpensiveTestObject> pool = new RecyclingSupplierBuilder(10, new ExpensiveTestObjectFactory()) .withMaintenance(DefaultScheduler.INSTANCE, 1L, true) .build(); LOG.debug("pool = {}", pool); final ExpensiveTestObject object = pool.get(); LOG.debug("pool = {}", pool); Future<Void> submit = DefaultExecutor.INSTANCE.submit(() -> { pool.recycle(object, null); return null; }); submit.get(); final ExpensiveTestObject object2 = pool.get(); LOG.debug("pool = {}", pool); Assert.assertSame(object, object2); }
@Test(timeout = 20000) public void testPoolUseWithMaintenance() throws ObjectCreationException, ObjectBorrowException, InterruptedException, TimeoutException, ObjectReturnException, ObjectDisposeException, ExecutionException { final RecyclingSupplier<ExpensiveTestObject> pool = new RecyclingSupplierBuilder<>(10, new ExpensiveTestObjectFactory()) .withMaintenance(DefaultScheduler.INSTANCE, 10, true).build(); runTest(pool, 5, 20000); try { pool.dispose(); } catch (ObjectDisposeException ex) { Throwables.writeTo(ex, System.err, Throwables.PackageDetail.SHORT); } }