Simple Couchbase CRUD-workload generator based on pylibcouchbase
- Python 2.7 (including headers)
- libcouchbase
- pip or equivalent
    pip install spring
    $ spring -h
    usage: spring [-crud PERCENTAGE] [-o #OPS] [-i #ITEMS] [-n #WORKERS] [cb://user:pass@host:port/bucket]
    positional arguments:
      URI            Connection URI
    optional arguments:
      -h, --help     show this help message and exit
      -v, --version  show program's version number and exit
      -c             percentage of "create" operations (0 by default)
      -r             percentage of "read" operations (0 by default)
      -u             percentage of "update" operations (0 by default)
      -d             percentage of "delete" operations (0 by default)
      -e             percentage of new items that expire (0 by default)
      -o             total number of operations (infinity by default)
      -t             target operations throughput (infinity by default)
      -s             average value size in bytes (2048 by default)
      -i             number of existing items (0 by default)
      -w             percentage of items in working set, 100 by default
      -W             percentage of operations that hit working set, 100 by default
      -n             number of workers (1 by default)
Insert 1K items:
    spring -c 100 -o 1000
Update them:
    spring -u 100 -o 1000 -i 1000
Add 1K more items:
    spring -c 100 -o 1000 -i 1000
Perform 1K mixed (read/update) operations:
    spring -c 50 -u 50 -o 1000 -i 2000
Infinite read loop using 8 workers:
    spring -r 100 -i 2000 -n 8
Delete 2K items:
    spring -d 100 -o 2000
Running in asynchronous mode:
    spring -r 100 -i 2000 --async
First of all install gprof2dot:
    pip install gprof2dot
Then run one of benchmarks:
    ./benchmark_docs.py && gprof2dot -f pstats profile.prof | dot -Tsvg -o profile.svg
After nose installation:
    nosetests -v tests.py
| Field | Specification | Combinations | Example | 
|---|---|---|---|
| name[.f.f.f] | 12 hex chars | 281 474 976 710 656 | ecdb3e e921c9 | 
| email[.f.f] | 12 hex chars | 281 474 976 710 656 | [email protected] | 
| street[.f.f] | 8 hex chars | 4 294 967 296 | 400f1d0a | 
| city[.f.f] | 6 hex chars | 16 777 216 | 90ac48 | 
| county[.f.f] | 6 hex chars | 16 777 216 | 40efd6 | 
| country[.f] | 6 hex chars | 16 777 216 | 1811db | 
| realm[.f] | 6 hex chars | 16 777 216 | 15e3f5 | 
| state[.f] | 2 chars | 57 | WY | 
| full_state[.f] | 4-24 chars | 57 | Montana | 
| coins[.f] | float [0.1, 655.35] | 65 535 | 213.54 | 
| category | int [0, 2] | 3 | 1 | 
| achievements | [1, 10]array int[0, 511] | inf | [0, 135, 92] | 
| gmtime | date time array | 12 | [1972, 3, 3, 0, 0, 0, 4, 63, 0] | 
| year | int [1985, 2000] | 15 | 1989 | 
| body | hex string | inf | N/A |