def test_create(self): mocket = mock(websocket.WebSocket, strict=False) when(websocket).create_connection("ws://{}:{}".format( TestConnection.test_host, TestConnection.test_port)).thenReturn(mocket) proto_captor = captor(ANY(str)) when(mocket).send(proto_captor) msg = database_pb2.database_response() when(mocket).recv().thenReturn(msg.SerializeToString()) self.assertIsNone( self.connection.create(TestConnection.test_key, TestConnection.test_value)) self.assertIsNotNone(proto_captor.value) send_json = json.loads(proto_captor.value) self.assertIn('bzn-api', send_json) self.assertEquals(send_json['bzn-api'], 'database') msg = bluzelle_pb2.bzn_msg() msg.ParseFromString(base64.b64decode(send_json['msg'])) self.assertEquals(msg.db.create.key, TestConnection.test_key) self.assertEquals(msg.db.create.value, TestConnection.test_value) self.assertEquals(msg.db.header.db_uuid, TestConnection.test_uuid) self.assertIsNotNone(msg.db.header.transaction_id) unstub()
def test_redirect(self): mocket = mock(websocket.WebSocket, strict=False) when(websocket).create_connection("ws://{}:{}".format(TestConnection.test_host, TestConnection.test_port)).thenReturn(mocket) proto_captor = captor(ANY(str)) when(mocket).send(proto_captor) msg = database_pb2.database_response() msg.redirect.leader_host = TestConnection.test_redirect_host msg.redirect.leader_port = TestConnection.test_redirect_port when(mocket).recv().thenReturn(msg.SerializeToString()) test_connection = self.createTestConnection() redirect_mocket = mock(websocket.WebSocket, strict=False) when(websocket).create_connection("ws://{}:{}".format(TestConnection.test_redirect_host, TestConnection.test_redirect_port)).thenReturn(redirect_mocket) msg = database_pb2.database_response() msg.read.value = TestConnection.test_value when(redirect_mocket).recv().thenReturn(msg.SerializeToString()) self.assertEquals(test_connection.read(TestConnection.test_key), TestConnection.test_value) self.assertIsNotNone(proto_captor.value) send_json = json.loads(proto_captor.value) self.assertIn('bzn-api', send_json) self.assertEquals(send_json['bzn-api'], 'database') msg = bluzelle_pb2.bzn_msg() msg.ParseFromString(base64.b64decode(send_json['msg'])) self.assertEquals(msg.db.read.key, TestConnection.test_key) unstub()
def test_keys(self): mocket = mock(websocket.WebSocket, strict=False) when(websocket).create_connection("ws://{}:{}".format(TestConnection.test_host, TestConnection.test_port)).thenReturn(mocket) proto_captor = captor(ANY(str)) when(mocket).send(proto_captor) keys = [TestConnection.test_key, TestConnection.test_key_other] msg = database_pb2.database_response() msg.keys.keys.extend(keys) when(mocket).recv().thenReturn(msg.SerializeToString()) test_connection = self.createTestConnection() self.assertListEqual(list(test_connection.keys()), keys) self.assertIsNotNone(proto_captor.value) send_json = json.loads(proto_captor.value) self.assertIn('bzn-api', send_json) self.assertEquals(send_json['bzn-api'], 'database') msg = bluzelle_pb2.bzn_msg() msg.ParseFromString(base64.b64decode(send_json['msg'])) unstub()
def size(self): """ Query for size of the database in bytes :return: Size of the database in bytes """ msg = bluzelle_pb2.bzn_msg() msg.db.size.SetInParent() resp = self._send_request_sync(msg) return ({"bytes": resp.size.bytes, "keys": resp.size.keys})
def keys(self): """ Query for all keys in a database :return: List of keys in the database """ msg = bluzelle_pb2.bzn_msg() msg.db.keys.SetInParent() resp = self._send_request_sync(msg) return resp.keys.keys
def delete(self, key): """ Create a new K/V :param key: Key to delete :return: """ msg = bluzelle_pb2.bzn_msg() msg.db.delete.key = key self._send_request_sync(msg)
def size(self): """ Query for size of the database in bytes :return: Size of the database in bytes """ msg = bluzelle_pb2.bzn_msg() msg.db.size.SetInParent() resp = self._send_request(self._host, self._port, msg) return resp.resp.size
def has(self, key): """ Create a new K/V :param key: Key to test :return: true if key exists """ msg = bluzelle_pb2.bzn_msg() msg.db.has.key = key resp = self._send_request_sync(msg) return resp.has.has
def read(self, key): """ Read a value at a key :param key: Key to read :return: value """ msg = bluzelle_pb2.bzn_msg() msg.db.read.key = key resp = self._send_request_sync(msg) return resp.read.value
def create(self, key, value): """ Create a new K/V :param key: New key to create :param value: New value to add to the key :return: """ msg = bluzelle_pb2.bzn_msg() msg.db.create.key = key msg.db.create.value = value self._send_request_sync(msg)
def update(self, key, value): """ Update a K/V :param key: Key to update :param value: Value to update :return: """ msg = bluzelle_pb2.bzn_msg() msg.db.update.key = key msg.db.update.value = value self._send_request_sync(msg)