Author: brandonwilliams
Date: Wed Apr 13 20:36:41 2011
New Revision: 1091911

URL: http://svn.apache.org/viewvc?rev=1091911&view=rev
Log:
Use old value generation behavior by default in stress.java to allow
indexed range slices to work.
Patch by Pavel Yaskevich, reviewed by brandonwilliams for CASSANDRA-2326

Modified:
    
cassandra/branches/cassandra-0.7/contrib/stress/src/org/apache/cassandra/contrib/stress/Session.java
    
cassandra/branches/cassandra-0.7/contrib/stress/src/org/apache/cassandra/contrib/stress/operations/IndexedRangeSlicer.java
    
cassandra/branches/cassandra-0.7/contrib/stress/src/org/apache/cassandra/contrib/stress/util/Operation.java

Modified: 
cassandra/branches/cassandra-0.7/contrib/stress/src/org/apache/cassandra/contrib/stress/Session.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/contrib/stress/src/org/apache/cassandra/contrib/stress/Session.java?rev=1091911&r1=1091910&r2=1091911&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-0.7/contrib/stress/src/org/apache/cassandra/contrib/stress/Session.java
 (original)
+++ 
cassandra/branches/cassandra-0.7/contrib/stress/src/org/apache/cassandra/contrib/stress/Session.java
 Wed Apr 13 20:36:41 2011
@@ -72,6 +72,7 @@ public class Session
         availableOptions.addOption("x",  "create-index",         true,   "Type 
of index to create on needed column families (KEYS)");
         availableOptions.addOption("R",  "replication-strategy", true,   
"Replication strategy to use (only on insert if keyspace does not exist), 
default:org.apache.cassandra.locator.SimpleStrategy");
         availableOptions.addOption("O",  "strategy-properties",  true,   
"Replication strategy properties in the following format 
<dc_name>:<num>,<dc_name>:<num>,...");
+        availableOptions.addOption("V",  "average-size-values",  false,  
"Generate column values of average rather than specific size");
     }
 
     private int numKeys          = 1000 * 1000;
@@ -101,6 +102,7 @@ public class Session
     private String replicationStrategy = 
"org.apache.cassandra.locator.SimpleStrategy";
     private Map<String, String> replicationStrategyOptions = new 
HashMap<String, String>();
 
+    public final boolean averageSizeValues;
 
     // required by Gaussian distribution.
     protected int   mean;
@@ -247,6 +249,8 @@ public class Session
                     replicationStrategyOptions.put(keyAndValue[0], 
keyAndValue[1]);
                 }
             }
+
+            averageSizeValues = cmd.hasOption("V");
         }
         catch (ParseException e)
         {

Modified: 
cassandra/branches/cassandra-0.7/contrib/stress/src/org/apache/cassandra/contrib/stress/operations/IndexedRangeSlicer.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/contrib/stress/src/org/apache/cassandra/contrib/stress/operations/IndexedRangeSlicer.java?rev=1091911&r1=1091910&r2=1091911&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-0.7/contrib/stress/src/org/apache/cassandra/contrib/stress/operations/IndexedRangeSlicer.java
 (original)
+++ 
cassandra/branches/cassandra-0.7/contrib/stress/src/org/apache/cassandra/contrib/stress/operations/IndexedRangeSlicer.java
 Wed Apr 13 20:36:41 2011
@@ -48,8 +48,8 @@ public class IndexedRangeSlicer extends 
 
         int received = 0;
 
-        String startOffset = "0";
-        ByteBuffer value = values.get(index % values.size());
+        String startOffset = String.format(format, 0);
+        ByteBuffer value = values.get(1); // only C1 column is indexed
 
         IndexExpression expression = new IndexExpression(columnName, 
IndexOperator.EQ, value);
 

Modified: 
cassandra/branches/cassandra-0.7/contrib/stress/src/org/apache/cassandra/contrib/stress/util/Operation.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/contrib/stress/src/org/apache/cassandra/contrib/stress/util/Operation.java?rev=1091911&r1=1091910&r2=1091911&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-0.7/contrib/stress/src/org/apache/cassandra/contrib/stress/util/Operation.java
 (original)
+++ 
cassandra/branches/cassandra-0.7/contrib/stress/src/org/apache/cassandra/contrib/stress/util/Operation.java
 Wed Apr 13 20:36:41 2011
@@ -55,11 +55,33 @@ public abstract class Operation
 
     // Utility methods
 
+    protected List<ByteBuffer> generateValues()
+    {
+        if (session.averageSizeValues)
+        {
+            return generateRandomizedValues();
+        }
+
+        List<ByteBuffer> values = new ArrayList<ByteBuffer>();
+
+        for (int i = 0; i < session.getCardinality(); i++)
+        {
+            String hash = getMD5(Integer.toString(i));
+            int times = session.getColumnSize() / hash.length();
+            int sumReminder = session.getColumnSize() % hash.length();
+
+            String value = new StringBuilder(multiplyString(hash, 
times)).append(hash.substring(0, sumReminder)).toString();
+            values.add(ByteBuffer.wrap(value.getBytes()));
+        }
+
+        return values;
+    }
+
     /**
      * Generate values of average size specified by -S, up to cardinality 
specified by -C
      * @return Collection of the values
      */
-    protected List<ByteBuffer> generateValues()
+    protected List<ByteBuffer> generateRandomizedValues()
     {
         List<ByteBuffer> values = new ArrayList<ByteBuffer>();
 


Reply via email to