diff options
author | Timothy Farkas <timothyfarkas@apache.org> | 2018-01-11 14:59:41 -0800 |
---|---|---|
committer | Arina Ielchiieva <arina.yelchiyeva@gmail.com> | 2018-01-26 13:42:27 +0200 |
commit | 186536d544d02ffc01339a4645e2a533545a2f86 (patch) | |
tree | 24ddcb013b243ee501d5dfa1d73eb9c0a1511510 /exec/java-exec/src/test/java/org/apache/drill/exec/util | |
parent | 9926eda21c748e96d67bce341a76dac3114002af (diff) |
DRILL-5730: Mock testing improvements and interface improvements
closes #1045
Diffstat (limited to 'exec/java-exec/src/test/java/org/apache/drill/exec/util')
-rw-r--r-- | exec/java-exec/src/test/java/org/apache/drill/exec/util/TestQueryMemoryAlloc.java | 51 |
1 files changed, 33 insertions, 18 deletions
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/util/TestQueryMemoryAlloc.java b/exec/java-exec/src/test/java/org/apache/drill/exec/util/TestQueryMemoryAlloc.java index 7a62ef336..f56df7797 100644 --- a/exec/java-exec/src/test/java/org/apache/drill/exec/util/TestQueryMemoryAlloc.java +++ b/exec/java-exec/src/test/java/org/apache/drill/exec/util/TestQueryMemoryAlloc.java @@ -20,9 +20,9 @@ package org.apache.drill.exec.util; import static org.junit.Assert.*; import org.apache.drill.exec.ExecConstants; +import org.apache.drill.exec.server.options.OptionManager; import org.apache.drill.test.DrillTest; import org.apache.drill.test.OperatorFixture; -import org.apache.drill.test.OperatorFixture.OperatorFixtureBuilder; import org.junit.Test; public class TestQueryMemoryAlloc extends DrillTest { @@ -32,75 +32,85 @@ public class TestQueryMemoryAlloc extends DrillTest { @Test public void testDefaultOptions() throws Exception { - OperatorFixtureBuilder builder = OperatorFixture.builder(); + OperatorFixture.Builder builder = OperatorFixture.builder(); builder.systemOption(ExecConstants.PERCENT_MEMORY_PER_QUERY_KEY, 0.05); builder.systemOption(ExecConstants.MAX_QUERY_MEMORY_PER_NODE_KEY, 2 * ONE_GB); try (OperatorFixture fixture = builder.build()) { + final OptionManager optionManager = fixture.getOptionManager(); - // Out-of-box memory, use query memory per node as floor. + optionManager.setLocalOption(ExecConstants.PERCENT_MEMORY_PER_QUERY_KEY, 0.05); + optionManager.setLocalOption(ExecConstants.MAX_QUERY_MEMORY_PER_NODE_KEY, 2 * ONE_GB); - long mem = MemoryAllocationUtilities.computeQueryMemory(fixture.config(), fixture.options(), 8 * ONE_GB); + // Out-of-box memory, use query memory per node as floor. + long mem = MemoryAllocationUtilities.computeQueryMemory(fixture.config(), optionManager, 8 * ONE_GB); assertEquals(2 * ONE_GB, mem); // Up to 40 GB, query memory dominates. - mem = MemoryAllocationUtilities.computeQueryMemory(fixture.config(), fixture.options(), 40 * ONE_GB); + mem = MemoryAllocationUtilities.computeQueryMemory(fixture.config(), optionManager, 40 * ONE_GB); assertEquals(2 * ONE_GB, mem); // After 40 GB, the percent dominates - mem = MemoryAllocationUtilities.computeQueryMemory(fixture.config(), fixture.options(), 100 * ONE_GB); + mem = MemoryAllocationUtilities.computeQueryMemory(fixture.config(), optionManager, 100 * ONE_GB); assertEquals(5 * ONE_GB, mem); } } @Test public void testCustomFloor() throws Exception { - OperatorFixtureBuilder builder = OperatorFixture.builder(); + OperatorFixture.Builder builder = OperatorFixture.builder(); builder.systemOption(ExecConstants.PERCENT_MEMORY_PER_QUERY_KEY, 0.05); builder.systemOption(ExecConstants.MAX_QUERY_MEMORY_PER_NODE_KEY, 3 * ONE_GB); try (OperatorFixture fixture = builder.build()) { + final OptionManager optionManager = fixture.getOptionManager(); - // Out-of-box memory, use query memory per node as floor. + optionManager.setLocalOption(ExecConstants.PERCENT_MEMORY_PER_QUERY_KEY, 0.05); + optionManager.setLocalOption(ExecConstants.MAX_QUERY_MEMORY_PER_NODE_KEY, 3 * ONE_GB); - long mem = MemoryAllocationUtilities.computeQueryMemory(fixture.config(), fixture.options(), 8 * ONE_GB); + // Out-of-box memory, use query memory per node as floor. + long mem = MemoryAllocationUtilities.computeQueryMemory(fixture.config(), optionManager, 8 * ONE_GB); assertEquals(3 * ONE_GB, mem); // Up to 60 GB, query memory dominates. - mem = MemoryAllocationUtilities.computeQueryMemory(fixture.config(), fixture.options(), 60 * ONE_GB); + mem = MemoryAllocationUtilities.computeQueryMemory(fixture.config(), optionManager, 60 * ONE_GB); assertEquals(3 * ONE_GB, mem); // After 60 GB, the percent dominates - mem = MemoryAllocationUtilities.computeQueryMemory(fixture.config(), fixture.options(), 100 * ONE_GB); + mem = MemoryAllocationUtilities.computeQueryMemory(fixture.config(), optionManager, 100 * ONE_GB); assertEquals(5 * ONE_GB, mem); } } @Test public void testCustomPercent() throws Exception { - OperatorFixtureBuilder builder = OperatorFixture.builder(); + OperatorFixture.Builder builder = OperatorFixture.builder(); builder.systemOption(ExecConstants.PERCENT_MEMORY_PER_QUERY_KEY, 0.10); builder.systemOption(ExecConstants.MAX_QUERY_MEMORY_PER_NODE_KEY, 2 * ONE_GB); try (OperatorFixture fixture = builder.build()) { + final OptionManager optionManager = fixture.getOptionManager(); + + optionManager.setLocalOption(ExecConstants.PERCENT_MEMORY_PER_QUERY_KEY, 0.10); + optionManager.setLocalOption(ExecConstants.MAX_QUERY_MEMORY_PER_NODE_KEY, 2 * ONE_GB); // Out-of-box memory, use query memory per node as floor. - long mem = MemoryAllocationUtilities.computeQueryMemory(fixture.config(), fixture.options(), 8 * ONE_GB); + long mem = MemoryAllocationUtilities.computeQueryMemory(fixture.config(), optionManager, 8 * ONE_GB); assertEquals(2 * ONE_GB, mem); // Up to 20 GB, query memory dominates. - mem = MemoryAllocationUtilities.computeQueryMemory(fixture.config(), fixture.options(), 20 * ONE_GB); + mem = MemoryAllocationUtilities.computeQueryMemory(fixture.config(), optionManager, 20 * ONE_GB); assertEquals(2 * ONE_GB, mem); // After 20 GB, the percent dominates - mem = MemoryAllocationUtilities.computeQueryMemory(fixture.config(), fixture.options(), 30 * ONE_GB); + mem = MemoryAllocationUtilities.computeQueryMemory(fixture.config(), optionManager, 30 * ONE_GB); assertEquals(3 * ONE_GB, mem); } } @@ -116,21 +126,26 @@ public class TestQueryMemoryAlloc extends DrillTest { @Test public void testOpMemory() throws Exception { - OperatorFixtureBuilder builder = OperatorFixture.builder(); + OperatorFixture.Builder builder = OperatorFixture.builder(); builder.systemOption(ExecConstants.CPU_LOAD_AVERAGE_KEY, 0.7); builder.systemOption(ExecConstants.MAX_WIDTH_PER_NODE_KEY, 10); builder.systemOption(ExecConstants.MIN_MEMORY_PER_BUFFERED_OP_KEY, 40 * ONE_MB); try (OperatorFixture fixture = builder.build()) { + final OptionManager optionManager = fixture.getOptionManager(); + + optionManager.setLocalOption(ExecConstants.CPU_LOAD_AVERAGE_KEY, 0.7); + optionManager.setLocalOption(ExecConstants.MAX_WIDTH_PER_NODE_KEY, 10); + optionManager.setLocalOption(ExecConstants.MIN_MEMORY_PER_BUFFERED_OP_KEY, 40 * ONE_MB); // Enough memory to go above configured minimum. - long opMinMem = MemoryAllocationUtilities.computeOperatorMemory(fixture.options(), 4 * ONE_GB, 2); + long opMinMem = MemoryAllocationUtilities.computeOperatorMemory(optionManager, 4 * ONE_GB, 2); assertEquals(4 * ONE_GB / 10 / 2, opMinMem); // Too little memory per operator. Use configured minimum. - opMinMem = MemoryAllocationUtilities.computeOperatorMemory(fixture.options(), ONE_GB, 100); + opMinMem = MemoryAllocationUtilities.computeOperatorMemory(optionManager, ONE_GB, 100); assertEquals(40 * ONE_MB, opMinMem); } } |