Commit 16134be2 authored by Job Vranish's avatar Job Vranish
Browse files

cleaned up kinetic client tests and got several more building

parent 6642f8ea
Loading
Loading
Loading
Loading
+2 −4
Original line number Diff line number Diff line
@@ -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)
    {
@@ -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)
+6 −0
Original line number Diff line number Diff line
@@ -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;
+1 −0
Original line number Diff line number Diff line
@@ -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);
+1 −0
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@
*/
#include "system_test_fixture.h"
#include "kinetic_client.h"
#include "mock_kinetic_pdu.h"

static SystemTestFixture Fixture;

+47 −15
Original line number Diff line number Diff line
@@ -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;
@@ -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);
}

@@ -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 = {
@@ -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