You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by up...@apache.org on 2021/04/01 22:44:33 UTC
[geode-benchmarks] 04/05: Automatically passing properties prefixed
with benchmark.system.ROLE. to JVMs
This is an automated email from the ASF dual-hosted git repository.
upthewaterspout pushed a commit to branch feature/redis-performance-testing
in repository https://gitbox.apache.org/repos/asf/geode-benchmarks.git
commit 8392f66a41d10ff977f90ef2375a7b5a8f66b2a2
Author: Dan Smith <da...@vmware.com>
AuthorDate: Thu Apr 1 14:43:31 2021 -0700
Automatically passing properties prefixed with benchmark.system.ROLE. to JVMs
Adding a way to automatically set system properties in test JVMs. Just add a property
with the prefix benchmark.system.ROLE, where ROLE is the role of jvms to target. Eg
benchmark.system.server.gemfire.disablePartitionedRegionBucketAck=true would set
gemfire.disablePartitionedRegionBucketAck=true in the server JVMs.
---
.../apache/geode/perftest/BenchmarkProperties.java | 25 ++++++++++++++++++++++
.../java/org/apache/geode/perftest/TestConfig.java | 3 +--
.../geode/perftest/BenchmarkPropertiesTest.java | 24 +++++++++++++++++++++
.../geode/perftest/TestRunnerIntegrationTest.java | 10 +++++++++
4 files changed, 60 insertions(+), 2 deletions(-)
diff --git a/harness/src/main/java/org/apache/geode/perftest/BenchmarkProperties.java b/harness/src/main/java/org/apache/geode/perftest/BenchmarkProperties.java
new file mode 100644
index 0000000..0a7fd6e
--- /dev/null
+++ b/harness/src/main/java/org/apache/geode/perftest/BenchmarkProperties.java
@@ -0,0 +1,25 @@
+package org.apache.geode.perftest;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class BenchmarkProperties {
+
+ public static Map<String, List<String>> getDefaultJVMArgs() {
+ Map<String, List<String>> results = new HashMap<>();
+ System.getProperties().stringPropertyNames().stream()
+ .filter(name -> name.startsWith("benchmark.system."))
+ .forEach(name -> {
+ String shortName = name.replace("benchmark.system.", "");
+ String[] roleAndProperty = shortName.split("\\.", 2);
+ String role = roleAndProperty[0];
+ String property = roleAndProperty[1];
+ String value = System.getProperty(name);
+ List<String> roleProperties = results.computeIfAbsent(role, key -> new ArrayList<>());
+ roleProperties.add("-D" + property + "=" + value);
+ });
+ return results;
+ }
+}
diff --git a/harness/src/main/java/org/apache/geode/perftest/TestConfig.java b/harness/src/main/java/org/apache/geode/perftest/TestConfig.java
index 1b66fdc..1e454e6 100644
--- a/harness/src/main/java/org/apache/geode/perftest/TestConfig.java
+++ b/harness/src/main/java/org/apache/geode/perftest/TestConfig.java
@@ -21,7 +21,6 @@ import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
-import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@@ -39,7 +38,7 @@ public class TestConfig implements Serializable {
private final WorkloadConfig workloadConfig = new WorkloadConfig();
private Map<String, Integer> roles = new LinkedHashMap<>();
- private Map<String, List<String>> jvmArgs = new HashMap<>();
+ private Map<String, List<String>> jvmArgs = BenchmarkProperties.getDefaultJVMArgs();
private List<TestStep> before = new ArrayList<>();
private List<TestStep> workload = new ArrayList<>();
private List<TestStep> after = new ArrayList<>();
diff --git a/harness/src/test/java/org/apache/geode/perftest/BenchmarkPropertiesTest.java b/harness/src/test/java/org/apache/geode/perftest/BenchmarkPropertiesTest.java
new file mode 100644
index 0000000..a8a5105
--- /dev/null
+++ b/harness/src/test/java/org/apache/geode/perftest/BenchmarkPropertiesTest.java
@@ -0,0 +1,24 @@
+package org.apache.geode.perftest;
+
+import java.util.List;
+import java.util.Map;
+
+import org.assertj.core.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+class BenchmarkPropertiesTest {
+
+ @Test
+ public void canParsePropertiesForRoles() {
+ System.setProperty("benchmark.system.role1.p1", "v1");
+ System.setProperty("benchmark.system.role1.p2", "v2");
+
+ Map<String, List<String>> defaultArgs =
+ BenchmarkProperties.getDefaultJVMArgs();
+
+ Assertions.assertThat(defaultArgs).containsOnlyKeys("role1");
+
+ Assertions.assertThat(defaultArgs.get("role1")).containsExactlyInAnyOrder("-Dp1=v1", "-Dp2=v2");
+ }
+
+}
diff --git a/harness/src/test/java/org/apache/geode/perftest/TestRunnerIntegrationTest.java b/harness/src/test/java/org/apache/geode/perftest/TestRunnerIntegrationTest.java
index f82cb6c..2bddb1a 100644
--- a/harness/src/test/java/org/apache/geode/perftest/TestRunnerIntegrationTest.java
+++ b/harness/src/test/java/org/apache/geode/perftest/TestRunnerIntegrationTest.java
@@ -17,6 +17,7 @@
package org.apache.geode.perftest;
+import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -26,6 +27,7 @@ import java.nio.file.Path;
import java.util.function.Predicate;
import java.util.stream.Stream;
+import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;
@@ -38,6 +40,7 @@ import org.apache.geode.perftest.yardstick.analysis.YardstickThroughputSensorPar
public class TestRunnerIntegrationTest {
+ public static final String TEST_PROPERTY = "benchmark.system.all.prop3";
private TestRunner runner;
@TempDir
@@ -51,6 +54,11 @@ public class TestRunnerIntegrationTest {
outputDir);
}
+ @AfterEach()
+ void clearProperty() {
+ System.clearProperty(TEST_PROPERTY);
+ }
+
@Test
public void runsBeforeWorkload() throws Exception {
runner.runTest(() -> {
@@ -93,6 +101,7 @@ public class TestRunnerIntegrationTest {
@Test
public void configuresJVMOptions() throws Exception {
+ System.setProperty(TEST_PROPERTY, "p3");
runner.runTest(() -> {
TestConfig testConfig = new TestConfig();
testConfig.role("all", 1);
@@ -102,6 +111,7 @@ public class TestRunnerIntegrationTest {
"Expecting system property to be set in launched JVM, but it was not present.");
assertEquals(5, Integer.getInteger("prop2").intValue(),
"Expecting system property to be set in launched JVM, but it was not present.");
+ assertThat(System.getProperty("prop3")).isEqualTo("p3");
}, "all");
return testConfig;
});