def test_old_set_get_create_example(self): from couchbase.couchbaseclient import CouchbaseClient from couchbase.rest_client import RestConnection, RestHelper client = CouchbaseClient(self.url, self.bucket_name, "", False) client.set("key1", 0, 0, "value1") client.get("key1") server_info = { "ip": self.host, "port": self.port, "username": self.username, "password": self.password } rest = RestConnection(server_info) rest.create_bucket(bucket='newbucket', ramQuotaMB=100, authType='none', saslPassword='', replicaNumber=1, proxyPort=11215, bucketType='membase') self.assertTrue(RestHelper(rest).bucket_exists('newbucket')) rest.delete_bucket('newbucket')
class CouchbaseClientTest(Base): def setUp(self): super(CouchbaseClientTest, self).setUp() self.client = CouchbaseClient(self.url, self.bucket_name, "", True) def tearDown(self): self.client.done() @nottest def setup_memcached_bucket(self): self.memcached_bucket = 'testing-memcached' self.rest_client = RestConnection({'ip': self.host, 'port': self.port, 'username': self.username, 'password': self.password}) self.rest_client.create_bucket(self.memcached_bucket, bucketType='memcached', authType='sasl', ramQuotaMB=64) self.client_for_memcached_bucket = \ CouchbaseClient(self.url, self.memcached_bucket, verbose=True) @nottest def teardown_memcached_bucket(self): self.rest_client.delete_bucket(self.memcached_bucket) @attr(cbv="1.0.0") def test_set_integer_value(self): self.client.set('int', 0, 0, 10) self.assertEqual(self.client.get('int')[2], 10, 'value should be the integer 10') self.client.incr('int') self.assertEqual(self.client.get('int')[2], 11, 'value should be the integer 11') self.client.delete('int') def test_two_client_incr(self): """http://www.couchbase.com/issues/browse/PYCBC-16""" key = 'test_two_client_incr' client_one = self.client client_two = CouchbaseClient(self.url, self.bucket_name, "", True) # Client one sets a numeric key client_one.set(key, 0, 0, 20) # Client two tries to increment this numeric key (i, cas) = client_two.incr(key) self.assertEqual(i, 21) # Client two should be able to keep incrementing this key (i, cas) = client_two.incr(key) self.assertEqual(i, 22) (_, cas, i) = client_two.get(key) self.assertEqual(i, 22) (i, cas) = client_two.incr(key) self.assertEqual(i, 23) def test_bucket_of_type_memcached(self): self.setup_memcached_bucket() self.assertIsInstance(self.client_for_memcached_bucket, CouchbaseClient) self.teardown_memcached_bucket()
class CouchbaseClientTest(Base): def setUp(self): super(CouchbaseClientTest, self).setUp() self.client = CouchbaseClient(self.url, self.bucket_name, "", True) def tearDown(self): self.client.flush() self.client.done() @nottest def setup_memcached_bucket(self): self.memcached_bucket = 'testing-memcached' self.rest_client = RestConnection({'ip': self.host, 'port': self.port, 'username': self.username, 'password': self.password}) self.rest_client.create_bucket(self.memcached_bucket, bucketType='memcached', authType='sasl', ramQuotaMB=64) self.client_for_memcached_bucket = \ CouchbaseClient(self.url, self.memcached_bucket, verbose=True) @nottest def teardown_memcached_bucket(self): self.rest_client.delete_bucket(self.memcached_bucket) @attr(cbv="1.0.0") def test_set_integer_value(self): self.client.set('int', 0, 0, 10) self.assertEqual(self.client.get('int')[2], 10, 'value should be the integer 10') self.client.incr('int') self.assertEqual(self.client.get('int')[2], 11, 'value should be the integer 11') @attr(cbv="1.0.0") def test_bucket_of_type_memcached(self): self.setup_memcached_bucket() self.assertIsInstance(self.client_for_memcached_bucket, CouchbaseClient) self.teardown_memcached_bucket()
def test_old_set_get_create_example(self): from couchbase.couchbaseclient import CouchbaseClient from couchbase.rest_client import RestConnection, RestHelper client = CouchbaseClient(self.url, self.bucket_name, "", False) client.set("key1", 0, 0, "value1") client.get("key1") server_info = {"ip": self.host, "port": self.port, "username": self.username, "password": self.password} rest = RestConnection(server_info) rest.create_bucket( bucket="newbucket", ramQuotaMB=100, authType="none", saslPassword="", replicaNumber=1, proxyPort=11215, bucketType="membase", ) self.assertTrue(RestHelper(rest).bucket_exists("newbucket")) rest.delete_bucket("newbucket")
class RestConnectionTest(unittest.TestCase): def setUp(self): self.host = config['node-1']['host'] self.port = config['node-1']['port'] self.username = config['node-1']['username'] self.password = config['node-1']['password'] self.bucket_name = config['node-1']['bucket'] # list of design_docs for tearDown to destroy, if they've hung around self.design_docs = [] def tearDown(self): for ddoc in self.design_docs: self.rest.delete_design_doc(self.bucket_name, ddoc) pass @nottest def setup_rest_connection(self): server_info = {"ip": self.host, "port": self.port, "username": self.username, "password": self.password} self.rest = RestConnection(server_info) @nottest def setup_create_design_doc(self): self.setup_rest_connection() if self.rest.couch_api_base is None: raise SkipTest ddoc_name = uuid.uuid4() design_doc = json.dumps({"views": {"testing": {"map": "function(doc) { emit(doc._id, null); }" } } }) resp = self.rest.create_design_doc(self.bucket_name, ddoc_name, design_doc) self.design_docs.append(ddoc_name) return ddoc_name, resp @nottest def setup_couchbase_object(self): self.cb = Couchbase(self.host + ':' + self.port, self.username, self.password) @attr(cbv="1.8.0") def test_rest_connection_object_creation(self): self.setup_rest_connection() self.assertEqual(self.rest.baseUrl, "http://%s:%s/" % (self.host, self.port)) @attr(cbv="1.8.0") def test_rest_connection_object_creation_with_server_object(self): class ServerInfo: ip = self.host port = self.port rest_username = self.username rest_password = self.password rest = RestConnection(ServerInfo()) self.assertEqual(rest.baseUrl, "http://%s:%s/" % (self.host, self.port)) @attr(cbv="2.0.0") def test_create_design_doc(self): (ddoc_name, resp) = self.setup_create_design_doc() self.assertTrue(resp["ok"]) @attr(cbv="2.0.0") def test_get_design_doc(self): ddoc_name, resp = self.setup_create_design_doc() ddoc = self.rest.get_design_doc(self.bucket_name, ddoc_name) self.assertIn("views", ddoc.keys()) self.assertRaises(Exception, self.rest.get_design_doc, (self.bucket_name, str(uuid.uuid4()))) @attr(cbv="2.0.0") def test_delete_design_doc(self): ddoc_name, resp = self.setup_create_design_doc() self.assertTrue(self.rest.delete_design_doc(self.bucket_name, ddoc_name)) self.assertRaises(Exception, self.rest.delete_design_doc, (self.bucket_name, ddoc_name)) self.design_docs = filter(lambda id: id is not ddoc_name, self.design_docs) @attr(cbv="2.0.0") def test_get_view(self): (ddoc_name, resp) = self.setup_create_design_doc() with warnings.catch_warnings(record=True) as w: warnings.simplefilter("always") # Trigger a warning. view = self.rest.get_view(self.bucket_name, ddoc_name, "testing") # Verify some things self.assertTrue(len(w) == 1) self.assertTrue("deprecated" in str(w[-1].message)) @attr(cbv="2.0.0") def test_view_results(self): ddoc_name, resp = self.setup_create_design_doc() view = self.rest.view_results(self.bucket_name, ddoc_name, "testing", {}) if "error" in view: self.fail(view) else: self.assertIn("rows", view.keys()) # let's add some sample docs self.setup_couchbase_object() kvs = [(str(uuid.uuid4()), str(uuid.uuid4())) for i in range(0, 100)] for k, v in kvs: self.cb[self.bucket_name].set(k, 0, 0, v) # rerun the view view = self.rest.view_results(self.bucket_name, ddoc_name, "testing", {}) if "error" in view: self.fail(view) else: self.assertIn("rows", view.keys()) # remove sample docs for k, v in kvs: self.cb[self.bucket_name].delete(k) @attr(cbv="1.8.0") def test_create_headers(self): self.setup_rest_connection() headers = self.rest._create_headers() self.assertEqual(headers['Authorization'], 'Basic ' + base64.encodestring("%s:%s" % (self.rest.username, self.rest.password))) @attr(cbv="1.0.0") def test_create_bucket(self): self.setup_rest_connection() # test membase/couchbase creation defaults status = self.rest.create_bucket('newbucket') self.assertTrue(status) bucket = self.rest.get_bucket('newbucket') self.assertEqual(bucket.stats.ram/1024/1024, 100) self.assertEqual(bucket.authType, 'sasl') self.assertEqual(bucket.type, 'membase') self.assertEqual(bucket.numReplicas, 1) self.rest.delete_bucket('newbucket') # test memcached creation defaults status = self.rest.create_bucket(bucket='newbucket', bucketType='memcached') self.assertTrue(status) bucket = self.rest.get_bucket('newbucket') self.assertEqual(bucket.stats.ram/1024/1024, 100) self.assertEqual(bucket.authType, 'sasl') self.assertEqual(bucket.type, 'memcached') self.assertEqual(bucket.numReplicas, 0) # make sure creating an existing bucket fails properly self.assertRaises(Exception, self.rest.create_bucket, bucket='newbucket', bucketType='memcached') self.rest.delete_bucket('newbucket') # test setting ramQuotaMB too low self.assertRaises(AssertionError, self.rest.create_bucket, bucket='newbucket', bucketType='memcached', ramQuotaMB=10) self.assertRaises(AssertionError, self.rest.create_bucket, bucket='newbucket', ramQuotaMB=90)
class CouchbaseClientTest(Base): def setUp(self): super(CouchbaseClientTest, self).setUp() self.client = CouchbaseClient(self.url, self.bucket_name, "", True) def tearDown(self): self.client.done() @nottest def setup_memcached_bucket(self): self.memcached_bucket = 'testing-memcached' self.rest_client = RestConnection({ 'ip': self.host, 'port': self.port, 'username': self.username, 'password': self.password }) self.rest_client.create_bucket(self.memcached_bucket, bucketType='memcached', authType='sasl', ramQuotaMB=64) self.client_for_memcached_bucket = \ CouchbaseClient(self.url, self.memcached_bucket, verbose=True) @nottest def teardown_memcached_bucket(self): self.rest_client.delete_bucket(self.memcached_bucket) @attr(cbv="1.0.0") def test_set_integer_value(self): self.client.set('int', 0, 0, 10) self.assertEqual( self.client.get('int')[2], 10, 'value should be the integer 10') self.client.incr('int') self.assertEqual( self.client.get('int')[2], 11, 'value should be the integer 11') self.client.delete('int') def test_two_client_incr(self): """http://www.couchbase.com/issues/browse/PYCBC-16""" key = 'test_two_client_incr' client_one = self.client client_two = CouchbaseClient(self.url, self.bucket_name, "", True) # Client one sets a numeric key client_one.set(key, 0, 0, 20) # Client two tries to increment this numeric key (i, cas) = client_two.incr(key) self.assertEqual(i, 21) # Client two should be able to keep incrementing this key (i, cas) = client_two.incr(key) self.assertEqual(i, 22) (_, cas, i) = client_two.get(key) self.assertEqual(i, 22) (i, cas) = client_two.incr(key) self.assertEqual(i, 23) def test_bucket_of_type_memcached(self): self.setup_memcached_bucket() self.assertIsInstance(self.client_for_memcached_bucket, CouchbaseClient) self.teardown_memcached_bucket()
class RestConnectionTest(unittest.TestCase): def setUp(self): self.host = config['node-1']['host'] self.port = config['node-1']['port'] self.username = config['node-1']['username'] self.password = config['node-1']['password'] self.bucket_name = config['node-1']['bucket'] # list of design_docs for tearDown to destroy, if they've hung around self.design_docs = [] def tearDown(self): for ddoc in self.design_docs: self.rest.delete_design_doc(self.bucket_name, ddoc) pass @nottest def setup_rest_connection(self): server_info = { "ip": self.host, "port": self.port, "username": self.username, "password": self.password } self.rest = RestConnection(server_info) @nottest def setup_create_design_doc(self): self.setup_rest_connection() if self.rest.couch_api_base is None: raise SkipTest ddoc_name = uuid.uuid4() design_doc = json.dumps({ "views": { "testing": { "map": "function(doc) { emit(doc._id, null); }" } } }) resp = self.rest.create_design_doc(self.bucket_name, ddoc_name, design_doc) self.design_docs.append(ddoc_name) return ddoc_name, resp @nottest def setup_vbucketawareclient(self): self.client = VBucketAwareClient(self.host, 11210) @attr(cbv="1.8.0") def test_rest_connection_object_creation(self): self.setup_rest_connection() self.assertEqual(self.rest.base_url, "http://{0}:{1}".format(self.host, self.port)) @attr(cbv="1.8.0") def test_rest_connection_object_creation_with_server_object(self): class ServerInfo: ip = self.host port = self.port rest_username = self.username rest_password = self.password rest = RestConnection(ServerInfo()) self.assertEqual(rest.base_url, "http://{0}:{1}".format(self.host, self.port)) @attr(cbv="2.0.0") def test_create_design_doc(self): (ddoc_name, resp) = self.setup_create_design_doc() self.assertTrue(resp["ok"]) @attr(cbv="2.0.0") def test_get_design_doc(self): ddoc_name, resp = self.setup_create_design_doc() ddoc = self.rest.get_design_doc(self.bucket_name, ddoc_name) self.assertIn("views", ddoc.keys()) self.assertRaises(Exception, self.rest.get_design_doc, (self.bucket_name, str(uuid.uuid4()))) @attr(cbv="2.0.0") def test_delete_design_doc(self): ddoc_name, resp = self.setup_create_design_doc() self.assertTrue( self.rest.delete_design_doc(self.bucket_name, ddoc_name)) self.assertRaises(Exception, self.rest.delete_design_doc, (self.bucket_name, ddoc_name)) self.design_docs = filter(lambda id: id is not ddoc_name, self.design_docs) @attr(cbv="2.0.0") def test_get_view(self): (ddoc_name, resp) = self.setup_create_design_doc() with warnings.catch_warnings(record=True) as w: warnings.simplefilter("always") # Trigger a warning. self.rest.get_view(self.bucket_name, ddoc_name, "testing") # Verify some things self.assertTrue(len(w) == 1) self.assertTrue("deprecated" in str(w[-1].message)) @attr(cbv="2.0.0") def test_view_results(self): ddoc_name, resp = self.setup_create_design_doc() view = self.rest.view_results(self.bucket_name, ddoc_name, "testing", {}) if "error" in view: self.fail(view) else: self.assertIn("rows", view.keys()) # let's add some sample docs self.setup_vbucketawareclient() kvs = [(str(uuid.uuid4()), str(uuid.uuid4())) for i in range(0, 100)] for k, v in kvs: self.client.set(k, 0, 0, v) # rerun the view view = self.rest.view_results(self.bucket_name, ddoc_name, "testing", {}) if "error" in view: self.fail(view) else: self.assertIn("rows", view.keys()) # remove sample docs for k, v in kvs: self.client.delete(k) @attr(cbv="1.8.0") def test_create_headers(self): self.setup_rest_connection() headers = self.rest._create_headers() self.assertEqual(headers['Content-Type'], 'application/x-www-form-urlencoded') @attr(cbv="1.0.0") def test_create_bucket(self): self.setup_rest_connection() # test membase/couchbase creation defaults status = self.rest.create_bucket('newbucket') self.assertTrue(status) bucket = self.rest.get_bucket('newbucket') self.assertEqual(bucket.stats.ram / 1024 / 1024, 100) self.assertEqual(bucket.authType, 'sasl') self.assertEqual(bucket.type, 'membase') self.assertEqual(bucket.numReplicas, 1) self.rest.delete_bucket('newbucket') # test memcached creation defaults status = self.rest.create_bucket(bucket='newbucket', bucketType='memcached') self.assertTrue(status) bucket = self.rest.get_bucket('newbucket') self.assertEqual(bucket.stats.ram / 1024 / 1024, 100) self.assertEqual(bucket.authType, 'sasl') self.assertEqual(bucket.type, 'memcached') self.assertEqual(bucket.numReplicas, 0) # make sure creating an existing bucket fails properly self.assertRaises(Exception, self.rest.create_bucket, bucket='newbucket', bucketType='memcached') self.rest.delete_bucket('newbucket') # test setting ramQuotaMB too low self.assertRaises(AssertionError, self.rest.create_bucket, bucket='newbucket', bucketType='memcached', ramQuotaMB=10) self.assertRaises(AssertionError, self.rest.create_bucket, bucket='newbucket', ramQuotaMB=90)