Skip to content

Commit

Permalink
hack: merge duplicated cass-stress-gen scripts
Browse files Browse the repository at this point in the history
  • Loading branch information
zimnx committed Mar 18, 2021
1 parent c7a2159 commit a72aa42
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 102 deletions.
4 changes: 2 additions & 2 deletions docs/source/generic.md
Original file line number Diff line number Diff line change
Expand Up @@ -302,14 +302,14 @@ After deploying our cluster along with the monitoring, we can benchmark it using
# Run a benchmark with 10 jobs, with 6 cpus and 50.000.000 operations each.
# Each Job will throttle throughput to 30.000 ops/sec for a total of 300.000 ops/sec.
scripts/cass-stress-gen.py --num-jobs=10 --cpu=6 --memory=20G --ops=50000000 --limit=30000
hack/cass-stress-gen.py --num-jobs=10 --cpu=6 --memory=20G --ops=50000000 --limit=30000
kubectl apply -f scripts/cassandra-stress.yaml
```

Make sure you set the proper arguments in case you have altered things such as _name_ or _namespace_.

```bash
./scripts/cass-stress-gen.py -h
./hack/cass-stress-gen.py -h
usage: cass-stress-gen.py [-h] [--num-jobs NUM_JOBS] [--name NAME] [--namespace NAMESPACE] [--scylla-version SCYLLA_VERSION] [--host HOST] [--cpu CPU] [--memory MEMORY] [--ops OPS] [--threads THREADS] [--limit LIMIT]
[--connections-per-host CONNECTIONS_PER_HOST] [--print-to-stdout] [--nodeselector NODESELECTOR]
Expand Down
13 changes: 10 additions & 3 deletions hack/cass-stress-gen.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
#!/usr/bin/env python3
import argparse
import sys
import os

template = """
apiVersion: batch/v1
kind: Job
metadata:
name: {d.name}-{}
namespace: {d.namespace}
labels:
app: cassandra-stress
spec:
Expand Down Expand Up @@ -46,16 +49,17 @@ def parse():
parser = argparse.ArgumentParser(description='Generate cassandra-stress job templates for Kubernetes.')
parser.add_argument('--num-jobs', type=int, default=1, help='number of Kubernetes jobs to generate - defaults to 1', dest='num_jobs')
parser.add_argument('--name', default='cassandra-stress', help='name of the generated yaml file - defaults to cassandra-stress')
parser.add_argument('--namespace', default='default', help='namespace of the cassandra-stress jobs - defaults to "default"')
parser.add_argument('--scylla-version', default='4.0.0', help='version of scylla server to use for cassandra-stress - defaults to 4.0.0', dest='scylla_version')
parser.add_argument('--host', default='simple-cluster.scylla.svc', help='ip or dns name of host to connect to - defaults to simple-cluster.scylla.svc')
parser.add_argument('--host', default='scylla-cluster-client.scylla.svc', help='ip or dns name of host to connect to - defaults to scylla-cluster-client.scylla.svc')
parser.add_argument('--cpu', default=1, type=int, help='number of cpus that will be used for each job - defaults to 1')
parser.add_argument('--memory', default=None, help='memory that will be used for each job in GB, ie 2G - defaults to 2G * cpu')
parser.add_argument('--ops', type=int, default=10000000, help='number of operations for each job - defaults to 10000000')
parser.add_argument('--threads', default=None, help='number of threads used for each job - defaults to 50 * cpu')
parser.add_argument('--limit', default='', help='rate limit for each job - defaults to no rate-limiting')
parser.add_argument('--connections-per-host', default=None, help='number of connections per host - defaults to number of cpus', dest='connections_per_host')
parser.add_argument('--print-to-stdout', action='store_const', const=True, help='print to stdout instead of writing to a file', dest='print_to_stdout')
parser.add_argument('--nodeselector', default={}, help='nodeselector limits cassandra-stress pods to certain nodes. Use as a label selector, eg. --nodeselector role=scylla', dest='nodeselector')
parser.add_argument('--nodeselector', default="", help='nodeselector limits cassandra-stress pods to certain nodes. Use as a label selector, eg. --nodeselector role=scylla')
return parser.parse_args()

def create_job_list(args):
Expand All @@ -64,6 +68,9 @@ def create_job_list(args):
manifests.append(template.format(i, i*args.ops+1, (i+1)*args.ops, d=args))
return manifests

def get_script_path():
return os.path.dirname(os.path.realpath(sys.argv[0]))

if __name__ == "__main__":
args = parse()

Expand All @@ -85,6 +92,6 @@ def create_job_list(args):
if args.print_to_stdout:
print('\n---\n'.join(manifests))
else:
f = open(args.name + '.yaml', 'w')
f = open(get_script_path() + '/' + args.name + '.yaml', 'w')
f.write('\n---\n'.join(manifests))
f.close()
97 changes: 0 additions & 97 deletions scripts/cass-stress-gen.py

This file was deleted.

0 comments on commit a72aa42

Please sign in to comment.