modules/common/cassandra-ccm/cassandra-ccm-core/pom.xml
| 2
modules/helpers/metrics-simulator/src/main/assembly/bin/rhq-ms
| 46 ------
modules/helpers/metrics-simulator/src/main/assembly/bin/rhq-ms.sh
| 47 ++++++
modules/helpers/metrics-simulator/src/main/java/org/rhq/metrics/simulator/Simulator.java
| 71 ++++++----
modules/helpers/metrics-simulator/src/main/java/org/rhq/metrics/simulator/SimulatorCLI.java
| 45 ++++++
modules/helpers/metrics-simulator/src/main/java/org/rhq/metrics/simulator/StatsCollector.java
| 4
modules/helpers/metrics-simulator/src/main/scripts/assembly.xml
| 2
modules/helpers/metrics-simulator/src/test/java/org/rhq/metrics/simulator/SimulatorTest.java
| 7
8 files changed, 146 insertions(+), 78 deletions(-)
New commits:
commit 621335689754b6ebd4e0fa985f19f3ef59b2f881
Author: John Sanda <jsanda(a)redhat.com>
Date: Thu Feb 28 14:36:11 2013 -0500
more clean up for running the simulator from the command line
diff --git a/modules/common/cassandra-ccm/cassandra-ccm-core/pom.xml
b/modules/common/cassandra-ccm/cassandra-ccm-core/pom.xml
index 82530a7..73c8e44 100644
--- a/modules/common/cassandra-ccm/cassandra-ccm-core/pom.xml
+++ b/modules/common/cassandra-ccm/cassandra-ccm-core/pom.xml
@@ -89,7 +89,7 @@
<delimiters>
<delimiter>${*}</delimiter>
</delimiters>
- <escapeString>\</escapeString>
+ <escapeString>[escape]</escapeString>
</configuration>
</plugin>
diff --git a/modules/helpers/metrics-simulator/src/main/assembly/bin/rhq-ms
b/modules/helpers/metrics-simulator/src/main/assembly/bin/rhq-ms
deleted file mode 100755
index e4388a7..0000000
--- a/modules/helpers/metrics-simulator/src/main/assembly/bin/rhq-ms
+++ /dev/null
@@ -1,46 +0,0 @@
-#!/bin/bash
-
-_DOLLARZERO=`readlink "$0" 2>/dev/null || echo "$0"`
-RHQ_MS_BIN_DIR_PATH=`dirname "$_DOLLARZERO"`
-
-if [ -z "$RHQ_MS_HOME" ]; then
- cd $RHQ_MS_BIN_DIR_PATH/..
-fi
-
-RHQ_MS_HOME=`pwd`
-
-prepare_java()
-{
- if [ -z "$JAVA_HOME" ]; then
- echo "$JAVA_HOME must be set"
- exit 1
- fi
- RHQ_MS_JAVA_EXE=$JAVA_HOME/bin/java
-}
-
-prepare_classpath()
-{
- RHQ_MS_CLASSPATH="$RHQ_MS_HOME/conf"
- lib_dir=`cd "$RHQ_MS_HOME/lib";ls -1 *.jar`
- for jar in $lib_dir ; do
- RHQ_MS_CLASSPATH="$RHQ_MS_CLASSPATH:$RHQ_MS_HOME/lib/$jar"
- done
-}
-
-prepare_java_opts()
-{
- if [ -z "$RHQ_MS_JAVA_OPTS" ]; then
- RHQ_MS_JAVA_OPTS="-Xms64M -Xmx64M -Djava.net.preferIPv4Stack=true"
- fi
-}
-
-launch_simulator()
-{
- class="org.rhq.metrics.simulator.Simulator"
- $RHQ_MS_JAVA_EXE $JAVA_OPTS -cp "$RHQ_MS_CLASSPATH"
org.rhq.metrics.simulator.SimulatorCLI "$@"
-}
-
-prepare_java
-prepare_classpath
-prepare_java_opts
-launch_simulator
diff --git a/modules/helpers/metrics-simulator/src/main/assembly/bin/rhq-ms.sh
b/modules/helpers/metrics-simulator/src/main/assembly/bin/rhq-ms.sh
new file mode 100644
index 0000000..32319ee
--- /dev/null
+++ b/modules/helpers/metrics-simulator/src/main/assembly/bin/rhq-ms.sh
@@ -0,0 +1,47 @@
+#!/bin/bash
+
+_DOLLARZERO=`readlink "$0" 2>/dev/null || echo "$0"`
+RHQ_MS_BIN_DIR_PATH=`dirname "$_DOLLARZERO"`
+
+if [ -z "$RHQ_MS_HOME" ]; then
+ pushd $RHQ_MS_BIN_DIR_PATH/..
+fi
+RHQ_MS_HOME=`pwd`
+popd
+
+prepare_java()
+{
+ if [ -z "$JAVA_HOME" ]; then
+ echo "$JAVA_HOME must be set"
+ exit 1
+ fi
+ RHQ_MS_JAVA_EXE=$JAVA_HOME/bin/java
+}
+
+prepare_classpath()
+{
+ RHQ_MS_CLASSPATH="$RHQ_MS_HOME/conf"
+ lib_dir=`cd "$RHQ_MS_HOME/lib";ls -1 *.jar`
+ for jar in $lib_dir ; do
+ RHQ_MS_CLASSPATH="$RHQ_MS_CLASSPATH:$RHQ_MS_HOME/lib/$jar"
+ done
+}
+
+prepare_java_opts()
+{
+ if [ -z "$RHQ_MS_JAVA_OPTS" ]; then
+ RHQ_MS_JAVA_OPTS="-Xms64M -Xmx64M -Djava.net.preferIPv4Stack=true"
+ fi
+}
+
+launch_simulator()
+{
+ $RHQ_MS_JAVA_EXE $JAVA_OPTS $RHQ_MS_ADDITIONAL_JAVA_OPTS -cp
"$RHQ_MS_CLASSPATH" org.rhq.metrics.simulator.SimulatorCLI "$@" &
+}
+
+source "$RHQ_MS_HOME/bin/rhq-ms-env.sh"
+
+prepare_java
+prepare_classpath
+prepare_java_opts
+launch_simulator $@
diff --git
a/modules/helpers/metrics-simulator/src/main/java/org/rhq/metrics/simulator/Simulator.java
b/modules/helpers/metrics-simulator/src/main/java/org/rhq/metrics/simulator/Simulator.java
index 53d2a5e..5d9bfeb 100644
---
a/modules/helpers/metrics-simulator/src/main/java/org/rhq/metrics/simulator/Simulator.java
+++
b/modules/helpers/metrics-simulator/src/main/java/org/rhq/metrics/simulator/Simulator.java
@@ -55,7 +55,6 @@ import org.rhq.cassandra.schema.SchemaManager;
import org.rhq.metrics.simulator.plan.ClusterConfig;
import org.rhq.metrics.simulator.plan.ScheduleGroup;
import org.rhq.metrics.simulator.plan.SimulationPlan;
-import org.rhq.metrics.simulator.plan.SimulationPlanner;
import org.rhq.server.metrics.DateTimeService;
import org.rhq.server.metrics.MetricsServer;
@@ -66,15 +65,9 @@ public class Simulator {
private final Log log = LogFactory.getLog(Simulator.class);
- public void run(File jsonFile) throws Exception {
- SimulationPlanner planner = new SimulationPlanner();
- SimulationPlan plan = planner.create(jsonFile);
-
- List<CassandraNode> nodes = deployCluster(plan.getClusterConfig());
- waitForClusterToInitialize(nodes);
-
+ public void run(SimulationPlan plan) {
+ List<CassandraNode> nodes = initCluster(plan);
createSchema(nodes);
-
Session session = createSession();
MetricsServer metricsServer = new MetricsServer();
@@ -95,7 +88,8 @@ public class Simulator {
Stats stats = new Stats();
StatsCollector statsCollector = new StatsCollector(stats);
- ScheduledExecutorService executorService =
Executors.newScheduledThreadPool(plan.getThreadPoolSize());
+ ScheduledExecutorService executorService =
Executors.newScheduledThreadPool(plan.getThreadPoolSize(),
+ new SimulatorThreadFactory());
log.info("Starting executor service");
executorService.scheduleAtFixedRate(statsCollector, 0, 1, TimeUnit.MINUTES);
@@ -120,7 +114,26 @@ public class Simulator {
}
log.info("Shutting down executor service");
executorService.shutdown();
- executorService.awaitTermination(5, TimeUnit.SECONDS);
+ try {
+ executorService.awaitTermination(5, TimeUnit.SECONDS);
+ } catch (InterruptedException e) {
+ }
+ if (!executorService.isTerminated()) {
+ log.info("Forcing executor service shutdown.");
+ executorService.shutdownNow();
+ }
+ log.info("Shut down complete");
+ System.exit(0);
+ }
+
+ private List<CassandraNode> initCluster(SimulationPlan plan) {
+ try {
+ List<CassandraNode> nodes = deployCluster(plan.getClusterConfig());
+ waitForClusterToInitialize(nodes);
+ return nodes;
+ } catch (Exception e) {
+ throw new RuntimeException("Failed to start simulator. Cluster
initialization failed.", e);
+ }
}
private List<CassandraNode> deployCluster(ClusterConfig clusterConfig) throws
IOException {
@@ -148,23 +161,31 @@ public class Simulator {
}
private void createSchema(List<CassandraNode> nodes) {
- log.info("Creating schema");
- SchemaManager schemaManager = new SchemaManager("rhqadmin",
"rhqadmin", nodes);
- schemaManager.createSchema();
- schemaManager.updateSchema();
+ try {
+ log.info("Creating schema");
+ SchemaManager schemaManager = new SchemaManager("rhqadmin",
"rhqadmin", nodes);
+ schemaManager.createSchema();
+ schemaManager.updateSchema();
+ } catch (Exception e) {
+ throw new RuntimeException("Failed to start simulator. An error occurred
during schema creation.", e);
+ }
}
private Session createSession() throws NoHostAvailableException {
- SimpleAuthInfoProvider authInfoProvider = new SimpleAuthInfoProvider();
- authInfoProvider.add("username",
"rhqadmin").add("password", "rhqadmin");
-
- Cluster cluster = Cluster.builder()
- .addContactPoints("127.0.0.1", "127.0.0.2")
- .withAuthInfoProvider(authInfoProvider)
- .withCompression(SNAPPY)
- .build();
-
- return cluster.connect("rhq");
+ try {
+ SimpleAuthInfoProvider authInfoProvider = new SimpleAuthInfoProvider();
+ authInfoProvider.add("username",
"rhqadmin").add("password", "rhqadmin");
+
+ Cluster cluster = Cluster.builder()
+ .addContactPoints("127.0.0.1", "127.0.0.2")
+ .withAuthInfoProvider(authInfoProvider)
+ .withCompression(SNAPPY)
+ .build();
+
+ return cluster.connect("rhq");
+ } catch (Exception e) {
+ throw new RuntimeException("Failed to start simulator. Unable to create
" + Session.class, e);
+ }
}
private Set<Schedule> initSchedules(ScheduleGroup scheduleSet) {
diff --git
a/modules/helpers/metrics-simulator/src/main/java/org/rhq/metrics/simulator/SimulatorCLI.java
b/modules/helpers/metrics-simulator/src/main/java/org/rhq/metrics/simulator/SimulatorCLI.java
index 93bb582..d31398a 100644
---
a/modules/helpers/metrics-simulator/src/main/java/org/rhq/metrics/simulator/SimulatorCLI.java
+++
b/modules/helpers/metrics-simulator/src/main/java/org/rhq/metrics/simulator/SimulatorCLI.java
@@ -25,9 +25,18 @@
package org.rhq.metrics.simulator;
+import java.io.File;
+
+import org.apache.commons.cli.CommandLine;
+import org.apache.commons.cli.CommandLineParser;
import org.apache.commons.cli.HelpFormatter;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.Options;
+import org.apache.commons.cli.ParseException;
+import org.apache.commons.cli.PosixParser;
+
+import org.rhq.metrics.simulator.plan.SimulationPlan;
+import org.rhq.metrics.simulator.plan.SimulationPlanner;
/**
* @author John Sanda
@@ -51,6 +60,20 @@ public class SimulatorCLI {
printUsage();
System.exit(1);
}
+ try {
+ CommandLineParser parser = new PosixParser();
+ CommandLine cmdLine = parser.parse(options, args);
+
+ if (cmdLine.hasOption("h")) {
+ printUsage();
+ } else if (cmdLine.hasOption("s")) {
+ runSimulator(cmdLine.getOptionValue("s"));
+ } else {
+ printUsage();
+ }
+ } catch (ParseException e) {
+ printUsage();
+ }
}
public void printUsage() {
@@ -62,6 +85,28 @@ public class SimulatorCLI {
helpFormatter.printHelp(syntax, header, options, null);
}
+ public void runSimulator(String file) {
+ File planFile = new File(file);
+ if (!planFile.exists()) {
+ throw new RuntimeException("Simulation file [" + file + "]
does not exist.");
+ }
+ if (planFile.isDirectory()) {
+ throw new RuntimeException("[" + file + "] is a directory. The
--simulation argument must refer to a " +
+ "file.");
+ }
+
+ SimulationPlanner planner = new SimulationPlanner();
+ SimulationPlan plan = null;
+ try {
+ plan = planner.create(planFile);
+ } catch (Exception e) {
+ throw new RuntimeException("Failed to create simulation: " +
e.getMessage(), e);
+ }
+
+ Simulator simulator = new Simulator();
+ simulator.run(plan);
+ }
+
public static void main(String[] args) {
SimulatorCLI cli = new SimulatorCLI();
cli.exec(args);
diff --git
a/modules/helpers/metrics-simulator/src/main/java/org/rhq/metrics/simulator/StatsCollector.java
b/modules/helpers/metrics-simulator/src/main/java/org/rhq/metrics/simulator/StatsCollector.java
index 665302a..7f2c35e 100644
---
a/modules/helpers/metrics-simulator/src/main/java/org/rhq/metrics/simulator/StatsCollector.java
+++
b/modules/helpers/metrics-simulator/src/main/java/org/rhq/metrics/simulator/StatsCollector.java
@@ -69,8 +69,4 @@ public class StatsCollector implements Runnable {
"Standard Deviation: " + insertionTimes.getStandardDeviation());
}
- public void logSummary() {
-// log.info("Summary of raw data inserts/minute\n" +
stats.getAggregateSummary());
-// log.info("Summary of raw data insertion times in milliseconds\n" +
stats.getRawDataInsertTimes());
- }
}
diff --git a/modules/helpers/metrics-simulator/src/main/scripts/assembly.xml
b/modules/helpers/metrics-simulator/src/main/scripts/assembly.xml
index 6bee585..ec1a459 100644
--- a/modules/helpers/metrics-simulator/src/main/scripts/assembly.xml
+++ b/modules/helpers/metrics-simulator/src/main/scripts/assembly.xml
@@ -9,7 +9,7 @@
<format>zip</format>
</formats>
<includeBaseDirectory>true</includeBaseDirectory>
- <baseDirectory>rhq-bundle-deployer-${project.version}</baseDirectory>
<!-- matches the zip when it is renamed in rhq-container.build.xml -->
+ <baseDirectory>rhq-metrics-simulator-${project.version}</baseDirectory>
<!-- matches the zip when it is renamed in rhq-container.build.xml -->
<fileSets>
diff --git
a/modules/helpers/metrics-simulator/src/test/java/org/rhq/metrics/simulator/SimulatorTest.java
b/modules/helpers/metrics-simulator/src/test/java/org/rhq/metrics/simulator/SimulatorTest.java
index 9f6f517..f01051d 100644
---
a/modules/helpers/metrics-simulator/src/test/java/org/rhq/metrics/simulator/SimulatorTest.java
+++
b/modules/helpers/metrics-simulator/src/test/java/org/rhq/metrics/simulator/SimulatorTest.java
@@ -27,6 +27,9 @@ import java.io.File;
import org.testng.annotations.Test;
+import org.rhq.metrics.simulator.plan.SimulationPlan;
+import org.rhq.metrics.simulator.plan.SimulationPlanner;
+
/**
* @author John Sanda
*/
@@ -35,8 +38,10 @@ public class SimulatorTest {
@Test
public void runSimulator() throws Exception {
File jsonFile = new
File(getClass().getResource("test-simulator.json").toURI());
+ SimulationPlanner planner = new SimulationPlanner();
+ SimulationPlan plan = planner.create(jsonFile);
Simulator simulator = new Simulator();
- simulator.run(jsonFile);
+ simulator.run(plan);
}
}