This is an automated email from the ASF dual-hosted git repository. jbarrett pushed a commit to branch develop in repository https://gitbox.apache.org/repos/asf/geode-benchmarks.git
The following commit(s) were added to refs/heads/develop by this push: new 051ec9b User can run benchmarks with SecurityManager (#91) 051ec9b is described below commit 051ec9bcdcacbcedd441841a61c45a7989c403b2 Author: Murtuza Boxwala <mboxw...@pivotal.io> AuthorDate: Mon Jul 22 15:31:28 2019 -0400 User can run benchmarks with SecurityManager (#91) Co-authored-by: Murtuza Boxwala <mboxw...@pivotal.io> Co-authored-by: Kamilla Aslami <kasl...@pivotal.io> --- .gitignore | 2 + README.md | 19 +++--- geode-benchmarks/build.gradle | 1 + .../benchmark/parameters/GeodeProperties.java | 43 ++++++++++++- .../geode/benchmark/security/ExampleAuthInit.java | 66 ++++++++++++++++++++ .../apache/geode/benchmark/tasks/StartClient.java | 5 +- .../apache/geode/benchmark/tasks/StartLocator.java | 5 +- .../apache/geode/benchmark/tasks/StartServer.java | 6 +- .../benchmark/topology/ClientServerTopology.java | 22 ++++--- .../topology/ClientServerTopologyTest.java | 36 +++++++---- .../geode/perftest/jvms/RemoteJVMFactory.java | 17 ++--- harness/src/main/resources/security.json | 72 ++++++++++++++++++++++ infrastructure/scripts/aws/README.md | 2 +- 13 files changed, 243 insertions(+), 53 deletions(-) diff --git a/.gitignore b/.gitignore index a60eafb..7ab8bfd 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,5 @@ out build/ output*/ temp-self-signed.jks +geode-benchmarks/security.json +harness/security.json diff --git a/README.md b/README.md index 0387b6f..e3f6534 100644 --- a/README.md +++ b/README.md @@ -49,15 +49,16 @@ For example: ``` Options: - - -Phosts : Hosts used by benchmarks on the order of client,locator,server,server (-Phosts=localhost,localhost,localhost,localhost) - -PoutputDir : Results output directory (-PoutputDir=/tmp/results) - -PtestJVM : Path to an alternative JVM for running the client, locator, and servers. If not specified JAVA_HOME will be used. Note all compilation tasks will still use JAVA_HOME. - -PwithSsl : Flag to run geode with SSL. A self-signed certificate will be generated at runtime. - --tests : Specific benchmarks to run (--tests=PartitionedPutBenchmark) - -d : Debug - -i : Info - +``` + -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. + -PwithSsl : Flag to run geode with SSL. A self-signed certificate will be generated at runtime. + -PwithSecurityManager : Flag to start Geode with the example implementation of SecurityManager + --tests : Specific benchmarks to run (--tests=PartitionedPutBenchmark) + -d : Debug + -i : Info +``` ### Running in aws This project includes some scripts to automate running benchmarks in AWS. See the diff --git a/geode-benchmarks/build.gradle b/geode-benchmarks/build.gradle index ffd8ab5..715b6b7 100644 --- a/geode-benchmarks/build.gradle +++ b/geode-benchmarks/build.gradle @@ -77,6 +77,7 @@ task benchmark(type: Test) { systemProperty 'TEST_METADATA', project.findProperty('metadata') systemProperty 'OUTPUT_DIR', outputDir systemProperty 'withSsl', project.hasProperty('withSsl') + systemProperty 'withSecurityManager', project.hasProperty('withSecurityManager') systemProperty 'benchmark.profiler.argument', project.findProperty('benchmark.profiler.argument') doFirst { diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/parameters/GeodeProperties.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/parameters/GeodeProperties.java index 0df623e..f3b8231 100644 --- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/parameters/GeodeProperties.java +++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/parameters/GeodeProperties.java @@ -26,6 +26,7 @@ import static org.apache.geode.distributed.ConfigurationProperties.LOG_FILE_SIZE import static org.apache.geode.distributed.ConfigurationProperties.LOG_LEVEL; import static org.apache.geode.distributed.ConfigurationProperties.MEMBER_TIMEOUT; import static org.apache.geode.distributed.ConfigurationProperties.REMOVE_UNRESPONSIVE_CLIENT; +import static org.apache.geode.distributed.ConfigurationProperties.SECURITY_MANAGER; import static org.apache.geode.distributed.ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER; import static org.apache.geode.distributed.ConfigurationProperties.SSL_ENABLED_COMPONENTS; import static org.apache.geode.distributed.ConfigurationProperties.STATISTIC_SAMPLING_ENABLED; @@ -34,6 +35,7 @@ import static org.apache.geode.security.SecurableCommunicationChannels.ALL; import java.util.Properties; +import org.apache.geode.benchmark.security.ExampleAuthInit; public class GeodeProperties { @@ -55,12 +57,12 @@ public class GeodeProperties { properties.setProperty(USE_CLUSTER_CONFIGURATION, "false"); properties.setProperty(SERIALIZABLE_OBJECT_FILTER, "benchmark.geode.data.**"); - return properties; + return withOptions(properties); } public static Properties locatorProperties() { // Locator properties are the same as the server properties right now - return serverProperties(); + return withOptions(serverProperties()); } public static Properties clientProperties() { @@ -71,12 +73,47 @@ public class GeodeProperties { properties.setProperty(STATISTIC_SAMPLING_ENABLED, "true"); properties.setProperty(MEMBER_TIMEOUT, "8000"); - return properties; + properties.setProperty("security-username", "superUser"); + properties.setProperty("security-password", "123"); + properties.setProperty("security-client-auth-init", ExampleAuthInit.class.getName()); + + return withOptions(properties); } + public static Properties withSecurityManager(Properties properties) { + properties.setProperty(SECURITY_MANAGER, + "org.apache.geode.examples.security.ExampleSecurityManager"); + properties.setProperty("security-username", "superUser"); + properties.setProperty("security-password", "123"); + return properties; + } public static Properties withSsl(Properties properties) { properties.setProperty(SSL_ENABLED_COMPONENTS, ALL); return properties; } + + private static boolean isSecurityManagerEnabled() { + return isPropertySet("withSecurityManager"); + } + + private static boolean isSslEnabled() { + return isPropertySet("withSsl"); + } + + private static boolean isPropertySet(String withSecurityManager) { + String withSecurityManagerArg = System.getProperty(withSecurityManager); + return withSecurityManagerArg != null && withSecurityManagerArg.equals("true"); + } + + private static Properties withOptions(Properties properties) { + if (isSslEnabled()) { + properties = withSsl(properties); + } + + if (isSecurityManagerEnabled()) { + properties = withSecurityManager(properties); + } + return properties; + } } diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/security/ExampleAuthInit.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/security/ExampleAuthInit.java new file mode 100644 index 0000000..42050df --- /dev/null +++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/security/ExampleAuthInit.java @@ -0,0 +1,66 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.geode.benchmark.security; + +import java.util.Properties; + +import org.apache.geode.LogWriter; +import org.apache.geode.distributed.DistributedMember; +import org.apache.geode.security.AuthInitialize; +import org.apache.geode.security.AuthenticationFailedException; + +public class ExampleAuthInit implements AuthInitialize { + + private static final String USER_NAME = "security-username"; + private static final String PASSWORD = "security-password"; + + private static final String INSECURE_PASSWORD_FOR_EVERY_USER = "123"; + + /** + * The implementer would use their existing infrastructure (e.g., ldap) here to populate these + * properties with the user credentials. These properties will in turn be handled by the + * implementer's design of SecurityManager to authenticate users and authorize operations. + */ + @Override + public Properties getCredentials(Properties securityProps) throws AuthenticationFailedException { + Properties credentials = new Properties(); + String userName = securityProps.getProperty(USER_NAME); + if (userName == null) { + throw new AuthenticationFailedException( + "ExampleAuthInit: user name property [" + USER_NAME + "] not set."); + } + credentials.setProperty(USER_NAME, userName); + credentials.setProperty(PASSWORD, INSECURE_PASSWORD_FOR_EVERY_USER); + return credentials; + } + + @Override + public void close() {} + + @Override + @Deprecated + public void init(LogWriter systemLogger, LogWriter securityLogger) + throws AuthenticationFailedException {} + + @Override + @Deprecated + public Properties getCredentials(Properties securityProps, DistributedMember server, + boolean isPeer) throws AuthenticationFailedException { + return getCredentials(securityProps); + } +} diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/StartClient.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/StartClient.java index c116938..77bb847 100644 --- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/StartClient.java +++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/StartClient.java @@ -18,7 +18,6 @@ package org.apache.geode.benchmark.tasks; import static org.apache.geode.benchmark.parameters.GeodeProperties.clientProperties; -import static org.apache.geode.benchmark.parameters.GeodeProperties.withSsl; import java.io.File; import java.net.InetAddress; @@ -47,9 +46,7 @@ public class StartClient implements Task { InetAddress locator = context.getHostsForRole("locator").iterator().next(); String statsFile = new File(context.getOutputDir(), "stats.gfs").getAbsolutePath(); - String withSslArg = System.getProperty("withSsl"); - Properties properties = (withSslArg != null) - ? withSsl(clientProperties()) : clientProperties(); + Properties properties = clientProperties(); ClientCache clientCache = new ClientCacheFactory(properties) .setPdxSerializer(new ReflectionBasedAutoSerializer("benchmark.geode.data.*")) diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/StartLocator.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/StartLocator.java index dede5c6..c5f53ff 100644 --- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/StartLocator.java +++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/StartLocator.java @@ -18,7 +18,6 @@ package org.apache.geode.benchmark.tasks; import static org.apache.geode.benchmark.parameters.GeodeProperties.locatorProperties; -import static org.apache.geode.benchmark.parameters.GeodeProperties.withSsl; import java.io.File; import java.net.InetAddress; @@ -41,9 +40,7 @@ public class StartLocator implements Task { @Override public void run(TestContext context) throws Exception { - String withSslArg = System.getProperty("withSsl"); - Properties properties = (withSslArg != null) - ? withSsl(locatorProperties()) : locatorProperties(); + Properties properties = locatorProperties(); String statsFile = new File(context.getOutputDir(), "stats.gfs").getAbsolutePath(); properties.setProperty(ConfigurationProperties.STATISTIC_ARCHIVE_FILE, statsFile); diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/StartServer.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/StartServer.java index cd50e88..99b1543 100644 --- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/StartServer.java +++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/StartServer.java @@ -18,7 +18,6 @@ package org.apache.geode.benchmark.tasks; import static org.apache.geode.benchmark.parameters.GeodeProperties.serverProperties; -import static org.apache.geode.benchmark.parameters.GeodeProperties.withSsl; import java.io.File; import java.net.InetAddress; @@ -45,9 +44,8 @@ public class StartServer implements Task { @Override public void run(TestContext context) throws Exception { - String withSslArg = System.getProperty("withSsl"); - Properties properties = (withSslArg != null) - ? withSsl(serverProperties()) : serverProperties(); + + Properties properties = serverProperties(); String locatorString = LocatorUtil.getLocatorString(context, locatorPort); String statsFile = new File(context.getOutputDir(), "stats.gfs").getAbsolutePath(); diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/topology/ClientServerTopology.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/topology/ClientServerTopology.java index 20d20fb..384fa92 100644 --- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/topology/ClientServerTopology.java +++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/topology/ClientServerTopology.java @@ -49,7 +49,8 @@ public class ClientServerTopology { static final int NUM_LOCATORS = 1; static final int NUM_SERVERS = 2; static final int NUM_CLIENTS = 1; - private static final String WITH_SSL_ARGUMENT = "-DwithSsl"; + private static final String WITH_SSL_ARGUMENT = "-DwithSsl=true"; + private static final String WITH_SECURITY_MANAGER_ARGUMENT = "-DwithSecurityManager=true"; public static void configure(TestConfig testConfig) { testConfig.role(LOCATOR, NUM_LOCATORS); @@ -68,19 +69,24 @@ public class ClientServerTopology { testConfig.jvmArgs(SERVER, JVM8_ARGS); } - String withSslArg = System.getProperty("withSsl"); - if (withSslArg != null && withSslArg.equals("true")) { - logger.info("Configuring JVMs to run with SSL enabled"); - testConfig.jvmArgs(CLIENT, Arrays.append(JVM_ARGS, WITH_SSL_ARGUMENT)); - testConfig.jvmArgs(LOCATOR, Arrays.append(JVM_ARGS, WITH_SSL_ARGUMENT)); - testConfig.jvmArgs(SERVER, Arrays.append(JVM_ARGS, WITH_SSL_ARGUMENT)); - } + addToTestConfig(testConfig, "withSsl", WITH_SSL_ARGUMENT); + addToTestConfig(testConfig, "withSecurityManager", WITH_SECURITY_MANAGER_ARGUMENT); testConfig.before(new StartLocator(LOCATOR_PORT), LOCATOR); testConfig.before(new StartServer(LOCATOR_PORT), SERVER); testConfig.before(new StartClient(LOCATOR_PORT), CLIENT); } + private static void addToTestConfig(TestConfig testConfig, String systemPropertyKey, + String jvmArgument) { + if (Boolean.getBoolean(systemPropertyKey)) { + logger.info("Configuring JVMs to run with " + jvmArgument); + testConfig.jvmArgs(CLIENT, jvmArgument); + testConfig.jvmArgs(LOCATOR, jvmArgument); + testConfig.jvmArgs(SERVER, jvmArgument); + } + } + private static final String[] appendIfNotEmpty(String[] a, String b) { if (null == b || b.length() == 0) { return a; diff --git a/geode-benchmarks/src/test/java/org/apache/geode/benchmark/topology/ClientServerTopologyTest.java b/geode-benchmarks/src/test/java/org/apache/geode/benchmark/topology/ClientServerTopologyTest.java index fd95157..fe5aa64 100644 --- a/geode-benchmarks/src/test/java/org/apache/geode/benchmark/topology/ClientServerTopologyTest.java +++ b/geode-benchmarks/src/test/java/org/apache/geode/benchmark/topology/ClientServerTopologyTest.java @@ -17,6 +17,7 @@ package org.apache.geode.benchmark.topology; import static org.apache.geode.benchmark.parameters.JVMParameters.JVM8_ARGS; +import static org.apache.geode.benchmark.parameters.JVMParameters.JVM_ARGS; import static org.assertj.core.api.Assertions.assertThat; import org.junit.jupiter.api.AfterEach; @@ -32,6 +33,7 @@ public class ClientServerTopologyTest { @AfterEach public void clearProperties() { System.clearProperty("withSsl"); + System.clearProperty("withSecurityManager"); } @Test @@ -39,14 +41,14 @@ public class ClientServerTopologyTest { System.setProperty("withSsl", "true"); TestConfig testConfig = new TestConfig(); ClientServerTopology.configure(testConfig); - assertThat(testConfig.getJvmArgs().get("client")).contains("-DwithSsl"); + assertThat(testConfig.getJvmArgs().get("client")).contains("-DwithSsl=true"); } @Test public void configWithNoSsl() { TestConfig testConfig = new TestConfig(); ClientServerTopology.configure(testConfig); - assertThat(testConfig.getJvmArgs().get("client")).doesNotContain("-DwithSsl"); + assertThat(testConfig.getJvmArgs().get("client")).doesNotContain("-DwithSsl=true"); } @Test @@ -54,36 +56,44 @@ public class ClientServerTopologyTest { System.setProperty("java.runtime.version", "1.8.0_212"); TestConfig testConfig = new TestConfig(); ClientServerTopology.configure(testConfig); - assertThat(testConfig.getJvmArgs().get("client")).doesNotContain("-DwithSsl"); assertThat(testConfig.getJvmArgs().get("client")).contains(JVM8_ARGS); } @Test - public void configWithJava9OrHigher() { + public void configWithJava9() { System.setProperty("java.runtime.version", "9.0.1"); TestConfig testConfig = new TestConfig(); ClientServerTopology.configure(testConfig); - assertThat(testConfig.getJvmArgs().get("client")).doesNotContain("-DwithSsl"); assertThat(testConfig.getJvmArgs().get("client")).doesNotContain(JVM8_ARGS); } @Test - public void configWithSslAndJava8() { - System.setProperty("withSsl", "true"); - System.setProperty("java.runtime.version", "1.8.0_212"); + public void configWithoutSecurityManager() { TestConfig testConfig = new TestConfig(); ClientServerTopology.configure(testConfig); - assertThat(testConfig.getJvmArgs().get("client")).contains("-DwithSsl"); - assertThat(testConfig.getJvmArgs().get("client")).contains(JVM8_ARGS); + assertThat(testConfig.getJvmArgs().get("client")).doesNotContain("-DwithSecurityManager=true"); } @Test - public void configWithSslAndJava9() { - System.setProperty("withSsl", "true"); + public void configWithSecurityManager() { + System.setProperty("withSecurityManager", "true"); + TestConfig testConfig = new TestConfig(); + ClientServerTopology.configure(testConfig); + assertThat(testConfig.getJvmArgs().get("client")).contains("-DwithSecurityManager=true"); + } + + @Test + public void configWithSecurityManagerAndSslAndJava9() { + System.setProperty("withSecurityManager", "true"); System.setProperty("java.runtime.version", "9.0.1"); + System.setProperty("withSsl", "true"); TestConfig testConfig = new TestConfig(); + ClientServerTopology.configure(testConfig); - assertThat(testConfig.getJvmArgs().get("client")).contains("-DwithSsl"); + + assertThat(testConfig.getJvmArgs().get("client")).contains("-DwithSecurityManager=true"); + assertThat(testConfig.getJvmArgs().get("client")).contains("-DwithSsl=true"); + assertThat(testConfig.getJvmArgs().get("client")).contains(JVM_ARGS); assertThat(testConfig.getJvmArgs().get("client")).doesNotContain(JVM8_ARGS); } } 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 7eb84a5..665d726 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 @@ -17,11 +17,13 @@ package org.apache.geode.perftest.jvms; + import static java.util.concurrent.TimeUnit.DAYS; 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; @@ -41,6 +43,7 @@ import java.util.Set; import java.util.concurrent.CompletableFuture; import java.util.concurrent.TimeUnit; +import org.apache.commons.io.FileUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import sun.security.tools.keytool.CertAndKeyGen; @@ -66,8 +69,8 @@ public class RemoteJVMFactory { public static final String OUTPUT_DIR = "OUTPUT_DIR"; public static final String JVM_ID = "JVM_ID"; public static final int RMI_PORT = 33333; - public static final String CLASSPATH = System.getProperty("java.class.path"); - public static final String JAVA_HOME = System.getProperty("java.home"); + private static final String CLASSPATH = System.getProperty("java.class.path"); + private static final String JAVA_HOME = System.getProperty("java.home"); private final JVMLauncher jvmLauncher; private final ClassPathCopier classPathCopier; private final ControllerFactory controllerFactory; @@ -118,6 +121,11 @@ public class RemoteJVMFactory { 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); + CompletableFuture<Void> processesExited = jvmLauncher.launchProcesses(infra, RMI_PORT, mapping); if (!controller.waitForWorkers(5, TimeUnit.MINUTES)) { @@ -139,11 +147,6 @@ public class RemoteJVMFactory { .getLibDir(); } - private String getOutputDir(List<JVMMapping> mapping, Infrastructure.Node node) { - return getJvmMapping(mapping, node) - .getOutputDir(); - } - private File createKeystore() throws KeyStoreException, IOException, CertificateException, NoSuchAlgorithmException, NoSuchProviderException, InvalidKeyException, SignatureException { diff --git a/harness/src/main/resources/security.json b/harness/src/main/resources/security.json new file mode 100644 index 0000000..9d401cd --- /dev/null +++ b/harness/src/main/resources/security.json @@ -0,0 +1,72 @@ +{ + "roles": [ + { + "name": "data", + "operationsAllowed": [ + "DATA:MANAGE", + "DATA:WRITE", + "DATA:READ" + ] + }, + { + "name": "cluster", + "operationsAllowed": [ + "CLUSTER:MANAGE", + "CLUSTER:WRITE", + "CLUSTER:READ" + ] + }, + { + "name": "region1data", + "operationsAllowed": [ + "DATA:MANAGE", + "DATA:WRITE", + "DATA:READ" + ], + "regions": ["region1"] + }, + { + "name": "dataReader", + "operationsAllowed": [ + "DATA:READ" + ] + }, + { + "name": "dataWriter", + "operationsAllowed": [ + "DATA:WRITE" + ] + } + ], + "users": [ + { + "name": "superUser", + "password": "123", + "roles": [ + "cluster", + "data" + ] + }, + { + "name": "region1dataAdmin", + "password": "123", + "roles": [ + "region1data" + ] + }, + { + "name": "dataReader", + "password": "123", + "roles": [ + "dataReader" + ] + }, + { + "name": "dataWriter", + "password": "123", + "roles": [ + "dataWriter" + ] + } + ] +} diff --git a/infrastructure/scripts/aws/README.md b/infrastructure/scripts/aws/README.md index 227fb01..badff0a 100644 --- a/infrastructure/scripts/aws/README.md +++ b/infrastructure/scripts/aws/README.md @@ -172,7 +172,7 @@ monitor the test. ## Example ```bash -./launch_cluster --tag profiling --count 4 +./launch_cluster.sh --tag profiling --count 4 ./copy_to_cluster.sh --tag profiling -- /Applications/YourKit-Java-Profiler-2019.1.app/Contents/Resources/bin/linux-x86-64/libyjpagent.so . ./run_tests.sh --tag profiling --geode-branch develop -- -i -Pbenchmark.profiler.argument=-agentpath:/home/geode/libyjpagent.so=disablestacktelemetry,exceptions=disable,delay=60000,sessionname=JVM_ROLE-JVM_ID ./destroy_cluster.sh --tag profiling