Loading src/lib/kinetic_client.c +2 −4 Original line number Diff line number Diff line Loading @@ -30,9 +30,9 @@ KineticClient * KineticClient_Init(const char* log_file, int log_level) { KineticLogger_Init(log_file, log_level); KineticClient * client = calloc(1, sizeof(*client)); if (client == NULL) { return NULL; } KineticLogger_Init(log_file, log_level); bool success = KineticPDU_InitBus(1, client); if (!success) { Loading @@ -44,11 +44,9 @@ KineticClient * KineticClient_Init(const char* log_file, int log_level) void KineticClient_Shutdown(KineticClient * const client) { bus_shutdown(client->bus); bus_free(client->bus); KineticPDU_DeinitBus(client); free(client); KineticLogger_Close(); } KineticStatus KineticClient_CreateConnection(KineticSession* const session, KineticClient * const client) Loading src/lib/kinetic_pdu.c +6 −0 Original line number Diff line number Diff line Loading @@ -223,6 +223,12 @@ bool KineticPDU_InitBus(int log_level, KineticClient * client) return true; } void KineticPDU_DeinitBus(KineticClient * const client) { bus_shutdown(client->bus); bus_free(client->bus); } KineticStatus KineticPDU_GetStatus(KineticResponse* response) { KineticStatus status = KINETIC_STATUS_INVALID; Loading src/lib/kinetic_pdu.h +1 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ #include "kinetic_types_internal.h" bool KineticPDU_InitBus(int log_level, KineticClient * client); void KineticPDU_DeinitBus(KineticClient * const client); KineticStatus KineticPDU_GetStatus(KineticResponse* pdu); KineticProto_Command_KeyValue* KineticPDU_GetKeyValue(KineticResponse* pdu); KineticProto_Command_Range* KineticPDU_GetKeyRange(KineticResponse* pdu); Loading test/system/test_system_getnext_getprevious.c +1 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ */ #include "system_test_fixture.h" #include "kinetic_client.h" #include "mock_kinetic_pdu.h" static SystemTestFixture Fixture; Loading test/unit/test_kinetic_client.c +47 −15 Original line number Diff line number Diff line Loading @@ -33,6 +33,8 @@ #include "mock_kinetic_pdu.h" #include "mock_kinetic_operation.h" #include "protobuf-c/protobuf-c.h" #include "mock_bus.h" #include "mock_memory_stubs.h" #include <stdio.h> static KineticSession Session; Loading @@ -52,25 +54,50 @@ void tearDown(void) KineticLogger_Close(); } void test_KineticClient_Init_should_initialize_the_logger(void) void test_KineticClient_Init_should_initialize_the_message_bus_and_return_a_new_client(void) { KineticClient_Init("./some_file.log", 3); KineticClient_Init("stdout", 1); KineticClient_Init(NULL, -1); KineticClient client; calloc_ExpectAndReturn(1, sizeof(KineticClient), &client); KineticPDU_InitBus_ExpectAndReturn(1, &client, true); KineticClient * result = KineticClient_Init("./some_file.log", 3); TEST_ASSERT_EQUAL(&client, result); } void test_KineticClient_Init_should_return_null_if_calloc_returns_null(void) { calloc_ExpectAndReturn(1, sizeof(KineticClient), NULL); KineticClient * result = KineticClient_Init("./some_file.log", 3); TEST_ASSERT_NULL(result); } void test_KineticClient_Init_should_free_client_if_bus_init_fails(void) { KineticClient client; calloc_ExpectAndReturn(1, sizeof(KineticClient), &client); KineticPDU_InitBus_ExpectAndReturn(1, &client, false); free_Expect(&client); KineticClient * result = KineticClient_Init("./some_file.log", 3); TEST_ASSERT_NULL(result); } static void ConnectSession(void) { KINETIC_CONNECTION_INIT(&Connection); KineticClient client; Connection.connected = false; // Ensure gets set appropriately by internal connect call HmacKey = ByteArray_CreateWithCString("some hmac key"); KINETIC_SESSION_INIT(&Session, "somehost.com", ClusterVersion, Identity, HmacKey); Session.connection = &Connection; KineticSession_Create_ExpectAndReturn(&Session, KINETIC_STATUS_SUCCESS); KineticSession_Create_ExpectAndReturn(&Session, &client, KINETIC_STATUS_SUCCESS); KineticSession_Connect_ExpectAndReturn(&Session, KINETIC_STATUS_SUCCESS); KineticStatus status = KineticClient_CreateConnection(&Session); KineticStatus status = KineticClient_CreateConnection(&Session, &client); TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_SUCCESS, status); } Loading @@ -82,36 +109,39 @@ void test_KineticClient_CreateConnection_should_configure_a_session_and_connect_ void test_KineticClient_CreateConnection_should_return_KINETIC_STATUS_SESSION_EMPTY_upon_NULL_session_config(void) { KineticStatus status = KineticClient_CreateConnection(NULL); KineticStatus status = KineticClient_CreateConnection(NULL, NULL); TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_SESSION_EMPTY, status); } void test_KineticClient_CreateConnection_should_return_KINETIC_STATUS_HOST_EMPTY_upon_NULL_host(void) { KineticClient client; ByteArray key = ByteArray_CreateWithCString("some_key"); KineticSession session = { .config.host = "", .config.hmacKey = key, }; KineticStatus status = KineticClient_CreateConnection(&session); KineticStatus status = KineticClient_CreateConnection(&session, &client); TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_HOST_EMPTY, status); } void test_KineticClient_CreateConnection_should_return_KINETIC_STATUS_HMAC_EMPTY_upon_NULL_HMAC_key(void) { KineticClient client; ByteArray key = {.len = 4, .data = NULL}; KineticSession session = { .config.host = "somehost.com", .config.hmacKey = key, }; KineticStatus status = KineticClient_CreateConnection(&session); KineticStatus status = KineticClient_CreateConnection(&session, &client); TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_HMAC_EMPTY, status); } void test_KineticClient_CreateConnection_should_return_false_upon_empty_HMAC_key(void) { KineticClient client; uint8_t keyData[] = {0, 1, 2, 3}; ByteArray key = {.len = 0, .data = keyData}; KineticSession session = { Loading @@ -119,37 +149,39 @@ void test_KineticClient_CreateConnection_should_return_false_upon_empty_HMAC_key .config.hmacKey = key, }; KineticStatus status = KineticClient_CreateConnection(&session); KineticStatus status = KineticClient_CreateConnection(&session, &client); TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_HMAC_EMPTY, status); } void test_KineticClient_CreateConnection_should_return_KINETIC_STATUS_SESSION_EMPTY_upon_NULL_connection(void) { KineticClient client; KineticSession session = { .config.host = "somehost.com", .config.hmacKey = ByteArray_CreateWithCString("some_key"), .connection = NULL, }; KineticSession_Create_ExpectAndReturn(&session, KINETIC_STATUS_SUCCESS); KineticSession_Create_ExpectAndReturn(&session, &client, KINETIC_STATUS_SUCCESS); KineticStatus status = KineticClient_CreateConnection(&session); KineticStatus status = KineticClient_CreateConnection(&session, &client); TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_CONNECTION_ERROR, status); } void test_KineticClient_CreateConnection_should_return_status_from_a_failed_connection(void) { KineticClient client; KineticSession session = { .config.host = "somehost.com", .config.hmacKey = ByteArray_CreateWithCString("some_key"), .connection = &Connection, }; KineticSession_Create_ExpectAndReturn(&session, KINETIC_STATUS_SUCCESS); KineticSession_Create_ExpectAndReturn(&session, &client, KINETIC_STATUS_SUCCESS); KineticSession_Connect_ExpectAndReturn(&session, KINETIC_STATUS_HMAC_EMPTY); KineticSession_Destroy_ExpectAndReturn(&session, KINETIC_STATUS_SUCCESS); KineticStatus status = KineticClient_CreateConnection(&session); KineticStatus status = KineticClient_CreateConnection(&session, &client); TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_HMAC_EMPTY, status); } Loading Loading
src/lib/kinetic_client.c +2 −4 Original line number Diff line number Diff line Loading @@ -30,9 +30,9 @@ KineticClient * KineticClient_Init(const char* log_file, int log_level) { KineticLogger_Init(log_file, log_level); KineticClient * client = calloc(1, sizeof(*client)); if (client == NULL) { return NULL; } KineticLogger_Init(log_file, log_level); bool success = KineticPDU_InitBus(1, client); if (!success) { Loading @@ -44,11 +44,9 @@ KineticClient * KineticClient_Init(const char* log_file, int log_level) void KineticClient_Shutdown(KineticClient * const client) { bus_shutdown(client->bus); bus_free(client->bus); KineticPDU_DeinitBus(client); free(client); KineticLogger_Close(); } KineticStatus KineticClient_CreateConnection(KineticSession* const session, KineticClient * const client) Loading
src/lib/kinetic_pdu.c +6 −0 Original line number Diff line number Diff line Loading @@ -223,6 +223,12 @@ bool KineticPDU_InitBus(int log_level, KineticClient * client) return true; } void KineticPDU_DeinitBus(KineticClient * const client) { bus_shutdown(client->bus); bus_free(client->bus); } KineticStatus KineticPDU_GetStatus(KineticResponse* response) { KineticStatus status = KINETIC_STATUS_INVALID; Loading
src/lib/kinetic_pdu.h +1 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ #include "kinetic_types_internal.h" bool KineticPDU_InitBus(int log_level, KineticClient * client); void KineticPDU_DeinitBus(KineticClient * const client); KineticStatus KineticPDU_GetStatus(KineticResponse* pdu); KineticProto_Command_KeyValue* KineticPDU_GetKeyValue(KineticResponse* pdu); KineticProto_Command_Range* KineticPDU_GetKeyRange(KineticResponse* pdu); Loading
test/system/test_system_getnext_getprevious.c +1 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ */ #include "system_test_fixture.h" #include "kinetic_client.h" #include "mock_kinetic_pdu.h" static SystemTestFixture Fixture; Loading
test/unit/test_kinetic_client.c +47 −15 Original line number Diff line number Diff line Loading @@ -33,6 +33,8 @@ #include "mock_kinetic_pdu.h" #include "mock_kinetic_operation.h" #include "protobuf-c/protobuf-c.h" #include "mock_bus.h" #include "mock_memory_stubs.h" #include <stdio.h> static KineticSession Session; Loading @@ -52,25 +54,50 @@ void tearDown(void) KineticLogger_Close(); } void test_KineticClient_Init_should_initialize_the_logger(void) void test_KineticClient_Init_should_initialize_the_message_bus_and_return_a_new_client(void) { KineticClient_Init("./some_file.log", 3); KineticClient_Init("stdout", 1); KineticClient_Init(NULL, -1); KineticClient client; calloc_ExpectAndReturn(1, sizeof(KineticClient), &client); KineticPDU_InitBus_ExpectAndReturn(1, &client, true); KineticClient * result = KineticClient_Init("./some_file.log", 3); TEST_ASSERT_EQUAL(&client, result); } void test_KineticClient_Init_should_return_null_if_calloc_returns_null(void) { calloc_ExpectAndReturn(1, sizeof(KineticClient), NULL); KineticClient * result = KineticClient_Init("./some_file.log", 3); TEST_ASSERT_NULL(result); } void test_KineticClient_Init_should_free_client_if_bus_init_fails(void) { KineticClient client; calloc_ExpectAndReturn(1, sizeof(KineticClient), &client); KineticPDU_InitBus_ExpectAndReturn(1, &client, false); free_Expect(&client); KineticClient * result = KineticClient_Init("./some_file.log", 3); TEST_ASSERT_NULL(result); } static void ConnectSession(void) { KINETIC_CONNECTION_INIT(&Connection); KineticClient client; Connection.connected = false; // Ensure gets set appropriately by internal connect call HmacKey = ByteArray_CreateWithCString("some hmac key"); KINETIC_SESSION_INIT(&Session, "somehost.com", ClusterVersion, Identity, HmacKey); Session.connection = &Connection; KineticSession_Create_ExpectAndReturn(&Session, KINETIC_STATUS_SUCCESS); KineticSession_Create_ExpectAndReturn(&Session, &client, KINETIC_STATUS_SUCCESS); KineticSession_Connect_ExpectAndReturn(&Session, KINETIC_STATUS_SUCCESS); KineticStatus status = KineticClient_CreateConnection(&Session); KineticStatus status = KineticClient_CreateConnection(&Session, &client); TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_SUCCESS, status); } Loading @@ -82,36 +109,39 @@ void test_KineticClient_CreateConnection_should_configure_a_session_and_connect_ void test_KineticClient_CreateConnection_should_return_KINETIC_STATUS_SESSION_EMPTY_upon_NULL_session_config(void) { KineticStatus status = KineticClient_CreateConnection(NULL); KineticStatus status = KineticClient_CreateConnection(NULL, NULL); TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_SESSION_EMPTY, status); } void test_KineticClient_CreateConnection_should_return_KINETIC_STATUS_HOST_EMPTY_upon_NULL_host(void) { KineticClient client; ByteArray key = ByteArray_CreateWithCString("some_key"); KineticSession session = { .config.host = "", .config.hmacKey = key, }; KineticStatus status = KineticClient_CreateConnection(&session); KineticStatus status = KineticClient_CreateConnection(&session, &client); TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_HOST_EMPTY, status); } void test_KineticClient_CreateConnection_should_return_KINETIC_STATUS_HMAC_EMPTY_upon_NULL_HMAC_key(void) { KineticClient client; ByteArray key = {.len = 4, .data = NULL}; KineticSession session = { .config.host = "somehost.com", .config.hmacKey = key, }; KineticStatus status = KineticClient_CreateConnection(&session); KineticStatus status = KineticClient_CreateConnection(&session, &client); TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_HMAC_EMPTY, status); } void test_KineticClient_CreateConnection_should_return_false_upon_empty_HMAC_key(void) { KineticClient client; uint8_t keyData[] = {0, 1, 2, 3}; ByteArray key = {.len = 0, .data = keyData}; KineticSession session = { Loading @@ -119,37 +149,39 @@ void test_KineticClient_CreateConnection_should_return_false_upon_empty_HMAC_key .config.hmacKey = key, }; KineticStatus status = KineticClient_CreateConnection(&session); KineticStatus status = KineticClient_CreateConnection(&session, &client); TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_HMAC_EMPTY, status); } void test_KineticClient_CreateConnection_should_return_KINETIC_STATUS_SESSION_EMPTY_upon_NULL_connection(void) { KineticClient client; KineticSession session = { .config.host = "somehost.com", .config.hmacKey = ByteArray_CreateWithCString("some_key"), .connection = NULL, }; KineticSession_Create_ExpectAndReturn(&session, KINETIC_STATUS_SUCCESS); KineticSession_Create_ExpectAndReturn(&session, &client, KINETIC_STATUS_SUCCESS); KineticStatus status = KineticClient_CreateConnection(&session); KineticStatus status = KineticClient_CreateConnection(&session, &client); TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_CONNECTION_ERROR, status); } void test_KineticClient_CreateConnection_should_return_status_from_a_failed_connection(void) { KineticClient client; KineticSession session = { .config.host = "somehost.com", .config.hmacKey = ByteArray_CreateWithCString("some_key"), .connection = &Connection, }; KineticSession_Create_ExpectAndReturn(&session, KINETIC_STATUS_SUCCESS); KineticSession_Create_ExpectAndReturn(&session, &client, KINETIC_STATUS_SUCCESS); KineticSession_Connect_ExpectAndReturn(&session, KINETIC_STATUS_HMAC_EMPTY); KineticSession_Destroy_ExpectAndReturn(&session, KINETIC_STATUS_SUCCESS); KineticStatus status = KineticClient_CreateConnection(&session); KineticStatus status = KineticClient_CreateConnection(&session, &client); TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_HMAC_EMPTY, status); } Loading