From ce95547857a00a5a5ecea5e4ba5dc1dc15754978 Mon Sep 17 00:00:00 2001
From: hxd <sainthxd@gmail.com>
Date: Wed, 28 Sep 2016 09:32:10 +0800
Subject: [PATCH] [cassandra] add sigar-dist for cassandra 2.2+ test, and
 tracing function for recording logs

---
 cassandra/README.md                           |  5 +++-
 .../com/yahoo/ycsb/db/CassandraCQLClient.java | 28 +++++++++++++++----
 2 files changed, 27 insertions(+), 6 deletions(-)

diff --git a/cassandra/README.md b/cassandra/README.md
index bee44c8d..a25b18e6 100644
--- a/cassandra/README.md
+++ b/cassandra/README.md
@@ -77,4 +77,7 @@ For keyspace `ycsb`, table `usertable`:
   * Defaults for max and core connections can be found here: https://datastax.github.io/java-driver/2.1.8/features/pooling/#pool-size. Cassandra 2.0.X falls under protocol V2, Cassandra 2.1+ falls under protocol V3.
 * `cassandra.connecttimeoutmillis`
 * `cassandra.readtimeoutmillis`
-  * Defaults for connect and read timeouts can be found here: https://docs.datastax.com/en/drivers/java/2.0/com/datastax/driver/core/SocketOptions.html.
\ No newline at end of file
+  * Defaults for connect and read timeouts can be found here: https://docs.datastax.com/en/drivers/java/2.0/com/datastax/driver/core/SocketOptions.html.
+* `cassandra.tracing`
+  * Default is false
+  * https://docs.datastax.com/en/cql/3.3/cql/cql_reference/tracing_r.html
\ No newline at end of file
diff --git a/cassandra/src/main/java/com/yahoo/ycsb/db/CassandraCQLClient.java b/cassandra/src/main/java/com/yahoo/ycsb/db/CassandraCQLClient.java
index d4dc8c77..ee2dd8f5 100644
--- a/cassandra/src/main/java/com/yahoo/ycsb/db/CassandraCQLClient.java
+++ b/cassandra/src/main/java/com/yahoo/ycsb/db/CassandraCQLClient.java
@@ -85,6 +85,9 @@ public class CassandraCQLClient extends DB {
   public static final String READ_TIMEOUT_MILLIS_PROPERTY =
       "cassandra.readtimeoutmillis";
 
+  public static final String TRACING_PROPERTY = "cassandra.tracing";
+  public static final String TRACING_PROPERTY_DEFAULT = "false";
+  
   /**
    * Count the number of times initialized to teardown on the last
    * {@link #cleanup()}.
@@ -93,6 +96,8 @@ public class CassandraCQLClient extends DB {
 
   private static boolean debug = false;
 
+  private static boolean trace = false;
+  
   /**
    * Initialize any state for this DB. Called once per DB instance; there is one
    * DB instance per client thread.
@@ -116,7 +121,8 @@ public class CassandraCQLClient extends DB {
 
         debug =
             Boolean.parseBoolean(getProperties().getProperty("debug", "false"));
-
+        trace = Boolean.valueOf(getProperties().getProperty(TRACING_PROPERTY, TRACING_PROPERTY_DEFAULT));
+        
         String host = getProperties().getProperty(HOSTS_PROPERTY);
         if (host == null) {
           throw new DBException(String.format(
@@ -254,7 +260,10 @@ public class CassandraCQLClient extends DB {
       if (debug) {
         System.out.println(stmt.toString());
       }
-
+      if (trace) {
+        stmt.enableTracing();
+      }
+      
       ResultSet rs = session.execute(stmt);
 
       if (rs.isExhausted()) {
@@ -343,7 +352,10 @@ public class CassandraCQLClient extends DB {
       if (debug) {
         System.out.println(stmt.toString());
       }
-
+      if (trace) {
+        stmt.enableTracing();
+      }
+      
       ResultSet rs = session.execute(stmt);
 
       HashMap<String, ByteIterator> tuple;
@@ -432,7 +444,10 @@ public class CassandraCQLClient extends DB {
       if (debug) {
         System.out.println(insertStmt.toString());
       }
-
+      if (trace) {
+        insertStmt.enableTracing();
+      }
+      
       session.execute(insertStmt);
 
       return Status.OK;
@@ -465,7 +480,10 @@ public class CassandraCQLClient extends DB {
       if (debug) {
         System.out.println(stmt.toString());
       }
-
+      if (trace) {
+        stmt.enableTracing();
+      }
+      
       session.execute(stmt);
 
       return Status.OK;
-- 
GitLab