@Test public void increaseIncrementsPoolSizeByResizeFactorMultipliedByInitialPoolSize() { // given double resizeFactor = 0.2; ResizePolicy policy = UnlimitedResizePolicy.newBuilder().withResizeFactor(resizeFactor).build(); int initialPoolSize = 10; ItemSourcePool pool = mock(ItemSourcePool.class); when(pool.getInitialSize()).thenReturn(initialPoolSize); // when boolean resized = policy.increase(pool); // then assertTrue(resized); ArgumentCaptor<Integer> captor = ArgumentCaptor.forClass(Integer.class); verify(pool).incrementPoolSize(captor.capture()); assertEquals((Object)(int)(initialPoolSize * resizeFactor), captor.getValue()); }
@Test public void increaseThrowsWhenResizeWouldNotTakeAnyEffect() { // given ResizePolicy policy = UnlimitedResizePolicy.newBuilder().withResizeFactor(0.1).build(); ItemSourcePool pool = mock(ItemSourcePool.class); Integer initialPoolSize = 5; when(pool.getInitialSize()).thenReturn(initialPoolSize); expectedException.expect(ConfigurationException.class); expectedException.expectMessage("will not resize given pool"); // when policy.increase(pool); }
@Test public void decreaseNeverShrinksBelowInitialSize() throws PoolResourceException { // given int initialSize = 40; int additionalSize = 60; double resizeFactor = 0.75; int expectedResizedTotalSize = initialSize + 5; // 5 will be in use ResizePolicy resizePolicy = UnlimitedResizePolicy.newBuilder().withResizeFactor(resizeFactor).build(); ItemSourcePool pool = spy(BufferedItemSourcePoolTest.createDefaultTestBufferedItemSourcePool(initialSize, true)); pool.incrementPoolSize(additionalSize); // when only 5 used for (int ii = 0; ii < 5; ii++) { pool.getPooled(); } // when boolean resized = resizePolicy.decrease(pool); // then assertTrue(resized); // initialSize(40) + 5 in use assertEquals(expectedResizedTotalSize, pool.getTotalSize()); // additionalSize(60) - 5 in use verify(pool, times(55)).remove(); }
int expectedResizedTotalSize = initialSize + additionalSize; ResizePolicy resizePolicy = UnlimitedResizePolicy.newBuilder().withResizeFactor(resizeFactor).build();
static BufferedItemSourcePool createDefaultTestBufferedItemSourcePool(int initialSize, boolean monitored, ScheduledExecutorService mockedExecutor) { ResizePolicy resizePolicy = UnlimitedResizePolicy.newBuilder().build(); return new BufferedItemSourcePool( DEFAULT_TEST_ITEM_POOL_NAME, byteBufAllocator, resizePolicy, DEFAULT_TEST_RESIZE_TIMEOUT, monitored, DEFAULT_TEST_MONITOR_TASK_INTERVAL, initialSize, DEFAULT_TEST_ITEM_SIZE_IN_BYTES ) { @Override ScheduledExecutorService createExecutor() { return mockedExecutor; } }; } }
@Test public void decreaseShrinksPoolByTotalSizeMultipliedByResizeFactor() { // given int initialSize = 50; int additionalSize = 50; int expectedResizedTotalSize = 80; double resizeFactor = 0.2; ResizePolicy resizePolicy = UnlimitedResizePolicy.newBuilder().withResizeFactor(resizeFactor).build(); ItemSourcePool pool = spy(BufferedItemSourcePoolTest.createDefaultTestBufferedItemSourcePool(initialSize, true)); pool.incrementPoolSize(additionalSize); // when boolean resized = resizePolicy.decrease(pool); // then assertTrue(resized); assertEquals(expectedResizedTotalSize, pool.getTotalSize()); }
@Test public void poolCreatesScheduledExecutor() { // when BufferedItemSourcePool pool = spy(new BufferedItemSourcePool( DEFAULT_TEST_ITEM_POOL_NAME, byteBufAllocator, UnlimitedResizePolicy.newBuilder().withResizeFactor(1).build(), DEFAULT_TEST_RESIZE_TIMEOUT, false, DEFAULT_TEST_MONITOR_TASK_INTERVAL, 1, DEFAULT_TEST_ITEM_SIZE_IN_BYTES)); // then assertNotNull(pool.executor); }
@Test public void builderThrowsWhenResizeFactorIsZero() { // given UnlimitedResizePolicy.Builder builder = UnlimitedResizePolicy.newBuilder(); builder.withResizeFactor(0); expectedException.expect(ConfigurationException.class); expectedException.expectMessage("must be higher than 0"); // when builder.build(); }
@Test public void builderBuildsSuccessfully() { // given UnlimitedResizePolicy.Builder builder = UnlimitedResizePolicy.newBuilder(); // when ResizePolicy policy = builder.build(); // then assertNotNull(policy); }
public static BufferedItemSourcePool createDefaultTestBufferedItemSourcePool(int initialSize, boolean monitored) { return new BufferedItemSourcePool( DEFAULT_TEST_ITEM_POOL_NAME, byteBufAllocator, UnlimitedResizePolicy.newBuilder().build(), DEFAULT_TEST_RESIZE_TIMEOUT, monitored, DEFAULT_TEST_MONITOR_TASK_INTERVAL, initialSize, DEFAULT_TEST_ITEM_SIZE_IN_BYTES); }
@Test public void builderThrowsWhenResizeFactorIsLowerThanZero() { // given UnlimitedResizePolicy.Builder builder = UnlimitedResizePolicy.newBuilder(); builder.withResizeFactor(-0.1); expectedException.expect(ConfigurationException.class); expectedException.expectMessage("must be higher than 0"); // when builder.build(); }
/** * Creates default {@link ResizePolicy} if one was not configured * @return {@link UnlimitedResizePolicy} */ ResizePolicy createResizePolicy() { return UnlimitedResizePolicy.newBuilder().build(); }
/** * Creates default {@link ResizePolicy} if one was not configured * @return {@link UnlimitedResizePolicy} */ ResizePolicy createResizePolicy() { return UnlimitedResizePolicy.newBuilder().build(); }
@Test public void builderThrowsWhenResizeFactorIsHigherThanOne() { // given UnlimitedResizePolicy.Builder builder = UnlimitedResizePolicy.newBuilder(); builder.withResizeFactor(1.01); expectedException.expect(ConfigurationException.class); expectedException.expectMessage("must be lower or equal 1"); // when builder.build(); }