nabarunnag closed pull request #16: GEODE-6084: Refactored the benchmark code as per review. URL: https://github.com/apache/geode-benchmarks/pull/16
This is a PR merged from a forked repository. As GitHub hides the original diff on merge, it is displayed below for the sake of provenance: As this is a foreign pull request (from a fork), the diff is supplied below (as it won't show otherwise due to GitHub magic): diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/parameters/BenchmarkParameters.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/parameters/BenchmarkParameters.java deleted file mode 100644 index a3c3d3d..0000000 --- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/parameters/BenchmarkParameters.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more contributor license - * agreements. See the NOTICE file distributed with this work for additional information regarding - * copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. You may obtain a - * copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - */ -package org.apache.geode.benchmark.parameters; - -public class BenchmarkParameters { - - /** - * All roles defined for the JVMs created for the benchmark - */ - public class Roles { - public static final String SERVER = "server"; - public static final String CLIENT = "client"; - public static final String LOCATOR = "locator"; - } - - /** - * The port used to create the locator for the tests - */ - public static final int LOCATOR_PORT = 10334; - - /** - * Key range on which all the region operations are conducted on the default runner - */ - public static final long KEY_RANGE = 1000; - - /** - * Warm up time for the benchmark running on the default runner - */ - public static final int WARM_UP_TIME = 60; - - /** - * Total duration for which the benchmark will run on the default runner - */ - public static final int BENCHMARK_DURATION = 240; - - /** - * String key for the server cache attribute in the TestContext's attributeTree - */ - public static final String SERVER_CACHE = "SERVER_CACHE"; - - /** - * String key for the client cache attribute in the TestContext's attributeTree - */ - public static final String CLIENT_CACHE = "CLIENT_CACHE"; - - /** - * Key range on which all the region operations are conducted on a minimal runner - */ - public static final long KEY_RANGE_FOR_MINIMAL_RUNNER = 5; -} diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/CreateClientProxyRegion.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/CreateClientProxyRegion.java index ed724ee..5cf673c 100644 --- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/CreateClientProxyRegion.java +++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/CreateClientProxyRegion.java @@ -14,8 +14,6 @@ */ package org.apache.geode.benchmark.tasks; -import static org.apache.geode.benchmark.parameters.BenchmarkParameters.CLIENT_CACHE; - import org.apache.geode.cache.client.ClientCache; import org.apache.geode.cache.client.ClientRegionShortcut; import org.apache.geode.perftest.Task; @@ -27,7 +25,7 @@ public class CreateClientProxyRegion implements Task { @Override public void run(TestContext context) throws Exception { - ClientCache clientCache = (ClientCache) context.getAttribute(CLIENT_CACHE); + ClientCache clientCache = (ClientCache) context.getAttribute("CLIENT_CACHE"); clientCache.createClientRegionFactory(ClientRegionShortcut.PROXY) .create("region"); diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/CreatePartitionedRegion.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/CreatePartitionedRegion.java index 546d030..1604dc5 100644 --- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/CreatePartitionedRegion.java +++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/CreatePartitionedRegion.java @@ -15,8 +15,6 @@ package org.apache.geode.benchmark.tasks; -import static org.apache.geode.benchmark.parameters.BenchmarkParameters.SERVER_CACHE; - import org.apache.geode.cache.Cache; import org.apache.geode.cache.RegionShortcut; import org.apache.geode.perftest.Task; @@ -29,7 +27,7 @@ @Override public void run(TestContext context) throws Exception { - Cache cache = (Cache) context.getAttribute(SERVER_CACHE); + Cache cache = (Cache) context.getAttribute("SERVER_CACHE"); cache.createRegionFactory(RegionShortcut.PARTITION).create("region"); } } diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/CreateReplicatedRegion.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/CreateReplicatedRegion.java index b42eddc..51dbcd8 100644 --- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/CreateReplicatedRegion.java +++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/CreateReplicatedRegion.java @@ -14,8 +14,6 @@ */ package org.apache.geode.benchmark.tasks; -import static org.apache.geode.benchmark.parameters.BenchmarkParameters.SERVER_CACHE; - import org.apache.geode.cache.Cache; import org.apache.geode.cache.RegionShortcut; import org.apache.geode.perftest.Task; @@ -27,7 +25,7 @@ public class CreateReplicatedRegion implements Task { @Override public void run(TestContext context) throws Exception { - Cache cache = (Cache) context.getAttribute(SERVER_CACHE); + Cache cache = (Cache) context.getAttribute("SERVER_CACHE"); cache.createRegionFactory(RegionShortcut.REPLICATE).create("region"); } } diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/PrePopulateRegion.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/PrePopulateRegion.java index 8873452..462f0b3 100644 --- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/PrePopulateRegion.java +++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/PrePopulateRegion.java @@ -16,9 +16,6 @@ */ package org.apache.geode.benchmark.tasks; -import static org.apache.geode.benchmark.parameters.BenchmarkParameters.KEY_RANGE; -import static org.apache.geode.benchmark.parameters.BenchmarkParameters.SERVER_CACHE; - import java.time.Duration; import java.time.Instant; import java.util.concurrent.ThreadLocalRandom; @@ -35,7 +32,7 @@ import org.apache.geode.perftest.jvms.RemoteJVMFactory; public class PrePopulateRegion implements Task { - long keyRangeToPrepopulate = KEY_RANGE; + long keyRangeToPrepopulate = 10000; private static final Logger logger = LoggerFactory.getLogger(RemoteJVMFactory.class); public PrePopulateRegion() {} @@ -51,7 +48,7 @@ public PrePopulateRegion(long keyRangeToPrepopulate) { */ @Override public void run(TestContext context) { - Cache serverCache = (Cache) context.getAttribute(SERVER_CACHE); + Cache serverCache = (Cache) context.getAttribute("SERVER_CACHE"); Region region = serverCache.getRegion("region"); logger.info("*******************************************"); logger.info(" Prepopulating the region "); diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/StartClient.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/StartClient.java index 9738578..555c4de 100644 --- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/StartClient.java +++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/StartClient.java @@ -17,8 +17,6 @@ package org.apache.geode.benchmark.tasks; -import static org.apache.geode.benchmark.parameters.BenchmarkParameters.CLIENT_CACHE; - import java.io.File; import java.net.InetAddress; @@ -51,6 +49,6 @@ public void run(TestContext context) throws Exception { .set(ConfigurationProperties.STATISTIC_ARCHIVE_FILE, statsFile) .create(); - context.setAttribute(CLIENT_CACHE, clientCache); + context.setAttribute("CLIENT_CACHE", clientCache); } } diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/StartServer.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/StartServer.java index 26b010f..c1efdae 100644 --- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/StartServer.java +++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/StartServer.java @@ -17,8 +17,6 @@ package org.apache.geode.benchmark.tasks; -import static org.apache.geode.benchmark.parameters.BenchmarkParameters.SERVER_CACHE; - import java.io.File; import java.net.InetAddress; @@ -57,7 +55,7 @@ public void run(TestContext context) throws Exception { CacheServer cacheServer = ((Cache) cache).addCacheServer(); cacheServer.setPort(0); cacheServer.start(); - context.setAttribute(SERVER_CACHE, cache); + context.setAttribute("SERVER_CACHE", cache); } diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/BenchmarkOperation.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/BenchmarkOperation.java deleted file mode 100644 index d67832e..0000000 --- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/BenchmarkOperation.java +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more contributor license - * agreements. See the NOTICE file distributed with this work for additional information regarding - * copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. You may obtain a - * copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - */ -package org.apache.geode.benchmark.tests; - -import static org.apache.geode.benchmark.parameters.BenchmarkParameters.BENCHMARK_DURATION; -import static org.apache.geode.benchmark.parameters.BenchmarkParameters.KEY_RANGE; -import static org.apache.geode.benchmark.parameters.BenchmarkParameters.LOCATOR_PORT; -import static org.apache.geode.benchmark.parameters.BenchmarkParameters.Roles.CLIENT; -import static org.apache.geode.benchmark.parameters.BenchmarkParameters.Roles.LOCATOR; -import static org.apache.geode.benchmark.parameters.BenchmarkParameters.Roles.SERVER; -import static org.apache.geode.benchmark.parameters.BenchmarkParameters.WARM_UP_TIME; -import static org.apache.geode.benchmark.parameters.JVMParameters.JVM_ARGS; - -import org.junit.Test; - -import org.apache.geode.benchmark.tasks.CreateClientProxyRegion; -import org.apache.geode.benchmark.tasks.PrePopulateRegion; -import org.apache.geode.benchmark.tasks.StartClient; -import org.apache.geode.benchmark.tasks.StartLocator; -import org.apache.geode.benchmark.tasks.StartServer; -import org.apache.geode.perftest.TestConfig; -import org.apache.geode.perftest.TestRunners; - -public abstract class BenchmarkOperation { - long keyRange = KEY_RANGE; - - @Test - public void run() throws Exception { - TestRunners.defaultRunner().runTest(this::configure); - } - - /** - * This will configure a cluster of the following - * 1 - locator - * 4 - servers - * 1 - client - * Two abstract methods are also provided to be implemented to - * create the region as required by the benchmark. - * - * @param config test configurations - */ - void configure(TestConfig config) { - - int locatorPort = LOCATOR_PORT; - - - config.name(this.getClass().getCanonicalName()); - config.warmupSeconds(WARM_UP_TIME); - config.durationSeconds(BENCHMARK_DURATION); - config.role(LOCATOR, 1); - config.role(SERVER, 2); - config.role(CLIENT, 1); - config.jvmArgs(SERVER, JVM_ARGS); - config.jvmArgs(CLIENT, JVM_ARGS); - config.jvmArgs(LOCATOR, JVM_ARGS); - config.before(new StartLocator(locatorPort), LOCATOR); - config.before(new StartServer(locatorPort), SERVER); - createRegion(config); - config.before(new StartClient(locatorPort), CLIENT); - config.before(new CreateClientProxyRegion(), CLIENT); - config.before(new PrePopulateRegion(keyRange), SERVER); - benchmarkOperation(config); - - } - - /** - * The operation whose performance is to be measured - * by the benchmark. - * - * @param config test configurations - */ - protected abstract void benchmarkOperation(TestConfig config); - - /** - * Create the region to be used in the benchmark. - * - * @param config test configurations. - */ - abstract void createRegion(TestConfig config); - -} diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/ReplicatedPutBenchmark.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/GeodeBenchmark.java similarity index 63% rename from geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/ReplicatedPutBenchmark.java rename to geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/GeodeBenchmark.java index 5cb8a13..92df316 100644 --- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/ReplicatedPutBenchmark.java +++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/GeodeBenchmark.java @@ -14,20 +14,24 @@ */ package org.apache.geode.benchmark.tests; -import static org.apache.geode.benchmark.parameters.BenchmarkParameters.Roles.SERVER; - -import org.apache.geode.benchmark.tasks.CreateReplicatedRegion; import org.apache.geode.perftest.TestConfig; -public class ReplicatedPutBenchmark extends PutBenchmark { - public ReplicatedPutBenchmark() {} +public class GeodeBenchmark { - ReplicatedPutBenchmark(long keyRange) { - this.keyRange = keyRange; - } + /** + * Warm up time for the benchmark running on the default runner + */ + public static final int WARM_UP_TIME = 60; + /** + * Total duration for which the benchmark will run on the default runner + */ + public static final int BENCHMARK_DURATION = 240; - @Override - void createRegion(TestConfig config) { - config.before(new CreateReplicatedRegion(), SERVER); + public static TestConfig createConfig() { + TestConfig testConfig = new TestConfig(); + testConfig.warmupSeconds(WARM_UP_TIME); + testConfig.durationSeconds(BENCHMARK_DURATION); + return testConfig; } + } diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/GetBenchmark.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/GetBenchmark.java deleted file mode 100644 index 376428c..0000000 --- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/GetBenchmark.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more contributor license - * agreements. See the NOTICE file distributed with this work for additional information regarding - * copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. You may obtain a - * copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - */ -package org.apache.geode.benchmark.tests; - -import static org.apache.geode.benchmark.parameters.BenchmarkParameters.Roles.CLIENT; - -import org.apache.geode.benchmark.tasks.GetTask; -import org.apache.geode.perftest.TestConfig; - -public abstract class GetBenchmark extends BenchmarkOperation { - @Override - protected void benchmarkOperation(TestConfig config) { - config.workload(new GetTask(keyRange), CLIENT); - } -} diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/PartitionedGetBenchmark.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/PartitionedGetBenchmark.java index 4011380..a6099f4 100644 --- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/PartitionedGetBenchmark.java +++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/PartitionedGetBenchmark.java @@ -17,15 +17,24 @@ package org.apache.geode.benchmark.tests; -import static org.apache.geode.benchmark.parameters.BenchmarkParameters.Roles.SERVER; +import static org.apache.geode.benchmark.tests.util.ClientServerTopology.Roles.CLIENT; +import static org.apache.geode.benchmark.tests.util.ClientServerTopology.Roles.SERVER; + +import org.apache.geode.benchmark.tasks.CreateClientProxyRegion; import org.apache.geode.benchmark.tasks.CreatePartitionedRegion; +import org.apache.geode.benchmark.tasks.GetTask; +import org.apache.geode.benchmark.tasks.PrePopulateRegion; +import org.apache.geode.benchmark.tests.util.ClientServerTopology; +import org.apache.geode.perftest.PerformanceTest; import org.apache.geode.perftest.TestConfig; /** * Benchmark of gets on a partitioned region. */ -public class PartitionedGetBenchmark extends GetBenchmark { +public class PartitionedGetBenchmark implements PerformanceTest { + + private long keyRange = 10000; public PartitionedGetBenchmark() {} @@ -34,7 +43,15 @@ public PartitionedGetBenchmark() {} } @Override - void createRegion(TestConfig config) { + public TestConfig configure() { + TestConfig config = GeodeBenchmark.createConfig(); + config.name(getClass().getName()); + ClientServerTopology.configure(config); config.before(new CreatePartitionedRegion(), SERVER); + config.before(new CreateClientProxyRegion(), CLIENT); + config.before(new PrePopulateRegion(keyRange), SERVER); + config.workload(new GetTask(keyRange), CLIENT); + return config; + } } diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/PartitionedPutBenchmark.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/PartitionedPutBenchmark.java index f29be99..0724236 100644 --- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/PartitionedPutBenchmark.java +++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/PartitionedPutBenchmark.java @@ -17,12 +17,20 @@ package org.apache.geode.benchmark.tests; -import static org.apache.geode.benchmark.parameters.BenchmarkParameters.Roles.SERVER; +import static org.apache.geode.benchmark.tests.util.ClientServerTopology.Roles.CLIENT; +import static org.apache.geode.benchmark.tests.util.ClientServerTopology.Roles.SERVER; +import org.apache.geode.benchmark.tasks.CreateClientProxyRegion; import org.apache.geode.benchmark.tasks.CreatePartitionedRegion; +import org.apache.geode.benchmark.tasks.PrePopulateRegion; +import org.apache.geode.benchmark.tasks.PutTask; +import org.apache.geode.benchmark.tests.util.ClientServerTopology; +import org.apache.geode.perftest.PerformanceTest; import org.apache.geode.perftest.TestConfig; -public class PartitionedPutBenchmark extends PutBenchmark { +public class PartitionedPutBenchmark implements PerformanceTest { + + private long keyRange = 10000; public PartitionedPutBenchmark() {} @@ -31,7 +39,15 @@ public PartitionedPutBenchmark() {} } @Override - void createRegion(TestConfig config) { + public TestConfig configure() { + TestConfig config = GeodeBenchmark.createConfig(); + config.name(getClass().getName()); + ClientServerTopology.configure(config); config.before(new CreatePartitionedRegion(), SERVER); + config.before(new CreateClientProxyRegion(), CLIENT); + config.before(new PrePopulateRegion(keyRange), SERVER); + config.workload(new PutTask(keyRange), CLIENT); + return config; + } } diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/PutBenchmark.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/PutBenchmark.java deleted file mode 100644 index 46dbd96..0000000 --- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/PutBenchmark.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more contributor license - * agreements. See the NOTICE file distributed with this work for additional information regarding - * copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. You may obtain a - * copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - */ -package org.apache.geode.benchmark.tests; - -import static org.apache.geode.benchmark.parameters.BenchmarkParameters.Roles.CLIENT; - -import org.apache.geode.benchmark.tasks.PutTask; -import org.apache.geode.perftest.TestConfig; - -public abstract class PutBenchmark extends BenchmarkOperation { - @Override - protected void benchmarkOperation(TestConfig config) { - config.workload(new PutTask(keyRange), CLIENT); - } -} diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/ReplicatedGetBenchmark.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/ReplicatedGetBenchmark.java deleted file mode 100644 index cd72754..0000000 --- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/ReplicatedGetBenchmark.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more contributor license - * agreements. See the NOTICE file distributed with this work for additional information regarding - * copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. You may obtain a - * copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - */ -package org.apache.geode.benchmark.tests; - -import static org.apache.geode.benchmark.parameters.BenchmarkParameters.Roles.SERVER; - -import org.apache.geode.benchmark.tasks.CreateReplicatedRegion; -import org.apache.geode.perftest.TestConfig; - -public class ReplicatedGetBenchmark extends GetBenchmark { - public ReplicatedGetBenchmark() {} - - ReplicatedGetBenchmark(long keyRange) { - this.keyRange = keyRange; - } - - @Override - void createRegion(TestConfig config) { - config.before(new CreateReplicatedRegion(), SERVER); - } -} diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/parameters/JVMParameters.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/parameters/JVMParameters.java similarity index 97% rename from geode-benchmarks/src/main/java/org/apache/geode/benchmark/parameters/JVMParameters.java rename to geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/parameters/JVMParameters.java index 4d39259..9ca5972 100644 --- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/parameters/JVMParameters.java +++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/parameters/JVMParameters.java @@ -12,10 +12,9 @@ * or implied. See the License for the specific language governing permissions and limitations under * the License. */ -package org.apache.geode.benchmark.parameters; +package org.apache.geode.benchmark.tests.parameters; public class JVMParameters { - public static final String[] JVM_ARGS = new String[] { "-XX:CMSInitiatingOccupancyFraction=60", "-XX:+PrintGCDetails", diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/util/ClientServerTopology.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/util/ClientServerTopology.java new file mode 100644 index 0000000..e7d6690 --- /dev/null +++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/util/ClientServerTopology.java @@ -0,0 +1,59 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more contributor license + * agreements. See the NOTICE file distributed with this work for additional information regarding + * copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the License. You may obtain a + * copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License + * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the License for the specific language governing permissions and limitations under + * the License. + */ +package org.apache.geode.benchmark.tests.util; + +import static org.apache.geode.benchmark.tests.parameters.JVMParameters.JVM_ARGS; +import static org.apache.geode.benchmark.tests.util.ClientServerTopology.Roles.CLIENT; +import static org.apache.geode.benchmark.tests.util.ClientServerTopology.Roles.LOCATOR; +import static org.apache.geode.benchmark.tests.util.ClientServerTopology.Roles.SERVER; + +import org.apache.geode.benchmark.tasks.StartClient; +import org.apache.geode.benchmark.tasks.StartLocator; +import org.apache.geode.benchmark.tasks.StartServer; +import org.apache.geode.perftest.TestConfig; + +public class ClientServerTopology { + + /** + * All roles defined for the JVMs created for the benchmark + */ + public static class Roles { + public static final String SERVER = "server"; + public static final String CLIENT = "client"; + public static final String LOCATOR = "locator"; + } + + /** + * The port used to create the locator for the tests + */ + public static final int LOCATOR_PORT = 10334; + + static final int NUM_LOCATORS = 1; + static final int NUM_SERVERS = 2; + static final int NUM_CLIENTS = 1; + + public static void configure(TestConfig testConfig) { + testConfig.role(LOCATOR, NUM_LOCATORS); + testConfig.role(SERVER, NUM_SERVERS); + testConfig.role(CLIENT, NUM_CLIENTS); + + testConfig.jvmArgs(CLIENT, JVM_ARGS); + testConfig.jvmArgs(LOCATOR, JVM_ARGS); + + testConfig.before(new StartLocator(LOCATOR_PORT), LOCATOR); + testConfig.before(new StartServer(LOCATOR_PORT), SERVER); + testConfig.before(new StartClient(LOCATOR_PORT), CLIENT); + } +} diff --git a/geode-benchmarks/src/test/java/org/apache/geode/benchmark/tests/PartitionedGetBenchmarkTest.java b/geode-benchmarks/src/test/java/org/apache/geode/benchmark/tests/PartitionedGetBenchmarkTest.java index 8fcb375..1d3f21c 100644 --- a/geode-benchmarks/src/test/java/org/apache/geode/benchmark/tests/PartitionedGetBenchmarkTest.java +++ b/geode-benchmarks/src/test/java/org/apache/geode/benchmark/tests/PartitionedGetBenchmarkTest.java @@ -14,8 +14,6 @@ */ package org.apache.geode.benchmark.tests; -import static org.apache.geode.benchmark.parameters.BenchmarkParameters.KEY_RANGE_FOR_MINIMAL_RUNNER; - import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; @@ -29,6 +27,6 @@ @Test public void benchmarkRunsSuccessfully() throws Exception { TestRunners.minimalRunner(folder.newFolder()) - .runTest(new PartitionedGetBenchmark(KEY_RANGE_FOR_MINIMAL_RUNNER)::configure); + .runTest(new PartitionedGetBenchmark(100)); } } diff --git a/geode-benchmarks/src/test/java/org/apache/geode/benchmark/tests/PartitionedPutBenchmarkTest.java b/geode-benchmarks/src/test/java/org/apache/geode/benchmark/tests/PartitionedPutBenchmarkTest.java index e884176..14388be 100644 --- a/geode-benchmarks/src/test/java/org/apache/geode/benchmark/tests/PartitionedPutBenchmarkTest.java +++ b/geode-benchmarks/src/test/java/org/apache/geode/benchmark/tests/PartitionedPutBenchmarkTest.java @@ -17,8 +17,6 @@ package org.apache.geode.benchmark.tests; -import static org.apache.geode.benchmark.parameters.BenchmarkParameters.KEY_RANGE_FOR_MINIMAL_RUNNER; - import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; @@ -33,6 +31,6 @@ @Test public void benchmarkRunsSuccessfully() throws Exception { TestRunners.minimalRunner(folder.newFolder()) - .runTest(new PartitionedPutBenchmark(KEY_RANGE_FOR_MINIMAL_RUNNER)::configure); + .runTest(new PartitionedPutBenchmark(100)); } } diff --git a/geode-benchmarks/src/test/java/org/apache/geode/benchmark/tests/ReplicatedGetBenchmarkTest.java b/geode-benchmarks/src/test/java/org/apache/geode/benchmark/tests/ReplicatedGetBenchmarkTest.java deleted file mode 100644 index ee7f766..0000000 --- a/geode-benchmarks/src/test/java/org/apache/geode/benchmark/tests/ReplicatedGetBenchmarkTest.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more contributor license - * agreements. See the NOTICE file distributed with this work for additional information regarding - * copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. You may obtain a - * copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - */ -package org.apache.geode.benchmark.tests; - -import static org.apache.geode.benchmark.parameters.BenchmarkParameters.KEY_RANGE_FOR_MINIMAL_RUNNER; - -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.TemporaryFolder; - -import org.apache.geode.perftest.TestRunners; - -public class ReplicatedGetBenchmarkTest { - @Rule - public TemporaryFolder folder = new TemporaryFolder(); - - @Test - public void benchmarkRunsSuccessfully() throws Exception { - TestRunners.minimalRunner(folder.newFolder()) - .runTest(new ReplicatedGetBenchmark(KEY_RANGE_FOR_MINIMAL_RUNNER)::configure); - } -} diff --git a/geode-benchmarks/src/test/java/org/apache/geode/benchmark/tests/ReplicatedPutBenchmarkTest.java b/geode-benchmarks/src/test/java/org/apache/geode/benchmark/tests/ReplicatedPutBenchmarkTest.java deleted file mode 100644 index 20acb50..0000000 --- a/geode-benchmarks/src/test/java/org/apache/geode/benchmark/tests/ReplicatedPutBenchmarkTest.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more contributor license - * agreements. See the NOTICE file distributed with this work for additional information regarding - * copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. You may obtain a - * copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - */ -package org.apache.geode.benchmark.tests; - -import static org.apache.geode.benchmark.parameters.BenchmarkParameters.KEY_RANGE_FOR_MINIMAL_RUNNER; - -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.TemporaryFolder; - -import org.apache.geode.perftest.TestRunners; - -public class ReplicatedPutBenchmarkTest { - @Rule - public TemporaryFolder folder = new TemporaryFolder(); - - @Test - public void benchmarkRunsSuccessfully() throws Exception { - TestRunners.minimalRunner(folder.newFolder()) - .runTest(new ReplicatedPutBenchmark(KEY_RANGE_FOR_MINIMAL_RUNNER)::configure); - } -} diff --git a/harness/src/main/java/org/apache/geode/perftest/PerformanceTest.java b/harness/src/main/java/org/apache/geode/perftest/PerformanceTest.java index aa49728..4a97ca5 100644 --- a/harness/src/main/java/org/apache/geode/perftest/PerformanceTest.java +++ b/harness/src/main/java/org/apache/geode/perftest/PerformanceTest.java @@ -47,6 +47,6 @@ /** * Return the configuration for the test. */ - void configure(TestConfig test); + TestConfig configure(); } diff --git a/harness/src/main/java/org/apache/geode/perftest/runner/DefaultTestRunner.java b/harness/src/main/java/org/apache/geode/perftest/runner/DefaultTestRunner.java index ab89ccc..895bdb0 100644 --- a/harness/src/main/java/org/apache/geode/perftest/runner/DefaultTestRunner.java +++ b/harness/src/main/java/org/apache/geode/perftest/runner/DefaultTestRunner.java @@ -53,8 +53,7 @@ public DefaultTestRunner(RemoteJVMFactory remoteJvmFactory, File outputDir) { @Override public void runTest(PerformanceTest test) throws Exception { - TestConfig config = new TestConfig(); - test.configure(config); + TestConfig config = test.configure(); runTest(config); } diff --git a/harness/src/test/java/org/apache/geode/perftest/TestRunnerIntegrationTest.java b/harness/src/test/java/org/apache/geode/perftest/TestRunnerIntegrationTest.java index 942e685..d997017 100644 --- a/harness/src/test/java/org/apache/geode/perftest/TestRunnerIntegrationTest.java +++ b/harness/src/test/java/org/apache/geode/perftest/TestRunnerIntegrationTest.java @@ -54,20 +54,24 @@ public void setup() throws IOException { @Test public void runsBeforeWorkload() throws Exception { - runner.runTest(testConfig -> { + runner.runTest(() -> { + TestConfig testConfig = new TestConfig(); testConfig.name(SAMPLE_BENCHMARK); testConfig.role("all", 1); testConfig.before(context -> System.out.println("hello"), "all"); + return testConfig; }); } @Test public void generatesOutputDirectoryPerBenchmark() throws Exception { - runner.runTest(testConfig -> { + runner.runTest(() -> { + TestConfig testConfig = new TestConfig(); testConfig.name(SAMPLE_BENCHMARK); testConfig.role("all", 1); testConfig.workload(new EmptyBenchmark(), "all"); + return testConfig; }); File expectedBenchmarkDir = new File(outputDir, SAMPLE_BENCHMARK); @@ -86,7 +90,8 @@ public void generatesOutputDirectoryPerBenchmark() throws Exception { @Test public void configuresJVMOptions() throws Exception { - runner.runTest(testConfig -> { + runner.runTest(() -> { + TestConfig testConfig = new TestConfig(); testConfig.name(SAMPLE_BENCHMARK); testConfig.role("all", 1); testConfig.jvmArgs("all", "-Dprop1=true", "-Dprop2=5"); @@ -96,6 +101,7 @@ public void configuresJVMOptions() throws Exception { assertEquals("Expecting system property to be set in launched JVM, but it was not present.", 5, Integer.getInteger("prop2").intValue()); }, "all"); + return testConfig; }); } diff --git a/harness/src/test/java/org/apache/geode/perftest/TestRunnerJUnitTest.java b/harness/src/test/java/org/apache/geode/perftest/TestRunnerJUnitTest.java index 8e4c45c..28c29b7 100644 --- a/harness/src/test/java/org/apache/geode/perftest/TestRunnerJUnitTest.java +++ b/harness/src/test/java/org/apache/geode/perftest/TestRunnerJUnitTest.java @@ -52,7 +52,8 @@ public void testRunnerRunsBeforeAndAfterTasks() throws Exception { Task before = mock(Task.class); Task after = mock(Task.class); - PerformanceTest test = config -> { + PerformanceTest test = () -> { + TestConfig config = new TestConfig(); config.name("SampleBenchmark"); config.role("before", 1); config.role("workload", 1); @@ -60,6 +61,7 @@ public void testRunnerRunsBeforeAndAfterTasks() throws Exception { config.before(before, "before"); config.after(after, "before"); + return config; }; runner.runTest(test); @@ -81,11 +83,13 @@ public void requiresAtLeastOneRole() throws Exception { Task before = mock(Task.class); - PerformanceTest test = config -> { + PerformanceTest test = () -> { + TestConfig config = new TestConfig(); config.name("SampleBenchmark"); config.role("before", 1); config.before(before); + return config; }; Assertions.assertThatThrownBy(() -> runner.runTest(test)) .isInstanceOf(IllegalStateException.class); ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services