Loading Rakefile +10 −0 Original line number Diff line number Diff line Loading @@ -332,6 +332,7 @@ namespace :tests do 'ruby_sim:shutdown', 'tests:utility:noop', 'tests:utility:put', 'tests:utility:get', ] namespace :utility do Loading Loading @@ -362,6 +363,15 @@ namespace :tests do end end task :get => ['release', 'ruby_sim:shutdown'] do java_sim_erase_drive with_test_server("Testing Get operation") do execute_command "./kinetic-c put" execute_command "./kinetic-c get" execute_command "./kinetic-c --host localhost get" end end end end Loading src/lib/kinetic_client.c +60 −43 Original line number Diff line number Diff line Loading @@ -25,6 +25,8 @@ #include "kinetic_logger.h" #include <stdio.h> KineticProto_Status_StatusCode KineticClient_ExecuteOperation(KineticOperation* operation); void KineticClient_Init(const char* logFile) { KineticLogger_Init(logFile); Loading @@ -37,7 +39,7 @@ bool KineticClient_Connect( bool nonBlocking, int64_t clusterVersion, int64_t identity, const char* key) ByteArray key) { if (connection == NULL) { Loading @@ -51,15 +53,15 @@ bool KineticClient_Connect( return false; } if (key == NULL) if (key.len < 1) { LOG("Specified HMAC key is NULL!"); LOG("Specified HMAC key is empty!"); return false; } if (strlen(key) < 1) if (key.data == NULL) { LOG("Specified HMAC key is empty!"); LOG("Specified HMAC key is NULL!"); return false; } Loading Loading @@ -118,10 +120,10 @@ KineticOperation KineticClient_CreateOperation( } KineticMessage_Init(requestMsg); KineticPDU_Init(request, connection, requestMsg, NULL, 0); KineticPDU_Init(request, connection, requestMsg, BYTE_ARRAY_NONE); // KineticMessage_Init(responseMsg); KineticPDU_Init(response, connection, NULL, NULL, 0); KineticPDU_Init(response, connection, NULL, BYTE_ARRAY_NONE); op.connection = connection; op.request = request; Loading @@ -135,9 +137,6 @@ KineticOperation KineticClient_CreateOperation( KineticProto_Status_StatusCode KineticClient_NoOp(KineticOperation* operation) { KineticProto_Status_StatusCode status = KINETIC_PROTO_STATUS_STATUS_CODE_INVALID_STATUS_CODE; assert(operation->connection != NULL); assert(operation->request != NULL); assert(operation->request->message != NULL); Loading @@ -145,51 +144,67 @@ KineticProto_Status_StatusCode KineticClient_NoOp(KineticOperation* operation) assert(operation->response->message == NULL); // Initialize request KineticConnection_IncrementSequence(operation->connection); KineticOperation_BuildNoop(operation); // Send the request KineticPDU_Send(operation->request); // Associate response with same exchange as request operation->response->connection = operation->request->connection; // Execute the operation return KineticClient_ExecuteOperation(operation); } // Receive the response if (KineticPDU_Receive(operation->response)) KineticProto_Status_StatusCode KineticClient_Put(KineticOperation* operation, const ByteArray key, const ByteArray newVersion, const ByteArray dbVersion, const ByteArray tag, const ByteArray value) { status = KineticPDU_Status(operation->response); } assert(operation->connection != NULL); assert(operation->request != NULL); assert(operation->request->message != NULL); assert(operation->response != NULL); assert(operation->response->message == NULL); assert(value.data != NULL); assert(value.len <= PDU_VALUE_MAX_LEN); return status; // Initialize request KineticOperation_BuildPut(operation, key, newVersion, dbVersion, tag, value); // Execute the operation return KineticClient_ExecuteOperation(operation); } KineticProto_Status_StatusCode KineticClient_Put(KineticOperation* operation, char* newVersion, char* key, char* dbVersion, char* tag, uint8_t* value, int64_t len) KineticProto_Status_StatusCode KineticClient_Get(KineticOperation* operation, const ByteArray key, const ByteArray value, bool metadataOnly) { KineticProto_Status_StatusCode status = KINETIC_PROTO_STATUS_STATUS_CODE_INVALID_STATUS_CODE; assert(operation->connection != NULL); assert(operation->request != NULL); assert(operation->request->message != NULL); assert(operation->response != NULL); assert(operation->response->message == NULL); assert(value != NULL); assert(len <= PDU_VALUE_MAX_LEN); assert(key.data != NULL); assert(key.len <= KINETIC_MAX_KEY_LEN); if (!metadataOnly) { assert(value.data != NULL); assert(value.len <= PDU_VALUE_MAX_LEN); } // Initialize request KineticConnection_IncrementSequence(operation->connection); KineticOperation_BuildPut(operation, value, len); KineticMessage_ConfigureKeyValue(operation->request->message, newVersion, key, dbVersion, tag); KineticOperation_BuildGet(operation, key, value, metadataOnly); // Send the request KineticPDU_Send(operation->request); // Execute the operation return KineticClient_ExecuteOperation(operation); } KineticProto_Status_StatusCode KineticClient_ExecuteOperation(KineticOperation* operation) { KineticProto_Status_StatusCode status = KINETIC_PROTO_STATUS_STATUS_CODE_INVALID_STATUS_CODE; // Send the request if (KineticPDU_Send(operation->request)) { // Associate response with same exchange as request operation->response->connection = operation->request->connection; Loading @@ -198,6 +213,8 @@ KineticProto_Status_StatusCode KineticClient_Put(KineticOperation* operation, { status = KineticPDU_Status(operation->response); } } return status; } src/lib/kinetic_client.h +28 −17 Original line number Diff line number Diff line Loading @@ -51,7 +51,7 @@ bool KineticClient_Connect(KineticConnection* connection, bool nonBlocking, int64_t clusterVersion, int64_t identity, const char* key); ByteArray key); /** * @brief Closes the socket connection to a host. Loading Loading @@ -81,7 +81,7 @@ KineticOperation KineticClient_CreateOperation( * * @param operation KineticOperation instance to use for the operation * * @return Returns the resultant status code * @return Returns 0 upon succes, -1 or the Kinetic status code upon failure */ KineticProto_Status_StatusCode KineticClient_NoOp(KineticOperation* operation); Loading @@ -90,14 +90,25 @@ KineticProto_Status_StatusCode KineticClient_NoOp(KineticOperation* operation); * * @param operation KineticOperation instance to use for the operation * * @return Returns the resultant status code * @return Returns 0 upon succes, -1 or the Kinetic status code upon failure */ KineticProto_Status_StatusCode KineticClient_Put(KineticOperation* operation, char* newVersion, char* key, char* dbVersion, char* tag, uint8_t* value, int64_t len); ByteArray key, ByteArray newVersion, ByteArray dbVersion, ByteArray tag, ByteArray value); /** * @brief Executes a GET command to read data from the Kinetic Device * * @param operation KineticOperation instance to use for the operation * * @return Returns 0 upon succes, -1 or the Kinetic status code upon failure */ KineticProto_Status_StatusCode KineticClient_Get(KineticOperation* operation, const ByteArray key, const ByteArray value, bool metadataOnly); #endif // _KINETIC_CLIENT_H src/lib/kinetic_connection.c +2 −2 Original line number Diff line number Diff line Loading @@ -26,7 +26,7 @@ bool KineticConnection_Connect(KineticConnection* const connection, const char* host, int port, bool nonBlocking, int64_t clusterVersion, int64_t identity, const char* key) int64_t clusterVersion, int64_t identity, const ByteArray key) { connection->connected = false; connection->nonBlocking = nonBlocking; Loading @@ -35,7 +35,7 @@ bool KineticConnection_Connect(KineticConnection* const connection, connection->clusterVersion = clusterVersion; connection->identity = identity; strcpy(connection->host, host); strcpy(connection->key, key); memcpy(connection->key.data, key.data, key.len); connection->socketDescriptor = KineticSocket_Connect( connection->host, connection->port, nonBlocking); Loading src/lib/kinetic_connection.h +1 −1 Original line number Diff line number Diff line Loading @@ -29,7 +29,7 @@ bool KineticConnection_Connect(KineticConnection* connection, bool nonBlocking, int64_t clusterVersion, int64_t identity, const char* key); const ByteArray key); void KineticConnection_Disconnect(KineticConnection* const connection); Loading Loading
Rakefile +10 −0 Original line number Diff line number Diff line Loading @@ -332,6 +332,7 @@ namespace :tests do 'ruby_sim:shutdown', 'tests:utility:noop', 'tests:utility:put', 'tests:utility:get', ] namespace :utility do Loading Loading @@ -362,6 +363,15 @@ namespace :tests do end end task :get => ['release', 'ruby_sim:shutdown'] do java_sim_erase_drive with_test_server("Testing Get operation") do execute_command "./kinetic-c put" execute_command "./kinetic-c get" execute_command "./kinetic-c --host localhost get" end end end end Loading
src/lib/kinetic_client.c +60 −43 Original line number Diff line number Diff line Loading @@ -25,6 +25,8 @@ #include "kinetic_logger.h" #include <stdio.h> KineticProto_Status_StatusCode KineticClient_ExecuteOperation(KineticOperation* operation); void KineticClient_Init(const char* logFile) { KineticLogger_Init(logFile); Loading @@ -37,7 +39,7 @@ bool KineticClient_Connect( bool nonBlocking, int64_t clusterVersion, int64_t identity, const char* key) ByteArray key) { if (connection == NULL) { Loading @@ -51,15 +53,15 @@ bool KineticClient_Connect( return false; } if (key == NULL) if (key.len < 1) { LOG("Specified HMAC key is NULL!"); LOG("Specified HMAC key is empty!"); return false; } if (strlen(key) < 1) if (key.data == NULL) { LOG("Specified HMAC key is empty!"); LOG("Specified HMAC key is NULL!"); return false; } Loading Loading @@ -118,10 +120,10 @@ KineticOperation KineticClient_CreateOperation( } KineticMessage_Init(requestMsg); KineticPDU_Init(request, connection, requestMsg, NULL, 0); KineticPDU_Init(request, connection, requestMsg, BYTE_ARRAY_NONE); // KineticMessage_Init(responseMsg); KineticPDU_Init(response, connection, NULL, NULL, 0); KineticPDU_Init(response, connection, NULL, BYTE_ARRAY_NONE); op.connection = connection; op.request = request; Loading @@ -135,9 +137,6 @@ KineticOperation KineticClient_CreateOperation( KineticProto_Status_StatusCode KineticClient_NoOp(KineticOperation* operation) { KineticProto_Status_StatusCode status = KINETIC_PROTO_STATUS_STATUS_CODE_INVALID_STATUS_CODE; assert(operation->connection != NULL); assert(operation->request != NULL); assert(operation->request->message != NULL); Loading @@ -145,51 +144,67 @@ KineticProto_Status_StatusCode KineticClient_NoOp(KineticOperation* operation) assert(operation->response->message == NULL); // Initialize request KineticConnection_IncrementSequence(operation->connection); KineticOperation_BuildNoop(operation); // Send the request KineticPDU_Send(operation->request); // Associate response with same exchange as request operation->response->connection = operation->request->connection; // Execute the operation return KineticClient_ExecuteOperation(operation); } // Receive the response if (KineticPDU_Receive(operation->response)) KineticProto_Status_StatusCode KineticClient_Put(KineticOperation* operation, const ByteArray key, const ByteArray newVersion, const ByteArray dbVersion, const ByteArray tag, const ByteArray value) { status = KineticPDU_Status(operation->response); } assert(operation->connection != NULL); assert(operation->request != NULL); assert(operation->request->message != NULL); assert(operation->response != NULL); assert(operation->response->message == NULL); assert(value.data != NULL); assert(value.len <= PDU_VALUE_MAX_LEN); return status; // Initialize request KineticOperation_BuildPut(operation, key, newVersion, dbVersion, tag, value); // Execute the operation return KineticClient_ExecuteOperation(operation); } KineticProto_Status_StatusCode KineticClient_Put(KineticOperation* operation, char* newVersion, char* key, char* dbVersion, char* tag, uint8_t* value, int64_t len) KineticProto_Status_StatusCode KineticClient_Get(KineticOperation* operation, const ByteArray key, const ByteArray value, bool metadataOnly) { KineticProto_Status_StatusCode status = KINETIC_PROTO_STATUS_STATUS_CODE_INVALID_STATUS_CODE; assert(operation->connection != NULL); assert(operation->request != NULL); assert(operation->request->message != NULL); assert(operation->response != NULL); assert(operation->response->message == NULL); assert(value != NULL); assert(len <= PDU_VALUE_MAX_LEN); assert(key.data != NULL); assert(key.len <= KINETIC_MAX_KEY_LEN); if (!metadataOnly) { assert(value.data != NULL); assert(value.len <= PDU_VALUE_MAX_LEN); } // Initialize request KineticConnection_IncrementSequence(operation->connection); KineticOperation_BuildPut(operation, value, len); KineticMessage_ConfigureKeyValue(operation->request->message, newVersion, key, dbVersion, tag); KineticOperation_BuildGet(operation, key, value, metadataOnly); // Send the request KineticPDU_Send(operation->request); // Execute the operation return KineticClient_ExecuteOperation(operation); } KineticProto_Status_StatusCode KineticClient_ExecuteOperation(KineticOperation* operation) { KineticProto_Status_StatusCode status = KINETIC_PROTO_STATUS_STATUS_CODE_INVALID_STATUS_CODE; // Send the request if (KineticPDU_Send(operation->request)) { // Associate response with same exchange as request operation->response->connection = operation->request->connection; Loading @@ -198,6 +213,8 @@ KineticProto_Status_StatusCode KineticClient_Put(KineticOperation* operation, { status = KineticPDU_Status(operation->response); } } return status; }
src/lib/kinetic_client.h +28 −17 Original line number Diff line number Diff line Loading @@ -51,7 +51,7 @@ bool KineticClient_Connect(KineticConnection* connection, bool nonBlocking, int64_t clusterVersion, int64_t identity, const char* key); ByteArray key); /** * @brief Closes the socket connection to a host. Loading Loading @@ -81,7 +81,7 @@ KineticOperation KineticClient_CreateOperation( * * @param operation KineticOperation instance to use for the operation * * @return Returns the resultant status code * @return Returns 0 upon succes, -1 or the Kinetic status code upon failure */ KineticProto_Status_StatusCode KineticClient_NoOp(KineticOperation* operation); Loading @@ -90,14 +90,25 @@ KineticProto_Status_StatusCode KineticClient_NoOp(KineticOperation* operation); * * @param operation KineticOperation instance to use for the operation * * @return Returns the resultant status code * @return Returns 0 upon succes, -1 or the Kinetic status code upon failure */ KineticProto_Status_StatusCode KineticClient_Put(KineticOperation* operation, char* newVersion, char* key, char* dbVersion, char* tag, uint8_t* value, int64_t len); ByteArray key, ByteArray newVersion, ByteArray dbVersion, ByteArray tag, ByteArray value); /** * @brief Executes a GET command to read data from the Kinetic Device * * @param operation KineticOperation instance to use for the operation * * @return Returns 0 upon succes, -1 or the Kinetic status code upon failure */ KineticProto_Status_StatusCode KineticClient_Get(KineticOperation* operation, const ByteArray key, const ByteArray value, bool metadataOnly); #endif // _KINETIC_CLIENT_H
src/lib/kinetic_connection.c +2 −2 Original line number Diff line number Diff line Loading @@ -26,7 +26,7 @@ bool KineticConnection_Connect(KineticConnection* const connection, const char* host, int port, bool nonBlocking, int64_t clusterVersion, int64_t identity, const char* key) int64_t clusterVersion, int64_t identity, const ByteArray key) { connection->connected = false; connection->nonBlocking = nonBlocking; Loading @@ -35,7 +35,7 @@ bool KineticConnection_Connect(KineticConnection* const connection, connection->clusterVersion = clusterVersion; connection->identity = identity; strcpy(connection->host, host); strcpy(connection->key, key); memcpy(connection->key.data, key.data, key.len); connection->socketDescriptor = KineticSocket_Connect( connection->host, connection->port, nonBlocking); Loading
src/lib/kinetic_connection.h +1 −1 Original line number Diff line number Diff line Loading @@ -29,7 +29,7 @@ bool KineticConnection_Connect(KineticConnection* connection, bool nonBlocking, int64_t clusterVersion, int64_t identity, const char* key); const ByteArray key); void KineticConnection_Disconnect(KineticConnection* const connection); Loading