Adds Java 17 support. (#169)

* Removes some untested JVM options leftover from Redis benchmarking.
* Adds per-role heap and GC project configurations.
* Extends maxKey option to all benchmarks.
* Uses Gradle Toolchain feature.
diff --git a/README.md b/README.md
index fe84d8e..142f4fc 100644
--- a/README.md
+++ b/README.md
@@ -50,59 +50,61 @@
 The benchmarks can take configuration options. Some using Gradle's `-P` flag and other, which adjust
 benchmark behavior, via Java system properties using `-D`.
 
-| Option                | Description |
-| --------------------- | ----------- |
-| `-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. |
-| `-Pbenchmark.X`         | Where X is a benchmark configuration, defined below. |
-| `--tests`               | Specific benchmarks to run (--tests=PartitionedPutBenchmark) |
-| `-d`                    | Debug |
-| `-i`                    | Info |
+| Option            | Description                                                                                                                                                                                                                     |
+|-------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| `-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)                                                                                                                                                                             |
+| `-Pbenchmark.X`   | Where X is a benchmark configuration, defined below.                                                                                                                                                                            |
+| `-Pbenchmark.R.X` | Applies properties to specific roles. Where R is the role, "client", "server", "locator", X is a benchmark configuration, defined below.                                                                                        |
+| `--tests`         | Specific benchmarks to run (--tests=PartitionedPutBenchmark)                                                                                                                                                                    |
+| `-d`              | Debug                                                                                                                                                                                                                           |
+| `-i`              | Info                                                                                                                                                                                                                            |
+| ~~`-PtestJVM`~~   | (Deprecated, use `-Pbenchmark.withToolchainVersion`) ~~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.~~ |
 
 #### Benchmark Configuration
 ##### Common
 These options may apply to all benchmarks.
 
-| Option                | Description |
-| --------------------- | ----------- |
-| withGc                | Select which GC to use. Valid values CMS (default), G1, Z, Shenandoah, Epsilon. |
-| withHeap              | Specify how large a heap the benchmark VMs should use, default "8g". Accepts any `-Xmx` value, like "32g". |
-| withThreads           | Specify how many threads to use when executing the benchmark. Default varies by benchmark. |
-| withWarmup            | Specify how long to warm up the benchmark in seconds. Default is 60 seconds. |
-| withDuration          | Specify how long to run the benchmark in seconds. Default is 300 seconds. |
-| withMinKey            | The minimum key value in the key range. Default is 0. |
-| withMaxKey            | The maximum key value in the key range. Default varies by benchmark. |
-| withLocatorCount      | Number of locators a topology should use. Typically defaults to 1. |
-| withServerCount       | Number of servers a topology should use. Typically defaults to 2. |
-| withClientCount       | Number of clients a topology should use. Typically defaults to 1. |
-| withReplicas          | Number of region replicas. |
-| withAsyncReplication  | Enable asynch region replication. |
-| withNettyThreads      | Number of threads Netty IO Services should have. |
+| Option               | Description                                                                                                                      |
+|----------------------|----------------------------------------------------------------------------------------------------------------------------------|
+| withToolchainVersion | Version number of alternative JVM for running benchmarks, 8 (default), 11, 17.                                                   |
+| withGc               | Select which GC to use. Valid values CMS (default), G1, Z, Shenandoah, Epsilon. (optionally per-role)                            |
+| withHeap             | Specify how large a heap the benchmark VMs should use, default "8g". Accepts any `-Xmx` value, like "32g". (optionally per-role) |
+| withThreads          | Specify how many threads to use when executing the benchmark. Default varies by benchmark.                                       |
+| withWarmup           | Specify how long to warm up the benchmark in seconds. Default is 60 seconds.                                                     |
+| withDuration         | Specify how long to run the benchmark in seconds. Default is 300 seconds.                                                        |
+| withMinKey           | The minimum key value in the key range. Default is 0.                                                                            |
+| withMaxKey           | The maximum key value in the key range. Default varies by benchmark.                                                             |
+| withLocatorCount     | Number of locators a topology should use. Typically defaults to 1.                                                               |
+| withServerCount      | Number of servers a topology should use. Typically defaults to 2.                                                                |
+| withClientCount      | Number of clients a topology should use. Typically defaults to 1.                                                                |
+| withReplicas         | Number of region replicas.                                                                                                       |
+| withAsyncReplication | Enable asynch region replication.                                                                                                |
+| withNettyThreads     | Number of threads Netty IO Services should have.                                                                                 |
 
 ##### Geode Benchmarks
 These options only apply to Geode benchmarks.
 
-| Option                | Description |
-| --------------------- | ----------- |
-| withSsl               | Flag to run geode with SSL. A self-signed certificate will be generated at runtime. |
-| withSslProtocols      | Specifies enabled SSL protocols. See Geode property `ssl-protocols` |
-| withSslCiphers        | Specifies enabled SSL chipher suites. See Geode property `ssl-ciphers` |
-| withSecurityManager   | Flag to start Geode with the example implementation of SecurityManager |
-| withSniProxy          | Use SNI proxy topology. |
-| withSniProxyImage     | Provide an alternative Docker image coordinate for SNI proxy. |
-| withRouter            | Use router with SNI proxy topology. |
-| withRouterImage       | Provide an alternative Docker image coordinate for router. |
+| Option              | Description                                                                         |
+|---------------------|-------------------------------------------------------------------------------------|
+| withSsl             | Flag to run geode with SSL. A self-signed certificate will be generated at runtime. |
+| withSslProtocols    | Specifies enabled SSL protocols. See Geode property `ssl-protocols`                 |
+| withSslCiphers      | Specifies enabled SSL chipher suites. See Geode property `ssl-ciphers`              |
+| withSecurityManager | Flag to start Geode with the example implementation of SecurityManager              |
+| withSniProxy        | Use SNI proxy topology.                                                             |
+| withSniProxyImage   | Provide an alternative Docker image coordinate for SNI proxy.                       |
+| withRouter          | Use router with SNI proxy topology.                                                 |
+| withRouterImage     | Provide an alternative Docker image coordinate for router.                          |
 
 ##### Debugging
 These options should not be used when measuring benchmarks.
 
-| Option                | Description |
-| --------------------- | ----------- |
-| withValidation        | Enable validation of operations. Default disabled.|
-| withGcLogging         | Enable GC logging. Default disabled.|
-| withSafepointLogging  | Enable Safepoint logging. Default disabled.|
-| withStrace            | Launch remote JVM via strace for tracing system calls. Default disabled.|
+| Option               | Description                                                              |
+|----------------------|--------------------------------------------------------------------------|
+| withValidation       | Enable validation of operations. Default disabled.                       |
+| withGcLogging        | Enable GC logging. Default disabled.                                     |
+| withSafepointLogging | Enable Safepoint logging. Default disabled.                              |
+| withStrace           | Launch remote JVM via strace for tracing system calls. Default disabled. |
 
 
 ### Scripts for running in aws and analyzing results
diff --git a/geode-benchmarks/build.gradle b/geode-benchmarks/build.gradle
index 0887e6b..fc50dec 100644
--- a/geode-benchmarks/build.gradle
+++ b/geode-benchmarks/build.gradle
@@ -101,7 +101,12 @@
 }
 
 task benchmark(type: Test) {
+  if (project.hasProperty("benchmark.withToolchainVersion"))
+    javaLauncher = javaToolchains.launcherFor {
+      languageVersion = JavaLanguageVersion.of(project.findProperty("benchmark.withToolchainVersion"))
+    }
   if (project.hasProperty('testJVM') && !testJVM.trim().isEmpty()) {
+    logger.warn("-PtestJVM is deprecated. Use -Pbenchmark.withToolchainVersion.")
     executable = "${testJVM}/bin/java"
   }
   outputs.upToDateWhen { false }
@@ -119,6 +124,14 @@
   forkEvery 1
   failFast = true
 
+
+  def resolvedJavaLauncher = javaLauncher.getOrNull()
+  if (resolvedJavaLauncher != null) {
+    if (resolvedJavaLauncher.getMetadata().languageVersion >= JavaLanguageVersion.of(17)) {
+      jvmArgs += "@${project.projectDir}/src/main/resources/open-all-jdk-packages-linux-openjdk-17"
+    }
+  }
+
   systemProperty 'org.slf4j.simpleLogger.showDateTime', 'true'
   systemProperty 'org.slf4j.simpleLogger.dateTimeFormat', 'yyyy-MM-dd HH:mm:ss.SSS'
   systemProperty 'org.slf4j.simpleLogger.showThreadName', 'false'
@@ -141,37 +154,19 @@
   //prefix convention. They will be passed on to the JVM for now to not break
   //CI or peoples scripts. Remove these soon!
   //------------------------------------------------------------
-  if (project.hasProperty('withGc')) {
-    systemProperty 'benchmark.withGc', project.findProperty('withGc')
-  }
-  if (project.hasProperty('withHeap')) {
-    systemProperty 'benchmark.withHeap', project.findProperty('withHeap')
-  }
-  if (project.hasProperty('withThreads')) {
-    systemProperty 'benchmark.withThreads', project.findProperty('withThreads')
-  }
-  if (project.hasProperty('withWarmup')) {
-    systemProperty 'benchmark.withWarmup', project.findProperty('withWarmup')
-  }
-  if (project.hasProperty('withDuration')) {
-    systemProperty 'benchmark.withDuration', project.findProperty('withDuration')
-  }
-
-  systemProperty 'benchmark.withSsl', project.hasProperty('withSsl')
-  systemProperty 'benchmark.withSslProtocols', project.findProperty('withSslProtocols')
-  systemProperty 'benchmark.withSslCiphers', project.findProperty('withSslCiphers')
-
-  if (project.hasProperty('withSniProxy')) {
-    systemProperty 'benchmark.withSniProxy', project.findProperty('withSniProxy')
-  }
-  systemProperty 'benchmark.withSniProxyImage', project.findProperty('withSniProxyImage')
-
-  if (project.hasProperty('withRouter')) {
-    systemProperty 'benchmark.withRouter', project.findProperty('withRouter')
-  }
-  systemProperty 'benchmark.withRouterImage', project.findProperty('withRouterImage')
-
-  systemProperty 'benchmark.withSecurityManager', project.hasProperty('withSecurityManager')
+  legacyProperty(delegate, "withGc")
+  legacyProperty(delegate, "withHeap")
+  legacyProperty(delegate, "withThreads")
+  legacyProperty(delegate, "withWarmup")
+  legacyProperty(delegate, "withDuration")
+  legacyProperty(delegate, "withSsl")
+  legacyProperty(delegate, "withSslProtocols")
+  legacyProperty(delegate, "withSslCiphers")
+  legacyProperty(delegate, "withSniProxy")
+  legacyProperty(delegate, "withSniProxyImage")
+  legacyProperty(delegate, "withRouter")
+  legacyProperty(delegate, "withRouterImage")
+  legacyProperty(delegate, "withSecurityManager")
 
   doFirst {
     if(!project.hasProperty('hosts')) {
@@ -179,3 +174,10 @@
     }
   }
 }
+
+private void legacyProperty(Test test, String key) {
+  if (project.hasProperty(key)) {
+    logger.warn("-P${key} is deprecated. Use -Pbenchmark.${key}.")
+    test.systemProperty "benchmark.${key}", project.findProperty(key)
+  }
+}
diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/parameters/GcLoggingParameters.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/parameters/GcLoggingParameters.java
index 9092e8f..47ea7bb 100644
--- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/parameters/GcLoggingParameters.java
+++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/parameters/GcLoggingParameters.java
@@ -16,13 +16,14 @@
 package org.apache.geode.benchmark.parameters;
 
 import static java.lang.Boolean.getBoolean;
-import static org.apache.geode.benchmark.parameters.JavaVersion.v11;
 import static org.apache.geode.benchmark.parameters.Utils.configureGeodeProductJvms;
