Author: brandonwilliams
Date: Wed Jul 14 16:28:16 2010
New Revision: 964091

URL: http://svn.apache.org/viewvc?rev=964091&view=rev
Log:
Add replication factor and consistency level options to stress.py.
Patch by brandonwilliams; reviewed by jbellis for CASSANDRA-1164

Modified:
    cassandra/trunk/contrib/py_stress/stress.py

Modified: cassandra/trunk/contrib/py_stress/stress.py
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/contrib/py_stress/stress.py?rev=964091&r1=964090&r2=964091&view=diff
==============================================================================
--- cassandra/trunk/contrib/py_stress/stress.py (original)
+++ cassandra/trunk/contrib/py_stress/stress.py Wed Jul 14 16:28:16 2010
@@ -92,6 +92,11 @@ parser.add_option('-i', '--progress-inte
 parser.add_option('-g', '--get-range-slice-count', type="int", default=1000,
                   dest="rangecount",
                   help="amount of keys to get_range_slices per call")
+parser.add_option('-l', '--replication-factor', type="int", default=1,
+                  dest="replication",
+                  help="replication factor to use when creating needed column 
families")
+parser.add_option('-e', '--consistency-level', type="str", default='ONE',
+                  dest="consistency", help="consistency level to use")
 
 (options, args) = parser.parse_args()
  
@@ -111,6 +116,11 @@ nodes = options.nodes.split(',')
 stdev = total_keys * options.stdev
 mean = total_keys / 2
 
+consistency = getattr(ConsistencyLevel, options.consistency, None)
+if consistency is None:
+    print "%s is not a valid consistency level" % options.consistency
+    sys.exit(3)
+
 def key_generator_gauss():
     fmt = '%0' + str(len(str(total_keys))) + 'd'
     while True:
@@ -143,7 +153,7 @@ def get_client(host='127.0.0.1', port=91
 def make_keyspaces():
     cfams = [CfDef('Keyspace1', 'Standard1'),
              CfDef('Keyspace1', 'Super1', 'Super')]
-    keyspace = KsDef('Keyspace1', 
'org.apache.cassandra.locator.RackUnawareStrategy', 1, cfams)
+    keyspace = KsDef('Keyspace1', 
'org.apache.cassandra.locator.RackUnawareStrategy', options.replication, cfams)
     client = get_client(nodes[0], options.port, options.framed)
     client.transport.open()
     try:
@@ -189,7 +199,7 @@ class Inserter(Operation):
                 cfmap = {key: {'Standard1': 
[Mutation(ColumnOrSuperColumn(column=c)) for c in columns]}}
             start = time.time()
             try:
-                self.cclient.batch_mutate(cfmap, ConsistencyLevel.ONE)
+                self.cclient.batch_mutate(cfmap, consistency)
             except KeyboardInterrupt:
                 raise
             except Exception, e:
@@ -212,7 +222,7 @@ class Reader(Operation):
                     parent = ColumnParent('Super1', 'S' + str(j))
                     start = time.time()
                     try:
-                        r = self.cclient.get_slice(key, parent, p, 
ConsistencyLevel.ONE)
+                        r = self.cclient.get_slice(key, parent, p, consistency)
                         if not r: raise RuntimeError("Key %s not found" % key)
                     except KeyboardInterrupt:
                         raise
@@ -230,7 +240,7 @@ class Reader(Operation):
                 key = key_generator()
                 start = time.time()
                 try:
-                    r = self.cclient.get_slice(key, parent, p, 
ConsistencyLevel.ONE)
+                    r = self.cclient.get_slice(key, parent, p, consistency)
                     if not r: raise RuntimeError("Key %s not found" % key)
                 except KeyboardInterrupt:
                     raise
@@ -259,7 +269,7 @@ class RangeSlicer(Operation):
                     parent = ColumnParent('Super1', chr(ord('A') + j)) 
                     begin = time.time()
                     try:
-                        res = self.cclient.get_range_slices(parent, p, 
keyrange, ConsistencyLevel.ONE)
+                        res = self.cclient.get_range_slices(parent, p, 
keyrange, consistency)
                         if not res: raise RuntimeError("Key %s not found" % 
key)
                     except KeyboardInterrupt:
                         raise
@@ -281,7 +291,7 @@ class RangeSlicer(Operation):
                 keyrange = KeyRange(start, finish, count = options.rangecount)
                 begin = time.time()
                 try:
-                    r = self.cclient.get_range_slices(parent, p, keyrange, 
ConsistencyLevel.ONE)
+                    r = self.cclient.get_range_slices(parent, p, keyrange, 
consistency)
                     if not r: raise RuntimeError("Range not found:", start, 
finish)
                 except KeyboardInterrupt:
                     raise


Reply via email to