import random
import string
import uuid
import json
import time

from couchbase.couchbaseclient import VBucketAwareCouchbaseClient

# Benchmark parameters
HOST = "10.3.121.190"
ITEMS = 10000 # Total number of documents to create/read
VALUES_PER_DOC = 15
VALUE_LENGTH = 100 # together with previous parameter it defines document size

# Random string generator
randstr = lambda length: ''.join(random.choice(string.letters + string.digits)
                                 for _ in range(length))

# Test data
print "Preparing data..."

data = dict()
for item in range(ITEMS):
    key = uuid.uuid4().hex
    value = dict((randstr(10), randstr(VALUE_LENGTH))
                 for _ in range(VALUES_PER_DOC))
    data[key] = json.dumps(value)

# Establish connection
cb = VBucketAwareCouchbaseClient("http://{0}:8091/pools/default".format(HOST),
                                 "default", "password", True)

# Insert all items
print "Loading data..."

start_time = time.time()
for key, value in data.items():
    cb.set(key, 0, 0, value)
end_time = time.time()
print "Set cmds/sec: {0}".format(ITEMS/(end_time - start_time))

# Read all items from database
print "Reading data..."

start_time = time.time()
for key in data:
    cb.get(key)
end_time = time.time()

print "Get cmds/sec: {0}".format(ITEMS/(end_time - start_time))