+import static org.apache.geode.perftest.jvms.JavaVersion.v11;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import org.apache.geode.perftest.TestConfig;
+import org.apache.geode.perftest.jvms.JavaVersion;
 
 public class GcLoggingParameters {
   private static final Logger logger = LoggerFactory.getLogger(GcLoggingParameters.class);
diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/parameters/GcParameters.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/parameters/GcParameters.java
index 90090c7..c57d814 100644
--- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/parameters/GcParameters.java
+++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/parameters/GcParameters.java
@@ -15,74 +15,86 @@
 
 package org.apache.geode.benchmark.parameters;
 
-import static org.apache.geode.benchmark.parameters.JavaVersion.v11;
-import static org.apache.geode.benchmark.parameters.Utils.configureGeodeProductJvms;
+import static java.lang.System.getProperty;
+import static org.apache.geode.benchmark.Config.jvmArgs;
+import static org.apache.geode.benchmark.topology.RoleKinds.GEODE_PRODUCT;
+import static org.apache.geode.benchmark.topology.Roles.rolesFor;
+import static org.apache.geode.perftest.jvms.JavaVersion.v11;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import org.apache.geode.benchmark.topology.Roles;
 import org.apache.geode.perftest.TestConfig;
+import org.apache.geode.perftest.jvms.JavaVersion;
 
 public class GcParameters {
   private static final Logger logger = LoggerFactory.getLogger(GcParameters.class);
 
   public static void configure(final TestConfig testConfig) {
-    final GcImplementation gcImplementation =
-        GcImplementation.valueOf(System.getProperty("benchmark.withGc", "CMS"));
-    logger.info("Configuring {} GC.", gcImplementation);
-    switch (gcImplementation) {
-      case CMS:
-        configureCms(testConfig);
-        break;
-      case G1:
-        configureG1(testConfig);
-        break;
-      case Z:
-        configureZ(testConfig);
-        break;
-      case Shenandoah:
-        configureShenandoah(testConfig);
-        break;
-      case Epsilon:
-        configureEpsilon(testConfig);
-        break;
-    }
+    final String defaultGc = getProperty("benchmark.withGc", "CMS");
+
+    rolesFor(GEODE_PRODUCT).forEach(role -> {
+      final String roleName = role.toString().toLowerCase();
+      final GcImplementation gcImplementation =
+          GcImplementation.valueOf(getProperty("benchmark." + roleName + ".withGc", defaultGc));
+
+      logger.info("Configuring {} with {} GC.", roleName, gcImplementation);
+      switch (gcImplementation) {
+        case CMS:
+          configureCms(testConfig, role);
+          break;
+        case G1:
+          configureG1(testConfig, role);
+          break;
+        case Z:
+          configureZ(testConfig, role);
+          break;
+        case Shenandoah:
+          configureShenandoah(testConfig, role);
+          break;
+        case Epsilon:
+          configureEpsilon(testConfig, role);
+          break;
+      }
+
+    });
   }
 
-  private static void configureEpsilon(final TestConfig testConfig) {
-    configureGeodeProductJvms(testConfig,
+  private static void configureEpsilon(final TestConfig testConfig, final Roles role) {
+    jvmArgs(testConfig, role,
         "-XX:+UnlockExperimentalVMOptions",
         "-XX:+UseEpsilonGC",
         "-XX:+UseNUMA");
   }
 
-  private static void configureShenandoah(final TestConfig testConfig) {
-    configureGeodeProductJvms(testConfig,
+  private static void configureShenandoah(final TestConfig testConfig, final Roles role) {
+    jvmArgs(testConfig, role,
         "-XX:+UnlockExperimentalVMOptions",
         "-XX:+UseShenandoahGC",
         "-XX:+AlwaysPreTouch",
         "-XX:+UseNUMA");
   }
 
-  private static void configureZ(final TestConfig testConfig) {
+  private static void configureZ(final TestConfig testConfig, final Roles role) {
     final JavaVersion javaVersion = JavaVersion.current();
     if (javaVersion.olderThan(v11)) {
       throw new IllegalArgumentException("ZGC requires Java 11 or newer");
     }
-    configureGeodeProductJvms(testConfig,
+    jvmArgs(testConfig, role,
         "-XX:+UnlockExperimentalVMOptions",
         "-XX:+UseZGC");
   }
 
-  private static void configureG1(final TestConfig testConfig) {
-    configureGeodeProductJvms(testConfig,
+  private static void configureG1(final TestConfig testConfig, final Roles role) {
+    jvmArgs(testConfig, role,
         "-XX:+UseG1GC",
         "-XX:+UseNUMA",
         "-XX:+ScavengeBeforeFullGC");
   }
 
-  private static void configureCms(final TestConfig testConfig) {
-    configureGeodeProductJvms(testConfig,
+  private static void configureCms(final TestConfig testConfig, final Roles role) {
+    jvmArgs(testConfig, role,
         "-XX:+UseConcMarkSweepGC",
         "-XX:+UseCMSInitiatingOccupancyOnly",
         "-XX:+CMSClassUnloadingEnabled",
diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/parameters/HeapParameters.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/parameters/HeapParameters.java
index 91b45a0..a481382 100644
--- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/parameters/HeapParameters.java
+++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/parameters/HeapParameters.java
@@ -15,7 +15,10 @@
 
 package org.apache.geode.benchmark.parameters;
 
-import static org.apache.geode.benchmark.parameters.Utils.configureGeodeProductJvms;
+import static java.lang.System.getProperty;
+import static org.apache.geode.benchmark.Config.jvmArgs;
+import static org.apache.geode.benchmark.topology.RoleKinds.GEODE_PRODUCT;
+import static org.apache.geode.benchmark.topology.Roles.rolesFor;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -26,9 +29,15 @@
   private static final Logger logger = LoggerFactory.getLogger(HeapParameters.class);
 
   public static void configure(final TestConfig testConfig) {
-    final String heap = System.getProperty("benchmark.withHeap", "8g");
-    logger.info("Configuring heap parameters {}.", heap);
-    configureGeodeProductJvms(testConfig, "-Xmx" + heap, "-Xms" + heap);
+    final String defaultHeap = getProperty("benchmark.withHeap", "8g");
+
+    rolesFor(GEODE_PRODUCT).forEach(role -> {
+      final String roleName = role.toString().toLowerCase();
+      final String heap = getProperty("benchmark." + roleName + ".withHeap", defaultHeap);
+
+      logger.info("Configuring {} with heap {}.", roleName, heap);
+      jvmArgs(testConfig, role, "-Xmx" + heap, "-Xms" + heap);
+    });
   }
 
 }
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 ec70389..3cd280e 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
@@ -21,6 +21,7 @@
 import org.slf4j.LoggerFactory;
 
 import org.apache.geode.perftest.TestConfig;
+import org.apache.geode.perftest.jvms.JavaVersion;
 
 public class JvmParameters {
   private static final Logger logger = LoggerFactory.getLogger(JvmParameters.class);
@@ -37,10 +38,11 @@
         "-XX:+DisableExplicitGC");
 
     final JavaVersion javaVersion = JavaVersion.current();
+
     if (javaVersion.atLeast(JavaVersion.v11)) {
       configureGeodeProductJvms(testConfig,
-          "-XX:-ThreadLocalHandshakes",
           "-XX:+UnlockExperimentalVMOptions",
+          "-XX:+UnlockDiagnosticVMOptions",
           "-XX:MonitorUsedDeflationThreshold=0");
     }
   }
diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/parameters/SafepointLoggingParameters.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/parameters/SafepointLoggingParameters.java
index 77cf088..6d3370d 100644
--- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/parameters/SafepointLoggingParameters.java
+++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/parameters/SafepointLoggingParameters.java
@@ -16,13 +16,14 @@
 package org.apache.geode.benchmark.parameters;
 
 import static java.lang.Boolean.getBoolean;
-import static org.apache.geode.benchmark.parameters.JavaVersion.v11;
 import static org.apache.geode.benchmark.parameters.Utils.configureGeodeProductJvms;
+import static org.apache.geode.perftest.jvms.JavaVersion.v11;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import org.apache.geode.perftest.TestConfig;
+import org.apache.geode.perftest.jvms.JavaVersion;
 
 public class SafepointLoggingParameters {
   private static final Logger logger = LoggerFactory.getLogger(SafepointLoggingParameters.class);
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 ba20505..c5360d2 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
@@ -15,7 +15,10 @@
 
 package org.apache.geode.benchmark.tests;
 
+import static java.lang.Long.getLong;
 import static org.apache.geode.benchmark.Config.before;
+import static org.apache.geode.benchmark.tests.GeodeBenchmark.WITH_MAX_KEY;
+import static org.apache.geode.benchmark.tests.GeodeBenchmark.WITH_MIN_KEY;
 import static org.apache.geode.benchmark.topology.Roles.CLIENT;
 import static org.apache.geode.benchmark.topology.Roles.SERVER;
 
@@ -28,7 +31,8 @@
 import org.apache.geode.perftest.TestConfig;
 
 abstract class AbstractFunctionBenchmark extends AbstractPerformanceTest {
-  private LongRange keyRange = new LongRange(0, 1000000);
+  private LongRange keyRange =
+      new LongRange(getLong(WITH_MIN_KEY, 0), getLong(WITH_MAX_KEY, 1_000_000));
 
   public final void setKeyRange(LongRange keyRange) {
     this.keyRange = keyRange;
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 1c93707..7c75d96 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
@@ -18,8 +18,11 @@
 package org.apache.geode.benchmark.tests;
 
 
+import static java.lang.Long.getLong;
 import static org.apache.geode.benchmark.Config.before;
 import static org.apache.geode.benchmark.Config.workload;
+import static org.apache.geode.benchmark.tests.GeodeBenchmark.WITH_MAX_KEY;
+import static org.apache.geode.benchmark.tests.GeodeBenchmark.WITH_MIN_KEY;
 import static org.apache.geode.benchmark.topology.Roles.CLIENT;
 import static org.apache.geode.benchmark.topology.Roles.SERVER;
 
@@ -38,7 +41,8 @@
  */
 public class PartitionedGetBenchmark extends AbstractPerformanceTest {
 
-  private LongRange keyRange = new LongRange(0, 1000000);
+  private LongRange keyRange =
+      new LongRange(getLong(WITH_MIN_KEY, 0), getLong(WITH_MAX_KEY, 1_000_000));
 
   @Test
   public void run() throws Exception {
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 e359bb1..01cc2c2 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
@@ -18,8 +18,11 @@
 package org.apache.geode.benchmark.tests;
 
 
+import static java.lang.Long.getLong;
 import static org.apache.geode.benchmark.Config.before;
 import static org.apache.geode.benchmark.Config.workload;
+import static org.apache.geode.benchmark.tests.GeodeBenchmark.WITH_MAX_KEY;
+import static org.apache.geode.benchmark.tests.GeodeBenchmark.WITH_MIN_KEY;
 import static org.apache.geode.benchmark.topology.Roles.CLIENT;
 import static org.apache.geode.benchmark.topology.Roles.SERVER;
 
@@ -38,7 +41,8 @@
  */
 public class PartitionedGetLongBenchmark extends AbstractPerformanceTest {
 
-  private LongRange keyRange = new LongRange(0, 1000000);
+  private LongRange keyRange =
+      new LongRange(getLong(WITH_MIN_KEY, 0), getLong(WITH_MAX_KEY, 1_000_000));
 
   @Test
   public void run() throws Exception {
diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/PartitionedGetStringBenchmark.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/PartitionedGetStringBenchmark.java
index 71fd491..684c5b5 100644
--- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/PartitionedGetStringBenchmark.java
+++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/PartitionedGetStringBenchmark.java
@@ -18,8 +18,11 @@
 package org.apache.geode.benchmark.tests;
 
 
+import static java.lang.Long.getLong;
 import static org.apache.geode.benchmark.Config.before;
 import static org.apache.geode.benchmark.Config.workload;
+import static org.apache.geode.benchmark.tests.GeodeBenchmark.WITH_MAX_KEY;
+import static org.apache.geode.benchmark.tests.GeodeBenchmark.WITH_MIN_KEY;
 import static org.apache.geode.benchmark.tests.GeodeBenchmark.isValidationEnabled;
 import static org.apache.geode.benchmark.topology.Roles.CLIENT;
 import static org.apache.geode.benchmark.topology.Roles.SERVER;
@@ -39,7 +42,8 @@
  */
 public class PartitionedGetStringBenchmark extends AbstractPerformanceTest {
 
-  private LongRange keyRange = new LongRange(0, 1000000);
+  private LongRange keyRange =
+      new LongRange(getLong(WITH_MIN_KEY, 0), getLong(WITH_MAX_KEY, 1_000_000));
 
   @Test
   public void run() throws Exception {
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 040de68..ca2dfbd 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
@@ -14,8 +14,11 @@
  */
 package org.apache.geode.benchmark.tests;
 
+import static java.lang.Long.getLong;
 import static org.apache.geode.benchmark.Config.before;
 import static org.apache.geode.benchmark.Config.workload;
+import static org.apache.geode.benchmark.tests.GeodeBenchmark.WITH_MAX_KEY;
+import static org.apache.geode.benchmark.tests.GeodeBenchmark.WITH_MIN_KEY;
 import static org.apache.geode.benchmark.topology.Roles.CLIENT;
 import static org.apache.geode.benchmark.topology.Roles.SERVER;
 
@@ -31,7 +34,9 @@
 import org.apache.geode.perftest.TestRunners;
 
 public class PartitionedIndexedQueryBenchmark extends AbstractPerformanceTest {
-  private LongRange keyRange = new LongRange(0, 500000);
+  private LongRange keyRange =
+      new LongRange(getLong(WITH_MIN_KEY, 0), getLong(WITH_MAX_KEY, 500_000));
+
   private long queryRange = 100;
 
   public PartitionedIndexedQueryBenchmark() {}
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 8be31f6..22cc28e 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
@@ -14,8 +14,11 @@
  */
 package org.apache.geode.benchmark.tests;
 
+import static java.lang.Long.getLong;
 import static org.apache.geode.benchmark.Config.before;
 import static org.apache.geode.benchmark.Config.workload;
+import static org.apache.geode.benchmark.tests.GeodeBenchmark.WITH_MAX_KEY;
+import static org.apache.geode.benchmark.tests.GeodeBenchmark.WITH_MIN_KEY;
 import static org.apache.geode.benchmark.topology.Roles.CLIENT;
 import static org.apache.geode.benchmark.topology.Roles.SERVER;
 
@@ -30,7 +33,9 @@
 import org.apache.geode.perftest.TestRunners;
 
 public class PartitionedNonIndexedQueryBenchmark extends AbstractPerformanceTest {
-  private LongRange keyRange = new LongRange(0, 500000);
+  private LongRange keyRange =
+      new LongRange(getLong(WITH_MIN_KEY, 0), getLong(WITH_MAX_KEY, 500_000));
+
   private long queryRange = 100;
 
   public PartitionedNonIndexedQueryBenchmark() {}
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 3b74757..1257c1c 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
@@ -17,8 +17,11 @@
 
 package org.apache.geode.benchmark.tests;
 
+import static java.lang.Long.getLong;
 import static org.apache.geode.benchmark.Config.before;
 import static org.apache.geode.benchmark.Config.workload;
+import static org.apache.geode.benchmark.tests.GeodeBenchmark.WITH_MAX_KEY;
+import static org.apache.geode.benchmark.tests.GeodeBenchmark.WITH_MIN_KEY;
 import static org.apache.geode.benchmark.topology.Roles.CLIENT;
 import static org.apache.geode.benchmark.topology.Roles.SERVER;
 
@@ -37,7 +40,8 @@
  */
 public class PartitionedPutAllBenchmark extends AbstractPerformanceTest {
 
-  private LongRange keyRange = new LongRange(0, 1000000);
+  private LongRange keyRange =
+      new LongRange(getLong(WITH_MIN_KEY, 0), getLong(WITH_MAX_KEY, 1_000_000));
 
   private int batchSize = 100;
 
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 8fe9b00..30f908b 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
@@ -17,8 +17,11 @@
 
 package org.apache.geode.benchmark.tests;
 
+import static java.lang.Long.getLong;
 import static org.apache.geode.benchmark.Config.before;
 import static org.apache.geode.benchmark.Config.workload;
+import static org.apache.geode.benchmark.tests.GeodeBenchmark.WITH_MAX_KEY;
+import static org.apache.geode.benchmark.tests.GeodeBenchmark.WITH_MIN_KEY;
 import static org.apache.geode.benchmark.topology.Roles.CLIENT;
 import static org.apache.geode.benchmark.topology.Roles.SERVER;
 
@@ -37,7 +40,8 @@
  */
 public class PartitionedPutAllLongBenchmark extends AbstractPerformanceTest {
 
-  private LongRange keyRange = new LongRange(0, 1000000);
+  private LongRange keyRange =
+      new LongRange(getLong(WITH_MIN_KEY, 0), getLong(WITH_MAX_KEY, 1_000_000));
 
   private int batchSize = 1000;
 
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 e2723fb..9760001 100644
--- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/PartitionedPutBenchmark.java
+++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/PartitionedPutBenchmark.java
@@ -17,8 +17,11 @@
 
 package org.apache.geode.benchmark.tests;
 
+import static java.lang.Long.getLong;
 import static org.apache.geode.benchmark.Config.before;
 import static org.apache.geode.benchmark.Config.workload;
+import static org.apache.geode.benchmark.tests.GeodeBenchmark.WITH_MAX_KEY;
+import static org.apache.geode.benchmark.tests.GeodeBenchmark.WITH_MIN_KEY;
 import static org.apache.geode.benchmark.topology.Roles.CLIENT;
 import static org.apache.geode.benchmark.topology.Roles.SERVER;
 
@@ -37,7 +40,8 @@
  */
 public class PartitionedPutBenchmark extends AbstractPerformanceTest {
 
-  private LongRange keyRange = new LongRange(0, 1_000_000);
+  private LongRange keyRange =
+      new LongRange(getLong(WITH_MIN_KEY, 0), getLong(WITH_MAX_KEY, 1_000_000));
 
   public PartitionedPutBenchmark() {}
 
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
index 23ced06..308f895 100644
--- 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
@@ -17,8 +17,11 @@
 
 package org.apache.geode.benchmark.tests;
 
+import static java.lang.Long.getLong;
 import static org.apache.geode.benchmark.Config.before;
 import static org.apache.geode.benchmark.Config.workload;
+import static org.apache.geode.benchmark.tests.GeodeBenchmark.WITH_MAX_KEY;
+import static org.apache.geode.benchmark.tests.GeodeBenchmark.WITH_MIN_KEY;
 import static org.apache.geode.benchmark.topology.Roles.CLIENT;
 import static org.apache.geode.benchmark.topology.Roles.SERVER;
 
@@ -37,7 +40,8 @@
  */
 public class PartitionedPutBytesBenchmark extends AbstractPerformanceTest {
 
-  private LongRange keyRange = new LongRange(0, 1000000);
+  private LongRange keyRange =
+      new LongRange(getLong(WITH_MIN_KEY, 0), getLong(WITH_MAX_KEY, 1_000_000));
 
   public PartitionedPutBytesBenchmark() {}
 
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 907f50b..433247d 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
@@ -17,8 +17,11 @@
 
 package org.apache.geode.benchmark.tests;
 
+import static java.lang.Long.getLong;
 import static org.apache.geode.benchmark.Config.before;
 import static org.apache.geode.benchmark.Config.workload;
+import static org.apache.geode.benchmark.tests.GeodeBenchmark.WITH_MAX_KEY;
+import static org.apache.geode.benchmark.tests.GeodeBenchmark.WITH_MIN_KEY;
 import static org.apache.geode.benchmark.topology.Roles.CLIENT;
 import static org.apache.geode.benchmark.topology.Roles.SERVER;
 
@@ -37,7 +40,8 @@
  */
 public class PartitionedPutLongBenchmark extends AbstractPerformanceTest {
 
-  private LongRange keyRange = new LongRange(0, 1000000);
+  private LongRange keyRange =
+      new LongRange(getLong(WITH_MIN_KEY, 0), getLong(WITH_MAX_KEY, 1_000_000));
 
   public PartitionedPutLongBenchmark() {}
 
diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/PartitionedPutStringBenchmark.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/PartitionedPutStringBenchmark.java
index b8ebf25..27de63f 100644
--- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/PartitionedPutStringBenchmark.java
+++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/PartitionedPutStringBenchmark.java
@@ -17,8 +17,11 @@
 
 package org.apache.geode.benchmark.tests;
 
+import static java.lang.Long.getLong;
 import static org.apache.geode.benchmark.Config.before;
 import static org.apache.geode.benchmark.Config.workload;
+import static org.apache.geode.benchmark.tests.GeodeBenchmark.WITH_MAX_KEY;
+import static org.apache.geode.benchmark.tests.GeodeBenchmark.WITH_MIN_KEY;
 import static org.apache.geode.benchmark.topology.Roles.CLIENT;
 import static org.apache.geode.benchmark.topology.Roles.SERVER;
 
@@ -37,7 +40,8 @@
  */
 public class PartitionedPutStringBenchmark extends AbstractPerformanceTest {
 
-  private LongRange keyRange = new LongRange(0, 1_000_000);
+  private LongRange keyRange =
+      new LongRange(getLong(WITH_MIN_KEY, 0), getLong(WITH_MAX_KEY, 1_000_000));
 
   public PartitionedPutStringBenchmark() {}
 
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 87e2da7..77c4029 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
@@ -18,8 +18,11 @@
 package org.apache.geode.benchmark.tests;
 
 
+import static java.lang.Long.getLong;
 import static org.apache.geode.benchmark.Config.before;
 import static org.apache.geode.benchmark.Config.workload;
+import static org.apache.geode.benchmark.tests.GeodeBenchmark.WITH_MAX_KEY;
+import static org.apache.geode.benchmark.tests.GeodeBenchmark.WITH_MIN_KEY;
 import static org.apache.geode.benchmark.topology.Roles.CLIENT;
 import static org.apache.geode.benchmark.topology.Roles.SERVER;
 
@@ -38,7 +41,8 @@
  */
 public class ReplicatedGetBenchmark extends AbstractPerformanceTest {
 
-  private LongRange keyRange = new LongRange(0, 1000000);
+  private LongRange keyRange =
+      new LongRange(getLong(WITH_MIN_KEY, 0), getLong(WITH_MAX_KEY, 1_000_000));
 
   @Test
   public void run() throws Exception {
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 8330c2c..6e85ada 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
@@ -18,8 +18,11 @@
 package org.apache.geode.benchmark.tests;
 
 
+import static java.lang.Long.getLong;
 import static org.apache.geode.benchmark.Config.before;
 import static org.apache.geode.benchmark.Config.workload;
+import static org.apache.geode.benchmark.tests.GeodeBenchmark.WITH_MAX_KEY;
+import static org.apache.geode.benchmark.tests.GeodeBenchmark.WITH_MIN_KEY;
 import static org.apache.geode.benchmark.topology.Roles.CLIENT;
 import static org.apache.geode.benchmark.topology.Roles.SERVER;
 
@@ -38,7 +41,8 @@
  */
 public class ReplicatedGetLongBenchmark extends AbstractPerformanceTest {
 
-  private LongRange keyRange = new LongRange(0, 1000000);
+  private LongRange keyRange =
+      new LongRange(getLong(WITH_MIN_KEY, 0), getLong(WITH_MAX_KEY, 1_000_000));
 
   @Test
   public void run() throws Exception {
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 04ef8f6..acfee72 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
@@ -14,8 +14,11 @@
  */
 package org.apache.geode.benchmark.tests;
 
+import static java.lang.Long.getLong;
 import static org.apache.geode.benchmark.Config.before;
 import static org.apache.geode.benchmark.Config.workload;
+import static org.apache.geode.benchmark.tests.GeodeBenchmark.WITH_MAX_KEY;
+import static org.apache.geode.benchmark.tests.GeodeBenchmark.WITH_MIN_KEY;
 import static org.apache.geode.benchmark.topology.Roles.CLIENT;
 import static org.apache.geode.benchmark.topology.Roles.SERVER;
 
@@ -31,7 +34,8 @@
 import org.apache.geode.perftest.TestRunners;
 
 public class ReplicatedIndexedQueryBenchmark extends AbstractPerformanceTest {
-  private LongRange keyRange = new LongRange(0, 500000);
+  private LongRange keyRange =
+      new LongRange(getLong(WITH_MIN_KEY, 0), getLong(WITH_MAX_KEY, 500_000));
   private long queryRange = 100;
 
   public ReplicatedIndexedQueryBenchmark() {}
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 0c4d6b6..25a7572 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
@@ -14,8 +14,11 @@
  */
 package org.apache.geode.benchmark.tests;
 
+import static java.lang.Long.getLong;
 import static org.apache.geode.benchmark.Config.before;
 import static org.apache.geode.benchmark.Config.workload;
+import static org.apache.geode.benchmark.tests.GeodeBenchmark.WITH_MAX_KEY;
+import static org.apache.geode.benchmark.tests.GeodeBenchmark.WITH_MIN_KEY;
 import static org.apache.geode.benchmark.topology.Roles.CLIENT;
 import static org.apache.geode.benchmark.topology.Roles.SERVER;
 
@@ -30,7 +33,8 @@
 import org.apache.geode.perftest.TestRunners;
 
 public class ReplicatedNonIndexedQueryBenchmark extends AbstractPerformanceTest {
-  private LongRange keyRange = new LongRange(0, 500000);
+  private LongRange keyRange =
+      new LongRange(getLong(WITH_MIN_KEY, 0), getLong(WITH_MAX_KEY, 500_000));
   private long queryRange = 100;
 
   public ReplicatedNonIndexedQueryBenchmark() {}
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 c5ace06..95f7eae 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
@@ -17,8 +17,11 @@
 
 package org.apache.geode.benchmark.tests;
 
+import static java.lang.Long.getLong;
 import static org.apache.geode.benchmark.Config.before;
 import static org.apache.geode.benchmark.Config.workload;
+import static org.apache.geode.benchmark.tests.GeodeBenchmark.WITH_MAX_KEY;
+import static org.apache.geode.benchmark.tests.GeodeBenchmark.WITH_MIN_KEY;
 import static org.apache.geode.benchmark.topology.Roles.CLIENT;
 import static org.apache.geode.benchmark.topology.Roles.SERVER;
 
@@ -37,7 +40,8 @@
  */
 public class ReplicatedPutAllBenchmark extends AbstractPerformanceTest {
 
-  private LongRange keyRange = new LongRange(0, 1000000);
+  private LongRange keyRange =
+      new LongRange(getLong(WITH_MIN_KEY, 0), getLong(WITH_MAX_KEY, 1_000_000));
 
   private int batchSize = 1000;
 
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 3d45dac..bc86447 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
@@ -17,8 +17,11 @@
 
 package org.apache.geode.benchmark.tests;
 
+import static java.lang.Long.getLong;
 import static org.apache.geode.benchmark.Config.before;
 import static org.apache.geode.benchmark.Config.workload;
+import static org.apache.geode.benchmark.tests.GeodeBenchmark.WITH_MAX_KEY;
+import static org.apache.geode.benchmark.tests.GeodeBenchmark.WITH_MIN_KEY;
 import static org.apache.geode.benchmark.topology.Roles.CLIENT;
 import static org.apache.geode.benchmark.topology.Roles.SERVER;
 
@@ -37,7 +40,8 @@
  */
 public class ReplicatedPutAllLongBenchmark extends AbstractPerformanceTest {
 
-  private LongRange keyRange = new LongRange(0, 1000000);
+  private LongRange keyRange =
+      new LongRange(getLong(WITH_MIN_KEY, 0), getLong(WITH_MAX_KEY, 1_000_000));
 
   private int batchSize = 1000;
 
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 fd3c3f5..4d7c410 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
@@ -17,8 +17,11 @@
 
 package org.apache.geode.benchmark.tests;
 
+import static java.lang.Long.getLong;
 import static org.apache.geode.benchmark.Config.before;
 import static org.apache.geode.benchmark.Config.workload;
+import static org.apache.geode.benchmark.tests.GeodeBenchmark.WITH_MAX_KEY;
+import static org.apache.geode.benchmark.tests.GeodeBenchmark.WITH_MIN_KEY;
 import static org.apache.geode.benchmark.topology.Roles.CLIENT;
 import static org.apache.geode.benchmark.topology.Roles.SERVER;
 
@@ -37,7 +40,8 @@
  */
 public class ReplicatedPutBenchmark extends AbstractPerformanceTest {
 
-  private LongRange keyRange = new LongRange(0, 1000000);
+  private LongRange keyRange =
+      new LongRange(getLong(WITH_MIN_KEY, 0), getLong(WITH_MAX_KEY, 1_000_000));
 
   public ReplicatedPutBenchmark() {}
 
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 bc8c8e1..c96d97f 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
@@ -17,8 +17,11 @@
 
 package org.apache.geode.benchmark.tests;
 
+import static java.lang.Long.getLong;
 import static org.apache.geode.benchmark.Config.before;
 import static org.apache.geode.benchmark.Config.workload;
+import static org.apache.geode.benchmark.tests.GeodeBenchmark.WITH_MAX_KEY;
+import static org.apache.geode.benchmark.tests.GeodeBenchmark.WITH_MIN_KEY;
 import static org.apache.geode.benchmark.topology.Roles.CLIENT;
 import static org.apache.geode.benchmark.topology.Roles.SERVER;
 
@@ -37,7 +40,8 @@
  */
 public class ReplicatedPutLongBenchmark extends AbstractPerformanceTest {
 
-  private LongRange keyRange = new LongRange(0, 1000000);
+  private LongRange keyRange =
+      new LongRange(getLong(WITH_MIN_KEY, 0), getLong(WITH_MAX_KEY, 1_000_000));
 
   public ReplicatedPutLongBenchmark() {}
 
diff --git a/geode-benchmarks/src/main/resources/open-all-jdk-packages-linux-openjdk-17 b/geode-benchmarks/src/main/resources/open-all-jdk-packages-linux-openjdk-17
new file mode 100644
index 0000000..f728345
--- /dev/null
+++ b/geode-benchmarks/src/main/resources/open-all-jdk-packages-linux-openjdk-17
@@ -0,0 +1,892 @@
+# 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.
+
+# Produced on a JRE with these properties:
+# java.class.version: 61.0
+# java.runtime.name: OpenJDK Runtime Environment
+# java.runtime.version: 17.0.2+8-86
+# java.specification.name: Java Platform API Specification
+# java.specification.version: 17
+# java.vendor: Oracle Corporation
+# java.vendor.version: null
+# java.version: 17.0.2
+# java.version.date: 2022-01-18
+# java.vm.vendor: Oracle Corporation
+# java.vm.version: 17.0.2+8-86
+# os.arch: amd64
+# os.name: Linux
+# os.version: 5.4.0-1072-gcp
+--add-opens=java.base/com.sun.crypto.provider=ALL-UNNAMED
+--add-opens=java.base/com.sun.security.ntlm=ALL-UNNAMED
+--add-opens=java.base/java.io=ALL-UNNAMED
+--add-opens=java.base/java.lang.annotation=ALL-UNNAMED
+--add-opens=java.base/java.lang.constant=ALL-UNNAMED
+--add-opens=java.base/java.lang.invoke=ALL-UNNAMED
+--add-opens=java.base/java.lang.module=ALL-UNNAMED
+--add-opens=java.base/java.lang.ref=ALL-UNNAMED
+--add-opens=java.base/java.lang.reflect=ALL-UNNAMED
+--add-opens=java.base/java.lang.runtime=ALL-UNNAMED
+--add-opens=java.base/java.lang=ALL-UNNAMED
+--add-opens=java.base/java.math=ALL-UNNAMED
+--add-opens=java.base/java.net.spi=ALL-UNNAMED
+--add-opens=java.base/java.net=ALL-UNNAMED
+--add-opens=java.base/java.nio.channels.spi=ALL-UNNAMED
+--add-opens=java.base/java.nio.channels=ALL-UNNAMED
+--add-opens=java.base/java.nio.charset.spi=ALL-UNNAMED
+--add-opens=java.base/java.nio.charset=ALL-UNNAMED
+--add-opens=java.base/java.nio.file.attribute=ALL-UNNAMED
+--add-opens=java.base/java.nio.file.spi=ALL-UNNAMED
+--add-opens=java.base/java.nio.file=ALL-UNNAMED
+--add-opens=java.base/java.nio=ALL-UNNAMED
+--add-opens=java.base/java.security.cert=ALL-UNNAMED
+--add-opens=java.base/java.security.interfaces=ALL-UNNAMED
+--add-opens=java.base/java.security.spec=ALL-UNNAMED
+--add-opens=java.base/java.security=ALL-UNNAMED
+--add-opens=java.base/java.text.spi=ALL-UNNAMED
+--add-opens=java.base/java.text=ALL-UNNAMED
+--add-opens=java.base/java.time.chrono=ALL-UNNAMED
+--add-opens=java.base/java.time.format=ALL-UNNAMED
+--add-opens=java.base/java.time.temporal=ALL-UNNAMED
+--add-opens=java.base/java.time.zone=ALL-UNNAMED
+--add-opens=java.base/java.time=ALL-UNNAMED
+--add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED
+--add-opens=java.base/java.util.concurrent.locks=ALL-UNNAMED
+--add-opens=java.base/java.util.concurrent=ALL-UNNAMED
+--add-opens=java.base/java.util.function=ALL-UNNAMED
+--add-opens=java.base/java.util.jar=ALL-UNNAMED
+--add-opens=java.base/java.util.random=ALL-UNNAMED
+--add-opens=java.base/java.util.regex=ALL-UNNAMED
+--add-opens=java.base/java.util.spi=ALL-UNNAMED
+--add-opens=java.base/java.util.stream=ALL-UNNAMED
+--add-opens=java.base/java.util.zip=ALL-UNNAMED
+--add-opens=java.base/java.util=ALL-UNNAMED
+--add-opens=java.base/javax.crypto.interfaces=ALL-UNNAMED
+--add-opens=java.base/javax.crypto.spec=ALL-UNNAMED
+--add-opens=java.base/javax.crypto=ALL-UNNAMED
+--add-opens=java.base/javax.net.ssl=ALL-UNNAMED
+--add-opens=java.base/javax.net=ALL-UNNAMED
+--add-opens=java.base/javax.security.auth.callback=ALL-UNNAMED
+--add-opens=java.base/javax.security.auth.login=ALL-UNNAMED
+--add-opens=java.base/javax.security.auth.spi=ALL-UNNAMED
+--add-opens=java.base/javax.security.auth.x500=ALL-UNNAMED
+--add-opens=java.base/javax.security.auth=ALL-UNNAMED
+--add-opens=java.base/javax.security.cert=ALL-UNNAMED
+--add-opens=java.base/jdk.internal.access.foreign=ALL-UNNAMED
+--add-opens=java.base/jdk.internal.access=ALL-UNNAMED
+--add-opens=java.base/jdk.internal.event=ALL-UNNAMED
+--add-opens=java.base/jdk.internal.icu.impl.data.icudt67b=ALL-UNNAMED
+--add-opens=java.base/jdk.internal.icu.impl=ALL-UNNAMED
+--add-opens=java.base/jdk.internal.icu.lang=ALL-UNNAMED
+--add-opens=java.base/jdk.internal.icu.text=ALL-UNNAMED
+--add-opens=java.base/jdk.internal.icu.util=ALL-UNNAMED
+--add-opens=java.base/jdk.internal.invoke=ALL-UNNAMED
+--add-opens=java.base/jdk.internal.javac=ALL-UNNAMED
+--add-opens=java.base/jdk.internal.jimage.decompressor=ALL-UNNAMED
+--add-opens=java.base/jdk.internal.jimage=ALL-UNNAMED
+--add-opens=java.base/jdk.internal.jmod=ALL-UNNAMED
+--add-opens=java.base/jdk.internal.jrtfs=ALL-UNNAMED
+--add-opens=java.base/jdk.internal.loader=ALL-UNNAMED
+--add-opens=java.base/jdk.internal.logger=ALL-UNNAMED
+--add-opens=java.base/jdk.internal.math=ALL-UNNAMED
+--add-opens=java.base/jdk.internal.misc=ALL-UNNAMED
+--add-opens=java.base/jdk.internal.module=ALL-UNNAMED
+--add-opens=java.base/jdk.internal.org.objectweb.asm.commons=ALL-UNNAMED
+--add-opens=java.base/jdk.internal.org.objectweb.asm.signature=ALL-UNNAMED
+--add-opens=java.base/jdk.internal.org.objectweb.asm.tree.analysis=ALL-UNNAMED
+--add-opens=java.base/jdk.internal.org.objectweb.asm.tree=ALL-UNNAMED
+--add-opens=java.base/jdk.internal.org.objectweb.asm.util=ALL-UNNAMED
+--add-opens=java.base/jdk.internal.org.objectweb.asm=ALL-UNNAMED
+--add-opens=java.base/jdk.internal.org.xml.sax.helpers=ALL-UNNAMED
+--add-opens=java.base/jdk.internal.org.xml.sax=ALL-UNNAMED
+--add-opens=java.base/jdk.internal.perf=ALL-UNNAMED
+--add-opens=java.base/jdk.internal.platform.cgroupv1=ALL-UNNAMED
+--add-opens=java.base/jdk.internal.platform.cgroupv2=ALL-UNNAMED
+--add-opens=java.base/jdk.internal.platform=ALL-UNNAMED
+--add-opens=java.base/jdk.internal.ref=ALL-UNNAMED
+--add-opens=java.base/jdk.internal.reflect=ALL-UNNAMED
+--add-opens=java.base/jdk.internal.util.jar=ALL-UNNAMED
+--add-opens=java.base/jdk.internal.util.random=ALL-UNNAMED
+--add-opens=java.base/jdk.internal.util.xml.impl=ALL-UNNAMED
+--add-opens=java.base/jdk.internal.util.xml=ALL-UNNAMED
+--add-opens=java.base/jdk.internal.util=ALL-UNNAMED
+--add-opens=java.base/jdk.internal.vm.annotation=ALL-UNNAMED
+--add-opens=java.base/jdk.internal.vm.vector=ALL-UNNAMED
+--add-opens=java.base/jdk.internal.vm=ALL-UNNAMED
+--add-opens=java.base/jdk.internal=ALL-UNNAMED
+--add-opens=java.base/sun.invoke.empty=ALL-UNNAMED
+--add-opens=java.base/sun.invoke.util=ALL-UNNAMED
+--add-opens=java.base/sun.invoke=ALL-UNNAMED
+--add-opens=java.base/sun.launcher.resources=ALL-UNNAMED
+--add-opens=java.base/sun.launcher=ALL-UNNAMED
+--add-opens=java.base/sun.net.dns=ALL-UNNAMED
+--add-opens=java.base/sun.net.ext=ALL-UNNAMED
+--add-opens=java.base/sun.net.ftp.impl=ALL-UNNAMED
+--add-opens=java.base/sun.net.ftp=ALL-UNNAMED
+--add-opens=java.base/sun.net.idn=ALL-UNNAMED
+--add-opens=java.base/sun.net.sdp=ALL-UNNAMED
+--add-opens=java.base/sun.net.smtp=ALL-UNNAMED
+--add-opens=java.base/sun.net.spi=ALL-UNNAMED
+--add-opens=java.base/sun.net.util=ALL-UNNAMED
+--add-opens=java.base/sun.net.www.content.text=ALL-UNNAMED
+--add-opens=java.base/sun.net.www.http=ALL-UNNAMED
+--add-opens=java.base/sun.net.www.protocol.file=ALL-UNNAMED
+--add-opens=java.base/sun.net.www.protocol.ftp=ALL-UNNAMED
+--add-opens=java.base/sun.net.www.protocol.http.ntlm=ALL-UNNAMED
+--add-opens=java.base/sun.net.www.protocol.http=ALL-UNNAMED
+--add-opens=java.base/sun.net.www.protocol.https=ALL-UNNAMED
+--add-opens=java.base/sun.net.www.protocol.jar=ALL-UNNAMED
+--add-opens=java.base/sun.net.www.protocol.jmod=ALL-UNNAMED
+--add-opens=java.base/sun.net.www.protocol.jrt=ALL-UNNAMED
+--add-opens=java.base/sun.net.www.protocol.mailto=ALL-UNNAMED
+--add-opens=java.base/sun.net.www=ALL-UNNAMED
+--add-opens=java.base/sun.net=ALL-UNNAMED
+--add-opens=java.base/sun.nio.ch=ALL-UNNAMED
+--add-opens=java.base/sun.nio.cs=ALL-UNNAMED
+--add-opens=java.base/sun.nio.fs=ALL-UNNAMED
+--add-opens=java.base/sun.nio=ALL-UNNAMED
+--add-opens=java.base/sun.reflect.annotation=ALL-UNNAMED
+--add-opens=java.base/sun.reflect.generics.factory=ALL-UNNAMED
+--add-opens=java.base/sun.reflect.generics.parser=ALL-UNNAMED
+--add-opens=java.base/sun.reflect.generics.reflectiveObjects=ALL-UNNAMED
+--add-opens=java.base/sun.reflect.generics.repository=ALL-UNNAMED
+--add-opens=java.base/sun.reflect.generics.scope=ALL-UNNAMED
+--add-opens=java.base/sun.reflect.generics.tree=ALL-UNNAMED
+--add-opens=java.base/sun.reflect.generics.visitor=ALL-UNNAMED
+--add-opens=java.base/sun.reflect.misc=ALL-UNNAMED
+--add-opens=java.base/sun.security.action=ALL-UNNAMED
+--add-opens=java.base/sun.security.internal.interfaces=ALL-UNNAMED
+--add-opens=java.base/sun.security.internal.spec=ALL-UNNAMED
+--add-opens=java.base/sun.security.jca=ALL-UNNAMED
+--add-opens=java.base/sun.security.pkcs10=ALL-UNNAMED
+--add-opens=java.base/sun.security.pkcs12=ALL-UNNAMED
+--add-opens=java.base/sun.security.pkcs=ALL-UNNAMED
+--add-opens=java.base/sun.security.provider.certpath.ssl=ALL-UNNAMED
+--add-opens=java.base/sun.security.provider.certpath=ALL-UNNAMED
+--add-opens=java.base/sun.security.provider=ALL-UNNAMED
+--add-opens=java.base/sun.security.rsa=ALL-UNNAMED
+--add-opens=java.base/sun.security.ssl=ALL-UNNAMED
+--add-opens=java.base/sun.security.timestamp=ALL-UNNAMED
+--add-opens=java.base/sun.security.tools.keytool=ALL-UNNAMED
+--add-opens=java.base/sun.security.tools=ALL-UNNAMED
+--add-opens=java.base/sun.security.util.math.intpoly=ALL-UNNAMED
+--add-opens=java.base/sun.security.util.math=ALL-UNNAMED
+--add-opens=java.base/sun.security.util=ALL-UNNAMED
+--add-opens=java.base/sun.security.validator=ALL-UNNAMED
+--add-opens=java.base/sun.security.x509=ALL-UNNAMED
+--add-opens=java.base/sun.text.resources.cldr=ALL-UNNAMED
+--add-opens=java.base/sun.text.resources=ALL-UNNAMED
+--add-opens=java.base/sun.text.spi=ALL-UNNAMED
+--add-opens=java.base/sun.text=ALL-UNNAMED
+--add-opens=java.base/sun.util.calendar=ALL-UNNAMED
+--add-opens=java.base/sun.util.cldr=ALL-UNNAMED
+--add-opens=java.base/sun.util.locale.provider=ALL-UNNAMED
+--add-opens=java.base/sun.util.locale=ALL-UNNAMED
+--add-opens=java.base/sun.util.logging=ALL-UNNAMED
+--add-opens=java.base/sun.util.resources.cldr=ALL-UNNAMED
+--add-opens=java.base/sun.util.resources=ALL-UNNAMED
+--add-opens=java.base/sun.util.spi=ALL-UNNAMED
+--add-opens=java.base/sun.util=ALL-UNNAMED
+--add-opens=java.compiler/javax.annotation.processing=ALL-UNNAMED
+--add-opens=java.compiler/javax.lang.model.element=ALL-UNNAMED
+--add-opens=java.compiler/javax.lang.model.type=ALL-UNNAMED
+--add-opens=java.compiler/javax.lang.model.util=ALL-UNNAMED
+--add-opens=java.compiler/javax.lang.model=ALL-UNNAMED
+--add-opens=java.compiler/javax.tools=ALL-UNNAMED
+--add-opens=java.datatransfer/java.awt.datatransfer=ALL-UNNAMED
+--add-opens=java.datatransfer/sun.datatransfer.resources=ALL-UNNAMED
+--add-opens=java.datatransfer/sun.datatransfer=ALL-UNNAMED
+--add-opens=java.desktop/com.sun.accessibility.internal.resources=ALL-UNNAMED
+--add-opens=java.desktop/com.sun.beans.decoder=ALL-UNNAMED
+--add-opens=java.desktop/com.sun.beans.editors=ALL-UNNAMED
+--add-opens=java.desktop/com.sun.beans.finder=ALL-UNNAMED
+--add-opens=java.desktop/com.sun.beans.infos=ALL-UNNAMED
+--add-opens=java.desktop/com.sun.beans.introspect=ALL-UNNAMED
+--add-opens=java.desktop/com.sun.beans.util=ALL-UNNAMED
+--add-opens=java.desktop/com.sun.beans=ALL-UNNAMED
+--add-opens=java.desktop/com.sun.imageio.plugins.bmp=ALL-UNNAMED
+--add-opens=java.desktop/com.sun.imageio.plugins.common=ALL-UNNAMED
+--add-opens=java.desktop/com.sun.imageio.plugins.gif=ALL-UNNAMED
+--add-opens=java.desktop/com.sun.imageio.plugins.jpeg=ALL-UNNAMED
+--add-opens=java.desktop/com.sun.imageio.plugins.png=ALL-UNNAMED
+--add-opens=java.desktop/com.sun.imageio.plugins.tiff=ALL-UNNAMED
+--add-opens=java.desktop/com.sun.imageio.plugins.wbmp=ALL-UNNAMED
+--add-opens=java.desktop/com.sun.imageio.spi=ALL-UNNAMED
+--add-opens=java.desktop/com.sun.imageio.stream=ALL-UNNAMED
+--add-opens=java.desktop/com.sun.java.swing.plaf.gtk.icons=ALL-UNNAMED
+--add-opens=java.desktop/com.sun.java.swing.plaf.gtk.resources=ALL-UNNAMED
+--add-opens=java.desktop/com.sun.java.swing.plaf.gtk=ALL-UNNAMED
+--add-opens=java.desktop/com.sun.java.swing.plaf.motif.icons=ALL-UNNAMED
+--add-opens=java.desktop/com.sun.java.swing.plaf.motif.resources=ALL-UNNAMED
+--add-opens=java.desktop/com.sun.java.swing.plaf.motif=ALL-UNNAMED
+--add-opens=java.desktop/com.sun.java.swing=ALL-UNNAMED
+--add-opens=java.desktop/com.sun.media.sound=ALL-UNNAMED
+--add-opens=java.desktop/com.sun.swing.internal.plaf.basic.resources=ALL-UNNAMED
+--add-opens=java.desktop/com.sun.swing.internal.plaf.metal.resources=ALL-UNNAMED
+--add-opens=java.desktop/com.sun.swing.internal.plaf.synth.resources=ALL-UNNAMED
+--add-opens=java.desktop/java.applet=ALL-UNNAMED
+--add-opens=java.desktop/java.awt.color=ALL-UNNAMED
+--add-opens=java.desktop/java.awt.desktop=ALL-UNNAMED
+--add-opens=java.desktop/java.awt.dnd.peer=ALL-UNNAMED
+--add-opens=java.desktop/java.awt.dnd=ALL-UNNAMED
+--add-opens=java.desktop/java.awt.event=ALL-UNNAMED
+--add-opens=java.desktop/java.awt.font=ALL-UNNAMED
+--add-opens=java.desktop/java.awt.geom=ALL-UNNAMED
+--add-opens=java.desktop/java.awt.im.spi=ALL-UNNAMED
+--add-opens=java.desktop/java.awt.im=ALL-UNNAMED
+--add-opens=java.desktop/java.awt.image.renderable=ALL-UNNAMED
+--add-opens=java.desktop/java.awt.image=ALL-UNNAMED
+--add-opens=java.desktop/java.awt.peer=ALL-UNNAMED
+--add-opens=java.desktop/java.awt.print=ALL-UNNAMED
+--add-opens=java.desktop/java.awt=ALL-UNNAMED
+--add-opens=java.desktop/java.beans.beancontext=ALL-UNNAMED
+--add-opens=java.desktop/java.beans=ALL-UNNAMED
+--add-opens=java.desktop/javax.accessibility=ALL-UNNAMED
+--add-opens=java.desktop/javax.imageio.event=ALL-UNNAMED
+--add-opens=java.desktop/javax.imageio.metadata=ALL-UNNAMED
+--add-opens=java.desktop/javax.imageio.plugins.bmp=ALL-UNNAMED
+--add-opens=java.desktop/javax.imageio.plugins.jpeg=ALL-UNNAMED
+--add-opens=java.desktop/javax.imageio.plugins.tiff=ALL-UNNAMED
+--add-opens=java.desktop/javax.imageio.spi=ALL-UNNAMED
+--add-opens=java.desktop/javax.imageio.stream=ALL-UNNAMED
+--add-opens=java.desktop/javax.imageio=ALL-UNNAMED
+--add-opens=java.desktop/javax.print.attribute.standard=ALL-UNNAMED
+--add-opens=java.desktop/javax.print.attribute=ALL-UNNAMED
+--add-opens=java.desktop/javax.print.event=ALL-UNNAMED
+--add-opens=java.desktop/javax.print=ALL-UNNAMED
+--add-opens=java.desktop/javax.sound.midi.spi=ALL-UNNAMED
+--add-opens=java.desktop/javax.sound.midi=ALL-UNNAMED
+--add-opens=java.desktop/javax.sound.sampled.spi=ALL-UNNAMED
+--add-opens=java.desktop/javax.sound.sampled=ALL-UNNAMED
+--add-opens=java.desktop/javax.swing.beaninfo.images=ALL-UNNAMED
+--add-opens=java.desktop/javax.swing.border=ALL-UNNAMED
+--add-opens=java.desktop/javax.swing.colorchooser=ALL-UNNAMED
+--add-opens=java.desktop/javax.swing.event=ALL-UNNAMED
+--add-opens=java.desktop/javax.swing.filechooser=ALL-UNNAMED
+--add-opens=java.desktop/javax.swing.plaf.basic.icons=ALL-UNNAMED
+--add-opens=java.desktop/javax.swing.plaf.basic=ALL-UNNAMED
+--add-opens=java.desktop/javax.swing.plaf.metal.icons.ocean=ALL-UNNAMED
+--add-opens=java.desktop/javax.swing.plaf.metal.icons=ALL-UNNAMED
+--add-opens=java.desktop/javax.swing.plaf.metal.sounds=ALL-UNNAMED
+--add-opens=java.desktop/javax.swing.plaf.metal=ALL-UNNAMED
+--add-opens=java.desktop/javax.swing.plaf.multi=ALL-UNNAMED
+--add-opens=java.desktop/javax.swing.plaf.nimbus=ALL-UNNAMED
+--add-opens=java.desktop/javax.swing.plaf.synth=ALL-UNNAMED
+--add-opens=java.desktop/javax.swing.plaf=ALL-UNNAMED
+--add-opens=java.desktop/javax.swing.table=ALL-UNNAMED
+--add-opens=java.desktop/javax.swing.text.html.parser=ALL-UNNAMED
+--add-opens=java.desktop/javax.swing.text.html=ALL-UNNAMED
+--add-opens=java.desktop/javax.swing.text.rtf.charsets=ALL-UNNAMED
+--add-opens=java.desktop/javax.swing.text.rtf=ALL-UNNAMED
+--add-opens=java.desktop/javax.swing.text=ALL-UNNAMED
+--add-opens=java.desktop/javax.swing.tree=ALL-UNNAMED
+--add-opens=java.desktop/javax.swing.undo=ALL-UNNAMED
+--add-opens=java.desktop/javax.swing=ALL-UNNAMED
+--add-opens=java.desktop/sun.awt.X11=ALL-UNNAMED
+--add-opens=java.desktop/sun.awt.datatransfer=ALL-UNNAMED
+--add-opens=java.desktop/sun.awt.dnd=ALL-UNNAMED
+--add-opens=java.desktop/sun.awt.event=ALL-UNNAMED
+--add-opens=java.desktop/sun.awt.geom=ALL-UNNAMED
+--add-opens=java.desktop/sun.awt.im=ALL-UNNAMED
+--add-opens=java.desktop/sun.awt.image=ALL-UNNAMED
+--add-opens=java.desktop/sun.awt.resources.cursors=ALL-UNNAMED
+--add-opens=java.desktop/sun.awt.resources=ALL-UNNAMED
+--add-opens=java.desktop/sun.awt.shell=ALL-UNNAMED
+--add-opens=java.desktop/sun.awt.util=ALL-UNNAMED
+--add-opens=java.desktop/sun.awt.www.content.audio=ALL-UNNAMED
+--add-opens=java.desktop/sun.awt.www.content.image=ALL-UNNAMED
+--add-opens=java.desktop/sun.awt.www.content=ALL-UNNAMED
+--add-opens=java.desktop/sun.awt=ALL-UNNAMED
+--add-opens=java.desktop/sun.font.lookup=ALL-UNNAMED
+--add-opens=java.desktop/sun.font=ALL-UNNAMED
+--add-opens=java.desktop/sun.java2d.cmm.lcms=ALL-UNNAMED
+--add-opens=java.desktop/sun.java2d.cmm.profiles=ALL-UNNAMED
+--add-opens=java.desktop/sun.java2d.cmm=ALL-UNNAMED
+--add-opens=java.desktop/sun.java2d.loops=ALL-UNNAMED
+--add-opens=java.desktop/sun.java2d.marlin.stats=ALL-UNNAMED
+--add-opens=java.desktop/sun.java2d.marlin=ALL-UNNAMED
+--add-opens=java.desktop/sun.java2d.opengl=ALL-UNNAMED
+--add-opens=java.desktop/sun.java2d.pipe.hw=ALL-UNNAMED
+--add-opens=java.desktop/sun.java2d.pipe=ALL-UNNAMED
+--add-opens=java.desktop/sun.java2d.x11=ALL-UNNAMED
+--add-opens=java.desktop/sun.java2d.xr=ALL-UNNAMED
+--add-opens=java.desktop/sun.java2d=ALL-UNNAMED
+--add-opens=java.desktop/sun.print.resources=ALL-UNNAMED
+--add-opens=java.desktop/sun.print=ALL-UNNAMED
+--add-opens=java.desktop/sun.swing.icon=ALL-UNNAMED
+--add-opens=java.desktop/sun.swing.plaf.synth=ALL-UNNAMED
+--add-opens=java.desktop/sun.swing.plaf=ALL-UNNAMED
+--add-opens=java.desktop/sun.swing.table=ALL-UNNAMED
+--add-opens=java.desktop/sun.swing.text.html=ALL-UNNAMED
+--add-opens=java.desktop/sun.swing.text=ALL-UNNAMED
+--add-opens=java.desktop/sun.swing=ALL-UNNAMED
+--add-opens=java.instrument/java.lang.instrument=ALL-UNNAMED
+--add-opens=java.instrument/sun.instrument=ALL-UNNAMED
+--add-opens=java.logging/java.util.logging=ALL-UNNAMED
+--add-opens=java.logging/sun.net.www.protocol.http.logging=ALL-UNNAMED
+--add-opens=java.logging/sun.util.logging.internal=ALL-UNNAMED
+--add-opens=java.logging/sun.util.logging.resources=ALL-UNNAMED
+--add-opens=java.management.rmi/com.sun.jmx.remote.internal.rmi=ALL-UNNAMED
+--add-opens=java.management.rmi/com.sun.jmx.remote.protocol.rmi=ALL-UNNAMED
+--add-opens=java.management.rmi/javax.management.remote.rmi=ALL-UNNAMED
+--add-opens=java.management/com.sun.jmx.defaults=ALL-UNNAMED
+--add-opens=java.management/com.sun.jmx.interceptor=ALL-UNNAMED
+--add-opens=java.management/com.sun.jmx.mbeanserver=ALL-UNNAMED
+--add-opens=java.management/com.sun.jmx.remote.internal=ALL-UNNAMED
+--add-opens=java.management/com.sun.jmx.remote.security=ALL-UNNAMED
+--add-opens=java.management/com.sun.jmx.remote.util=ALL-UNNAMED
+--add-opens=java.management/java.lang.management=ALL-UNNAMED
+--add-opens=java.management/javax.management.loading=ALL-UNNAMED
+--add-opens=java.management/javax.management.modelmbean=ALL-UNNAMED
+--add-opens=java.management/javax.management.monitor=ALL-UNNAMED
+--add-opens=java.management/javax.management.openmbean=ALL-UNNAMED
+--add-opens=java.management/javax.management.relation=ALL-UNNAMED
+--add-opens=java.management/javax.management.remote=ALL-UNNAMED
+--add-opens=java.management/javax.management.timer=ALL-UNNAMED
+--add-opens=java.management/javax.management=ALL-UNNAMED
+--add-opens=java.management/sun.management.counter.perf=ALL-UNNAMED
+--add-opens=java.management/sun.management.counter=ALL-UNNAMED
+--add-opens=java.management/sun.management.spi=ALL-UNNAMED
+--add-opens=java.management/sun.management=ALL-UNNAMED
+--add-opens=java.naming/com.sun.jndi.ldap.ext=ALL-UNNAMED
+--add-opens=java.naming/com.sun.jndi.ldap.pool=ALL-UNNAMED
+--add-opens=java.naming/com.sun.jndi.ldap.sasl=ALL-UNNAMED
+--add-opens=java.naming/com.sun.jndi.ldap=ALL-UNNAMED
+--add-opens=java.naming/com.sun.jndi.toolkit.ctx=ALL-UNNAMED
+--add-opens=java.naming/com.sun.jndi.toolkit.dir=ALL-UNNAMED
+--add-opens=java.naming/com.sun.jndi.toolkit.url=ALL-UNNAMED
+--add-opens=java.naming/com.sun.jndi.url.ldap=ALL-UNNAMED
+--add-opens=java.naming/com.sun.jndi.url.ldaps=ALL-UNNAMED
+--add-opens=java.naming/com.sun.naming.internal=ALL-UNNAMED
+--add-opens=java.naming/javax.naming.directory=ALL-UNNAMED
+--add-opens=java.naming/javax.naming.event=ALL-UNNAMED
+--add-opens=java.naming/javax.naming.ldap.spi=ALL-UNNAMED
+--add-opens=java.naming/javax.naming.ldap=ALL-UNNAMED
+--add-opens=java.naming/javax.naming.spi=ALL-UNNAMED
+--add-opens=java.naming/javax.naming=ALL-UNNAMED
+--add-opens=java.naming/sun.security.provider.certpath.ldap=ALL-UNNAMED
+--add-opens=java.net.http/java.net.http=ALL-UNNAMED
+--add-opens=java.net.http/jdk.internal.net.http.common=ALL-UNNAMED
+--add-opens=java.net.http/jdk.internal.net.http.frame=ALL-UNNAMED
+--add-opens=java.net.http/jdk.internal.net.http.hpack=ALL-UNNAMED
+--add-opens=java.net.http/jdk.internal.net.http.websocket=ALL-UNNAMED
+--add-opens=java.net.http/jdk.internal.net.http=ALL-UNNAMED
+--add-opens=java.prefs/java.util.prefs=ALL-UNNAMED
+--add-opens=java.rmi/java.rmi.dgc=ALL-UNNAMED
+--add-opens=java.rmi/java.rmi.registry=ALL-UNNAMED
+--add-opens=java.rmi/java.rmi.server=ALL-UNNAMED
+--add-opens=java.rmi/java.rmi=ALL-UNNAMED
+--add-opens=java.rmi/javax.rmi.ssl=ALL-UNNAMED
+--add-opens=java.rmi/sun.rmi.log=ALL-UNNAMED
+--add-opens=java.rmi/sun.rmi.registry.resources=ALL-UNNAMED
+--add-opens=java.rmi/sun.rmi.registry=ALL-UNNAMED
+--add-opens=java.rmi/sun.rmi.runtime=ALL-UNNAMED
+--add-opens=java.rmi/sun.rmi.server=ALL-UNNAMED
+--add-opens=java.rmi/sun.rmi.transport.tcp=ALL-UNNAMED
+--add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
+--add-opens=java.scripting/com.sun.tools.script.shell=ALL-UNNAMED
+--add-opens=java.scripting/javax.script=ALL-UNNAMED
+--add-opens=java.security.jgss/javax.security.auth.kerberos=ALL-UNNAMED
+--add-opens=java.security.jgss/org.ietf.jgss=ALL-UNNAMED
+--add-opens=java.security.jgss/sun.net.www.protocol.http.spnego=ALL-UNNAMED
+--add-opens=java.security.jgss/sun.security.jgss.krb5.internal=ALL-UNNAMED
+--add-opens=java.security.jgss/sun.security.jgss.krb5=ALL-UNNAMED
+--add-opens=java.security.jgss/sun.security.jgss.spi=ALL-UNNAMED
+--add-opens=java.security.jgss/sun.security.jgss.spnego=ALL-UNNAMED
+--add-opens=java.security.jgss/sun.security.jgss.wrapper=ALL-UNNAMED
+--add-opens=java.security.jgss/sun.security.jgss=ALL-UNNAMED
+--add-opens=java.security.jgss/sun.security.krb5.internal.ccache=ALL-UNNAMED
+--add-opens=java.security.jgss/sun.security.krb5.internal.crypto.dk=ALL-UNNAMED
+--add-opens=java.security.jgss/sun.security.krb5.internal.crypto=ALL-UNNAMED
+--add-opens=java.security.jgss/sun.security.krb5.internal.ktab=ALL-UNNAMED
+--add-opens=java.security.jgss/sun.security.krb5.internal.rcache=ALL-UNNAMED
+--add-opens=java.security.jgss/sun.security.krb5.internal.util=ALL-UNNAMED
+--add-opens=java.security.jgss/sun.security.krb5.internal=ALL-UNNAMED
+--add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED
+--add-opens=java.security.sasl/com.sun.security.sasl.digest=ALL-UNNAMED
+--add-opens=java.security.sasl/com.sun.security.sasl.ntlm=ALL-UNNAMED
+--add-opens=java.security.sasl/com.sun.security.sasl.util=ALL-UNNAMED
+--add-opens=java.security.sasl/com.sun.security.sasl=ALL-UNNAMED
+--add-opens=java.security.sasl/javax.security.sasl=ALL-UNNAMED
+--add-opens=java.smartcardio/javax.smartcardio=ALL-UNNAMED
+--add-opens=java.smartcardio/sun.security.smartcardio=ALL-UNNAMED
+--add-opens=java.sql.rowset/com.sun.rowset.internal=ALL-UNNAMED
+--add-opens=java.sql.rowset/com.sun.rowset.providers=ALL-UNNAMED
+--add-opens=java.sql.rowset/com.sun.rowset=ALL-UNNAMED
+--add-opens=java.sql.rowset/javax.sql.rowset.serial=ALL-UNNAMED
+--add-opens=java.sql.rowset/javax.sql.rowset.spi=ALL-UNNAMED
+--add-opens=java.sql.rowset/javax.sql.rowset=ALL-UNNAMED
+--add-opens=java.sql/java.sql=ALL-UNNAMED
+--add-opens=java.sql/javax.sql=ALL-UNNAMED
+--add-opens=java.transaction.xa/javax.transaction.xa=ALL-UNNAMED
+--add-opens=java.xml.crypto/com.sun.org.apache.xml.internal.security.algorithms.implementations=ALL-UNNAMED
+--add-opens=java.xml.crypto/com.sun.org.apache.xml.internal.security.algorithms=ALL-UNNAMED
+--add-opens=java.xml.crypto/com.sun.org.apache.xml.internal.security.c14n.helper=ALL-UNNAMED
+--add-opens=java.xml.crypto/com.sun.org.apache.xml.internal.security.c14n.implementations=ALL-UNNAMED
+--add-opens=java.xml.crypto/com.sun.org.apache.xml.internal.security.c14n=ALL-UNNAMED
+--add-opens=java.xml.crypto/com.sun.org.apache.xml.internal.security.exceptions=ALL-UNNAMED
+--add-opens=java.xml.crypto/com.sun.org.apache.xml.internal.security.keys.content.keyvalues=ALL-UNNAMED
+--add-opens=java.xml.crypto/com.sun.org.apache.xml.internal.security.keys.content.x509=ALL-UNNAMED
+--add-opens=java.xml.crypto/com.sun.org.apache.xml.internal.security.keys.content=ALL-UNNAMED
+--add-opens=java.xml.crypto/com.sun.org.apache.xml.internal.security.keys.keyresolver.implementations=ALL-UNNAMED
+--add-opens=java.xml.crypto/com.sun.org.apache.xml.internal.security.keys.keyresolver=ALL-UNNAMED
+--add-opens=java.xml.crypto/com.sun.org.apache.xml.internal.security.keys.storage.implementations=ALL-UNNAMED
+--add-opens=java.xml.crypto/com.sun.org.apache.xml.internal.security.keys.storage=ALL-UNNAMED
+--add-opens=java.xml.crypto/com.sun.org.apache.xml.internal.security.keys=ALL-UNNAMED
+--add-opens=java.xml.crypto/com.sun.org.apache.xml.internal.security.parser=ALL-UNNAMED
+--add-opens=java.xml.crypto/com.sun.org.apache.xml.internal.security.resource=ALL-UNNAMED
+--add-opens=java.xml.crypto/com.sun.org.apache.xml.internal.security.signature.reference=ALL-UNNAMED
+--add-opens=java.xml.crypto/com.sun.org.apache.xml.internal.security.signature=ALL-UNNAMED
+--add-opens=java.xml.crypto/com.sun.org.apache.xml.internal.security.transforms.implementations=ALL-UNNAMED
+--add-opens=java.xml.crypto/com.sun.org.apache.xml.internal.security.transforms.params=ALL-UNNAMED
+--add-opens=java.xml.crypto/com.sun.org.apache.xml.internal.security.transforms=ALL-UNNAMED
+--add-opens=java.xml.crypto/com.sun.org.apache.xml.internal.security.utils.resolver.implementations=ALL-UNNAMED
+--add-opens=java.xml.crypto/com.sun.org.apache.xml.internal.security.utils.resolver=ALL-UNNAMED
+--add-opens=java.xml.crypto/com.sun.org.apache.xml.internal.security.utils=ALL-UNNAMED
+--add-opens=java.xml.crypto/com.sun.org.apache.xml.internal.security=ALL-UNNAMED
+--add-opens=java.xml.crypto/com.sun.org.slf4j.internal=ALL-UNNAMED
+--add-opens=java.xml.crypto/javax.xml.crypto.dom=ALL-UNNAMED
+--add-opens=java.xml.crypto/javax.xml.crypto.dsig.dom=ALL-UNNAMED
+--add-opens=java.xml.crypto/javax.xml.crypto.dsig.keyinfo=ALL-UNNAMED
+--add-opens=java.xml.crypto/javax.xml.crypto.dsig.spec=ALL-UNNAMED
+--add-opens=java.xml.crypto/javax.xml.crypto.dsig=ALL-UNNAMED
+--add-opens=java.xml.crypto/javax.xml.crypto=ALL-UNNAMED
+--add-opens=java.xml.crypto/org.jcp.xml.dsig.internal.dom=ALL-UNNAMED
+--add-opens=java.xml.crypto/org.jcp.xml.dsig.internal=ALL-UNNAMED
+--add-opens=java.xml/com.sun.java_cup.internal.runtime=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.bcel.internal.classfile=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.bcel.internal.generic=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.bcel.internal.util=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.bcel.internal=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xalan.internal.extensions=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xalan.internal.lib=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xalan.internal.res=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xalan.internal.templates=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xalan.internal.utils=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xalan.internal.xsltc.compiler.util=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xalan.internal.xsltc.compiler=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xalan.internal.xsltc.dom=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xalan.internal.xsltc.runtime.output=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xalan.internal.xsltc.runtime=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xalan.internal.xsltc.trax=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xalan.internal.xsltc.util=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xalan.internal.xsltc=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xerces.internal.dom.events=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xerces.internal.dom=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xerces.internal.impl.dtd.models=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xerces.internal.impl.dtd=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xerces.internal.impl.dv.dtd=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xerces.internal.impl.dv.util=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xerces.internal.impl.dv.xs=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xerces.internal.impl.dv=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xerces.internal.impl.io=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xerces.internal.impl.msg=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xerces.internal.impl.validation=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xerces.internal.impl.xpath.regex=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xerces.internal.impl.xpath=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xerces.internal.impl.xs.identity=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xerces.internal.impl.xs.models=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xerces.internal.impl.xs.opti=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xerces.internal.impl.xs.traversers=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xerces.internal.impl.xs.util=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xerces.internal.impl.xs=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xerces.internal.impl=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xerces.internal.jaxp.datatype=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xerces.internal.jaxp.validation=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xerces.internal.jaxp=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xerces.internal.parsers=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xerces.internal.util=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xerces.internal.utils=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xerces.internal.xinclude=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xerces.internal.xni.grammars=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xerces.internal.xni.parser=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xerces.internal.xni=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xerces.internal.xpointer=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xerces.internal.xs.datatypes=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xerces.internal.xs=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xml.internal.dtm.ref.dom2dtm=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xml.internal.dtm.ref.sax2dtm=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xml.internal.dtm.ref=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xml.internal.dtm=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xml.internal.res=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xml.internal.serialize=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xml.internal.serializer.dom3=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xml.internal.serializer.utils=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xml.internal.serializer=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xml.internal.utils.res=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xml.internal.utils=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xpath.internal.axes=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xpath.internal.compiler=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xpath.internal.functions=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xpath.internal.jaxp=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xpath.internal.objects=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xpath.internal.operations=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xpath.internal.patterns=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xpath.internal.res=ALL-UNNAMED
+--add-opens=java.xml/com.sun.org.apache.xpath.internal=ALL-UNNAMED
+--add-opens=java.xml/com.sun.xml.internal.stream.dtd.nonvalidating=ALL-UNNAMED
+--add-opens=java.xml/com.sun.xml.internal.stream.dtd=ALL-UNNAMED
+--add-opens=java.xml/com.sun.xml.internal.stream.events=ALL-UNNAMED
+--add-opens=java.xml/com.sun.xml.internal.stream.util=ALL-UNNAMED
+--add-opens=java.xml/com.sun.xml.internal.stream.writers=ALL-UNNAMED
+--add-opens=java.xml/com.sun.xml.internal.stream=ALL-UNNAMED
+--add-opens=java.xml/javax.xml.catalog=ALL-UNNAMED
+--add-opens=java.xml/javax.xml.datatype=ALL-UNNAMED
+--add-opens=java.xml/javax.xml.namespace=ALL-UNNAMED
+--add-opens=java.xml/javax.xml.parsers=ALL-UNNAMED
+--add-opens=java.xml/javax.xml.stream.events=ALL-UNNAMED
+--add-opens=java.xml/javax.xml.stream.util=ALL-UNNAMED
+--add-opens=java.xml/javax.xml.stream=ALL-UNNAMED
+--add-opens=java.xml/javax.xml.transform.dom=ALL-UNNAMED
+--add-opens=java.xml/javax.xml.transform.sax=ALL-UNNAMED
+--add-opens=java.xml/javax.xml.transform.stax=ALL-UNNAMED
+--add-opens=java.xml/javax.xml.transform.stream=ALL-UNNAMED
+--add-opens=java.xml/javax.xml.transform=ALL-UNNAMED
+--add-opens=java.xml/javax.xml.validation=ALL-UNNAMED
+--add-opens=java.xml/javax.xml.xpath=ALL-UNNAMED
+--add-opens=java.xml/javax.xml=ALL-UNNAMED
+--add-opens=java.xml/jdk.xml.internal=ALL-UNNAMED
+--add-opens=java.xml/org.w3c.dom.bootstrap=ALL-UNNAMED
+--add-opens=java.xml/org.w3c.dom.events=ALL-UNNAMED
+--add-opens=java.xml/org.w3c.dom.ls=ALL-UNNAMED
+--add-opens=java.xml/org.w3c.dom.ranges=ALL-UNNAMED
+--add-opens=java.xml/org.w3c.dom.traversal=ALL-UNNAMED
+--add-opens=java.xml/org.w3c.dom.views=ALL-UNNAMED
+--add-opens=java.xml/org.w3c.dom=ALL-UNNAMED
+--add-opens=java.xml/org.xml.sax.ext=ALL-UNNAMED
+--add-opens=java.xml/org.xml.sax.helpers=ALL-UNNAMED
+--add-opens=java.xml/org.xml.sax=ALL-UNNAMED
+--add-opens=jdk.accessibility/com.sun.java.accessibility.util.internal=ALL-UNNAMED
+--add-opens=jdk.accessibility/com.sun.java.accessibility.util=ALL-UNNAMED
+--add-opens=jdk.attach/com.sun.tools.attach.spi=ALL-UNNAMED
+--add-opens=jdk.attach/com.sun.tools.attach=ALL-UNNAMED
+--add-opens=jdk.attach/sun.tools.attach=ALL-UNNAMED
+--add-opens=jdk.charsets/sun.nio.cs.ext=ALL-UNNAMED
+--add-opens=jdk.compiler/com.sun.source.doctree=ALL-UNNAMED
+--add-opens=jdk.compiler/com.sun.source.tree=ALL-UNNAMED
+--add-opens=jdk.compiler/com.sun.source.util=ALL-UNNAMED
+--add-opens=jdk.compiler/com.sun.tools.doclint=ALL-UNNAMED
+--add-opens=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED
+--add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED
+--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED
+--add-opens=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED
+--add-opens=jdk.compiler/com.sun.tools.javac.jvm=ALL-UNNAMED
+--add-opens=jdk.compiler/com.sun.tools.javac.launcher=ALL-UNNAMED
+--add-opens=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED
+--add-opens=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED
+--add-opens=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED
+--add-opens=jdk.compiler/com.sun.tools.javac.platform=ALL-UNNAMED
+--add-opens=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED
+--add-opens=jdk.compiler/com.sun.tools.javac.resources=ALL-UNNAMED
+--add-opens=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED
+--add-opens=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED
+--add-opens=jdk.compiler/com.sun.tools.javac=ALL-UNNAMED
+--add-opens=jdk.compiler/com.sun.tools.sjavac.client=ALL-UNNAMED
+--add-opens=jdk.compiler/com.sun.tools.sjavac.comp.dependencies=ALL-UNNAMED
+--add-opens=jdk.compiler/com.sun.tools.sjavac.comp=ALL-UNNAMED
+--add-opens=jdk.compiler/com.sun.tools.sjavac.options=ALL-UNNAMED
+--add-opens=jdk.compiler/com.sun.tools.sjavac.pubapi=ALL-UNNAMED
+--add-opens=jdk.compiler/com.sun.tools.sjavac.server.log=ALL-UNNAMED
+--add-opens=jdk.compiler/com.sun.tools.sjavac.server=ALL-UNNAMED
+--add-opens=jdk.compiler/com.sun.tools.sjavac=ALL-UNNAMED
+--add-opens=jdk.compiler/jdk.internal.shellsupport.doc.resources=ALL-UNNAMED
+--add-opens=jdk.compiler/jdk.internal.shellsupport.doc=ALL-UNNAMED
+--add-opens=jdk.compiler/sun.tools.serialver.resources=ALL-UNNAMED
+--add-opens=jdk.compiler/sun.tools.serialver=ALL-UNNAMED
+--add-opens=jdk.crypto.cryptoki/sun.security.pkcs11.wrapper=ALL-UNNAMED
+--add-opens=jdk.crypto.cryptoki/sun.security.pkcs11=ALL-UNNAMED
+--add-opens=jdk.crypto.ec/sun.security.ec.ed=ALL-UNNAMED
+--add-opens=jdk.crypto.ec/sun.security.ec.point=ALL-UNNAMED
+--add-opens=jdk.crypto.ec/sun.security.ec=ALL-UNNAMED
+--add-opens=jdk.dynalink/jdk.dynalink.beans=ALL-UNNAMED
+--add-opens=jdk.dynalink/jdk.dynalink.internal=ALL-UNNAMED
+--add-opens=jdk.dynalink/jdk.dynalink.linker.support=ALL-UNNAMED
+--add-opens=jdk.dynalink/jdk.dynalink.linker=ALL-UNNAMED
+--add-opens=jdk.dynalink/jdk.dynalink.support=ALL-UNNAMED
+--add-opens=jdk.dynalink/jdk.dynalink=ALL-UNNAMED
+--add-opens=jdk.editpad/jdk.editpad.resources=ALL-UNNAMED
+--add-opens=jdk.editpad/jdk.editpad=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/com.sun.java.swing.action=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/com.sun.java.swing.ui=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/images.toolbarButtonGraphics.general=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.asm=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.c1=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.ci=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.classfile=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.code=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.compiler=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.debugger.aarch64=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.debugger.amd64=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.debugger.bsd.aarch64=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.debugger.bsd.amd64=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.debugger.bsd.x86=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.debugger.bsd=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.debugger.cdbg.basic=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.debugger.cdbg=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.debugger.dummy=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.debugger.linux.aarch64=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.debugger.linux.amd64=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.debugger.linux.ppc64=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.debugger.linux.x86=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.debugger.linux=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.debugger.posix.elf=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.debugger.posix=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.debugger.ppc64=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.debugger.proc.aarch64=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.debugger.proc.amd64=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.debugger.proc.ppc64=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.debugger.proc.x86=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.debugger.proc=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.debugger.remote.aarch64=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.debugger.remote.amd64=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.debugger.remote.ppc64=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.debugger.remote.x86=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.debugger.remote=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.debugger.win32.coff=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.debugger.windbg.aarch64=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.debugger.windbg.amd64=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.debugger.windbg.x86=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.debugger.windbg=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.debugger.windows.amd64=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.debugger.windows.x86=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.debugger.x86=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.debugger=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.gc.epsilon=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.gc.g1=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.gc.parallel=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.gc.serial=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.gc.shared=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.gc.shenandoah=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.gc.z=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.interpreter=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.memory=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.oops=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.opto=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.prims=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.runtime.aarch64=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.runtime.amd64=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.runtime.bsd=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.runtime.bsd_aarch64=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.runtime.bsd_amd64=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.runtime.bsd_x86=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.runtime.linux=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.runtime.linux_aarch64=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.runtime.linux_amd64=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.runtime.linux_ppc64=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.runtime.linux_x86=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.runtime.posix=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.runtime.ppc64=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.runtime.win32_aarch64=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.runtime.win32_amd64=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.runtime.win32_x86=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.runtime.x86=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.runtime=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.tools.jcore=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.tools=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.types.basic=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.types=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.ui.action=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.ui.classbrowser=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.ui.resources=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.ui.table=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.ui.tree=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.ui.treetable=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.ui=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.utilities.memo=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot.utilities=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/sun.jvm.hotspot=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/toolbarButtonGraphics.development=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/toolbarButtonGraphics.general=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/toolbarButtonGraphics.navigation=ALL-UNNAMED
+--add-opens=jdk.hotspot.agent/toolbarButtonGraphics.text=ALL-UNNAMED
+--add-opens=jdk.httpserver/com.sun.net.httpserver.spi=ALL-UNNAMED
+--add-opens=jdk.httpserver/com.sun.net.httpserver=ALL-UNNAMED
+--add-opens=jdk.httpserver/sun.net.httpserver=ALL-UNNAMED
+--add-opens=jdk.incubator.foreign/jdk.incubator.foreign=ALL-UNNAMED
+--add-opens=jdk.incubator.foreign/jdk.internal.foreign.abi.aarch64.linux=ALL-UNNAMED
+--add-opens=jdk.incubator.foreign/jdk.internal.foreign.abi.aarch64.macos=ALL-UNNAMED
+--add-opens=jdk.incubator.foreign/jdk.internal.foreign.abi.aarch64=ALL-UNNAMED
+--add-opens=jdk.incubator.foreign/jdk.internal.foreign.abi.x64.sysv=ALL-UNNAMED
+--add-opens=jdk.incubator.foreign/jdk.internal.foreign.abi.x64.windows=ALL-UNNAMED
+--add-opens=jdk.incubator.foreign/jdk.internal.foreign.abi.x64=ALL-UNNAMED
+--add-opens=jdk.incubator.foreign/jdk.internal.foreign.abi=ALL-UNNAMED
+--add-opens=jdk.incubator.foreign/jdk.internal.foreign=ALL-UNNAMED
+--add-opens=jdk.incubator.vector/jdk.incubator.vector=ALL-UNNAMED
+--add-opens=jdk.internal.ed/jdk.internal.editor.external=ALL-UNNAMED
+--add-opens=jdk.internal.ed/jdk.internal.editor.spi=ALL-UNNAMED
+--add-opens=jdk.internal.jvmstat/sun.jvmstat.monitor.event=ALL-UNNAMED
+--add-opens=jdk.internal.jvmstat/sun.jvmstat.monitor=ALL-UNNAMED
+--add-opens=jdk.internal.jvmstat/sun.jvmstat.perfdata.monitor.protocol.file=ALL-UNNAMED
+--add-opens=jdk.internal.jvmstat/sun.jvmstat.perfdata.monitor.protocol.local=ALL-UNNAMED
+--add-opens=jdk.internal.jvmstat/sun.jvmstat.perfdata.monitor.v1_0=ALL-UNNAMED
+--add-opens=jdk.internal.jvmstat/sun.jvmstat.perfdata.monitor.v2_0=ALL-UNNAMED
+--add-opens=jdk.internal.jvmstat/sun.jvmstat.perfdata.monitor=ALL-UNNAMED
+--add-opens=jdk.internal.jvmstat/sun.jvmstat.perfdata.resources=ALL-UNNAMED
+--add-opens=jdk.internal.jvmstat/sun.jvmstat=ALL-UNNAMED
+--add-opens=jdk.internal.le/jdk.internal.org.jline.keymap=ALL-UNNAMED
+--add-opens=jdk.internal.le/jdk.internal.org.jline.reader.impl.completer=ALL-UNNAMED
+--add-opens=jdk.internal.le/jdk.internal.org.jline.reader.impl.history=ALL-UNNAMED
+--add-opens=jdk.internal.le/jdk.internal.org.jline.reader.impl=ALL-UNNAMED
+--add-opens=jdk.internal.le/jdk.internal.org.jline.reader=ALL-UNNAMED
+--add-opens=jdk.internal.le/jdk.internal.org.jline.terminal.impl=ALL-UNNAMED
+--add-opens=jdk.internal.le/jdk.internal.org.jline.terminal.spi=ALL-UNNAMED
+--add-opens=jdk.internal.le/jdk.internal.org.jline.terminal=ALL-UNNAMED
+--add-opens=jdk.internal.le/jdk.internal.org.jline.utils=ALL-UNNAMED
+--add-opens=jdk.internal.opt/jdk.internal.joptsimple.internal=ALL-UNNAMED
+--add-opens=jdk.internal.opt/jdk.internal.joptsimple.util=ALL-UNNAMED
+--add-opens=jdk.internal.opt/jdk.internal.joptsimple=ALL-UNNAMED
+--add-opens=jdk.internal.vm.ci/jdk.vm.ci.aarch64=ALL-UNNAMED
+--add-opens=jdk.internal.vm.ci/jdk.vm.ci.amd64=ALL-UNNAMED
+--add-opens=jdk.internal.vm.ci/jdk.vm.ci.code.site=ALL-UNNAMED
+--add-opens=jdk.internal.vm.ci/jdk.vm.ci.code.stack=ALL-UNNAMED
+--add-opens=jdk.internal.vm.ci/jdk.vm.ci.code=ALL-UNNAMED
+--add-opens=jdk.internal.vm.ci/jdk.vm.ci.common=ALL-UNNAMED
+--add-opens=jdk.internal.vm.ci/jdk.vm.ci.hotspot.aarch64=ALL-UNNAMED
+--add-opens=jdk.internal.vm.ci/jdk.vm.ci.hotspot.amd64=ALL-UNNAMED
+--add-opens=jdk.internal.vm.ci/jdk.vm.ci.hotspot=ALL-UNNAMED
+--add-opens=jdk.internal.vm.ci/jdk.vm.ci.meta=ALL-UNNAMED
+--add-opens=jdk.internal.vm.ci/jdk.vm.ci.runtime=ALL-UNNAMED
+--add-opens=jdk.internal.vm.ci/jdk.vm.ci.services=ALL-UNNAMED
+--add-opens=jdk.jartool/com.sun.jarsigner=ALL-UNNAMED
+--add-opens=jdk.jartool/jdk.security.jarsigner=ALL-UNNAMED
+--add-opens=jdk.jartool/sun.security.tools.jarsigner=ALL-UNNAMED
+--add-opens=jdk.jartool/sun.tools.jar.resources=ALL-UNNAMED
+--add-opens=jdk.jartool/sun.tools.jar=ALL-UNNAMED
+--add-opens=jdk.javadoc/jdk.javadoc.doclet=ALL-UNNAMED
+--add-opens=jdk.javadoc/jdk.javadoc.internal.api=ALL-UNNAMED
+--add-opens=jdk.javadoc/jdk.javadoc.internal.doclets.formats.html.markup=ALL-UNNAMED
+--add-opens=jdk.javadoc/jdk.javadoc.internal.doclets.formats.html.resources=ALL-UNNAMED
+--add-opens=jdk.javadoc/jdk.javadoc.internal.doclets.formats.html=ALL-UNNAMED
+--add-opens=jdk.javadoc/jdk.javadoc.internal.doclets.toolkit.builders=ALL-UNNAMED
+--add-opens=jdk.javadoc/jdk.javadoc.internal.doclets.toolkit.resources.releases=ALL-UNNAMED
+--add-opens=jdk.javadoc/jdk.javadoc.internal.doclets.toolkit.resources=ALL-UNNAMED
+--add-opens=jdk.javadoc/jdk.javadoc.internal.doclets.toolkit.taglets=ALL-UNNAMED
+--add-opens=jdk.javadoc/jdk.javadoc.internal.doclets.toolkit.util.links=ALL-UNNAMED
+--add-opens=jdk.javadoc/jdk.javadoc.internal.doclets.toolkit.util=ALL-UNNAMED
+--add-opens=jdk.javadoc/jdk.javadoc.internal.doclets.toolkit=ALL-UNNAMED
+--add-opens=jdk.javadoc/jdk.javadoc.internal.doclint.resources=ALL-UNNAMED
+--add-opens=jdk.javadoc/jdk.javadoc.internal.doclint=ALL-UNNAMED
+--add-opens=jdk.javadoc/jdk.javadoc.internal.tool.resources=ALL-UNNAMED
+--add-opens=jdk.javadoc/jdk.javadoc.internal.tool=ALL-UNNAMED
+--add-opens=jdk.javadoc/jdk.javadoc.internal=ALL-UNNAMED
+--add-opens=jdk.jcmd/sun.tools.common=ALL-UNNAMED
+--add-opens=jdk.jcmd/sun.tools.jcmd=ALL-UNNAMED
+--add-opens=jdk.jcmd/sun.tools.jinfo=ALL-UNNAMED
+--add-opens=jdk.jcmd/sun.tools.jmap=ALL-UNNAMED
+--add-opens=jdk.jcmd/sun.tools.jps=ALL-UNNAMED
+--add-opens=jdk.jcmd/sun.tools.jstack=ALL-UNNAMED
+--add-opens=jdk.jcmd/sun.tools.jstat.resources=ALL-UNNAMED
+--add-opens=jdk.jcmd/sun.tools.jstat=ALL-UNNAMED
+--add-opens=jdk.jconsole/com.sun.tools.jconsole=ALL-UNNAMED
+--add-opens=jdk.jconsole/sun.tools.jconsole.inspector=ALL-UNNAMED
+--add-opens=jdk.jconsole/sun.tools.jconsole.resources=ALL-UNNAMED
+--add-opens=jdk.jconsole/sun.tools.jconsole=ALL-UNNAMED
+--add-opens=jdk.jdeps/com.sun.tools.classfile=ALL-UNNAMED
+--add-opens=jdk.jdeps/com.sun.tools.javap.resources=ALL-UNNAMED
+--add-opens=jdk.jdeps/com.sun.tools.javap=ALL-UNNAMED
+--add-opens=jdk.jdeps/com.sun.tools.jdeprscan.resources=ALL-UNNAMED
+--add-opens=jdk.jdeps/com.sun.tools.jdeprscan.scan=ALL-UNNAMED
+--add-opens=jdk.jdeps/com.sun.tools.jdeprscan=ALL-UNNAMED
+--add-opens=jdk.jdeps/com.sun.tools.jdeps.resources=ALL-UNNAMED
+--add-opens=jdk.jdeps/com.sun.tools.jdeps=ALL-UNNAMED
+--add-opens=jdk.jdi/com.sun.jdi.connect.spi=ALL-UNNAMED
+--add-opens=jdk.jdi/com.sun.jdi.connect=ALL-UNNAMED
+--add-opens=jdk.jdi/com.sun.jdi.event=ALL-UNNAMED
+--add-opens=jdk.jdi/com.sun.jdi.request=ALL-UNNAMED
+--add-opens=jdk.jdi/com.sun.jdi=ALL-UNNAMED
+--add-opens=jdk.jdi/com.sun.tools.example.debug.expr=ALL-UNNAMED
+--add-opens=jdk.jdi/com.sun.tools.example.debug.tty=ALL-UNNAMED
+--add-opens=jdk.jdi/com.sun.tools.jdi.resources=ALL-UNNAMED
+--add-opens=jdk.jdi/com.sun.tools.jdi=ALL-UNNAMED
+--add-opens=jdk.jfr/jdk.jfr.consumer=ALL-UNNAMED
+--add-opens=jdk.jfr/jdk.jfr.events=ALL-UNNAMED
+--add-opens=jdk.jfr/jdk.jfr.internal.consumer=ALL-UNNAMED
+--add-opens=jdk.jfr/jdk.jfr.internal.dcmd=ALL-UNNAMED
+--add-opens=jdk.jfr/jdk.jfr.internal.handlers=ALL-UNNAMED
+--add-opens=jdk.jfr/jdk.jfr.internal.instrument=ALL-UNNAMED
+--add-opens=jdk.jfr/jdk.jfr.internal.jfc.model=ALL-UNNAMED
+--add-opens=jdk.jfr/jdk.jfr.internal.jfc=ALL-UNNAMED
+--add-opens=jdk.jfr/jdk.jfr.internal.management=ALL-UNNAMED
+--add-opens=jdk.jfr/jdk.jfr.internal.settings=ALL-UNNAMED
+--add-opens=jdk.jfr/jdk.jfr.internal.test=ALL-UNNAMED
+--add-opens=jdk.jfr/jdk.jfr.internal.tool=ALL-UNNAMED
+--add-opens=jdk.jfr/jdk.jfr.internal.types=ALL-UNNAMED
+--add-opens=jdk.jfr/jdk.jfr.internal=ALL-UNNAMED
+--add-opens=jdk.jfr/jdk.jfr=ALL-UNNAMED
+--add-opens=jdk.jlink/jdk.tools.jimage.resources=ALL-UNNAMED
+--add-opens=jdk.jlink/jdk.tools.jimage=ALL-UNNAMED
+--add-opens=jdk.jlink/jdk.tools.jlink.builder=ALL-UNNAMED
+--add-opens=jdk.jlink/jdk.tools.jlink.internal.plugins=ALL-UNNAMED
+--add-opens=jdk.jlink/jdk.tools.jlink.internal=ALL-UNNAMED
+--add-opens=jdk.jlink/jdk.tools.jlink.plugin=ALL-UNNAMED
+--add-opens=jdk.jlink/jdk.tools.jlink.resources=ALL-UNNAMED
+--add-opens=jdk.jlink/jdk.tools.jmod.resources=ALL-UNNAMED
+--add-opens=jdk.jlink/jdk.tools.jmod=ALL-UNNAMED
+--add-opens=jdk.jpackage/jdk.jpackage.internal.resources=ALL-UNNAMED
+--add-opens=jdk.jpackage/jdk.jpackage.internal=ALL-UNNAMED
+--add-opens=jdk.jpackage/jdk.jpackage.main=ALL-UNNAMED
+--add-opens=jdk.jshell/jdk.internal.jshell.debug=ALL-UNNAMED
+--add-opens=jdk.jshell/jdk.internal.jshell.tool.resources=ALL-UNNAMED
+--add-opens=jdk.jshell/jdk.internal.jshell.tool=ALL-UNNAMED
+--add-opens=jdk.jshell/jdk.jshell.execution=ALL-UNNAMED
+--add-opens=jdk.jshell/jdk.jshell.resources=ALL-UNNAMED
+--add-opens=jdk.jshell/jdk.jshell.spi=ALL-UNNAMED
+--add-opens=jdk.jshell/jdk.jshell.tool.resources=ALL-UNNAMED
+--add-opens=jdk.jshell/jdk.jshell.tool=ALL-UNNAMED
+--add-opens=jdk.jshell/jdk.jshell=ALL-UNNAMED
+--add-opens=jdk.jsobject/netscape.javascript=ALL-UNNAMED
+--add-opens=jdk.jstatd/sun.jvmstat.monitor.remote=ALL-UNNAMED
+--add-opens=jdk.jstatd/sun.jvmstat.perfdata.monitor.protocol.rmi=ALL-UNNAMED
+--add-opens=jdk.jstatd/sun.tools.jstatd=ALL-UNNAMED
+--add-opens=jdk.localedata/sun.text.resources.cldr.ext=ALL-UNNAMED
+--add-opens=jdk.localedata/sun.text.resources.ext=ALL-UNNAMED
+--add-opens=jdk.localedata/sun.util.resources.cldr.ext=ALL-UNNAMED
+--add-opens=jdk.localedata/sun.util.resources.cldr.provider=ALL-UNNAMED
+--add-opens=jdk.localedata/sun.util.resources.ext=ALL-UNNAMED
+--add-opens=jdk.localedata/sun.util.resources.provider=ALL-UNNAMED
+--add-opens=jdk.management.agent/jdk.internal.agent.resources=ALL-UNNAMED
+--add-opens=jdk.management.agent/jdk.internal.agent.spi=ALL-UNNAMED
+--add-opens=jdk.management.agent/jdk.internal.agent=ALL-UNNAMED
+--add-opens=jdk.management.agent/sun.management.jdp=ALL-UNNAMED
+--add-opens=jdk.management.agent/sun.management.jmxremote=ALL-UNNAMED
+--add-opens=jdk.management.jfr/jdk.management.jfr.internal=ALL-UNNAMED
+--add-opens=jdk.management.jfr/jdk.management.jfr=ALL-UNNAMED
+--add-opens=jdk.management/com.sun.management.internal=ALL-UNNAMED
+--add-opens=jdk.management/com.sun.management=ALL-UNNAMED
+--add-opens=jdk.naming.dns/com.sun.jndi.dns=ALL-UNNAMED
+--add-opens=jdk.naming.dns/com.sun.jndi.url.dns=ALL-UNNAMED
+--add-opens=jdk.naming.rmi/com.sun.jndi.rmi.registry=ALL-UNNAMED
+--add-opens=jdk.naming.rmi/com.sun.jndi.url.rmi=ALL-UNNAMED
+--add-opens=jdk.net/jdk.net=ALL-UNNAMED
+--add-opens=jdk.net/jdk.nio=ALL-UNNAMED
+--add-opens=jdk.nio.mapmode/jdk.nio.mapmode=ALL-UNNAMED
+--add-opens=jdk.random/jdk.random=ALL-UNNAMED
+--add-opens=jdk.sctp/com.sun.nio.sctp=ALL-UNNAMED
+--add-opens=jdk.sctp/sun.nio.ch.sctp=ALL-UNNAMED
+--add-opens=jdk.security.auth/com.sun.security.auth.callback=ALL-UNNAMED
+--add-opens=jdk.security.auth/com.sun.security.auth.login=ALL-UNNAMED
+--add-opens=jdk.security.auth/com.sun.security.auth.module=ALL-UNNAMED
+--add-opens=jdk.security.auth/com.sun.security.auth=ALL-UNNAMED
+--add-opens=jdk.security.jgss/com.sun.security.jgss=ALL-UNNAMED
+--add-opens=jdk.security.jgss/com.sun.security.sasl.gsskerb=ALL-UNNAMED
+--add-opens=jdk.unsupported.desktop/jdk.swing.interop.internal=ALL-UNNAMED
+--add-opens=jdk.unsupported.desktop/jdk.swing.interop=ALL-UNNAMED
+--add-opens=jdk.unsupported/com.sun.nio.file=ALL-UNNAMED
+--add-opens=jdk.unsupported/sun.misc=ALL-UNNAMED
+--add-opens=jdk.unsupported/sun.reflect=ALL-UNNAMED
+--add-opens=jdk.xml.dom/org.w3c.dom.css=ALL-UNNAMED
+--add-opens=jdk.xml.dom/org.w3c.dom.html=ALL-UNNAMED
+--add-opens=jdk.xml.dom/org.w3c.dom.stylesheets=ALL-UNNAMED
+--add-opens=jdk.xml.dom/org.w3c.dom.xpath=ALL-UNNAMED
+--add-opens=jdk.zipfs/jdk.nio.zipfs=ALL-UNNAMED
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 f2cf17e..b377cc3 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
@@ -21,6 +21,7 @@
 import static org.apache.geode.distributed.ConfigurationProperties.SSL_KEYSTORE_PASSWORD;
 import static org.apache.geode.distributed.ConfigurationProperties.SSL_TRUSTSTORE;
 import static org.apache.geode.distributed.ConfigurationProperties.SSL_TRUSTSTORE_PASSWORD;
+import static org.apache.geode.perftest.jvms.JavaVersion.v17;
 
 import java.net.InetAddress;
 import java.net.UnknownHostException;
@@ -102,8 +103,13 @@
 
   String[] buildCommand(String rmiHost, int rmiPort, JVMMapping jvmConfig) {
 
+    final JavaVersion javaVersion = JavaVersion.current();
+
     List<String> command = new ArrayList<>();
     command.add(System.getProperty("java.home") + "/bin/java");
+    if (javaVersion.atLeast(v17)) {
+      command.add("@" + jvmConfig.getLibDir() + "/java.args");
+    }
     command.add("-classpath");
     command.add(jvmConfig.getLibDir() + "/*");
     command.add("-Djava.library.path=" + System.getProperty("user.home") + "/META-INF/native");
diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/parameters/JavaVersion.java b/harness/src/main/java/org/apache/geode/perftest/jvms/JavaVersion.java
similarity index 91%
rename from geode-benchmarks/src/main/java/org/apache/geode/benchmark/parameters/JavaVersion.java
rename to harness/src/main/java/org/apache/geode/perftest/jvms/JavaVersion.java
index f7e182b..6f0784e 100644
--- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/parameters/JavaVersion.java
+++ b/harness/src/main/java/org/apache/geode/perftest/jvms/JavaVersion.java
@@ -13,10 +13,10 @@
  * the License.
  */
 
-package org.apache.geode.benchmark.parameters;
+package org.apache.geode.perftest.jvms;
 
 public enum JavaVersion {
-  v8, v11, v12, v13, v16;
+  v8, v11, v12, v13, v16, v17;
 
   public static JavaVersion current() {
     return valueOfVersion(System.getProperty("java.runtime.version"));
@@ -33,6 +33,8 @@
       return v13;
     } else if (javaVersion.matches("^16\\b.*")) {
       return v16;
+    } else if (javaVersion.matches("^17\\b.*")) {
+      return v17;
     }
     throw new IllegalStateException("Unknown version " + javaVersion);
   }
diff --git a/harness/src/main/java/org/apache/geode/perftest/jvms/RemoteJVMFactory.java b/harness/src/main/java/org/apache/geode/perftest/jvms/RemoteJVMFactory.java
index 0294035..6ae4581 100644
--- a/harness/src/main/java/org/apache/geode/perftest/jvms/RemoteJVMFactory.java
+++ b/harness/src/main/java/org/apache/geode/perftest/jvms/RemoteJVMFactory.java
@@ -23,7 +23,6 @@
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
-import java.io.InputStream;
 import java.security.InvalidKeyException;
 import java.security.KeyStore;
 import java.security.KeyStoreException;
@@ -34,7 +33,6 @@
 import java.security.cert.CertificateException;
 import java.security.cert.X509Certificate;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
@@ -119,13 +117,24 @@
         controllerFactory.createController(new SharedContext(mapping), numWorkers);
 
     classPathCopier.copyToNodes(infra, node -> getLibDir(mapping, node));
-    File keyStore = createKeystore();
-    infra.copyToNodes(Arrays.asList(keyStore), node -> getLibDir(mapping, node), false);
 
-    InputStream inputStream = getClass().getClassLoader().getResourceAsStream("security.json");
-    File file = new File("security.json");
-    FileUtils.copyInputStreamToFile(inputStream, file);
-    infra.copyToNodes(Arrays.asList(file), node -> getLibDir(mapping, node), false);
+    final List<File> files = new ArrayList<>();
+    files.add(createKeystore());
+
+    final File securityJsonFile = new File("security.json");
+    FileUtils.copyURLToFile(getClass().getClassLoader().getResource("security.json"),
+        securityJsonFile);
+    files.add(securityJsonFile);
+
+    if (JavaVersion.current().atLeast(JavaVersion.v17)) {
+      final File javaArgsFile = new File("java.args");
+      FileUtils.copyURLToFile(
+          getClass().getClassLoader().getResource("open-all-jdk-packages-linux-openjdk-17"),
+          javaArgsFile);
+      files.add(javaArgsFile);
+    }
+
+    infra.copyToNodes(files, node -> getLibDir(mapping, node), false);
 
     CompletableFuture<Void> processesExited = jvmLauncher.launchProcesses(infra, RMI_PORT, mapping);
 
diff --git a/infrastructure/scripts/aws/image/packer.json b/infrastructure/scripts/aws/image/packer.json
index 8ae6752..1c26a8a 100644
--- a/infrastructure/scripts/aws/image/packer.json
+++ b/infrastructure/scripts/aws/image/packer.json
@@ -67,11 +67,12 @@
         "sudo add-apt-repository \"deb [arch=amd64] https://apt.bell-sw.com/ stable main\"",
         "sudo apt update",
         "sudo apt-get -o Dpkg::Options::=\"--force-confnew\" upgrade -y",
-        "sudo apt install -y java-common bellsoft-java8 bellsoft-java11 unzip dstat",
+        "sudo apt install -y java-common bellsoft-java8 bellsoft-java11 bellsoft-java17 unzip dstat",
         "sudo update-java-alternatives -s bellsoft-java8-amd64",
         "sudo mv /tmp/defaults.cfg /etc/cloud/cloud.cfg.d/defaults.cfg",
         "sudo sh -c \"echo 'StrictHostKeyChecking no' >> /etc/ssh/ssh_config\"",
         "sudo sh -c \"echo 'net.ipv4.tcp_syncookies = 0' >> /etc/sysctl.conf\"",
+        "sudo sh -c \"echo 'vm.max_map_count = 250000' >> /etc/sysctl.conf\"",
         "sudo apt-get remove -y unattended-upgrades",
         "sudo apt-get -y autoremove"
       ]