1 package emissary.pool;
2
3 import emissary.test.core.junit5.UnitTest;
4
5 import org.junit.jupiter.params.ParameterizedTest;
6 import org.junit.jupiter.params.provider.Arguments;
7 import org.junit.jupiter.params.provider.MethodSource;
8
9 import java.util.stream.Stream;
10 import javax.annotation.Nullable;
11
12 import static org.junit.jupiter.api.Assertions.assertEquals;
13 import static org.junit.jupiter.api.Assertions.assertThrows;
14
15 class AgentPoolTest extends UnitTest {
16
17 public static Stream<Arguments> poolSizeVales() {
18 return Stream.of(
19 Arguments.of(60000L, null, 15, null, null),
20 Arguments.of(1900000000L, null, 20, null, null),
21 Arguments.of(2200000000L, null, 25, null, null),
22 Arguments.of(9900000000L, null, 50, null, null),
23 Arguments.of(0L, 10, 10, null, null),
24 Arguments.of(60000L, -10, 15, null, null),
25 Arguments.of(0L, -10, 10, IllegalArgumentException.class, "Must be greater then zero."),
26 Arguments.of(0L, 0, 10, IllegalArgumentException.class, "Must be greater then zero."),
27 Arguments.of(-100L, null, 10, IllegalArgumentException.class, "Must be greater then zero."));
28 }
29
30 @ParameterizedTest
31 @MethodSource("poolSizeVales")
32 void testComputePoolSize(long maxMemoryInBytes,
33 Integer propertyOverride,
34 int expectedPoolSize,
35 @Nullable Class<? extends Exception> expectedException,
36 String expectedExceptionMsg) {
37
38 if (expectedException != null) {
39 Exception e = assertThrows(expectedException, () -> AgentPool.computePoolSize(maxMemoryInBytes, propertyOverride));
40 assertEquals(expectedExceptionMsg, e.getMessage());
41 } else {
42 assertEquals(expectedPoolSize, AgentPool.computePoolSize(maxMemoryInBytes, propertyOverride), "Pool Size Calculation Error");
43 }
44 }
45 }