From 5e89136d100f92384914c281cbe57b25fa1f3cbb Mon Sep 17 00:00:00 2001 From: T Jake Luciani Date: Mon, 20 Jul 2015 15:13:39 -0400 Subject: [PATCH] Allow extra schema definitions in cassandra-stress yaml Patch by tjake; reviewed by benedict for CASSANDRA-9850 --- CHANGES.txt | 1 + .../cassandra/stress/StressProfile.java | 21 +++++++++++++++++++ .../apache/cassandra/stress/StressYaml.java | 2 ++ 3 files changed, 24 insertions(+) diff --git a/CHANGES.txt b/CHANGES.txt index 182847660b..2a3aecdd83 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 3.0 + * Allow extra schema definitions in cassandra-stress yaml (CASSANDRA-9850) * Metrics should use up to date nomenclature (CASSANDRA-9448) * Change CREATE/ALTER TABLE syntax for compression (CASSANDRA-8384) * Cleanup crc and adler code for java 8 (CASSANDRA-9650) diff --git a/tools/stress/src/org/apache/cassandra/stress/StressProfile.java b/tools/stress/src/org/apache/cassandra/stress/StressProfile.java index e2b9575049..82f274eee0 100644 --- a/tools/stress/src/org/apache/cassandra/stress/StressProfile.java +++ b/tools/stress/src/org/apache/cassandra/stress/StressProfile.java @@ -59,6 +59,7 @@ public class StressProfile implements Serializable { private String keyspaceCql; private String tableCql; + private List extraSchemaDefinitions; private String seedStr; public String keyspaceName; @@ -93,6 +94,8 @@ public class StressProfile implements Serializable queries = yaml.queries; insert = yaml.insert; + extraSchemaDefinitions = yaml.extra_definitions; + assert keyspaceName != null : "keyspace name is required in yaml file"; assert tableName != null : "table name is required in yaml file"; assert queries != null : "queries map is required in yaml file"; @@ -185,6 +188,24 @@ public class StressProfile implements Serializable Uninterruptibles.sleepUninterruptibly(settings.node.nodes.size(), TimeUnit.SECONDS); } + if (extraSchemaDefinitions != null) + { + for (String extraCql : extraSchemaDefinitions) + { + + try + { + client.execute(extraCql, org.apache.cassandra.db.ConsistencyLevel.ONE); + } + catch (AlreadyExistsException e) + { + } + } + + System.out.println(String.format("Created extra schema. Sleeping %ss for propagation.", settings.node.nodes.size())); + Uninterruptibles.sleepUninterruptibly(settings.node.nodes.size(), TimeUnit.SECONDS); + } + maybeLoadSchemaInfo(settings); } diff --git a/tools/stress/src/org/apache/cassandra/stress/StressYaml.java b/tools/stress/src/org/apache/cassandra/stress/StressYaml.java index b6efc5e32f..90797b4969 100644 --- a/tools/stress/src/org/apache/cassandra/stress/StressYaml.java +++ b/tools/stress/src/org/apache/cassandra/stress/StressYaml.java @@ -30,6 +30,8 @@ public class StressYaml public String table; public String table_definition; + public List extra_definitions; + public List> columnspec; public Map queries; public Map insert;