Adds peer to peer benchmarks. (#135)
* Adds P2P put test benchmark.
* Adds P2P get test benchmark.
* Adds put bytes benchmark.
* Adds SSL parameters to benchmarks.
* Fixes API access for old releases.
diff --git a/.asf.yaml b/.asf.yaml
index 003d459..6769616 100644
--- a/.asf.yaml
+++ b/.asf.yaml
@@ -1,5 +1,11 @@
+# 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
+# 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,
diff --git a/.gitignore b/.gitignore
index 7ab8bfd..096ed77 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,3 +6,4 @@
temp-self-signed.jks
geode-benchmarks/security.json
harness/security.json
+failedTests
diff --git a/.travis.yml b/.travis.yml
index 6fe694f..9e96e65 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,3 +1,18 @@
+# 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.
+
language: java
jdk:
diff --git a/README.md b/README.md
index 77d9d55..721d05e 100644
--- a/README.md
+++ b/README.md
@@ -52,6 +52,8 @@
-PoutputDir : Results output directory (-PoutputDir=/tmp/results)
-PtestJVM : Path to an alternative JVM for running the client, locator, and servers. If not specified JAVA_HOME will be used. Note all compilation tasks will still use JAVA_HOME.
-PwithSsl : Flag to run geode with SSL. A self-signed certificate will be generated at runtime.
+ -PwithSslProtocols : Specifies enabled SSL protocols. See Geode property `ssl-protocols`
+ -PwithSslCiphers : Specifies enabled SSL chipher suites. See Geode property `ssl-ciphers`
-PwithSecurityManager : Flag to start Geode with the example implementation of SecurityManager
-PwithGc : Select which GC to use. Valid values CMS (default), G1, Z.
-PwithHeap : Specify how large a heap the benchmark VMs should use, default "8g". Accepts any `-Xmx` value, like "32g".
diff --git a/build.gradle b/build.gradle
index bfa96ce..f17d9e9 100644
--- a/build.gradle
+++ b/build.gradle
@@ -14,21 +14,16 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-buildscript {
- repositories { gradlePluginPortal() }
- dependencies {
- classpath 'com.bmuschko:gradle-docker-plugin:4.0.4'
- classpath "com.diffplug.spotless:spotless-plugin-gradle:3.16.0"
- classpath "io.spring.gradle:dependency-management-plugin:1.0.3.RELEASE"
- }
+
+plugins {
+ id "io.spring.dependency-management" version "1.0.10.RELEASE"
+ id "com.bmuschko.docker-remote-api" version "6.6.1"
+ id "com.diffplug.spotless" version "5.6.1"
+ id "org.nosphere.apache.rat" version "0.7.0"
}
-
-plugins { id "org.nosphere.apache.rat" version "0.5.2" }
-
apply plugin: 'com.bmuschko.docker-remote-api'
-
// Import task types
import com.bmuschko.gradle.docker.tasks.image.DockerBuildImage
// Load all properties in dependency-version.properties as project properties, so all projects can read them
@@ -40,7 +35,7 @@
task buildTestingImage(type: DockerBuildImage) {
inputDir = file(project.rootDir)
dockerFile = file('images/geode-performance/Dockerfile')
- tag = 'geode-performance-testing:latest'
+ images.add('geode-performance-testing:latest')
}
apply from: "gradle/spotless.gradle"
diff --git a/cryptoinfo/build.gradle b/cryptoinfo/build.gradle
new file mode 100644
index 0000000..58af056
--- /dev/null
+++ b/cryptoinfo/build.gradle
@@ -0,0 +1,26 @@
+/*
+ * 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.
+ */
+
+
+plugins { id 'application' }
+
+application { mainClassName = 'org.apache.geode.benchmarks.cryptoinfo.Main' }
+
+compileJava {
+ options.compilerArgs << '-Xlint:unchecked' << "-Werror"
+ options.deprecation = true
+}
diff --git a/cryptoinfo/src/main/java/org/apache/geode/benchmarks/cryptoinfo/Main.java b/cryptoinfo/src/main/java/org/apache/geode/benchmarks/cryptoinfo/Main.java
new file mode 100644
index 0000000..c63ae14
--- /dev/null
+++ b/cryptoinfo/src/main/java/org/apache/geode/benchmarks/cryptoinfo/Main.java
@@ -0,0 +1,57 @@
+/*
+ * 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.benchmarks.cryptoinfo;
+
+import java.io.PrintStream;
+import java.security.NoSuchAlgorithmException;
+import java.security.Provider;
+
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.SSLParameters;
+
+public class Main {
+ public static void main(String[] args) throws NoSuchAlgorithmException {
+ SSLContext context = SSLContext.getDefault();
+ final PrintStream out = System.out;
+ out.println("Provider: ");
+ printProvider(out, context.getProvider());
+ out.println("SSL Parameters: ");
+ printSSLParameters(out, context.getSupportedSSLParameters());
+ }
+
+ private static void printSSLParameters(final PrintStream out, final SSLParameters sslParameters) {
+ out.println("Protocols:");
+ printStrings(out, sslParameters.getProtocols());
+ out.println("Cipher Suites:");
+ printStrings(out, sslParameters.getCipherSuites());
+ }
+
+ private static void printStrings(PrintStream out, String[] strings) {
+ for (String string : strings) {
+ out.println(string);
+ }
+ }
+
+ private static void printProvider(final PrintStream out, final Provider provider) {
+ out.print("Name: ");
+ out.println(provider.getName());
+ out.print("Info: ");
+ out.println(provider.getInfo());
+ out.print("Version: ");
+ out.println(provider.getVersion());
+ }
+
+}
diff --git a/etc/greclipse.properties b/etc/greclipse.properties
index 7169303..91de269 100644
--- a/etc/greclipse.properties
+++ b/etc/greclipse.properties
@@ -1,3 +1,18 @@
+# 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.
+
#Whether to use 'space', 'tab' or 'mixed' (both) characters for indentation.
#The default value is 'tab'.
org.eclipse.jdt.core.formatter.tabulation.char=space
diff --git a/geode-benchmarks/build.gradle b/geode-benchmarks/build.gradle
index c9c08d0..c1cb54d 100644
--- a/geode-benchmarks/build.gradle
+++ b/geode-benchmarks/build.gradle
@@ -15,6 +15,8 @@
* limitations under the License.
*/
+import org.gradle.util.VersionNumber
+
plugins { id 'java' }
group 'org.apache.geode-benchmark'
@@ -47,7 +49,11 @@
implementation(project(':harness'))
implementation(group: 'org.apache.geode', name: 'geode-core', version: geodeVersion)
- runtime(group: 'org.apache.geode', name: 'geode-log4j', version: geodeVersion)
+ if (VersionNumber.parse(geodeVersion) >= VersionNumber.parse("1.11.0")) {
+ runtime(group: 'org.apache.geode', name: 'geode-log4j', version: geodeVersion)
+ } else {
+ runtime(group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.13.3')
+ }
// Required for missing dependency on geode-core.
runtime(group: 'org.eclipse.jetty', name: 'jetty-webapp', version: '9.4.12.v20180830')
@@ -56,6 +62,11 @@
testImplementation(group: 'org.assertj', name: 'assertj-core', version: project.'assertj-core.version')
}
+compileJava {
+ options.compilerArgs << '-Xlint:unchecked' << "-Werror"
+ options.deprecation = true
+}
+
test{ useJUnitPlatform() }
task benchmark(type: Test) {
@@ -69,9 +80,9 @@
testLogging { exceptionFormat = 'full' }
exclude "**/NoopBenchmark.class"
- exclude "**/*LongBenchmark.class"
forkEvery 1
+ failFast = true
systemProperty 'TEST_HOSTS', project.findProperty('hosts')
systemProperty 'TEST_METADATA', project.findProperty('metadata')
@@ -92,6 +103,8 @@
systemProperty 'withDuration', project.findProperty('withDuration')
}
systemProperty 'withSsl', project.hasProperty('withSsl')
+ systemProperty 'withSslProtocols', project.findProperty('withSslProtocols')
+ systemProperty 'withSslCiphers', project.findProperty('withSslCiphers')
systemProperty 'withSniProxy', project.hasProperty('withSniProxy')
systemProperty 'withSecurityManager', project.hasProperty('withSecurityManager')
systemProperty 'benchmark.profiler.argument', project.findProperty('benchmark.profiler.argument')
diff --git a/geode-benchmarks/src/main/java/benchmark/geode/data/FunctionWithArguments.java b/geode-benchmarks/src/main/java/benchmark/geode/data/FunctionWithArguments.java
index 8a10f1d..1e9eb24 100644
--- a/geode-benchmarks/src/main/java/benchmark/geode/data/FunctionWithArguments.java
+++ b/geode-benchmarks/src/main/java/benchmark/geode/data/FunctionWithArguments.java
@@ -20,14 +20,14 @@
import org.apache.geode.cache.execute.FunctionContext;
import org.apache.geode.cache.execute.RegionFunctionContext;
-public class FunctionWithArguments implements Function {
+public class FunctionWithArguments implements Function<Long> {
public FunctionWithArguments() {}
@Override
- public void execute(final FunctionContext context) {
+ public void execute(final FunctionContext<Long> context) {
final RegionFunctionContext regionFunctionContext = (RegionFunctionContext) context;
- final Region region = regionFunctionContext.getDataSet();
+ final Region<?, ?> region = regionFunctionContext.getDataSet();
final Long key = (Long) regionFunctionContext.getArguments();
context.getResultSender().lastResult(region.get(key));
}
diff --git a/geode-benchmarks/src/main/java/benchmark/geode/data/FunctionWithFilter.java b/geode-benchmarks/src/main/java/benchmark/geode/data/FunctionWithFilter.java
index ccc3888..53fe8bb 100644
--- a/geode-benchmarks/src/main/java/benchmark/geode/data/FunctionWithFilter.java
+++ b/geode-benchmarks/src/main/java/benchmark/geode/data/FunctionWithFilter.java
@@ -21,12 +21,12 @@
import org.apache.geode.cache.execute.FunctionContext;
import org.apache.geode.cache.execute.RegionFunctionContext;
-public class FunctionWithFilter implements Function {
+public class FunctionWithFilter implements Function<Long> {
public FunctionWithFilter() {}
@Override
- public void execute(final FunctionContext context) {
+ public void execute(final FunctionContext<Long> context) {
final RegionFunctionContext regionFunctionContext = (RegionFunctionContext) context;
final Region<Long, Portfolio> region = regionFunctionContext.getDataSet();
@SuppressWarnings("unchecked")
diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/parameters/GeodeProperties.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/parameters/GeodeProperties.java
index 431f117..deb575d 100644
--- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/parameters/GeodeProperties.java
+++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/parameters/GeodeProperties.java
@@ -14,6 +14,10 @@
*/
package org.apache.geode.benchmark.parameters;
+import static org.apache.geode.benchmark.topology.Topology.WITH_SECURITY_MANAGER_PROPERTY;
+import static org.apache.geode.benchmark.topology.Topology.WITH_SSL_CIPHERS_PROPERTY;
+import static org.apache.geode.benchmark.topology.Topology.WITH_SSL_PROPERTY;
+import static org.apache.geode.benchmark.topology.Topology.WITH_SSL_PROTOCOLS_PROPERTY;
import static org.apache.geode.distributed.ConfigurationProperties.ARCHIVE_DISK_SPACE_LIMIT;
import static org.apache.geode.distributed.ConfigurationProperties.ARCHIVE_FILE_SIZE_LIMIT;
import static org.apache.geode.distributed.ConfigurationProperties.CONSERVE_SOCKETS;
@@ -28,7 +32,9 @@
import static org.apache.geode.distributed.ConfigurationProperties.REMOVE_UNRESPONSIVE_CLIENT;
import static org.apache.geode.distributed.ConfigurationProperties.SECURITY_MANAGER;
import static org.apache.geode.distributed.ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER;
+import static org.apache.geode.distributed.ConfigurationProperties.SSL_CIPHERS;
import static org.apache.geode.distributed.ConfigurationProperties.SSL_ENABLED_COMPONENTS;
+import static org.apache.geode.distributed.ConfigurationProperties.SSL_PROTOCOLS;
import static org.apache.geode.distributed.ConfigurationProperties.STATISTIC_SAMPLING_ENABLED;
import static org.apache.geode.distributed.ConfigurationProperties.USE_CLUSTER_CONFIGURATION;
import static org.apache.geode.security.SecurableCommunicationChannels.ALL;
@@ -90,15 +96,27 @@
public static Properties withSsl(Properties properties) {
properties.setProperty(SSL_ENABLED_COMPONENTS, ALL);
+ final String withSslProtocols = System.getProperty(WITH_SSL_PROTOCOLS_PROPERTY);
+ if (!isBlank(withSslProtocols)) {
+ properties.setProperty(SSL_PROTOCOLS, withSslProtocols);
+ }
+ final String withSslCiphers = System.getProperty(WITH_SSL_CIPHERS_PROPERTY);
+ if (!isBlank(withSslCiphers)) {
+ properties.setProperty(SSL_CIPHERS, withSslCiphers);
+ }
return properties;
}
+ private static boolean isBlank(final String value) {
+ return null == value || value.trim().isEmpty();
+ }
+
private static boolean isSecurityManagerEnabled() {
- return isPropertySet("withSecurityManager");
+ return isPropertySet(WITH_SECURITY_MANAGER_PROPERTY);
}
private static boolean isSslEnabled() {
- return isPropertySet("withSsl");
+ return isPropertySet(WITH_SSL_PROPERTY);
}
private static boolean isPropertySet(final String propertyName) {
diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/parameters/Utils.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/parameters/Utils.java
index 3475893..07fb16c 100644
--- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/parameters/Utils.java
+++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/parameters/Utils.java
@@ -46,4 +46,14 @@
configureGeodeProductJvms(testConfig, jvmArgument);
}
}
+
+ public static void addToTestConfig(TestConfig testConfig, String systemPropertyKey) {
+ if (System.getProperties().containsKey(systemPropertyKey)) {
+ final String value = System.getProperty(systemPropertyKey);
+ final String jvmArgument = "-D" + systemPropertyKey + "=" + value + "";
+ logger.info("Configuring JVMs to run with " + jvmArgument);
+ configureGeodeProductJvms(testConfig, jvmArgument);
+ }
+ }
+
}
diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/security/ExampleAuthInit.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/security/ExampleAuthInit.java
index 42050df..4eea6a9 100644
--- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/security/ExampleAuthInit.java
+++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/security/ExampleAuthInit.java
@@ -19,11 +19,11 @@
import java.util.Properties;
-import org.apache.geode.LogWriter;
import org.apache.geode.distributed.DistributedMember;
import org.apache.geode.security.AuthInitialize;
import org.apache.geode.security.AuthenticationFailedException;
+@SuppressWarnings("deprecation")
public class ExampleAuthInit implements AuthInitialize {
private static final String USER_NAME = "security-username";
@@ -53,12 +53,11 @@
public void close() {}
@Override
- @Deprecated
- public void init(LogWriter systemLogger, LogWriter securityLogger)
+ public void init(org.apache.geode.LogWriter systemLogger,
+ org.apache.geode.LogWriter securityLogger)
throws AuthenticationFailedException {}
@Override
- @Deprecated
public Properties getCredentials(Properties securityProps, DistributedMember server,
boolean isPeer) throws AuthenticationFailedException {
return getCredentials(securityProps);
diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/AbstractPrePopulateRegion.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/AbstractPrePopulateRegion.java
new file mode 100644
index 0000000..f88da40
--- /dev/null
+++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/AbstractPrePopulateRegion.java
@@ -0,0 +1,122 @@
+/*
+ * 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.tasks;
+
+import static org.apache.geode.benchmark.topology.Roles.CLIENT;
+
+import java.time.Duration;
+import java.time.Instant;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.apache.geode.benchmark.LongRange;
+import org.apache.geode.benchmark.topology.Roles;
+import org.apache.geode.cache.Cache;
+import org.apache.geode.cache.CacheFactory;
+import org.apache.geode.cache.Region;
+import org.apache.geode.perftest.Task;
+import org.apache.geode.perftest.TestContext;
+
+
+public abstract class AbstractPrePopulateRegion<V> implements Task {
+ private static final Logger logger = LoggerFactory.getLogger(AbstractPrePopulateRegion.class);
+
+ private final LongRange keyRangeToPrepopulate;
+ private final Roles targetRole;
+
+ private int batchSize = 1000;
+
+ public AbstractPrePopulateRegion() {
+ this(new LongRange(0, 10000), CLIENT);
+ }
+
+ public AbstractPrePopulateRegion(LongRange keyRangeToPrepopulate) {
+ this(keyRangeToPrepopulate, CLIENT);
+ }
+
+ public AbstractPrePopulateRegion(final LongRange keyRangeToPrepopulate, final Roles targetRole) {
+ this.keyRangeToPrepopulate = keyRangeToPrepopulate;
+ this.targetRole = targetRole;
+ }
+
+ /**
+ * This method prepopulates the region before the actual benchmark starts.
+ */
+ @Override
+ public void run(TestContext context) throws InterruptedException {
+ final Cache cache = CacheFactory.getAnyInstance();
+ final Region<Long, V> region = cache.getRegion("region");
+ final ArrayList<Integer> hostIds =
+ new ArrayList<>(context.getHostsIDsForRole(targetRole.name()));
+
+ run(region,
+ keyRangeToPrepopulate.sliceFor(hostIds.size(), hostIds.indexOf(context.getJvmID())));
+ }
+
+ void run(final Map<Long, V> region, final LongRange range) throws InterruptedException {
+ logger.info("*******************************************");
+ logger.info(" Prepopulating the region ");
+ logger.info("*******************************************");
+ final Instant start = Instant.now();
+
+ final int numThreads = Runtime.getRuntime().availableProcessors();
+ final ExecutorService threadPool = Executors.newFixedThreadPool(numThreads);
+ final List<CompletableFuture<Void>> futures = new ArrayList<>();
+
+ for (final LongRange slice : range.slice(numThreads)) {
+ futures.add(CompletableFuture.runAsync(() -> doPuts(region, slice), threadPool));
+ }
+
+ futures.forEach(CompletableFuture::join);
+
+ final Instant finish = Instant.now();
+ logger.info("*******************************************");
+ logger.info(" Prepopulating the region completed");
+ logger.info(" Duration = " + Duration.between(start, finish).toMillis() + "ms.");
+ logger.info("*******************************************");
+
+ threadPool.shutdownNow();
+ threadPool.awaitTermination(5, TimeUnit.MINUTES);
+ }
+
+ private void doPuts(final Map<Long, V> region, final LongRange range) {
+ for (final LongRange slice : range.slicesOfSize(batchSize)) {
+ final Map<Long, V> valueMap = new HashMap<>();
+ slice.forEach(i -> valueMap.put(i, getValue(i)));
+ region.putAll(valueMap);
+ }
+ }
+
+ protected abstract V getValue(long i);
+
+ public int getBatchSize() {
+ return batchSize;
+ }
+
+ public void setBatchSize(int batchSize) {
+ this.batchSize = batchSize;
+ }
+}
diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/DefineHostNamingsOffPlatformTask.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/DefineHostNamingsOffPlatformTask.java
index 824c9c1..f17cf9e 100644
--- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/DefineHostNamingsOffPlatformTask.java
+++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/DefineHostNamingsOffPlatformTask.java
@@ -38,6 +38,7 @@
public static String getOffPlatformHostName(final TestContext context,
final InetAddress addy) throws UnknownHostException {
+ @SuppressWarnings("unchecked")
final Map<InetAddress, String> namings =
(Map<InetAddress, String>) context.getAttribute(HOST_NAMINGS_OFF_PLATFORM);
return namings.get(addy);
diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/ExecuteFilteredFunction.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/ExecuteFilteredFunction.java
index 746682f..610548d 100644
--- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/ExecuteFilteredFunction.java
+++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/ExecuteFilteredFunction.java
@@ -54,7 +54,8 @@
@Override
public boolean test(Map<Object, Object> ctx) {
final Set<Long> filterSet = Collections.singleton(keyRange.random());
- final ResultCollector resultCollector = FunctionService
+ @SuppressWarnings("unchecked")
+ final ResultCollector<?, ?> resultCollector = FunctionService
.onRegion(region)
.withFilter(filterSet)
.execute(function);
diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/ExecuteParameterizedFunction.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/ExecuteParameterizedFunction.java
index e2353f1..6065b18 100644
--- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/ExecuteParameterizedFunction.java
+++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/ExecuteParameterizedFunction.java
@@ -51,12 +51,12 @@
@Override
public boolean test(Map<Object, Object> ctx) {
- ResultCollector resultCollector = FunctionService
+ @SuppressWarnings("unchecked")
+ ResultCollector<?, ?> resultCollector = FunctionService
.onRegion(region)
.setArguments(keyRange.random())
.execute(function);
resultCollector.getResult();
return true;
-
}
}
diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/GetTask.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/GetTask.java
index ec55f40..f6d701d 100644
--- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/GetTask.java
+++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/GetTask.java
@@ -24,9 +24,9 @@
import org.yardstickframework.BenchmarkDriverAdapter;
import org.apache.geode.benchmark.LongRange;
+import org.apache.geode.cache.Cache;
+import org.apache.geode.cache.CacheFactory;
import org.apache.geode.cache.Region;
-import org.apache.geode.cache.client.ClientCache;
-import org.apache.geode.cache.client.ClientCacheFactory;
/**
* Task workload to perform get operations on keys within 0
@@ -46,7 +46,7 @@
public void setUp(BenchmarkConfiguration cfg) throws Exception {
super.setUp(cfg);
- final ClientCache cache = ClientCacheFactory.getAnyInstance();
+ final Cache cache = CacheFactory.getAnyInstance();
region = cache.getRegion("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 faae4d7..2b633ef 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
@@ -14,102 +14,30 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package org.apache.geode.benchmark.tasks;
-import static org.apache.geode.benchmark.topology.Roles.CLIENT;
-import static org.apache.geode.benchmark.topology.Roles.LOCATOR;
-import static org.apache.geode.benchmark.topology.Roles.SERVER;
-
-import java.time.Duration;
-import java.time.Instant;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.TimeUnit;
-
import benchmark.geode.data.Portfolio;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import org.apache.geode.benchmark.LongRange;
-import org.apache.geode.cache.Region;
-import org.apache.geode.cache.client.ClientCache;
-import org.apache.geode.cache.client.ClientCacheFactory;
-import org.apache.geode.perftest.Task;
-import org.apache.geode.perftest.TestContext;
+import org.apache.geode.benchmark.topology.Roles;
-
-public class PrePopulateRegion implements Task {
- private static final Logger logger = LoggerFactory.getLogger(PrePopulateRegion.class);
-
- private LongRange keyRangeToPrepopulate = new LongRange(0, 10000);
- private int batchSize = 1000;
+public class PrePopulateRegion extends AbstractPrePopulateRegion<Portfolio> {
public PrePopulateRegion() {}
public PrePopulateRegion(LongRange keyRangeToPrepopulate) {
- this.keyRangeToPrepopulate = keyRangeToPrepopulate;
+ super(keyRangeToPrepopulate);
}
- /**
- * This method prepopulates the region before the actual benchmark starts.
- */
+ public PrePopulateRegion(LongRange keyRangeToPrepopulate,
+ Roles targetRole) {
+ super(keyRangeToPrepopulate, targetRole);
+ }
+
@Override
- public void run(TestContext context) throws InterruptedException {
- final ClientCache cache = ClientCacheFactory.getAnyInstance();
- final Region<Long, Portfolio> region = cache.getRegion("region");
- final int numLocators = context.getHostsIDsForRole(LOCATOR.name()).size();
- final int numServers = context.getHostsIDsForRole(SERVER.name()).size();
- final int numClient = context.getHostsIDsForRole(CLIENT.name()).size();
- final int jvmID = context.getJvmID();
- final int clientIndex = jvmID - numLocators - numServers;
-
- run(region, keyRangeToPrepopulate.sliceFor(numClient, clientIndex));
+ protected Portfolio getValue(long i) {
+ return new Portfolio(i);
}
- void run(final Map<Long, Portfolio> region, final LongRange range) throws InterruptedException {
- logger.info("*******************************************");
- logger.info(" Prepopulating the region ");
- logger.info("*******************************************");
- final Instant start = Instant.now();
-
- final int numThreads = Runtime.getRuntime().availableProcessors();
- final ExecutorService threadPool = Executors.newFixedThreadPool(numThreads);
- final List<CompletableFuture<Void>> futures = new ArrayList<>();
-
- for (final LongRange slice : range.slice(numThreads)) {
- futures.add(CompletableFuture.runAsync(() -> doPuts(region, slice), threadPool));
- }
-
- futures.forEach(CompletableFuture::join);
-
- final Instant finish = Instant.now();
- logger.info("*******************************************");
- logger.info(" Prepopulating the region completed");
- logger.info(" Duration = " + Duration.between(start, finish).toMillis() + "ms.");
- logger.info("*******************************************");
-
- threadPool.shutdownNow();
- threadPool.awaitTermination(5, TimeUnit.MINUTES);
- }
-
- private void doPuts(final Map<Long, Portfolio> region, final LongRange range) {
- for (final LongRange slice : range.slicesOfSize(batchSize)) {
- final Map<Long, Portfolio> valueMap = new HashMap<>();
- slice.forEach(i -> valueMap.put(i, new Portfolio(i)));
- region.putAll(valueMap);
- }
- }
-
- public int getBatchSize() {
- return batchSize;
- }
-
- public void setBatchSize(int batchSize) {
- this.batchSize = batchSize;
- }
}
diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/PrePopulateRegionBytes.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/PrePopulateRegionBytes.java
new file mode 100644
index 0000000..73ae3a3
--- /dev/null
+++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/PrePopulateRegionBytes.java
@@ -0,0 +1,41 @@
+/*
+ * 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.tasks;
+
+import org.apache.geode.benchmark.LongRange;
+import org.apache.geode.benchmark.topology.Roles;
+
+public class PrePopulateRegionBytes extends AbstractPrePopulateRegion<byte[]> {
+
+ public PrePopulateRegionBytes() {}
+
+ public PrePopulateRegionBytes(LongRange keyRangeToPrepopulate) {
+ super(keyRangeToPrepopulate);
+ }
+
+ public PrePopulateRegionBytes(LongRange keyRangeToPrepopulate,
+ Roles targetRole) {
+ super(keyRangeToPrepopulate, targetRole);
+ }
+
+ @Override
+ protected byte[] getValue(long i) {
+ return new byte[1204];
+ }
+
+}
diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/PrePopulateRegionLong.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/PrePopulateRegionLong.java
index 0874835..49f4725 100644
--- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/PrePopulateRegionLong.java
+++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/PrePopulateRegionLong.java
@@ -14,101 +14,28 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package org.apache.geode.benchmark.tasks;
-import static org.apache.geode.benchmark.topology.Roles.CLIENT;
-import static org.apache.geode.benchmark.topology.Roles.LOCATOR;
-import static org.apache.geode.benchmark.topology.Roles.SERVER;
-
-import java.time.Duration;
-import java.time.Instant;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.TimeUnit;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
import org.apache.geode.benchmark.LongRange;
-import org.apache.geode.cache.Region;
-import org.apache.geode.cache.client.ClientCache;
-import org.apache.geode.cache.client.ClientCacheFactory;
-import org.apache.geode.perftest.Task;
-import org.apache.geode.perftest.TestContext;
+import org.apache.geode.benchmark.topology.Roles;
-
-public class PrePopulateRegionLong implements Task {
- private static final Logger logger = LoggerFactory.getLogger(PrePopulateRegionLong.class);
-
- private LongRange keyRangeToPrepopulate = new LongRange(0, 10000);
- private int batchSize = 1000;
+public class PrePopulateRegionLong extends AbstractPrePopulateRegion<Long> {
public PrePopulateRegionLong() {}
public PrePopulateRegionLong(LongRange keyRangeToPrepopulate) {
- this.keyRangeToPrepopulate = keyRangeToPrepopulate;
+ super(keyRangeToPrepopulate);
}
- /**
- * This method prepopulates the region before the actual benchmark starts.
- */
+ public PrePopulateRegionLong(LongRange keyRangeToPrepopulate,
+ Roles targetRole) {
+ super(keyRangeToPrepopulate, targetRole);
+ }
+
@Override
- public void run(TestContext context) throws InterruptedException {
- final ClientCache cache = ClientCacheFactory.getAnyInstance();
- final Region<Long, Long> region = cache.getRegion("region");
- final int numLocators = context.getHostsIDsForRole(LOCATOR.name()).size();
- final int numServers = context.getHostsIDsForRole(SERVER.name()).size();
- final int numClient = context.getHostsIDsForRole(CLIENT.name()).size();
- final int jvmID = context.getJvmID();
- final int clientIndex = jvmID - numLocators - numServers;
-
- run(region, keyRangeToPrepopulate.sliceFor(numClient, clientIndex));
+ protected Long getValue(long i) {
+ return i;
}
- void run(final Map<Long, Long> region, final LongRange range) throws InterruptedException {
- logger.info("*******************************************");
- logger.info(" Prepopulating the region ");
- logger.info("*******************************************");
- final Instant start = Instant.now();
-
- final int numThreads = Runtime.getRuntime().availableProcessors();
- final ExecutorService threadPool = Executors.newFixedThreadPool(numThreads);
- final List<CompletableFuture<Void>> futures = new ArrayList<>();
-
- for (final LongRange slice : range.slice(numThreads)) {
- futures.add(CompletableFuture.runAsync(() -> doPuts(region, slice), threadPool));
- }
-
- futures.forEach(CompletableFuture::join);
-
- final Instant finish = Instant.now();
- logger.info("*******************************************");
- logger.info(" Prepopulating the region completed");
- logger.info(" Duration = " + Duration.between(start, finish).toMillis() + "ms.");
- logger.info("*******************************************");
-
- threadPool.shutdownNow();
- threadPool.awaitTermination(5, TimeUnit.MINUTES);
- }
-
- private void doPuts(final Map<Long, Long> region, final LongRange range) {
- for (final LongRange slice : range.slicesOfSize(batchSize)) {
- final Map<Long, Long> valueMap = new HashMap<>();
- slice.forEach(i -> valueMap.put(i, i));
- region.putAll(valueMap);
- }
- }
-
- public int getBatchSize() {
- return batchSize;
- }
-
- public void setBatchSize(int batchSize) {
- this.batchSize = batchSize;
- }
}
diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/PutBytesTask.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/PutBytesTask.java
new file mode 100644
index 0000000..a88f5f1
--- /dev/null
+++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/PutBytesTask.java
@@ -0,0 +1,55 @@
+/*
+ * 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.tasks;
+
+import java.io.Serializable;
+import java.util.Map;
+
+import org.yardstickframework.BenchmarkConfiguration;
+import org.yardstickframework.BenchmarkDriverAdapter;
+
+import org.apache.geode.benchmark.LongRange;
+import org.apache.geode.cache.Cache;
+import org.apache.geode.cache.CacheFactory;
+import org.apache.geode.cache.Region;
+
+public class PutBytesTask extends BenchmarkDriverAdapter implements Serializable {
+
+ private Region<Object, Object> region;
+
+ private LongRange keyRange;
+
+ public PutBytesTask(LongRange keyRange) {
+ this.keyRange = keyRange;
+ }
+
+ @Override
+ public void setUp(BenchmarkConfiguration cfg) throws Exception {
+ super.setUp(cfg);
+ final Cache cache = CacheFactory.getAnyInstance();
+ region = cache.getRegion("region");
+ }
+
+ @Override
+ public boolean test(Map<Object, Object> ctx) {
+ long key = keyRange.random();
+ byte[] bytes = new byte[1024];
+ region.put(key, bytes);
+ return true;
+ }
+}
diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/PutLongTask.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/PutLongTask.java
new file mode 100644
index 0000000..92bf319
--- /dev/null
+++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/PutLongTask.java
@@ -0,0 +1,55 @@
+/*
+ * 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.tasks;
+
+import java.io.Serializable;
+import java.util.Map;
+import java.util.concurrent.ThreadLocalRandom;
+
+import org.yardstickframework.BenchmarkConfiguration;
+import org.yardstickframework.BenchmarkDriverAdapter;
+
+import org.apache.geode.benchmark.LongRange;
+import org.apache.geode.cache.Cache;
+import org.apache.geode.cache.CacheFactory;
+import org.apache.geode.cache.Region;
+
+public class PutLongTask extends BenchmarkDriverAdapter implements Serializable {
+
+ private Region<Object, Object> region;
+
+ private LongRange keyRange;
+
+ public PutLongTask(LongRange keyRange) {
+ this.keyRange = keyRange;
+ }
+
+ @Override
+ public void setUp(BenchmarkConfiguration cfg) throws Exception {
+ super.setUp(cfg);
+ final Cache cache = CacheFactory.getAnyInstance();
+ region = cache.getRegion("region");
+ }
+
+ @Override
+ public boolean test(Map<Object, Object> ctx) {
+ long key = keyRange.random();
+ region.put(key, ThreadLocalRandom.current().nextLong());
+ return true;
+ }
+}
diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/PutTask.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/PutTask.java
index ae3aa98..1af2d64 100644
--- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/PutTask.java
+++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/PutTask.java
@@ -25,9 +25,9 @@
import org.yardstickframework.BenchmarkDriverAdapter;
import org.apache.geode.benchmark.LongRange;
+import org.apache.geode.cache.Cache;
+import org.apache.geode.cache.CacheFactory;
import org.apache.geode.cache.Region;
-import org.apache.geode.cache.client.ClientCache;
-import org.apache.geode.cache.client.ClientCacheFactory;
public class PutTask extends BenchmarkDriverAdapter implements Serializable {
@@ -42,7 +42,7 @@
@Override
public void setUp(BenchmarkConfiguration cfg) throws Exception {
super.setUp(cfg);
- ClientCache cache = ClientCacheFactory.getAnyInstance();
+ final Cache cache = CacheFactory.getAnyInstance();
region = cache.getRegion("region");
}
diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/Sleep.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/Sleep.java
new file mode 100644
index 0000000..2af7631
--- /dev/null
+++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/Sleep.java
@@ -0,0 +1,43 @@
+/*
+ * 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.tasks;
+
+import static java.util.concurrent.TimeUnit.MILLISECONDS;
+
+import java.util.concurrent.TimeUnit;
+
+import org.apache.geode.perftest.Task;
+import org.apache.geode.perftest.TestContext;
+
+/**
+ * Task to sleep.
+ */
+public class Sleep implements Task {
+
+ private final long durationMs;
+
+ public Sleep(final long duration, final TimeUnit timeUnit) {
+ durationMs = MILLISECONDS.convert(duration, timeUnit);
+ }
+
+ @Override
+ public void run(final TestContext context) throws Exception {
+ Thread.sleep(durationMs);
+ }
+
+}
diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/StartLocator.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/StartLocator.java
index d91e43d..923ec10 100644
--- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/StartLocator.java
+++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/StartLocator.java
@@ -56,6 +56,7 @@
*/
protected void startLocator(final Properties properties, final int locatorPort,
final TestContext context) throws IOException {
- Locator.startLocatorAndDS(locatorPort, null, properties);
+ final Locator locator = Locator.startLocatorAndDS(locatorPort, null, properties);
+ context.setAttribute("LOCATOR", locator);
}
}
diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/StartSniProxy.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/StartSniProxy.java
index 5ac999d..f0f4e48 100644
--- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/StartSniProxy.java
+++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/StartSniProxy.java
@@ -52,6 +52,7 @@
@Override
public void run(TestContext context) throws Exception {
+ @SuppressWarnings("unchecked")
final Map<InetAddress, String> namings =
(Map<InetAddress, String>) context.getAttribute(HOST_NAMINGS_OFF_PLATFORM);
diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/StopLocator.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/StopLocator.java
new file mode 100644
index 0000000..ffb1398
--- /dev/null
+++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/StopLocator.java
@@ -0,0 +1,35 @@
+/*
+ * 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.tasks;
+
+import org.apache.geode.distributed.Locator;
+import org.apache.geode.perftest.Task;
+import org.apache.geode.perftest.TestContext;
+
+/**
+ * Task to stop the locator.
+ */
+public class StopLocator implements Task {
+
+ @Override
+ public void run(final TestContext context) throws Exception {
+ final Locator locator = (Locator) context.getAttribute("LOCATOR");
+ locator.stop();
+ }
+
+}
diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/StopServer.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/StopServer.java
new file mode 100644
index 0000000..6ffd348
--- /dev/null
+++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/StopServer.java
@@ -0,0 +1,35 @@
+/*
+ * 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.tasks;
+
+import org.apache.geode.cache.Cache;
+import org.apache.geode.perftest.Task;
+import org.apache.geode.perftest.TestContext;
+
+/**
+ * Task to stop the server.
+ */
+public class StopServer implements Task {
+
+ @Override
+ public void run(final TestContext context) throws Exception {
+ final Cache cache = (Cache) context.getAttribute("SERVER_CACHE");
+ cache.close();
+ }
+
+}
diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/AbstractFunctionBenchmark.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/AbstractFunctionBenchmark.java
index 51d6f07..635b377 100644
--- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/AbstractFunctionBenchmark.java
+++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/AbstractFunctionBenchmark.java
@@ -41,7 +41,7 @@
@Override
public TestConfig configure() {
- TestConfig config = GeodeBenchmark.createConfig();
+ TestConfig config = ClientServerBenchmark.createConfig();
config.threads(Runtime.getRuntime().availableProcessors() * 3);
configureRegion(config);
before(config, new CreateClientProxyRegion(), CLIENT);
diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/ClientServerBenchmark.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/ClientServerBenchmark.java
new file mode 100644
index 0000000..982c332
--- /dev/null
+++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/ClientServerBenchmark.java
@@ -0,0 +1,41 @@
+/*
+ * 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 org.apache.geode.benchmark.topology.ClientServerTopology;
+import org.apache.geode.benchmark.topology.ClientServerTopologyWithSNIProxy;
+import org.apache.geode.perftest.TestConfig;
+
+public class ClientServerBenchmark extends GeodeBenchmark {
+
+
+ public static TestConfig createConfig() {
+ TestConfig config = GeodeBenchmark.createConfig();
+
+ final String sniProp = System.getProperty("withSniProxy");
+ final boolean doSni = sniProp != null && !sniProp.equals("false");
+
+ if (doSni) {
+ ClientServerTopologyWithSNIProxy.configure(config);
+ } else {
+ ClientServerTopology.configure(config);
+ }
+
+ return config;
+ }
+
+}
diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/GeodeBenchmark.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/GeodeBenchmark.java
index bf7d426..97e3494 100644
--- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/GeodeBenchmark.java
+++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/GeodeBenchmark.java
@@ -17,8 +17,6 @@
import static java.util.concurrent.TimeUnit.MINUTES;
-import org.apache.geode.benchmark.topology.ClientServerTopology;
-import org.apache.geode.benchmark.topology.ClientServerTopologyWithSNIProxy;
import org.apache.geode.perftest.TestConfig;
public class GeodeBenchmark {
@@ -44,16 +42,6 @@
config.warmupSeconds(WARM_UP_TIME);
config.durationSeconds(BENCHMARK_DURATION);
config.threads(THREADS);
-
- final String sniProp = System.getProperty("withSniProxy");
- final boolean doSni = sniProp != null && !sniProp.equals("false");
-
- if (doSni) {
- ClientServerTopologyWithSNIProxy.configure(config);
- } else {
- ClientServerTopology.configure(config);
- }
-
return config;
}
diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/NoopBenchmark.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/NoopBenchmark.java
index 7cf49ab..dbc9a12 100644
--- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/NoopBenchmark.java
+++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/NoopBenchmark.java
@@ -42,7 +42,7 @@
@Override
public TestConfig configure() {
- TestConfig config = GeodeBenchmark.createConfig();
+ TestConfig config = ClientServerBenchmark.createConfig();
workload(config, new NoopTask(), CLIENT);
return config;
diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/P2pBenchmark.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/P2pBenchmark.java
new file mode 100644
index 0000000..0e2cfe2
--- /dev/null
+++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/P2pBenchmark.java
@@ -0,0 +1,32 @@
+/*
+ * 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 org.apache.geode.benchmark.topology.P2pTopology;
+import org.apache.geode.perftest.TestConfig;
+
+public class P2pBenchmark extends GeodeBenchmark {
+
+
+ public static TestConfig createConfig() {
+ TestConfig config = GeodeBenchmark.createConfig();
+
+ P2pTopology.configure(config);
+
+ return config;
+ }
+
+}
diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/P2pPartitionedGetBenchmark.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/P2pPartitionedGetBenchmark.java
new file mode 100644
index 0000000..9c7709f
--- /dev/null
+++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/P2pPartitionedGetBenchmark.java
@@ -0,0 +1,62 @@
+/*
+ * 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.Config.before;
+import static org.apache.geode.benchmark.Config.workload;
+import static org.apache.geode.benchmark.topology.Roles.SERVER;
+
+import org.junit.jupiter.api.Test;
+
+import org.apache.geode.benchmark.LongRange;
+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.perftest.PerformanceTest;
+import org.apache.geode.perftest.TestConfig;
+import org.apache.geode.perftest.TestRunners;
+
+/**
+ * Benchmark of gets on a partitioned region.
+ */
+public class P2pPartitionedGetBenchmark implements PerformanceTest {
+
+ private LongRange keyRange = new LongRange(0, 1000000);
+
+ @Test
+ public void run() throws Exception {
+ TestRunners.defaultRunner().runTest(this);
+ }
+
+ public P2pPartitionedGetBenchmark() {}
+
+ public void setKeyRange(final LongRange keyRange) {
+ this.keyRange = keyRange;
+ }
+
+ @Override
+ public TestConfig configure() {
+ final TestConfig config = P2pBenchmark.createConfig();
+ before(config, new CreatePartitionedRegion(), SERVER);
+ before(config, new PrePopulateRegion(keyRange, SERVER), SERVER);
+ workload(config, new GetTask(keyRange), SERVER);
+ return config;
+
+ }
+}
diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/P2pPartitionedPutBenchmark.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/P2pPartitionedPutBenchmark.java
new file mode 100644
index 0000000..4ae1b3c
--- /dev/null
+++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/P2pPartitionedPutBenchmark.java
@@ -0,0 +1,61 @@
+/*
+ * 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.Config.before;
+import static org.apache.geode.benchmark.Config.workload;
+import static org.apache.geode.benchmark.topology.Roles.SERVER;
+
+import org.junit.jupiter.api.Test;
+
+import org.apache.geode.benchmark.LongRange;
+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.perftest.PerformanceTest;
+import org.apache.geode.perftest.TestConfig;
+import org.apache.geode.perftest.TestRunners;
+
+/**
+ * Benchmark of puts on a partitioned region.
+ */
+public class P2pPartitionedPutBenchmark implements PerformanceTest {
+
+ private LongRange keyRange = new LongRange(0, 1_000_000);
+
+ public P2pPartitionedPutBenchmark() {}
+
+ public void setKeyRange(final LongRange keyRange) {
+ this.keyRange = keyRange;
+ }
+
+ @Test
+ public void run() throws Exception {
+ TestRunners.defaultRunner().runTest(this);
+ }
+
+ @Override
+ public TestConfig configure() {
+ TestConfig config = P2pBenchmark.createConfig();
+
+ before(config, new CreatePartitionedRegion(), SERVER);
+ before(config, new PrePopulateRegion(keyRange, SERVER), SERVER);
+ workload(config, new PutTask(keyRange), SERVER);
+ return config;
+ }
+}
diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/P2pPartitionedPutBytesBenchmark.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/P2pPartitionedPutBytesBenchmark.java
new file mode 100644
index 0000000..2e4af47
--- /dev/null
+++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/P2pPartitionedPutBytesBenchmark.java
@@ -0,0 +1,60 @@
+/*
+ * 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.Config.before;
+import static org.apache.geode.benchmark.Config.workload;
+import static org.apache.geode.benchmark.topology.Roles.SERVER;
+
+import org.junit.jupiter.api.Test;
+
+import org.apache.geode.benchmark.LongRange;
+import org.apache.geode.benchmark.tasks.CreatePartitionedRegion;
+import org.apache.geode.benchmark.tasks.PrePopulateRegionBytes;
+import org.apache.geode.benchmark.tasks.PutBytesTask;
+import org.apache.geode.perftest.PerformanceTest;
+import org.apache.geode.perftest.TestConfig;
+import org.apache.geode.perftest.TestRunners;
+
+/**
+ * Benchmark of puts on a partitioned region.
+ */
+public class P2pPartitionedPutBytesBenchmark implements PerformanceTest {
+
+ private LongRange keyRange = new LongRange(0, 1000000);
+
+ public P2pPartitionedPutBytesBenchmark() {}
+
+ public void setKeyRange(final LongRange keyRange) {
+ this.keyRange = keyRange;
+ }
+
+ @Test
+ public void run() throws Exception {
+ TestRunners.defaultRunner().runTest(this);
+ }
+
+ @Override
+ public TestConfig configure() {
+ TestConfig config = P2pBenchmark.createConfig();
+ before(config, new CreatePartitionedRegion(), SERVER);
+ before(config, new PrePopulateRegionBytes(keyRange, SERVER), SERVER);
+ workload(config, new PutBytesTask(keyRange), SERVER);
+ return config;
+ }
+}
diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/P2pPartitionedPutLongBenchmark.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/P2pPartitionedPutLongBenchmark.java
new file mode 100644
index 0000000..961b604
--- /dev/null
+++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/P2pPartitionedPutLongBenchmark.java
@@ -0,0 +1,60 @@
+/*
+ * 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.Config.before;
+import static org.apache.geode.benchmark.Config.workload;
+import static org.apache.geode.benchmark.topology.Roles.SERVER;
+
+import org.junit.jupiter.api.Test;
+
+import org.apache.geode.benchmark.LongRange;
+import org.apache.geode.benchmark.tasks.CreatePartitionedRegion;
+import org.apache.geode.benchmark.tasks.PrePopulateRegionLong;
+import org.apache.geode.benchmark.tasks.PutLongTask;
+import org.apache.geode.perftest.PerformanceTest;
+import org.apache.geode.perftest.TestConfig;
+import org.apache.geode.perftest.TestRunners;
+
+/**
+ * Benchmark of puts on a partitioned region.
+ */
+public class P2pPartitionedPutLongBenchmark implements PerformanceTest {
+
+ private LongRange keyRange = new LongRange(0, 1000000);
+
+ public P2pPartitionedPutLongBenchmark() {}
+
+ public void setKeyRange(final LongRange keyRange) {
+ this.keyRange = keyRange;
+ }
+
+ @Test
+ public void run() throws Exception {
+ TestRunners.defaultRunner().runTest(this);
+ }
+
+ @Override
+ public TestConfig configure() {
+ TestConfig config = P2pBenchmark.createConfig();
+ before(config, new CreatePartitionedRegion(), SERVER);
+ before(config, new PrePopulateRegionLong(keyRange, SERVER), SERVER);
+ workload(config, new PutLongTask(keyRange), SERVER);
+ return config;
+ }
+}
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 676a1f3..d2a6790 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
@@ -54,7 +54,7 @@
@Override
public TestConfig configure() {
- TestConfig config = GeodeBenchmark.createConfig();
+ TestConfig config = ClientServerBenchmark.createConfig();
before(config, new CreatePartitionedRegion(), SERVER);
before(config, new CreateClientProxyRegion(), CLIENT);
before(config, new PrePopulateRegion(keyRange), CLIENT);
diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/PartitionedGetLongBenchmark.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/PartitionedGetLongBenchmark.java
index f64081d..3b770c5 100644
--- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/PartitionedGetLongBenchmark.java
+++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/PartitionedGetLongBenchmark.java
@@ -54,7 +54,7 @@
@Override
public TestConfig configure() {
- TestConfig config = GeodeBenchmark.createConfig();
+ TestConfig config = ClientServerBenchmark.createConfig();
before(config, new CreatePartitionedRegion(), SERVER);
before(config, new CreateClientProxyRegion(), CLIENT);
before(config, new PrePopulateRegionLong(keyRange), CLIENT);
diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/PartitionedIndexedQueryBenchmark.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/PartitionedIndexedQueryBenchmark.java
index 0aa42ad..bc81006 100644
--- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/PartitionedIndexedQueryBenchmark.java
+++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/PartitionedIndexedQueryBenchmark.java
@@ -52,7 +52,7 @@
@Override
public TestConfig configure() {
- TestConfig config = GeodeBenchmark.createConfig();
+ TestConfig config = ClientServerBenchmark.createConfig();
config.threads(Runtime.getRuntime().availableProcessors() * 8);
before(config, new CreatePartitionedRegion(), SERVER);
before(config, new CreateClientProxyRegion(), CLIENT);
diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/PartitionedNonIndexedQueryBenchmark.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/PartitionedNonIndexedQueryBenchmark.java
index 06cf6ea..80ff61c 100644
--- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/PartitionedNonIndexedQueryBenchmark.java
+++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/PartitionedNonIndexedQueryBenchmark.java
@@ -51,7 +51,7 @@
@Override
public TestConfig configure() {
- TestConfig config = GeodeBenchmark.createConfig();
+ TestConfig config = ClientServerBenchmark.createConfig();
config.threads(Runtime.getRuntime().availableProcessors());
before(config, new CreatePartitionedRegion(), SERVER);
before(config, new CreateClientProxyRegion(), CLIENT);
diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/PartitionedPutAllBenchmark.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/PartitionedPutAllBenchmark.java
index 7e35bc6..f7f13f6 100644
--- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/PartitionedPutAllBenchmark.java
+++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/PartitionedPutAllBenchmark.java
@@ -55,7 +55,7 @@
@Override
public TestConfig configure() {
- TestConfig config = GeodeBenchmark.createConfig();
+ TestConfig config = ClientServerBenchmark.createConfig();
config.threads(Runtime.getRuntime().availableProcessors() * 2);
before(config, new CreatePartitionedRegion(), SERVER);
before(config, new CreateClientProxyRegion(), CLIENT);
diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/PartitionedPutAllLongBenchmark.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/PartitionedPutAllLongBenchmark.java
index e300de4..a1ad5e2 100644
--- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/PartitionedPutAllLongBenchmark.java
+++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/PartitionedPutAllLongBenchmark.java
@@ -55,7 +55,7 @@
@Override
public TestConfig configure() {
- TestConfig config = GeodeBenchmark.createConfig();
+ TestConfig config = ClientServerBenchmark.createConfig();
config.threads(Runtime.getRuntime().availableProcessors() * 2);
before(config, new CreatePartitionedRegion(), SERVER);
before(config, new CreateClientProxyRegion(), CLIENT);
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 8a18d73..8a61a79 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
@@ -53,7 +53,7 @@
@Override
public TestConfig configure() {
- TestConfig config = GeodeBenchmark.createConfig();
+ TestConfig config = ClientServerBenchmark.createConfig();
before(config, new CreatePartitionedRegion(), SERVER);
before(config, new CreateClientProxyRegion(), CLIENT);
diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/PartitionedPutBytesBenchmark.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/PartitionedPutBytesBenchmark.java
new file mode 100644
index 0000000..2a70824
--- /dev/null
+++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/PartitionedPutBytesBenchmark.java
@@ -0,0 +1,63 @@
+/*
+ * 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.Config.before;
+import static org.apache.geode.benchmark.Config.workload;
+import static org.apache.geode.benchmark.topology.Roles.CLIENT;
+import static org.apache.geode.benchmark.topology.Roles.SERVER;
+
+import org.junit.jupiter.api.Test;
+
+import org.apache.geode.benchmark.LongRange;
+import org.apache.geode.benchmark.tasks.CreateClientProxyRegion;
+import org.apache.geode.benchmark.tasks.CreatePartitionedRegion;
+import org.apache.geode.benchmark.tasks.PrePopulateRegionBytes;
+import org.apache.geode.benchmark.tasks.PutBytesTask;
+import org.apache.geode.perftest.PerformanceTest;
+import org.apache.geode.perftest.TestConfig;
+import org.apache.geode.perftest.TestRunners;
+
+/**
+ * Benchmark of puts on a partitioned region.
+ */
+public class PartitionedPutBytesBenchmark implements PerformanceTest {
+
+ private LongRange keyRange = new LongRange(0, 1000000);
+
+ public PartitionedPutBytesBenchmark() {}
+
+ public void setKeyRange(final LongRange keyRange) {
+ this.keyRange = keyRange;
+ }
+
+ @Test
+ public void run() throws Exception {
+ TestRunners.defaultRunner().runTest(this);
+ }
+
+ @Override
+ public TestConfig configure() {
+ TestConfig config = ClientServerBenchmark.createConfig();
+ before(config, new CreatePartitionedRegion(), SERVER);
+ before(config, new CreateClientProxyRegion(), CLIENT);
+ before(config, new PrePopulateRegionBytes(keyRange), CLIENT);
+ workload(config, new PutBytesTask(keyRange), CLIENT);
+ return config;
+ }
+}
diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/PartitionedPutLongBenchmark.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/PartitionedPutLongBenchmark.java
index ed33f1a..5b5307f 100644
--- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/PartitionedPutLongBenchmark.java
+++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/PartitionedPutLongBenchmark.java
@@ -28,7 +28,7 @@
import org.apache.geode.benchmark.tasks.CreateClientProxyRegion;
import org.apache.geode.benchmark.tasks.CreatePartitionedRegion;
import org.apache.geode.benchmark.tasks.PrePopulateRegionLong;
-import org.apache.geode.benchmark.tasks.PutTask;
+import org.apache.geode.benchmark.tasks.PutLongTask;
import org.apache.geode.perftest.PerformanceTest;
import org.apache.geode.perftest.TestConfig;
import org.apache.geode.perftest.TestRunners;
@@ -53,11 +53,11 @@
@Override
public TestConfig configure() {
- TestConfig config = GeodeBenchmark.createConfig();
+ TestConfig config = ClientServerBenchmark.createConfig();
before(config, new CreatePartitionedRegion(), SERVER);
before(config, new CreateClientProxyRegion(), CLIENT);
before(config, new PrePopulateRegionLong(keyRange), CLIENT);
- workload(config, new PutTask(keyRange), CLIENT);
+ workload(config, new PutLongTask(keyRange), CLIENT);
return config;
}
}
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
index 97b01f4..ac4e9a3 100644
--- 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
@@ -54,7 +54,7 @@
@Override
public TestConfig configure() {
- TestConfig config = GeodeBenchmark.createConfig();
+ TestConfig config = ClientServerBenchmark.createConfig();
before(config, new CreateReplicatedRegion(), SERVER);
before(config, new CreateClientProxyRegion(), CLIENT);
before(config, new PrePopulateRegion(keyRange), CLIENT);
diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/ReplicatedGetLongBenchmark.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/ReplicatedGetLongBenchmark.java
index d796638..c3215b9 100644
--- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/ReplicatedGetLongBenchmark.java
+++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/ReplicatedGetLongBenchmark.java
@@ -54,7 +54,7 @@
@Override
public TestConfig configure() {
- TestConfig config = GeodeBenchmark.createConfig();
+ TestConfig config = ClientServerBenchmark.createConfig();
before(config, new CreateReplicatedRegion(), SERVER);
before(config, new CreateClientProxyRegion(), CLIENT);
before(config, new PrePopulateRegionLong(keyRange), CLIENT);
diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/ReplicatedIndexedQueryBenchmark.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/ReplicatedIndexedQueryBenchmark.java
index d0ee1b0..258400e 100644
--- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/ReplicatedIndexedQueryBenchmark.java
+++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/ReplicatedIndexedQueryBenchmark.java
@@ -52,7 +52,7 @@
@Override
public TestConfig configure() {
- TestConfig config = GeodeBenchmark.createConfig();
+ TestConfig config = ClientServerBenchmark.createConfig();
config.threads(Runtime.getRuntime().availableProcessors() * 8);
before(config, new CreateReplicatedRegion(), SERVER);
before(config, new CreateClientProxyRegion(), CLIENT);
diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/ReplicatedNonIndexedQueryBenchmark.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/ReplicatedNonIndexedQueryBenchmark.java
index 873ef49..0858a9c 100644
--- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/ReplicatedNonIndexedQueryBenchmark.java
+++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/ReplicatedNonIndexedQueryBenchmark.java
@@ -51,7 +51,7 @@
@Override
public TestConfig configure() {
- TestConfig config = GeodeBenchmark.createConfig();
+ TestConfig config = ClientServerBenchmark.createConfig();
config.threads(Runtime.getRuntime().availableProcessors());
before(config, new CreateReplicatedRegion(), SERVER);
before(config, new CreateClientProxyRegion(), CLIENT);
diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/ReplicatedPutAllBenchmark.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/ReplicatedPutAllBenchmark.java
index c5b4f90..72e7d1a 100644
--- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/ReplicatedPutAllBenchmark.java
+++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/ReplicatedPutAllBenchmark.java
@@ -55,7 +55,7 @@
@Override
public TestConfig configure() {
- TestConfig config = GeodeBenchmark.createConfig();
+ TestConfig config = ClientServerBenchmark.createConfig();
config.threads(Runtime.getRuntime().availableProcessors() * 2);
before(config, new CreateReplicatedRegion(), SERVER);
before(config, new CreateClientProxyRegion(), CLIENT);
diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/ReplicatedPutAllLongBenchmark.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/ReplicatedPutAllLongBenchmark.java
index 3719f3e..1c7607b 100644
--- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/ReplicatedPutAllLongBenchmark.java
+++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/ReplicatedPutAllLongBenchmark.java
@@ -55,7 +55,7 @@
@Override
public TestConfig configure() {
- TestConfig config = GeodeBenchmark.createConfig();
+ TestConfig config = ClientServerBenchmark.createConfig();
config.threads(Runtime.getRuntime().availableProcessors() * 2);
before(config, new CreateReplicatedRegion(), SERVER);
before(config, new CreateClientProxyRegion(), CLIENT);
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/ReplicatedPutBenchmark.java
index 1768b50..4339ca8 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/ReplicatedPutBenchmark.java
@@ -53,7 +53,7 @@
@Override
public TestConfig configure() {
- TestConfig config = GeodeBenchmark.createConfig();
+ TestConfig config = ClientServerBenchmark.createConfig();
before(config, new CreateReplicatedRegion(), SERVER);
before(config, new CreateClientProxyRegion(), CLIENT);
before(config, new PrePopulateRegion(keyRange), CLIENT);
diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/ReplicatedPutLongBenchmark.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/ReplicatedPutLongBenchmark.java
index 3a6b941..9b4d0f7 100644
--- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/ReplicatedPutLongBenchmark.java
+++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/ReplicatedPutLongBenchmark.java
@@ -53,7 +53,7 @@
@Override
public TestConfig configure() {
- TestConfig config = GeodeBenchmark.createConfig();
+ TestConfig config = ClientServerBenchmark.createConfig();
before(config, new CreateReplicatedRegion(), SERVER);
before(config, new CreateClientProxyRegion(), CLIENT);
before(config, new PrePopulateRegionLong(keyRange), CLIENT);
diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/topology/ClientServerTopology.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/topology/ClientServerTopology.java
index 63fa137..4ef9ffb 100644
--- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/topology/ClientServerTopology.java
+++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/topology/ClientServerTopology.java
@@ -14,48 +14,40 @@
*/
package org.apache.geode.benchmark.topology;
+import static org.apache.geode.benchmark.Config.after;
import static org.apache.geode.benchmark.Config.before;
import static org.apache.geode.benchmark.Config.role;
-import static org.apache.geode.benchmark.parameters.Utils.addToTestConfig;
import static org.apache.geode.benchmark.topology.Ports.LOCATOR_PORT;
import static org.apache.geode.benchmark.topology.Roles.CLIENT;
import static org.apache.geode.benchmark.topology.Roles.LOCATOR;
import static org.apache.geode.benchmark.topology.Roles.SERVER;
-import org.apache.geode.benchmark.parameters.GcLoggingParameters;
-import org.apache.geode.benchmark.parameters.GcParameters;
-import org.apache.geode.benchmark.parameters.HeapParameters;
-import org.apache.geode.benchmark.parameters.JvmParameters;
-import org.apache.geode.benchmark.parameters.ProfilerParameters;
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.benchmark.tasks.StopClient;
+import org.apache.geode.benchmark.tasks.StopLocator;
+import org.apache.geode.benchmark.tasks.StopServer;
import org.apache.geode.perftest.TestConfig;
-public class ClientServerTopology {
+public class ClientServerTopology extends Topology {
private static final int NUM_LOCATORS = 1;
private static final int NUM_SERVERS = 2;
private static final int NUM_CLIENTS = 1;
- private static final String WITH_SSL_ARGUMENT = "-DwithSsl=true";
- private static final String WITH_SECURITY_MANAGER_ARGUMENT = "-DwithSecurityManager=true";
public static void configure(TestConfig config) {
role(config, LOCATOR, NUM_LOCATORS);
role(config, SERVER, NUM_SERVERS);
role(config, CLIENT, NUM_CLIENTS);
- JvmParameters.configure(config);
- HeapParameters.configure(config);
- GcLoggingParameters.configure(config);
- GcParameters.configure(config);
- ProfilerParameters.configure(config);
-
- addToTestConfig(config, "withSsl", WITH_SSL_ARGUMENT);
- addToTestConfig(config, "withSecurityManager", WITH_SECURITY_MANAGER_ARGUMENT);
+ configureCommon(config);
before(config, new StartLocator(LOCATOR_PORT), LOCATOR);
before(config, new StartServer(LOCATOR_PORT), SERVER);
before(config, new StartClient(LOCATOR_PORT), CLIENT);
- }
+ after(config, new StopClient(), CLIENT);
+ after(config, new StopServer(), SERVER);
+ after(config, new StopLocator(), LOCATOR);
+ }
}
diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/topology/ClientServerTopologyWithSNIProxy.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/topology/ClientServerTopologyWithSNIProxy.java
index ee5ade1..d9a72f3 100644
--- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/topology/ClientServerTopologyWithSNIProxy.java
+++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/topology/ClientServerTopologyWithSNIProxy.java
@@ -17,7 +17,6 @@
import static org.apache.geode.benchmark.Config.after;
import static org.apache.geode.benchmark.Config.before;
import static org.apache.geode.benchmark.Config.role;
-import static org.apache.geode.benchmark.parameters.Utils.addToTestConfig;
import static org.apache.geode.benchmark.parameters.Utils.configureGeodeProductJvms;
import static org.apache.geode.benchmark.topology.Ports.LOCATOR_PORT;
import static org.apache.geode.benchmark.topology.Ports.SERVER_PORT_FOR_SNI;
@@ -26,14 +25,10 @@
import static org.apache.geode.benchmark.topology.Roles.LOCATOR;
import static org.apache.geode.benchmark.topology.Roles.PROXY;
import static org.apache.geode.benchmark.topology.Roles.SERVER;
+import static org.apache.geode.benchmark.topology.Topology.WITH_SSL_ARGUMENT;
import java.util.stream.Stream;
-import org.apache.geode.benchmark.parameters.GcLoggingParameters;
-import org.apache.geode.benchmark.parameters.GcParameters;
-import org.apache.geode.benchmark.parameters.HeapParameters;
-import org.apache.geode.benchmark.parameters.JvmParameters;
-import org.apache.geode.benchmark.parameters.ProfilerParameters;
import org.apache.geode.benchmark.tasks.DefineHostNamingsOffPlatformTask;
import org.apache.geode.benchmark.tasks.StartClientSNI;
import org.apache.geode.benchmark.tasks.StartLocatorSNI;
@@ -43,13 +38,11 @@
import org.apache.geode.benchmark.tasks.StopSniProxy;
import org.apache.geode.perftest.TestConfig;
-public class ClientServerTopologyWithSNIProxy {
+public class ClientServerTopologyWithSNIProxy extends Topology {
private static final int NUM_LOCATORS = 1;
private static final int NUM_SERVERS = 2;
private static final int NUM_CLIENTS = 1;
private static final int NUM_PROXIES = 1;
- private static final String WITH_SSL_ARGUMENT = "-DwithSsl=true";
- private static final String WITH_SECURITY_MANAGER_ARGUMENT = "-DwithSecurityManager=true";
public static void configure(TestConfig config) {
role(config, LOCATOR, NUM_LOCATORS);
@@ -57,14 +50,9 @@
role(config, CLIENT, NUM_CLIENTS);
role(config, PROXY, NUM_PROXIES);
- JvmParameters.configure(config);
- HeapParameters.configure(config);
- GcLoggingParameters.configure(config);
- GcParameters.configure(config);
- ProfilerParameters.configure(config);
+ configureCommon(config);
configureGeodeProductJvms(config, WITH_SSL_ARGUMENT);
- addToTestConfig(config, "withSecurityManager", WITH_SECURITY_MANAGER_ARGUMENT);
Stream.concat(Roles.rolesFor(GEODE_PRODUCT), Stream.of(PROXY))
.forEach(role -> before(config, new DefineHostNamingsOffPlatformTask(), role));
diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/topology/P2pTopology.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/topology/P2pTopology.java
new file mode 100644
index 0000000..f186926
--- /dev/null
+++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/topology/P2pTopology.java
@@ -0,0 +1,50 @@
+/*
+ * 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.topology;
+
+import static java.util.concurrent.TimeUnit.SECONDS;
+import static org.apache.geode.benchmark.Config.after;
+import static org.apache.geode.benchmark.Config.before;
+import static org.apache.geode.benchmark.Config.role;
+import static org.apache.geode.benchmark.topology.Ports.LOCATOR_PORT;
+import static org.apache.geode.benchmark.topology.Roles.LOCATOR;
+import static org.apache.geode.benchmark.topology.Roles.SERVER;
+
+import org.apache.geode.benchmark.tasks.Sleep;
+import org.apache.geode.benchmark.tasks.StartLocator;
+import org.apache.geode.benchmark.tasks.StartServer;
+import org.apache.geode.benchmark.tasks.StopLocator;
+import org.apache.geode.benchmark.tasks.StopServer;
+import org.apache.geode.perftest.TestConfig;
+
+public class P2pTopology extends Topology {
+ private static final int NUM_LOCATORS = 1;
+ private static final int NUM_SERVERS = 3;
+
+ public static void configure(TestConfig config) {
+ role(config, LOCATOR, NUM_LOCATORS);
+ role(config, SERVER, NUM_SERVERS);
+
+ configureCommon(config);
+
+ before(config, new StartLocator(LOCATOR_PORT), LOCATOR);
+ before(config, new StartServer(LOCATOR_PORT), SERVER);
+
+ after(config, new Sleep(10, SECONDS), SERVER);
+ after(config, new StopServer(), SERVER);
+ after(config, new StopLocator(), LOCATOR);
+ }
+
+}
diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/topology/Topology.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/topology/Topology.java
new file mode 100644
index 0000000..7b17111
--- /dev/null
+++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/topology/Topology.java
@@ -0,0 +1,50 @@
+/*
+ * 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.topology;
+
+import static org.apache.geode.benchmark.parameters.Utils.addToTestConfig;
+
+import org.apache.geode.benchmark.parameters.GcLoggingParameters;
+import org.apache.geode.benchmark.parameters.GcParameters;
+import org.apache.geode.benchmark.parameters.HeapParameters;
+import org.apache.geode.benchmark.parameters.JvmParameters;
+import org.apache.geode.benchmark.parameters.ProfilerParameters;
+import org.apache.geode.perftest.TestConfig;
+
+public abstract class Topology {
+ public static final String WITH_SSL_PROPERTY = "withSsl";
+ static final String WITH_SSL_ARGUMENT = "-DwithSsl=true";
+
+ public static final String WITH_SSL_PROTOCOLS_PROPERTY = "withSslProtocols";
+ public static final String WITH_SSL_CIPHERS_PROPERTY = "withSslCiphers";
+
+ public static final String WITH_SECURITY_MANAGER_PROPERTY = "withSecurityManager";
+ static final String WITH_SECURITY_MANAGER_ARGUMENT = "-DwithSecurityManager=true";
+
+ static void configureCommon(TestConfig config) {
+ JvmParameters.configure(config);
+ HeapParameters.configure(config);
+ GcLoggingParameters.configure(config);
+ GcParameters.configure(config);
+ ProfilerParameters.configure(config);
+
+ addToTestConfig(config, WITH_SSL_PROPERTY, WITH_SSL_ARGUMENT);
+ addToTestConfig(config, WITH_SSL_PROTOCOLS_PROPERTY);
+ addToTestConfig(config, WITH_SSL_CIPHERS_PROPERTY);
+ addToTestConfig(config, WITH_SECURITY_MANAGER_PROPERTY, WITH_SECURITY_MANAGER_ARGUMENT);
+ }
+
+}
diff --git a/geode-benchmarks/src/test/java/org/apache/geode/benchmark/tests/GeodeBenchmarkTest.java b/geode-benchmarks/src/test/java/org/apache/geode/benchmark/tests/GeodeBenchmarkTest.java
index 6beb78c..84337f4 100644
--- a/geode-benchmarks/src/test/java/org/apache/geode/benchmark/tests/GeodeBenchmarkTest.java
+++ b/geode-benchmarks/src/test/java/org/apache/geode/benchmark/tests/GeodeBenchmarkTest.java
@@ -53,28 +53,28 @@
@Test
public void withoutSniProxy() {
System.clearProperty("withSniProxy");
- config = GeodeBenchmark.createConfig();
+ config = ClientServerBenchmark.createConfig();
assertThat(config.getBefore()).doesNotContain(startProxyStep);
}
@Test
public void withSniProxyFalse() {
System.setProperty("withSniProxy", "false");
- config = GeodeBenchmark.createConfig();
+ config = ClientServerBenchmark.createConfig();
assertThat(config.getBefore()).doesNotContain(startProxyStep);
}
@Test
public void withSniProxyTrue() {
System.setProperty("withSniProxy", "true");
- config = GeodeBenchmark.createConfig();
+ config = ClientServerBenchmark.createConfig();
assertThat(config.getBefore()).contains(startProxyStep);
}
@Test
public void withSniProxyNotLowercaseFalse() {
System.setProperty("withSniProxy", "AnythING");
- config = GeodeBenchmark.createConfig();
+ config = ClientServerBenchmark.createConfig();
assertThat(config.getBefore()).contains(startProxyStep);
}
diff --git a/gradle.properties b/gradle.properties
index c4af9d7..97c0a1a 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -14,7 +14,7 @@
# limitations under the License.
# The versionNumber follows semantic versioning conventions.
-versionNumber = 1.9.0
+versionNumber = 1.13.0
# The releaseQualifier uses the following conventions:
# .M? - milestone release
@@ -41,4 +41,4 @@
productName = Apache Geode
productOrg = Apache Software Foundation (ASF)
-minimumGradleVersion = 5.0
\ No newline at end of file
+minimumGradleVersion = 6.6.1
\ No newline at end of file
diff --git a/gradle/rat.gradle b/gradle/rat.gradle
index e78d996..894eb3c 100644
--- a/gradle/rat.gradle
+++ b/gradle/rat.gradle
@@ -15,22 +15,37 @@
* limitations under the License.
*/
-apply plugin: "org.nosphere.apache.rat"
+repositories {
+ mavenCentral()
+}
rat {
+ inputDir = rootDir
+
excludes = [
- '.travis.yml',
+ // git
'.git/**',
- '**/output/**',
- '**/output-*/**',
+ '**/.gitignore',
+ '**/.gitkeep',
+ // gradle
+ '**/.gradle/**',
+ 'gradlew',
+ 'gradlew.bat',
+ 'gradle/wrapper/gradle-wrapper.properties',
+ 'caches/**',
+ 'daemon/**',
+ 'native/**',
+ 'wrapper/**',
'**/build/**',
- '**/out/**',
- 'README.md',
+ '**/build-*/**',
+ '.buildinfo',
+ '**/release-features.rendered',
+ // just for jenkins
+
// IDE
'etc/eclipse-java-google-style.xml',
'etc/intellij-java-modified-google-style.xml',
'etc/eclipseOrganizeImports.importorder',
- 'etc/greclipse.properties',
'**/.project',
'**/.classpath',
'**/.settings/**',
@@ -41,19 +56,6 @@
'.idea/**',
'**/tags',
'**/out/**',
- // gradle
- '**/.gradle/**',
- '.gradle/**',
- 'gradlew*',
- 'gradle/**',
- 'gradle/wrapper/gradle-wrapper.properties',
- 'caches/**',
- 'daemon/**',
- 'native/**',
- 'wrapper/**',
- '**/build/**',
- '**/build-*/**',
- '.buildinfo',
// text files
'**/*.fig',
'**/*.txt',
@@ -67,6 +69,33 @@
'**/*.rej',
'**/*.orig',
'**/*.MF',
- '**/*.cfg',
+ '**/cargo_logs/**',
+ '**/META-INF/**',
+ 'jpf.properties',
+ // binary files
+ '**/*.cer',
+ '**/*.dia',
+ '**/*.gfs',
+ '**/*.gif',
+ '**/*.ico',
+ '**/*.jpg',
+ '**/*.keystore',
+ '**/*.pdf',
+ '**/*.png',
+ '**/*.ser',
+ '**/*.svg',
+ '**/*.truststore',
+ '**/*.xls',
+ '**/publickeyfile',
+ '**/*.dat',
+ // other text files
+ '**/log4j*.xml',
+ // file created by `jenv local`
+ '.java-version',
+ // benchmark outputs
+ 'infrastructure/scripts/**/output-*',
+ 'infrastructure/scripts/**/failedTests',
]
}
+
+check.dependsOn rat
diff --git a/gradle/spotless.gradle b/gradle/spotless.gradle
index b06b631..af57aa1 100644
--- a/gradle/spotless.gradle
+++ b/gradle/spotless.gradle
@@ -16,7 +16,7 @@
*/
allprojects {
- apply plugin: "com.diffplug.gradle.spotless"
+ apply plugin: "com.diffplug.spotless"
spotless {
lineEndings = 'unix'
java {
@@ -125,7 +125,6 @@
}
greclipse().configFile "${rootProject.projectDir}/etc/greclipse.properties"
- paddedCell()
indentWithSpaces(2)
}
groovy {
@@ -135,7 +134,6 @@
}
greclipse().configFile "${rootProject.projectDir}/etc/greclipse.properties"
indentWithSpaces(2)
- paddedCell()
}
}
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 51d5ca2..ef88891 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-5.4-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-6.6.1-all.zip
diff --git a/harness/build.gradle b/harness/build.gradle
index e8096d3..ba1c3d9 100644
--- a/harness/build.gradle
+++ b/harness/build.gradle
@@ -61,7 +61,8 @@
compileJava {
options.fork = true
options.forkOptions.executable = 'javac'
- options.compilerArgs << '-XDignore.symbol.file'
+ options.compilerArgs << '-XDignore.symbol.file' << '-Xlint:unchecked' << "-Werror"
+ options.deprecation = true
}
test{ useJUnitPlatform() }
diff --git a/harness/src/main/java/org/apache/geode/perftest/analysis/Analyzer.java b/harness/src/main/java/org/apache/geode/perftest/analysis/Analyzer.java
index 9d69c75..d5bd611 100644
--- a/harness/src/main/java/org/apache/geode/perftest/analysis/Analyzer.java
+++ b/harness/src/main/java/org/apache/geode/perftest/analysis/Analyzer.java
@@ -56,7 +56,7 @@
return;
}
- boolean isCI = System.getProperty("TEST_CI").equals("1");
+ boolean isCI = System.getProperty("TEST_CI", "0").equals("1");
System.out.println("Running analyzer");
System.out.println(
diff --git a/harness/src/main/java/org/apache/geode/perftest/yardstick/analysis/YardstickHdrHistogramParser.java b/harness/src/main/java/org/apache/geode/perftest/yardstick/analysis/YardstickHdrHistogramParser.java
index a52ba4a..0d861ae 100644
--- a/harness/src/main/java/org/apache/geode/perftest/yardstick/analysis/YardstickHdrHistogramParser.java
+++ b/harness/src/main/java/org/apache/geode/perftest/yardstick/analysis/YardstickHdrHistogramParser.java
@@ -66,7 +66,8 @@
results.add(new ResultData("latency standard deviation", histogram.getStdDeviation()));
results.add(new ResultData("latency standard error",
histogram.getStdDeviation() / Math.sqrt(histogram.getTotalCount())));
-
+ results.add(new ResultData("average ops/second", ((double) histogram.getTotalCount())
+ / (histogram.getEndTimeStamp() - histogram.getStartTimeStamp()) * 1000));
return results;
}
}
diff --git a/harness/src/main/java/org/apache/geode/perftest/yardstick/hdrhistogram/HdrHistogramProbe.java b/harness/src/main/java/org/apache/geode/perftest/yardstick/hdrhistogram/HdrHistogramProbe.java
index 5579d0d..d841f67 100644
--- a/harness/src/main/java/org/apache/geode/perftest/yardstick/hdrhistogram/HdrHistogramProbe.java
+++ b/harness/src/main/java/org/apache/geode/perftest/yardstick/hdrhistogram/HdrHistogramProbe.java
@@ -18,6 +18,8 @@
package org.apache.geode.perftest.yardstick.hdrhistogram;
+import static java.util.concurrent.TimeUnit.SECONDS;
+
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
@@ -25,6 +27,8 @@
import java.util.function.Consumer;
import org.HdrHistogram.Histogram;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.yardstickframework.BenchmarkConfiguration;
import org.yardstickframework.BenchmarkDriver;
import org.yardstickframework.BenchmarkExecutionAwareProbe;
@@ -43,9 +47,10 @@
* TODO consider writing per interval histograms using HistogramLogWriter
*/
public class HdrHistogramProbe implements BenchmarkExecutionAwareProbe, BenchmarkTotalsOnlyProbe {
+ private static final Logger logger = LoggerFactory.getLogger(HdrHistogramProbe.class);
private final int lower;
- private final long upper;
+ private long upper;
private final int numDigits;
private final Clock clock;
private final Consumer<Histogram> histogramConsumer;
@@ -77,7 +82,8 @@
@Override
public void start(BenchmarkDriver drv, BenchmarkConfiguration cfg) throws Exception {
- int threads = cfg.threads();
+ final int threads = cfg.threads();
+ upper = SECONDS.toNanos(cfg.duration());
start(threads);
}
@@ -90,13 +96,17 @@
}
private void reset() {
+ final long timeStampMsec = System.currentTimeMillis();
for (int i = 0; i < histograms.length; i++) {
histograms[i] = new Histogram(lower, upper, numDigits);
+ histograms[i].setStartTimeStamp(timeStampMsec);
}
}
@Override
- public void stop() {}
+ public void stop() {
+ logger.info("Stopped");
+ }
@Override
public Collection<String> metaInfo() {
@@ -105,16 +115,29 @@
@Override
public Collection<BenchmarkProbePoint> points() {
- Histogram aggregate = getHistogram();
+ final Histogram aggregate = getHistogram();
reset();
- double percentile50 = aggregate.getMean();
- long percentile99 = aggregate.getValueAtPercentile(99);
+ final double mean = aggregate.getMean();
+ final long percentile99 = aggregate.getValueAtPercentile(99);
- BenchmarkProbePoint point =
- new BenchmarkProbePoint(0, new double[] {percentile50, percentile99});
+ final BenchmarkProbePoint point =
+ new BenchmarkProbePoint(aggregate.getEndTimeStamp(), new double[] {mean, percentile99});
- histogramConsumer.accept(aggregate);
+ for (int r = 0; r < 5; ++r) {
+ try {
+ logger.info("Saving histogram. r={}", r);
+ histogramConsumer.accept(aggregate);
+ } catch (Exception e) {
+ logger.error("Failed to save histogram. aggregate={}", aggregate.getTag(), e);
+ try {
+ Thread.sleep(SECONDS.toMillis(1));
+ } catch (InterruptedException ignored) {
+ }
+ continue;
+ }
+ break;
+ }
return Collections.singleton(point);
}
@@ -123,13 +146,12 @@
}
-
-
- public Histogram getHistogram() {
- Histogram aggregate = new Histogram(lower, upper, numDigits);
- for (Histogram histogram : histograms) {
+ Histogram getHistogram() {
+ final Histogram aggregate = new Histogram(lower, upper, numDigits);
+ for (final Histogram histogram : histograms) {
aggregate.add(histogram);
}
+ aggregate.setEndTimeStamp(System.currentTimeMillis());
return aggregate;
}
}
diff --git a/harness/src/test/java/org/apache/geode/perftest/yardstick/hdrhistogram/HdrHistogramProbeTest.java b/harness/src/test/java/org/apache/geode/perftest/yardstick/hdrhistogram/HdrHistogramProbeTest.java
index 80ba7f3..356577e 100644
--- a/harness/src/test/java/org/apache/geode/perftest/yardstick/hdrhistogram/HdrHistogramProbeTest.java
+++ b/harness/src/test/java/org/apache/geode/perftest/yardstick/hdrhistogram/HdrHistogramProbeTest.java
@@ -34,17 +34,17 @@
private HdrHistogramProbe probe;
private Clock clock;
- private Consumer consumer;
@BeforeEach
public void setUp() {
clock = mock(Clock.class);
- consumer = mock(Consumer.class);
+ @SuppressWarnings("unchecked")
+ final Consumer<Histogram> consumer = mock(Consumer.class);
probe = new HdrHistogramProbe(1, 3_600_000, 3, clock, consumer);
}
@Test
- public void recordsASingleValue() throws InterruptedException {
+ public void recordsASingleValue() {
probe.start(8);
when(clock.currentTimeNanos()).thenReturn(0L);
probe.beforeExecute(1);
@@ -83,7 +83,7 @@
}
@Test
- public void generatesASummaryBenchmarkPoint() throws Exception {
+ public void generatesASummaryBenchmarkPoint() {
probe.start(1);
when(clock.currentTimeNanos()).thenReturn(0L);
probe.beforeExecute(0);
@@ -100,7 +100,7 @@
assertEquals(1, points.size());
BenchmarkProbePoint point = points.iterator().next();
- assertEquals(0, point.time());
+ assertEquals(probe.getHistogram().getStartTimeStamp(), point.time());
Assertions.assertThat(point.values()).containsExactly(3.0, 4.0);
}
}
diff --git a/infrastructure/build.gradle b/infrastructure/build.gradle
index 41f3a71..a9b9a8b 100644
--- a/infrastructure/build.gradle
+++ b/infrastructure/build.gradle
@@ -36,6 +36,11 @@
imports { mavenBom 'software.amazon.awssdk:bom:' + project.'software-amazon-awssdk.version' }
}
+compileJava {
+ options.compilerArgs << '-Xlint:unchecked' << "-Werror"
+ options.deprecation = true
+}
+
task(launchCluster, dependsOn: 'classes', type: JavaExec) {
main = 'org.apache.geode.infrastructure.aws.LaunchCluster'
workingDir = rootDir
@@ -43,7 +48,6 @@
systemProperty 'TEST_CI', project.findProperty('ci')
systemProperty 'PURPOSE', project.findProperty('purpose')
-
}
task(destroyCluster, dependsOn: 'classes', type: JavaExec) {
diff --git a/infrastructure/scripts/aws/image/files/defaults.cfg b/infrastructure/scripts/aws/image/files/defaults.cfg
index 9969787..9861fb5 100644
--- a/infrastructure/scripts/aws/image/files/defaults.cfg
+++ b/infrastructure/scripts/aws/image/files/defaults.cfg
@@ -1,3 +1,18 @@
+# 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.
+
#cloud-config
system_info:
default_user:
diff --git a/infrastructure/scripts/aws/run_against_baseline.sh b/infrastructure/scripts/aws/run_against_baseline.sh
index e24584d..65a6fe9 100755
--- a/infrastructure/scripts/aws/run_against_baseline.sh
+++ b/infrastructure/scripts/aws/run_against_baseline.sh
@@ -33,7 +33,7 @@
DEFAULT_BASELINE_REPO='apache/geode'
DEFAULT_BASELINE_REPO_URL="https://github.com/${DEFAULT_BASELINE_REPO}"
BASELINE_REPO=${DEFAULT_BASELINE_REPO}
-DEFAULT_BASELINE_VERSION=1.8.0
+DEFAULT_BASELINE_VERSION=1.13.0
BASELINE_VERSION=${DEFAULT_BASELINE_VERSION}
TAG=
@@ -153,11 +153,7 @@
exit 1
fi
-if [ ! -z "${OUTPUT}" ]; then
- OUTPUT="${OUTPUT}-"
-fi
-
-OUTPUT="${OUTPUT}output-${DATE}-${TAG}"
+OUTPUT="${OUTPUT:-output-${DATE}-${TAG}}"
set -x
if ! [[ "$OUTPUT" = /* ]]; then
diff --git a/settings.gradle b/settings.gradle
index 69d363e..458e71c 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -20,4 +20,4 @@
include 'harness'
include 'geode-benchmarks'
include 'infrastructure'
-
+include 'cryptoinfo'