Ejemplo n.º 1
0
    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()
Ejemplo n.º 2
0
    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()
Ejemplo n.º 3
0
    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()
Ejemplo n.º 4
0
 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})
Ejemplo n.º 5
0
 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
Ejemplo n.º 6
0
 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)
Ejemplo n.º 7
0
 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
Ejemplo n.º 8
0
 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
Ejemplo n.º 9
0
 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
Ejemplo n.º 10
0
 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)
Ejemplo n.º 11
0
 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)