This is an automated email from the ASF dual-hosted git repository.

jbarrett pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/geode-benchmarks.git


The following commit(s) were added to refs/heads/develop by this push:
     new fcfb373  User can run benchmarks with alternative JVM (#89)
fcfb373 is described below

commit fcfb373cfc081dfead277776c509ebe69e109ba4
Author: Kamilla Aslami <kasl...@pivotal.io>
AuthorDate: Wed Jul 17 09:37:13 2019 -0700

    User can run benchmarks with alternative JVM (#89)
    
    * Use alternative JVM for benchmark/test
    * Use java.home for executing remote jvm.
    * Disable GC logging if not Java 8
    * Updated the README.md to be clearer.
    * Added ClientServerTopologyTest file
    
    Co-authored-by: Murtuza Boxwala <mboxw...@pivotal.io>
    Co-authored-by: Kamilla Aslami <kasl...@pivotal.io>
---
 README.md                                          | 10 ++-
 geode-benchmarks/build.gradle                      |  3 +
 .../geode/benchmark/parameters/JVMParameters.java  | 19 ++---
 .../benchmark/topology/ClientServerTopology.java   |  8 ++
 .../topology/ClientServerTopologyTest.java         | 89 ++++++++++++++++++++++
 .../apache/geode/perftest/jvms/JVMLauncher.java    |  2 +-
 6 files changed, 120 insertions(+), 11 deletions(-)

diff --git a/README.md b/README.md
index 83f9b67..5c36ab7 100644
--- a/README.md
+++ b/README.md
@@ -47,7 +47,15 @@ For example:
 ```
 ./gradlew benchmark -Phosts=localhost,localhost,localhost,localhost
 ```
-Optionally you can control the output directory with `-PoutputDir=/tmp/results`
+
+Options:
+
+    -Phosts      : Hosts used by benchmarks on the order of 
client,locator,server,server (-Phosts=localhost,localhost,localhost,localhost)
+    -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.
+    --tests      : Specific benchmarks to run (--tests=PartitionedPutBenchmark)
+    -d           : Debug
+    -i           : Info
 
 ### Running in aws
 
diff --git a/geode-benchmarks/build.gradle b/geode-benchmarks/build.gradle
index d7816f4..ffd8ab5 100644
--- a/geode-benchmarks/build.gradle
+++ b/geode-benchmarks/build.gradle
@@ -56,6 +56,9 @@ test{
 }
 
 task benchmark(type: Test) {
+    if (project.hasProperty('testJVM') && !testJVM.trim().isEmpty()) {
+        executable = "${testJVM}/bin/java"
+    }
     outputs.upToDateWhen { false }
     testClassesDirs = project.sourceSets.main.output.classesDirs
     classpath = project.sourceSets.main.runtimeClasspath
diff --git 
a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/parameters/JVMParameters.java
 
b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/parameters/JVMParameters.java
index d6bd361..5c4bdc7 100644
--- 
a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/parameters/JVMParameters.java
+++ 
b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/parameters/JVMParameters.java
@@ -17,14 +17,6 @@ package org.apache.geode.benchmark.parameters;
 public class JVMParameters {
   public static final String[] JVM_ARGS = new String[] {
       "-XX:CMSInitiatingOccupancyFraction=60",
-      "-XX:+PrintGCDetails",
-      "-XX:+PrintGCTimeStamps",
-      "-XX:+PrintGCDateStamps",
-      "-XX:+PrintGCApplicationStoppedTime",
-      "-XX:+PrintGCApplicationConcurrentTime",
-      "-XX:+UseGCLogFileRotation",
-      "-XX:NumberOfGCLogFiles=20",
-      "-XX:GCLogFileSize=1M",
       "-XX:+UnlockDiagnosticVMOptions",
       "-XX:ParGCCardsPerStrideChunk=32768",
       "-XX:+UseNUMA",
@@ -41,7 +33,16 @@ public class JVMParameters {
       "-Dgemfire.launcher.registerSignalHandlers=true",
       "-Xmx8g",
       "-Xms8g"
-
+  };
+  public static final String[] JVM8_ARGS = new String[] {
+      "-XX:+PrintGCDetails",
+      "-XX:+PrintGCTimeStamps",
+      "-XX:+PrintGCDateStamps",
+      "-XX:+PrintGCApplicationStoppedTime",
+      "-XX:+PrintGCApplicationConcurrentTime",
+      "-XX:+UseGCLogFileRotation",
+      "-XX:NumberOfGCLogFiles=20",
+      "-XX:GCLogFileSize=1M"
   };
 
 }
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 95fe97d..20d20fb 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,6 +14,7 @@
  */
 package org.apache.geode.benchmark.topology;
 
+import static org.apache.geode.benchmark.parameters.JVMParameters.JVM8_ARGS;
 import static org.apache.geode.benchmark.parameters.JVMParameters.JVM_ARGS;
 import static 
org.apache.geode.benchmark.topology.ClientServerTopology.Roles.CLIENT;
 import static 
org.apache.geode.benchmark.topology.ClientServerTopology.Roles.LOCATOR;
@@ -56,10 +57,17 @@ public class ClientServerTopology {
     testConfig.role(CLIENT, NUM_CLIENTS);
 
     String profilerArgument = 
System.getProperty("benchmark.profiler.argument");
+
     testConfig.jvmArgs(CLIENT, appendIfNotEmpty(JVM_ARGS, profilerArgument));
     testConfig.jvmArgs(LOCATOR, appendIfNotEmpty(JVM_ARGS, profilerArgument));
     testConfig.jvmArgs(SERVER, appendIfNotEmpty(JVM_ARGS, profilerArgument));
 
+    if (System.getProperty("java.runtime.version").startsWith("1.8")) {
+      testConfig.jvmArgs(CLIENT, JVM8_ARGS);
+      testConfig.jvmArgs(LOCATOR, JVM8_ARGS);
+      testConfig.jvmArgs(SERVER, JVM8_ARGS);
+    }
+
     String withSslArg = System.getProperty("withSsl");
     if (withSslArg != null && withSslArg.equals("true")) {
       logger.info("Configuring JVMs to run with SSL enabled");
diff --git 
a/geode-benchmarks/src/test/java/org/apache/geode/benchmark/topology/ClientServerTopologyTest.java
 
b/geode-benchmarks/src/test/java/org/apache/geode/benchmark/topology/ClientServerTopologyTest.java
new file mode 100644
index 0000000..fd95157
--- /dev/null
+++ 
b/geode-benchmarks/src/test/java/org/apache/geode/benchmark/topology/ClientServerTopologyTest.java
@@ -0,0 +1,89 @@
+/*
+ * 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.JVMParameters.JVM8_ARGS;
+import static org.assertj.core.api.Assertions.assertThat;
+
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import org.apache.geode.perftest.TestConfig;
+
+public class ClientServerTopologyTest {
+
+
+  @BeforeEach
+  @AfterEach
+  public void clearProperties() {
+    System.clearProperty("withSsl");
+  }
+
+  @Test
+  public void configWithSsl() {
+    System.setProperty("withSsl", "true");
+    TestConfig testConfig = new TestConfig();
+    ClientServerTopology.configure(testConfig);
+    assertThat(testConfig.getJvmArgs().get("client")).contains("-DwithSsl");
+  }
+
+  @Test
+  public void configWithNoSsl() {
+    TestConfig testConfig = new TestConfig();
+    ClientServerTopology.configure(testConfig);
+    
assertThat(testConfig.getJvmArgs().get("client")).doesNotContain("-DwithSsl");
+  }
+
+  @Test
+  public void configWithJava8() {
+    System.setProperty("java.runtime.version", "1.8.0_212");
+    TestConfig testConfig = new TestConfig();
+    ClientServerTopology.configure(testConfig);
+    
assertThat(testConfig.getJvmArgs().get("client")).doesNotContain("-DwithSsl");
+    assertThat(testConfig.getJvmArgs().get("client")).contains(JVM8_ARGS);
+  }
+
+  @Test
+  public void configWithJava9OrHigher() {
+    System.setProperty("java.runtime.version", "9.0.1");
+    TestConfig testConfig = new TestConfig();
+    ClientServerTopology.configure(testConfig);
+    
assertThat(testConfig.getJvmArgs().get("client")).doesNotContain("-DwithSsl");
+    
assertThat(testConfig.getJvmArgs().get("client")).doesNotContain(JVM8_ARGS);
+  }
+
+  @Test
+  public void configWithSslAndJava8() {
+    System.setProperty("withSsl", "true");
+    System.setProperty("java.runtime.version", "1.8.0_212");
+    TestConfig testConfig = new TestConfig();
+    ClientServerTopology.configure(testConfig);
+    assertThat(testConfig.getJvmArgs().get("client")).contains("-DwithSsl");
+    assertThat(testConfig.getJvmArgs().get("client")).contains(JVM8_ARGS);
+  }
+
+  @Test
+  public void configWithSslAndJava9() {
+    System.setProperty("withSsl", "true");
+    System.setProperty("java.runtime.version", "9.0.1");
+    TestConfig testConfig = new TestConfig();
+    ClientServerTopology.configure(testConfig);
+    assertThat(testConfig.getJvmArgs().get("client")).contains("-DwithSsl");
+    
assertThat(testConfig.getJvmArgs().get("client")).doesNotContain(JVM8_ARGS);
+  }
+}
diff --git 
a/harness/src/main/java/org/apache/geode/perftest/jvms/JVMLauncher.java 
b/harness/src/main/java/org/apache/geode/perftest/jvms/JVMLauncher.java
index 286f495..c0d008e 100644
--- a/harness/src/main/java/org/apache/geode/perftest/jvms/JVMLauncher.java
+++ b/harness/src/main/java/org/apache/geode/perftest/jvms/JVMLauncher.java
@@ -78,7 +78,7 @@ class JVMLauncher {
   String[] buildCommand(String rmiHost, int rmiPort, JVMMapping jvmConfig) {
 
     List<String> command = new ArrayList<String>();
-    command.add("java");
+    command.add(System.getProperty("java.home") + "/bin/java");
     command.add("-classpath");
     command.add(jvmConfig.getLibDir() + "/*");
     command.add("-D" + RemoteJVMFactory.RMI_HOST + "=" + rmiHost);

Reply via email to