From aae2dd8b13095e897640b2884b5bf51d9c8f54ed Mon Sep 17 00:00:00 2001 From: Arjun Mittal Date: Fri, 29 Jan 2021 14:55:29 -0500 Subject: [PATCH] additional Tests (#21) --- src/testing/AdditionalTest.java | 43 ++++++++++++++++++++++----------- 1 file changed, 29 insertions(+), 14 deletions(-) diff --git a/src/testing/AdditionalTest.java b/src/testing/AdditionalTest.java index f5597b5..15ff0c3 100644 --- a/src/testing/AdditionalTest.java +++ b/src/testing/AdditionalTest.java @@ -13,11 +13,15 @@ public class AdditionalTest extends TestCase { private KVStore kvClient; + private KVStore kvClientAddition; + public void setUp() { kvClient = new KVStore("localhost", 50000); + kvClientAddition = new KVStore("localhost", 50000); try { kvClient.connect(); + kvClientAddition.connect(); } catch (Exception e) { } } @@ -125,28 +129,39 @@ public void testDeletedKVs() throws Exception { } /** - * Ensure that we're able to get each of the possible message statuses + * Ensure that we only respond to requests of keys in the appropriate size range */ @Test - public void testMessageStatus() throws Exception { - // Test PUTs - assertEquals(KVMessage.StatusType.PUT_SUCCESS, kvClient.put("key", "value").getStatus()); - assertEquals(KVMessage.StatusType.PUT_UPDATE, kvClient.put("key", "new value").getStatus()); - // TODO: how to force PUT_ERROR? - - // Test GETs - assertEquals(KVMessage.StatusType.GET_SUCCESS, kvClient.get("key").getStatus()); - assertEquals(KVMessage.StatusType.GET_ERROR, kvClient.get("nonexistent_key").getStatus()); + public void testMaxKeyError() throws Exception { + char[] bigKey = new char[KVStore.MAX_KEY_SIZE + 1]; + Arrays.fill(bigKey, 'x'); + assertEquals(KVMessage.StatusType.FAILED, kvClient.get(String.valueOf(bigKey)).getStatus()); + } - // Test client-side failures + /** + * Ensure that we only respond to requests of values in the appropriate size range + */ + @Test + public void testMaxValueError() throws Exception { char[] bigKey = new char[KVStore.MAX_KEY_SIZE + 1], bigValue = new char[KVStore.MAX_VALUE_SIZE + 1]; Arrays.fill(bigKey, 'x'); Arrays.fill(bigValue, 'x'); - assertEquals(KVMessage.StatusType.FAILED, kvClient.get(String.valueOf(bigKey)).getStatus()); assertEquals(KVMessage.StatusType.FAILED, kvClient.put(String.valueOf(bigKey), "small value").getStatus()); assertEquals(KVMessage.StatusType.FAILED, kvClient.put("small_key", String.valueOf(bigValue)).getStatus()); + } + + /** + * Ensure that we only respond to requests of values in the appropriate size range + */ + @Test + public void testMultipleClientAccess() throws Exception { + String key = "test1Key"; + String value = "test1Val"; + + KVMessage resClient1 = kvClient.put(key, value); + KVMessage resClient2 = kvClientAddition.get(key); - // Test server-side failures - // TODO: but how? would require malformed protobuf + assertEquals(KVMessage.StatusType.PUT_SUCCESS, resClient1.getStatus()); + assertEquals(value, resClient2.getValue()); } }