|
@@ -38,7 +38,9 @@ import java.util.List;
|
|
|
import java.util.function.Function;
|
|
|
|
|
|
import static org.elasticsearch.indices.breaker.HierarchyCircuitBreakerService.REQUEST_CIRCUIT_BREAKER_LIMIT_SETTING;
|
|
|
+import static org.hamcrest.Matchers.equalTo;
|
|
|
import static org.hamcrest.Matchers.greaterThanOrEqualTo;
|
|
|
+import static org.hamcrest.Matchers.lessThan;
|
|
|
|
|
|
public class BigArraysTests extends ESTestCase {
|
|
|
|
|
@@ -389,6 +391,17 @@ public class BigArraysTests extends ESTestCase {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ public void testOverSizeUsesMinPageCount() {
|
|
|
+ final int pageSize = 1 << (randomIntBetween(2, 16));
|
|
|
+ final int minSize = randomIntBetween(1, pageSize) * randomIntBetween(1, 100);
|
|
|
+ final long size = BigArrays.overSize(minSize, pageSize, 1);
|
|
|
+ assertThat(size, greaterThanOrEqualTo((long)minSize));
|
|
|
+ if (size >= pageSize) {
|
|
|
+ assertThat(size + " is a multiple of " + pageSize, size % pageSize, equalTo(0L));
|
|
|
+ }
|
|
|
+ assertThat(size - minSize, lessThan((long) pageSize));
|
|
|
+ }
|
|
|
+
|
|
|
private List<BigArraysHelper> bigArrayCreators(final long maxSize, final boolean withBreaking) {
|
|
|
final BigArrays byteBigArrays = newBigArraysInstance(maxSize, withBreaking);
|
|
|
BigArraysHelper byteHelper = new BigArraysHelper(byteBigArrays,
|