Skip to content
Snippets Groups Projects
Commit b2730fca authored by Alexander Aghili's avatar Alexander Aghili
Browse files

added additional test

parent 1f905b97
No related branches found
No related tags found
No related merge requests found
......@@ -66,5 +66,70 @@ def basic_kv_1(conductor: ClusterConductor, dir, log: Logger):
return True, 0
def basic_kv_verify_proxy(conductor: ClusterConductor, dir, log: Logger):
with KVSTestFixture(conductor, dir, log, node_count=4) as fx:
c1 = KVSMultiClient(fx.clients, "c1", log)
c2 = KVSMultiClient(fx.clients, "c2", log)
c3 = KVSMultiClient(fx.clients, "c3", log)
c4 = KVSMultiClient(fx.clients, "c4", log)
conductor.add_shard("shard1", conductor.get_nodes([0, 1]))
conductor.add_shard("shard2", conductor.get_nodes([2, 3]))
fx.broadcast_view(conductor.get_shard_view())
keys = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k"]
values = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
for i in range(len(keys)):
key = keys[i]
value = str(values[i])
r = c1.put(0, key, value)
assert r.ok, f"expected ok for new key, got {r.status_code}"
conductor.create_partition([0,1], "p0")
conductor.create_partition([2,3], "p1")
r = c2.get_all(0)
assert r.ok, f"expected ok for new key, got {r.status_code}"
shard1_keys = r.json()["items"]
r = c3.get_all(2)
assert r.ok, f"expected ok for new key, got {r.status_code}"
shard2_keys = r.json()["items"]
print(shard1_keys)
print(shard2_keys)
assert ((len(shard1_keys) > 0) and (len(shard2_keys) > 0)), "One of the shards has no keys, this is extremely unlikely (1/2^11) and probably means something is wrong"
rk1 = list(shard1_keys.keys())[0]
rk2 = list(shard2_keys.keys())[0]
r = c4.put(0, rk2, "This should fail")
assert r.status_code == 408, f"expected 408 for new key, got {r.status_code}"
r = c4.put(2, rk1, "This should also fail")
assert r.status_code == 408, f"expected 408 for new key, got {r.status_code}"
conductor.create_partition([0, 1, 2, 3], "base")
r = c4.put(0, rk2, "This should work")
assert r.ok, f"expected ok for new key, got {r.status_code}"
r = c4.put(2, rk1, "This should also work")
assert r.ok, f"expected ok for new key, got {r.status_code}"
r = c2.get_all(0)
assert r.ok, f"expected ok for new key, got {r.status_code}"
shard1_keys = r.json()["items"]
r = c3.get_all(2)
assert r.ok, f"expected ok for new key, got {r.status_code}"
shard2_keys = r.json()["items"]
print(shard1_keys)
print(shard2_keys)
assert (len(shard1_keys) > 0 and len(shard2_keys) > 0), "One of the shards has no keys, this is extremely unlikely (1/2^11) and probably means something is wrong"
return True, 0
BASIC_TESTS = [TestCase("basic_kv_1", basic_kv_1), TestCase("basic_kv_view_accept", basic_kv_view_accept)]
BASIC_TESTS = [TestCase("basic_kv_1", basic_kv_1), TestCase("basic_kv_view_accept", basic_kv_view_accept), TestCase("basic_kv_verify_proxy", basic_kv_verify_proxy)]
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment