aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMohammad Salehe <salehe@cs.toronto.edu>2018-11-07 16:05:22 -0500
committerMohammad Salehe <salehe@cs.toronto.edu>2018-12-21 01:04:37 -0500
commit9b709f3d33e23710aeae261198806d6a068c5a3b (patch)
tree0cbb9ea2ecca6ba49bffcee6e44d1625592f1cdb
parentd7c26306f0daaa7645f88f1bbb1f1d5cca88ac6c (diff)
Implement first comparison point tests
Implement ComparisonPoints1 benchmarks to test 4 different put scenarios: - Music Entry Consistency - Music Eventual - Music Sequential Consistent (Using LWT) - Pure Consistent (Using LWT) Change-Id: Id9052a0b14686be93189021e19f2dc293188c52b Issue-ID: MUSIC-148 Signed-off-by: Mohammad Salehe <salehe@cs.toronto.edu>
-rw-r--r--src/main/java/org/onap/music/main/VotingAppJar.java115
-rw-r--r--src/main/java/org/onap/music/service/impl/MusicCassaCore.java3
-rw-r--r--src/test/java/org/onap/music/unittests/ComparisonPoints1.java239
-rw-r--r--src/test/java/org/onap/music/unittests/TestVotingApp.java8
4 files changed, 245 insertions, 120 deletions
diff --git a/src/main/java/org/onap/music/main/VotingAppJar.java b/src/main/java/org/onap/music/main/VotingAppJar.java
deleted file mode 100644
index 1c475639..00000000
--- a/src/main/java/org/onap/music/main/VotingAppJar.java
+++ /dev/null
@@ -1,115 +0,0 @@
-package org.onap.music.main;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.onap.music.datastore.PreparedQueryObject;
-import org.onap.music.exceptions.MusicLockingException;
-import org.onap.music.exceptions.MusicQueryException;
-import org.onap.music.exceptions.MusicServiceException;
-import org.onap.music.main.MusicCore;
-
-import com.datastax.driver.core.ResultSet;
-import com.datastax.driver.core.Row;
-
-/**
- *
- */
-public class VotingAppJar
-{
- String keyspaceName;
- String tableName;
-
- public VotingAppJar() throws MusicServiceException {
- keyspaceName = "VotingAppForMusic";
- tableName = "votevount";
-
- createVotingKeyspace();
- System.out.println("Created keyspaces");
- createVotingTable();
- System.out.println("Created tables");
-
- createEntryForCandidate("Popeye");
- createEntryForCandidate("Judy");
- createEntryForCandidate("Flash");
- createEntryForCandidate("Mickey");
- System.out.println("Created candidates");
- }
-
- private void createVotingKeyspace() throws MusicServiceException {
-
- Map<String,Object> replicationInfo = new HashMap<String, Object>();
- replicationInfo.put("'class'", "'SimpleStrategy'");
- replicationInfo.put("'replication_factor'", 1);
-
- PreparedQueryObject queryObject = new PreparedQueryObject();
- queryObject.appendQueryString(
- "CREATE KEYSPACE " + keyspaceName + " WITH REPLICATION = " + replicationInfo.toString().replaceAll("=", ":"));
-
- try {
- MusicCore.nonKeyRelatedPut(queryObject, "eventual");
- } catch (MusicServiceException e) {
- if (e.getMessage().equals("Keyspace votingappformusic already exists")) {
- // ignore
- } else {
- throw(e);
- }
- }
- }
-
- private void createVotingTable() throws MusicServiceException {
- PreparedQueryObject queryObject = new PreparedQueryObject();
- queryObject.appendQueryString(
- "CREATE TABLE " + keyspaceName + "." + tableName + " (name text PRIMARY KEY, count varint);");
-
- try {
- MusicCore.createTable(keyspaceName, tableName, queryObject, "eventual");
- } catch (MusicServiceException e) {
- if (e.getMessage().equals("Table votingappformusic.votevount already exists")) {
- //ignore
- } else {
- throw(e);
- }
- }
- }
-
- private void createEntryForCandidate(String candidateName) throws MusicServiceException {
- PreparedQueryObject queryObject = new PreparedQueryObject();
- queryObject.appendQueryString(
- "INSERT INTO " + keyspaceName + "." + tableName + " (name, count) "
- + "VALUES ('"+candidateName+"', 0);");
-
- MusicCore.nonKeyRelatedPut(queryObject, "eventual");
- }
-
- public void vote() throws MusicLockingException, MusicQueryException, MusicServiceException {
- updateVoteCount("Popeye",5);
- updateVoteCount("Judy",7);
- updateVoteCount("Mickey",8);
- updateVoteCount("Flash",2);
- }
-
- private void updateVoteCount(String candidateName, int numVotes) throws MusicLockingException, MusicQueryException, MusicServiceException {
- PreparedQueryObject queryObject = new PreparedQueryObject();
- queryObject.appendQueryString(
- "INSERT INTO " + keyspaceName + "." + tableName + " (name, count) "
- + "VALUES ('"+candidateName+"', "+numVotes+");");
- MusicCore.atomicPut(keyspaceName, tableName, candidateName, queryObject, null);
- }
-
- private void readAllVotes() throws MusicServiceException {
- PreparedQueryObject queryObject = new PreparedQueryObject();
- queryObject.appendQueryString("SELECT * FROM " + keyspaceName + "." + tableName);
- ResultSet rs = MusicCore.get(queryObject);
- for(Row candidate : rs.all()) {
- System.out.println(candidate.getString("name") + " - " + candidate.getVarint("count"));
- }
- }
-
- public static void main( String[] args ) throws Exception {
- VotingAppJar vHandle = new VotingAppJar();
- vHandle.vote();
- vHandle.readAllVotes();
- }
-
-}
diff --git a/src/main/java/org/onap/music/service/impl/MusicCassaCore.java b/src/main/java/org/onap/music/service/impl/MusicCassaCore.java
index fcf02807..f897c181 100644
--- a/src/main/java/org/onap/music/service/impl/MusicCassaCore.java
+++ b/src/main/java/org/onap/music/service/impl/MusicCassaCore.java
@@ -243,8 +243,7 @@ public class MusicCassaCore implements MusicCoreService {
String tabQuery = "CREATE TABLE IF NOT EXISTS "+keyspace+"."+table
+ " ( key text,PRIMARY KEY (key) );";
- System.out.println(tabQuery);
- PreparedQueryObject queryObject = new PreparedQueryObject();
+ PreparedQueryObject queryObject = new PreparedQueryObject();
queryObject.appendQueryString(tabQuery);
result = false;
diff --git a/src/test/java/org/onap/music/unittests/ComparisonPoints1.java b/src/test/java/org/onap/music/unittests/ComparisonPoints1.java
new file mode 100644
index 00000000..1f74d39e
--- /dev/null
+++ b/src/test/java/org/onap/music/unittests/ComparisonPoints1.java
@@ -0,0 +1,239 @@
+package org.onap.music.unittests;
+
+import com.datastax.driver.core.ResultSet;
+import org.onap.music.datastore.PreparedQueryObject;
+import org.onap.music.exceptions.MusicLockingException;
+import org.onap.music.exceptions.MusicQueryException;
+import org.onap.music.exceptions.MusicServiceException;
+import org.onap.music.main.MusicCore;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ *
+ */
+public class ComparisonPoints1
+{
+ String keyspaceName;
+ int BENCH_TIMES = 100;
+
+ public ComparisonPoints1() {
+ keyspaceName = "ComparisonPoints1_"+System.currentTimeMillis();
+ }
+
+ private void initialize() throws MusicServiceException {
+ createKeyspace();
+ System.out.println("Created keyspaces");
+ }
+
+ private int readAge(String tableName, String name) throws MusicServiceException {
+ PreparedQueryObject query = new PreparedQueryObject();
+ query.appendQueryString("SELECT age FROM " + keyspaceName + "." + tableName + " WHERE name = ?;");
+ query.addValue(name);
+ ResultSet rs = MusicCore.get(query);
+ return rs.one().getInt("age");
+ }
+
+ private void check(String tableName, String name1, int age) throws MusicServiceException {
+ int readage = readAge(tableName, name1);
+ if (age != readage)
+ System.out.println("Inconsistency: age = " + readage + " != " + age);
+ }
+
+ private void performMusicEntryConsistentPut(String tableName, String name, int age) throws MusicServiceException, MusicLockingException, MusicQueryException {
+
+ PreparedQueryObject query = new PreparedQueryObject();
+ query.appendQueryString(
+ "INSERT INTO " + keyspaceName + "." + tableName + " (name, age) "
+ + "VALUES (?, ?);");
+ query.addValue(name);
+ query.addValue(age);
+
+ MusicCore.atomicPut(keyspaceName, tableName, name, query, null);
+ }
+
+ private void warmup() throws Exception {
+ String tableName = "warmup";
+ System.out.println("Warming Up");
+ createTable(tableName);
+ System.out.println("Created tables");
+ Thread.sleep(1000);
+
+ long btime = System.currentTimeMillis();
+ for (int i = 0; i < BENCH_TIMES; i++) {
+ String name = "Joe" + i;
+ int age = i + 10;
+ performMusicEntryConsistentPut(tableName, name, age);
+// check(tableName, name, age);
+ }
+ long bdur = System.currentTimeMillis() - btime;
+
+ System.out.println("done");
+ }
+
+ private void testMusicEntryConsistentPut() throws Exception {
+ String tableName = "mentry2";
+ System.out.println("Test music entry consistent put 2");
+ createTable(tableName);
+ System.out.println("Created tables");
+ Thread.sleep(1000);
+
+ long btime = System.currentTimeMillis();
+ for (int i = 0; i < BENCH_TIMES; i++) {
+ String name = "Joe" + i;
+ int age = i + 10;
+ performMusicEntryConsistentPut(tableName, name, age);
+// check(tableName, name, age);
+ }
+ long bdur = System.currentTimeMillis() - btime;
+
+ System.out.println("done " + ((float)bdur / BENCH_TIMES));
+ }
+
+ private void performMusicSequentialConsistentPut(String tableName, String name, int age) throws MusicServiceException, MusicLockingException, MusicQueryException {
+ PreparedQueryObject query = new PreparedQueryObject();
+ query.appendQueryString(
+ "INSERT INTO " + keyspaceName + "." + tableName + " (name, age) "
+ + "VALUES (?, ?) IF NOT EXISTS;");
+ query.addValue(name);
+ query.addValue(age);
+
+ MusicCore.atomicPut(keyspaceName, tableName, name, query, null);
+ }
+
+ private void testMusicSequentialConsistentPut() throws Exception {
+ String tableName = "mseq";
+ System.out.println("Test music sequential consistent put");
+ createTable(tableName);
+ System.out.println("Created tables");
+ Thread.sleep(1000);
+
+ long btime = System.currentTimeMillis();
+ for (int i = 0; i < BENCH_TIMES; i++) {
+ String name = "Joe" + i;
+ int age = i + 10;
+ performMusicSequentialConsistentPut(tableName, name, age);
+// check(tableName, name, age);
+ }
+ long bdur = System.currentTimeMillis() - btime;
+
+ System.out.println("done " + ((float)bdur / BENCH_TIMES));
+ }
+
+ private void performEventualPut(String tableName, String name, int age) throws MusicServiceException, MusicLockingException, MusicQueryException {
+ PreparedQueryObject query = new PreparedQueryObject();
+ query.appendQueryString(
+ "INSERT INTO " + keyspaceName + "." + tableName + " (name, age) "
+ + "VALUES (?, ?);");
+ query.addValue(name);
+ query.addValue(age);
+
+ MusicCore.eventualPut(query);
+ }
+
+ private void testEventualPut() throws Exception {
+ String tableName = "eventual";
+ System.out.println("Test eventual put");
+ createTable(tableName);
+ System.out.println("Created tables");
+ Thread.sleep(1000);
+
+ long btime = System.currentTimeMillis();
+ for (int i = 0; i < BENCH_TIMES; i++) {
+ String name = "Joe" + i;
+ int age = i + 10;
+ performEventualPut(tableName, name, age);
+// check(tableName, name, age);
+ }
+ long bdur = System.currentTimeMillis() - btime;
+
+ System.out.println("done " + ((float)bdur / BENCH_TIMES));
+ }
+
+ private void performPureConsistentPut(String tableName, String name, int age) throws MusicServiceException, MusicLockingException, MusicQueryException {
+ PreparedQueryObject query = new PreparedQueryObject();
+ query.appendQueryString(
+ "INSERT INTO " + keyspaceName + "." + tableName + " (name, age) "
+ + "VALUES (?, ?) IF NOT EXISTS;");
+ query.addValue(name);
+ query.addValue(age);
+
+ MusicCore.eventualPut(query);
+ }
+
+ private void testPureConsistentPut() throws Exception {
+ String tableName = "pure";
+ System.out.println("Performing pure consistent put");
+ createTable(tableName);
+ System.out.println("Created tables");
+ Thread.sleep(1000);
+
+ long btime = System.currentTimeMillis();
+ for (int i = 0; i < BENCH_TIMES; i++) {
+ String name = "Joe" + i;
+ int age = i + 10;
+ performPureConsistentPut(tableName, name, age);
+// check(tableName, name, age);
+ }
+ long bdur = System.currentTimeMillis() - btime;
+
+ System.out.println("done " + ((float)bdur / BENCH_TIMES));
+ }
+
+ private void createKeyspace() throws MusicServiceException {
+ Map<String,Object> replicationInfo = new HashMap<String, Object>();
+ replicationInfo.put("'class'", "'SimpleStrategy'");
+ replicationInfo.put("'replication_factor'", 3);
+
+ PreparedQueryObject queryObject = new PreparedQueryObject();
+ queryObject.appendQueryString(
+ "CREATE KEYSPACE " + keyspaceName + " WITH REPLICATION = " + replicationInfo.toString().replaceAll("=", ":"));
+
+ try {
+ MusicCore.nonKeyRelatedPut(queryObject, "eventual");
+ } catch (MusicServiceException e) {
+ throw(e);
+ }
+ }
+
+ private void createTable(String tableName) throws MusicServiceException {
+ PreparedQueryObject queryObject = new PreparedQueryObject();
+ queryObject.appendQueryString(
+ "CREATE TABLE " + keyspaceName + "." + tableName + " (name text PRIMARY KEY, age int);");
+
+ try {
+ MusicCore.createTable(keyspaceName, tableName, queryObject, "eventual");
+ } catch (MusicServiceException e) {
+ throw (e);
+ }
+ }
+
+ public static void main( String[] args ) throws Exception {
+ ComparisonPoints1 cp1 = new ComparisonPoints1();
+ cp1.initialize();
+ Thread.sleep(2000);
+
+ cp1.warmup();
+ System.out.println("-----\n\n");
+ Thread.sleep(2000);
+
+ cp1.testEventualPut();
+ System.out.println("-----\n\n");
+ Thread.sleep(2000);
+
+ cp1.testMusicSequentialConsistentPut();
+ System.out.println("-----\n\n");
+ Thread.sleep(2000);
+
+ cp1.testPureConsistentPut();
+ System.out.println("-----\n\n");
+ Thread.sleep(2000);
+
+ cp1.testMusicEntryConsistentPut();
+ System.out.println("-----\n\n");
+
+ System.exit(0);
+ }
+
+} \ No newline at end of file
diff --git a/src/test/java/org/onap/music/unittests/TestVotingApp.java b/src/test/java/org/onap/music/unittests/TestVotingApp.java
index e7a1e252..863959eb 100644
--- a/src/test/java/org/onap/music/unittests/TestVotingApp.java
+++ b/src/test/java/org/onap/music/unittests/TestVotingApp.java
@@ -72,14 +72,14 @@ public class TestVotingApp
"INSERT INTO " + keyspaceName + "." + tableName + " (name, count) "
+ "VALUES ('"+candidateName+"', 0);");
- MusicCore.nonKeyRelatedPut(queryObject, "eventual");
+ MusicCore.eventualPut(queryObject);
}
private void updateVoteCount(String candidateName, int numVotes) throws MusicLockingException, MusicQueryException, MusicServiceException {
PreparedQueryObject queryObject = new PreparedQueryObject();
queryObject.appendQueryString(
- "UPDATE " + keyspaceName + "." + tableName + " SET count="+numVotes + " where name='"+candidateName+"';");
+ "UPDATE " + keyspaceName + "." + tableName + " SET count=" +numVotes + " where name='" + candidateName + "';");
MusicCore.atomicPut(keyspaceName, tableName, candidateName, queryObject, null);
}
@@ -105,12 +105,14 @@ public class TestVotingApp
tva.updateVoteCount("Flash",2);
tva.updateVoteCount("Flash",3);
- HashMap<String, Integer> voteCount = tva.readAllVotes();
+ HashMap<String, Integer> voteCount = tva.readAllVotes();
System.out.println(voteCount);
+
assert(voteCount.get("Popeye") == 5);
assert(voteCount.get("Judy") == 9);
assert(voteCount.get("Mickey") == 8);
assert(voteCount.get("Flash") == 3);
+ System.exit(0);
}
} \ No newline at end of file