예제 #1
0
 def __init__(self, state_storage_serviceurl, table_ns, table_name):
     client_settings = StorageClientSettings(
         service_uri=state_storage_serviceurl)
     admin_client = admin.client.Client(
         storage_client_settings=client_settings)
     # create namespace and table if needed
     ns = admin_client.namespace(table_ns)
     try:
         ns.get(stream_name=table_name)
     except NamespaceNotFoundError:
         admin_client.namespaces().create(namespace=table_ns)
         # TODO: make number of table ranges configurable
         table_conf = new_bk_table_conf(1)
         ns.create(
             stream_name=table_name,
             stream_config=table_conf)
     except StreamNotFoundError:
         # TODO: make number of table ranges configurable
         table_conf = new_bk_table_conf(1)
         ns.create(
             stream_name=table_name,
             stream_config=table_conf)
     self.__client__ = kv.Client(storage_client_settings=client_settings,
                                 namespace=table_ns)
     self.__table__ = self.__client__.table(table_name=table_name)
예제 #2
0
def test_get_kv_from_table_updated_by_java_client():
    settings = StorageClientSettings(service_uri="bk://localhost:4181")
    ns = "default"
    tbl_name = "test-java-updates"
    kv_client = kv.Client(storage_client_settings=settings, namespace=ns)
    tbl = kv_client.table(tbl_name)

    for x in range(0, 20):
        expected_key = "java-key-%s" % x
        read_kv = tbl.get_str(expected_key)
        expected_value = "java-value-%s" % x
        assert read_kv.key == str.encode(expected_key, 'utf-8')
        assert read_kv.is_number is False
        assert read_kv.value == str.encode(expected_value, 'utf-8')
        assert read_kv.version == 0
예제 #3
0
ns_props = client.namespaces().get(ns_name_2)
print("Get second namespace '%s' : %s" % (ns_name_2, ns_props))

# test operations on namespace 'test'
ns = client.namespace(ns_name)
stream_resp = ns.create(stream_name)
print("Create first stream '%s' : %s" % (stream_name, stream_resp))
stream_resp = ns.create(stream_name_2)
print("Create second stream '%s' : %s" % (stream_name_2, stream_resp))

stream_props = ns.get(stream_name)
print("Get first stream '%s' : %s" % (stream_name, stream_props))
stream_props = ns.get(stream_name_2)
print("Get second stream '%s' : %s" % (stream_name_2, stream_props))

kv_client = kv.Client(namespace=ns_name)
table = kv_client.table(stream_name)
num_keys = 10

for i in range(num_keys):
    put_resp = table.put_str("key-%s" % i, "value-%s" % i)
print("Successfully added %d keys" % num_keys)

for i in range(10):
    get_resp = table.get_str("key-%s" % i)
    print("Get response : %s" % get_resp)
print("Successfully retrieved %d keys" % num_keys)

for i in range(10):
    del_resp = table.delete_str("key-%s" % i)
    print("Delete response : %s" % del_resp)
예제 #4
0
def test_kv_ops():
    settings = StorageClientSettings(service_uri="bk://localhost:4181")
    admin_client = admin.Client(storage_client_settings=settings)
    ns = "test_kv_ops_%s" % uuid.uuid4().hex
    ns_props = admin_client.namespaces().create(ns)
    __logger__.info("Created namespace '%s' : %s", ns, ns_props)
    tbl_name = "test_kv_ops_table"
    tbl_props = admin_client.namespace(ns).create(tbl_name)
    __logger__.info("Created table '%s' at namespace '%s' : %s", tbl_name, ns,
                    tbl_props)

    kv_client = kv.Client(storage_client_settings=settings, namespace=ns)
    tbl = kv_client.table(tbl_name)

    for x in range(0, 20):
        read_val = tbl.get_str("key-%s" % x)
        assert read_val is None

    for x in range(0, 20):
        tbl.put_str("key-%s" % x, "value-%s" % x)

    for x in range(0, 20):
        read_kv = tbl.get_str("key-%s" % x)
        expected_key = "key-%s" % x
        expected_value = "value-%s" % x
        assert read_kv.key == str.encode(expected_key, 'utf-8')
        assert read_kv.is_number is False
        assert read_kv.value == str.encode(expected_value, 'utf-8')
        assert read_kv.version == 0

    for x in range(0, 20):
        try:
            tbl.incr_str("key-%s" % x, 20)
            assert False
        except BadRequest as e:
            assert e.grpc_status_code == grpc.StatusCode.FAILED_PRECONDITION
            assert e.bk_status_code == storage_pb2.BAD_REQUEST

    for x in range(0, 20):
        read_val = tbl.get_str("counter-%s" % x)
        assert read_val is None

    for x in range(0, 20):
        tbl.incr_str("counter-%s" % x, (x + 1))

    for x in range(0, 20):
        read_kv = tbl.get_str("counter-%s" % x)
        expected_key = "counter-%s" % x
        expected_num = (x + 1)
        assert read_kv.key == str.encode(expected_key, 'utf-8')
        assert read_kv.is_number is True
        assert read_kv.number_value == expected_num
        assert read_kv.version == 0

    for x in range(0, 20):
        try:
            tbl.put_str("counter-%s" % x, "value-%s" % x)
            assert False
        except BadRequest as e:
            assert e.grpc_status_code == grpc.StatusCode.FAILED_PRECONDITION
            assert e.bk_status_code == storage_pb2.BAD_REQUEST

    for x in range(0, 20):
        tbl.delete_str("key-%s" % x)
        read_val = tbl.get_str("key-%s" % x)
        assert read_val is None

    for x in range(0, 20):
        tbl.delete_str("counter-%s" % x)
        read_val = tbl.get_str("counter-%s" % x)
        assert read_val is None