Loading src/lib/kinetic_operation.c +3 −2 Original line number Diff line number Diff line Loading @@ -51,11 +51,12 @@ KineticStatus KineticOperation_SendRequest(KineticOperation* const operation) KINETIC_ASSERT(operation->connection != NULL); KINETIC_ASSERT(operation->request != NULL); if (!KineticRequest_LockOperation(operation)) { KineticConnection *connection = operation->connection; if (!KineticRequest_LockConnection(connection)) { return KINETIC_STATUS_CONNECTION_ERROR; } KineticStatus status = KineticOperation_SendRequestInLock(operation); KineticRequest_UnlockOperation(operation); KineticRequest_UnlockConnection(connection); return status; } Loading src/lib/kinetic_request.c +4 −4 Original line number Diff line number Diff line Loading @@ -147,12 +147,12 @@ bool KineticRequest_SendRequest(KineticOperation *operation, return bus_send_request(operation->connection->messageBus, &bus_msg); } bool KineticRequest_LockOperation(KineticOperation *operation) bool KineticRequest_LockConnection(KineticConnection *connection) { return 0 == pthread_mutex_lock(&operation->connection->sendMutex); return 0 == pthread_mutex_lock(&connection->sendMutex); } bool KineticRequest_UnlockOperation(KineticOperation *operation) bool KineticRequest_UnlockConnection(KineticConnection *connection) { return 0 == pthread_mutex_unlock(&operation->connection->sendMutex); return 0 == pthread_mutex_unlock(&connection->sendMutex); } src/lib/kinetic_request.h +2 −2 Original line number Diff line number Diff line Loading @@ -49,7 +49,7 @@ KineticStatus KineticRequest_PackMessage(KineticOperation *operation, bool KineticRequest_SendRequest(KineticOperation *operation, uint8_t *msg, size_t msgSize); bool KineticRequest_LockOperation(KineticOperation *operation); bool KineticRequest_UnlockOperation(KineticOperation *operation); bool KineticRequest_LockConnection(KineticConnection *connection); bool KineticRequest_UnlockConnection(KineticConnection *connection); #endif test/unit/test_kinetic_operation.c +11 −11 Original line number Diff line number Diff line Loading @@ -90,7 +90,7 @@ void test_KineticOperation_Init_should_configure_the_operation(void) void test_KineticOperation_SendRequest_should_error_out_on_lock_failure(void) { KineticRequest_LockOperation_ExpectAndReturn(&Operation, false); KineticRequest_LockConnection_ExpectAndReturn(Operation.connection, false); KineticStatus status = KineticOperation_SendRequest(&Operation); TEST_ASSERT_EQUAL(KINETIC_STATUS_CONNECTION_ERROR, status); } Loading @@ -98,12 +98,12 @@ void test_KineticOperation_SendRequest_should_error_out_on_lock_failure(void) void test_KineticOperation_SendRequest_should_return_MEMORY_ERROR_on_command_pack_failure(void) { KineticRequest_LockOperation_ExpectAndReturn(&Operation, true); KineticRequest_LockConnection_ExpectAndReturn(Operation.connection, true); KineticSession *session = Operation.connection->pSession; KineticSession_GetNextSequenceCount_ExpectAndReturn(session, 12345); KineticRequest_PackCommand_ExpectAndReturn(Operation.request, KINETIC_REQUEST_PACK_FAILURE); KineticRequest_UnlockOperation_ExpectAndReturn(&Operation, true); KineticRequest_UnlockConnection_ExpectAndReturn(Operation.connection, true); KineticStatus status = KineticOperation_SendRequest(&Operation); TEST_ASSERT_EQUAL(KINETIC_STATUS_MEMORY_ERROR, status); Loading @@ -111,14 +111,14 @@ void test_KineticOperation_SendRequest_should_return_MEMORY_ERROR_on_command_pac void test_KineticOperation_SendRequest_should_return_error_status_on_authentication_failure(void) { KineticRequest_LockOperation_ExpectAndReturn(&Operation, true); KineticRequest_LockConnection_ExpectAndReturn(Operation.connection, true); KineticSession *session = Operation.connection->pSession; KineticSession_GetNextSequenceCount_ExpectAndReturn(session, 12345); KineticRequest_PackCommand_ExpectAndReturn(Operation.request, 100); KineticRequest_PopulateAuthentication_ExpectAndReturn(&session->config, Operation.request, NULL, KINETIC_STATUS_HMAC_REQUIRED); KineticRequest_UnlockOperation_ExpectAndReturn(&Operation, true); KineticRequest_UnlockConnection_ExpectAndReturn(Operation.connection, true); KineticStatus status = KineticOperation_SendRequest(&Operation); TEST_ASSERT_EQUAL(KINETIC_STATUS_HMAC_REQUIRED, status); Loading @@ -126,7 +126,7 @@ void test_KineticOperation_SendRequest_should_return_error_status_on_authenticat void test_KineticOperation_SendRequest_should_return_error_status_on_PackMessage_failure(void) { KineticRequest_LockOperation_ExpectAndReturn(&Operation, true); KineticRequest_LockConnection_ExpectAndReturn(Operation.connection, true); KineticSession *session = Operation.connection->pSession; KineticSession_GetNextSequenceCount_ExpectAndReturn(session, 12345); Loading @@ -136,7 +136,7 @@ void test_KineticOperation_SendRequest_should_return_error_status_on_PackMessage KineticRequest_PackMessage_ExpectAndReturn(&Operation, &msg, &msgSize, KINETIC_STATUS_MEMORY_ERROR); KineticRequest_UnlockOperation_ExpectAndReturn(&Operation, true); KineticRequest_UnlockConnection_ExpectAndReturn(Operation.connection, true); KineticStatus status = KineticOperation_SendRequest(&Operation); TEST_ASSERT_EQUAL(KINETIC_STATUS_MEMORY_ERROR, status); Loading @@ -144,7 +144,7 @@ void test_KineticOperation_SendRequest_should_return_error_status_on_PackMessage void test_KineticOperation_SendRequest_should_return_REQUEST_REJECTED_if_SendRequest_fails(void) { KineticRequest_LockOperation_ExpectAndReturn(&Operation, true); KineticRequest_LockConnection_ExpectAndReturn(Operation.connection, true); KineticSession *session = Operation.connection->pSession; KineticSession_GetNextSequenceCount_ExpectAndReturn(session, 12345); Loading @@ -158,7 +158,7 @@ void test_KineticOperation_SendRequest_should_return_REQUEST_REJECTED_if_SendReq KineticRequest_SendRequest_ExpectAndReturn(&Operation, msg, msgSize, false); KineticCountingSemaphore_Give_Expect(Operation.connection->outstandingOperations); KineticRequest_UnlockOperation_ExpectAndReturn(&Operation, true); KineticRequest_UnlockConnection_ExpectAndReturn(Operation.connection, true); KineticStatus status = KineticOperation_SendRequest(&Operation); TEST_ASSERT_EQUAL(KINETIC_STATUS_REQUEST_REJECTED, status); Loading @@ -166,7 +166,7 @@ void test_KineticOperation_SendRequest_should_return_REQUEST_REJECTED_if_SendReq void test_KineticOperation_SendRequest_should_acquire_and_increment_sequence_count_and_send_PDU_to_bus(void) { KineticRequest_LockOperation_ExpectAndReturn(&Operation, true); KineticRequest_LockConnection_ExpectAndReturn(Operation.connection, true); KineticSession *session = Operation.connection->pSession; KineticSession_GetNextSequenceCount_ExpectAndReturn(session, 12345); Loading @@ -179,7 +179,7 @@ void test_KineticOperation_SendRequest_should_acquire_and_increment_sequence_cou KineticCountingSemaphore_Take_Expect(Operation.connection->outstandingOperations); KineticRequest_SendRequest_ExpectAndReturn(&Operation, msg, msgSize, true); KineticRequest_UnlockOperation_ExpectAndReturn(&Operation, true); KineticRequest_UnlockConnection_ExpectAndReturn(Operation.connection, true); KineticStatus status = KineticOperation_SendRequest(&Operation); TEST_ASSERT_EQUAL(KINETIC_STATUS_SUCCESS, status); Loading Loading
src/lib/kinetic_operation.c +3 −2 Original line number Diff line number Diff line Loading @@ -51,11 +51,12 @@ KineticStatus KineticOperation_SendRequest(KineticOperation* const operation) KINETIC_ASSERT(operation->connection != NULL); KINETIC_ASSERT(operation->request != NULL); if (!KineticRequest_LockOperation(operation)) { KineticConnection *connection = operation->connection; if (!KineticRequest_LockConnection(connection)) { return KINETIC_STATUS_CONNECTION_ERROR; } KineticStatus status = KineticOperation_SendRequestInLock(operation); KineticRequest_UnlockOperation(operation); KineticRequest_UnlockConnection(connection); return status; } Loading
src/lib/kinetic_request.c +4 −4 Original line number Diff line number Diff line Loading @@ -147,12 +147,12 @@ bool KineticRequest_SendRequest(KineticOperation *operation, return bus_send_request(operation->connection->messageBus, &bus_msg); } bool KineticRequest_LockOperation(KineticOperation *operation) bool KineticRequest_LockConnection(KineticConnection *connection) { return 0 == pthread_mutex_lock(&operation->connection->sendMutex); return 0 == pthread_mutex_lock(&connection->sendMutex); } bool KineticRequest_UnlockOperation(KineticOperation *operation) bool KineticRequest_UnlockConnection(KineticConnection *connection) { return 0 == pthread_mutex_unlock(&operation->connection->sendMutex); return 0 == pthread_mutex_unlock(&connection->sendMutex); }
src/lib/kinetic_request.h +2 −2 Original line number Diff line number Diff line Loading @@ -49,7 +49,7 @@ KineticStatus KineticRequest_PackMessage(KineticOperation *operation, bool KineticRequest_SendRequest(KineticOperation *operation, uint8_t *msg, size_t msgSize); bool KineticRequest_LockOperation(KineticOperation *operation); bool KineticRequest_UnlockOperation(KineticOperation *operation); bool KineticRequest_LockConnection(KineticConnection *connection); bool KineticRequest_UnlockConnection(KineticConnection *connection); #endif
test/unit/test_kinetic_operation.c +11 −11 Original line number Diff line number Diff line Loading @@ -90,7 +90,7 @@ void test_KineticOperation_Init_should_configure_the_operation(void) void test_KineticOperation_SendRequest_should_error_out_on_lock_failure(void) { KineticRequest_LockOperation_ExpectAndReturn(&Operation, false); KineticRequest_LockConnection_ExpectAndReturn(Operation.connection, false); KineticStatus status = KineticOperation_SendRequest(&Operation); TEST_ASSERT_EQUAL(KINETIC_STATUS_CONNECTION_ERROR, status); } Loading @@ -98,12 +98,12 @@ void test_KineticOperation_SendRequest_should_error_out_on_lock_failure(void) void test_KineticOperation_SendRequest_should_return_MEMORY_ERROR_on_command_pack_failure(void) { KineticRequest_LockOperation_ExpectAndReturn(&Operation, true); KineticRequest_LockConnection_ExpectAndReturn(Operation.connection, true); KineticSession *session = Operation.connection->pSession; KineticSession_GetNextSequenceCount_ExpectAndReturn(session, 12345); KineticRequest_PackCommand_ExpectAndReturn(Operation.request, KINETIC_REQUEST_PACK_FAILURE); KineticRequest_UnlockOperation_ExpectAndReturn(&Operation, true); KineticRequest_UnlockConnection_ExpectAndReturn(Operation.connection, true); KineticStatus status = KineticOperation_SendRequest(&Operation); TEST_ASSERT_EQUAL(KINETIC_STATUS_MEMORY_ERROR, status); Loading @@ -111,14 +111,14 @@ void test_KineticOperation_SendRequest_should_return_MEMORY_ERROR_on_command_pac void test_KineticOperation_SendRequest_should_return_error_status_on_authentication_failure(void) { KineticRequest_LockOperation_ExpectAndReturn(&Operation, true); KineticRequest_LockConnection_ExpectAndReturn(Operation.connection, true); KineticSession *session = Operation.connection->pSession; KineticSession_GetNextSequenceCount_ExpectAndReturn(session, 12345); KineticRequest_PackCommand_ExpectAndReturn(Operation.request, 100); KineticRequest_PopulateAuthentication_ExpectAndReturn(&session->config, Operation.request, NULL, KINETIC_STATUS_HMAC_REQUIRED); KineticRequest_UnlockOperation_ExpectAndReturn(&Operation, true); KineticRequest_UnlockConnection_ExpectAndReturn(Operation.connection, true); KineticStatus status = KineticOperation_SendRequest(&Operation); TEST_ASSERT_EQUAL(KINETIC_STATUS_HMAC_REQUIRED, status); Loading @@ -126,7 +126,7 @@ void test_KineticOperation_SendRequest_should_return_error_status_on_authenticat void test_KineticOperation_SendRequest_should_return_error_status_on_PackMessage_failure(void) { KineticRequest_LockOperation_ExpectAndReturn(&Operation, true); KineticRequest_LockConnection_ExpectAndReturn(Operation.connection, true); KineticSession *session = Operation.connection->pSession; KineticSession_GetNextSequenceCount_ExpectAndReturn(session, 12345); Loading @@ -136,7 +136,7 @@ void test_KineticOperation_SendRequest_should_return_error_status_on_PackMessage KineticRequest_PackMessage_ExpectAndReturn(&Operation, &msg, &msgSize, KINETIC_STATUS_MEMORY_ERROR); KineticRequest_UnlockOperation_ExpectAndReturn(&Operation, true); KineticRequest_UnlockConnection_ExpectAndReturn(Operation.connection, true); KineticStatus status = KineticOperation_SendRequest(&Operation); TEST_ASSERT_EQUAL(KINETIC_STATUS_MEMORY_ERROR, status); Loading @@ -144,7 +144,7 @@ void test_KineticOperation_SendRequest_should_return_error_status_on_PackMessage void test_KineticOperation_SendRequest_should_return_REQUEST_REJECTED_if_SendRequest_fails(void) { KineticRequest_LockOperation_ExpectAndReturn(&Operation, true); KineticRequest_LockConnection_ExpectAndReturn(Operation.connection, true); KineticSession *session = Operation.connection->pSession; KineticSession_GetNextSequenceCount_ExpectAndReturn(session, 12345); Loading @@ -158,7 +158,7 @@ void test_KineticOperation_SendRequest_should_return_REQUEST_REJECTED_if_SendReq KineticRequest_SendRequest_ExpectAndReturn(&Operation, msg, msgSize, false); KineticCountingSemaphore_Give_Expect(Operation.connection->outstandingOperations); KineticRequest_UnlockOperation_ExpectAndReturn(&Operation, true); KineticRequest_UnlockConnection_ExpectAndReturn(Operation.connection, true); KineticStatus status = KineticOperation_SendRequest(&Operation); TEST_ASSERT_EQUAL(KINETIC_STATUS_REQUEST_REJECTED, status); Loading @@ -166,7 +166,7 @@ void test_KineticOperation_SendRequest_should_return_REQUEST_REJECTED_if_SendReq void test_KineticOperation_SendRequest_should_acquire_and_increment_sequence_count_and_send_PDU_to_bus(void) { KineticRequest_LockOperation_ExpectAndReturn(&Operation, true); KineticRequest_LockConnection_ExpectAndReturn(Operation.connection, true); KineticSession *session = Operation.connection->pSession; KineticSession_GetNextSequenceCount_ExpectAndReturn(session, 12345); Loading @@ -179,7 +179,7 @@ void test_KineticOperation_SendRequest_should_acquire_and_increment_sequence_cou KineticCountingSemaphore_Take_Expect(Operation.connection->outstandingOperations); KineticRequest_SendRequest_ExpectAndReturn(&Operation, msg, msgSize, true); KineticRequest_UnlockOperation_ExpectAndReturn(&Operation, true); KineticRequest_UnlockConnection_ExpectAndReturn(Operation.connection, true); KineticStatus status = KineticOperation_SendRequest(&Operation); TEST_ASSERT_EQUAL(KINETIC_STATUS_SUCCESS, status); Loading