Пример #1
0
KineticStatus KineticPDU_GetStatus(KineticPDU* pdu)
{
    KineticStatus status = KINETIC_STATUS_INVALID;

    if (pdu != NULL &&
        pdu->command != NULL &&
        pdu->command->status != NULL &&
        pdu->command->status->has_code != false) {

        status = KineticProtoStatusCode_to_KineticStatus(
            pdu->command->status->code);
    }

    return status;
}
void test_KineticProtoStatusCode_to_KineticStatus_should__map_from_internal_to_public_type(void)
{
    TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_SUCCESS,
        KineticProtoStatusCode_to_KineticStatus(KINETIC_PROTO_STATUS_STATUS_CODE_SUCCESS));

    TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_CONNECTION_ERROR,
        KineticProtoStatusCode_to_KineticStatus(KINETIC_PROTO_STATUS_STATUS_CODE_REMOTE_CONNECTION_ERROR));

    TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_DEVICE_BUSY,
        KineticProtoStatusCode_to_KineticStatus(KINETIC_PROTO_STATUS_STATUS_CODE_SERVICE_BUSY));

    TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_INVALID_REQUEST,
        KineticProtoStatusCode_to_KineticStatus(KINETIC_PROTO_STATUS_STATUS_CODE_INVALID_REQUEST));
    TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_INVALID_REQUEST,
        KineticProtoStatusCode_to_KineticStatus(KINETIC_PROTO_STATUS_STATUS_CODE_NOT_ATTEMPTED));
    TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_INVALID_REQUEST,
        KineticProtoStatusCode_to_KineticStatus(KINETIC_PROTO_STATUS_STATUS_CODE_HEADER_REQUIRED));
    TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_INVALID_REQUEST,
        KineticProtoStatusCode_to_KineticStatus(KINETIC_PROTO_STATUS_STATUS_CODE_NO_SUCH_HMAC_ALGORITHM));

    TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_DATA_ERROR,
        KineticProtoStatusCode_to_KineticStatus(KINETIC_PROTO_STATUS_STATUS_CODE_DATA_ERROR));
    TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_DATA_ERROR,
        KineticProtoStatusCode_to_KineticStatus(KINETIC_PROTO_STATUS_STATUS_CODE_PERM_DATA_ERROR));
    TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_DATA_ERROR,
        KineticProtoStatusCode_to_KineticStatus(KINETIC_PROTO_STATUS_STATUS_CODE_PERM_DATA_ERROR));
    TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_DATA_ERROR,
        KineticProtoStatusCode_to_KineticStatus(KINETIC_PROTO_STATUS_STATUS_CODE_HMAC_FAILURE));
    TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_DATA_ERROR,
        KineticProtoStatusCode_to_KineticStatus(KINETIC_PROTO_STATUS_STATUS_CODE_NOT_FOUND));

    TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_VERSION_FAILURE,
        KineticProtoStatusCode_to_KineticStatus(KINETIC_PROTO_STATUS_STATUS_CODE_VERSION_MISMATCH));
    TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_VERSION_FAILURE,
        KineticProtoStatusCode_to_KineticStatus(KINETIC_PROTO_STATUS_STATUS_CODE_VERSION_FAILURE));

    TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_OPERATION_FAILED,
        KineticProtoStatusCode_to_KineticStatus(KINETIC_PROTO_STATUS_STATUS_CODE_INTERNAL_ERROR));
    TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_OPERATION_FAILED,
        KineticProtoStatusCode_to_KineticStatus(KINETIC_PROTO_STATUS_STATUS_CODE_NOT_AUTHORIZED));
    TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_OPERATION_FAILED,
        KineticProtoStatusCode_to_KineticStatus(KINETIC_PROTO_STATUS_STATUS_CODE_EXPIRED));
    TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_OPERATION_FAILED,
        KineticProtoStatusCode_to_KineticStatus(KINETIC_PROTO_STATUS_STATUS_CODE_NO_SPACE));
    TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_OPERATION_FAILED,
        KineticProtoStatusCode_to_KineticStatus(KINETIC_PROTO_STATUS_STATUS_CODE_NESTED_OPERATION_ERRORS));

    TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_INVALID,
        KineticProtoStatusCode_to_KineticStatus(KINETIC_PROTO_STATUS_STATUS_CODE_INVALID_STATUS_CODE));
    TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_INVALID,
        KineticProtoStatusCode_to_KineticStatus(_KINETIC_PROTO_STATUS_STATUS_CODE_IS_INT_SIZE));
    TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_INVALID,
        KineticProtoStatusCode_to_KineticStatus((KineticProto_Status_StatusCode)
            (KINETIC_PROTO_STATUS_STATUS_CODE_NESTED_OPERATION_ERRORS + 100)));
}
void test_KineticProtoStatusCode_to_KineticStatus_should_map_from_internal_to_public_type(void)
{
    // These status codes have a one-to-one mapping for clarity
    TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_SUCCESS,
                                    KineticProtoStatusCode_to_KineticStatus(COM__SEAGATE__KINETIC__PROTO__COMMAND__STATUS__STATUS_CODE__SUCCESS));
    TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_CONNECTION_ERROR,
                                    KineticProtoStatusCode_to_KineticStatus(COM__SEAGATE__KINETIC__PROTO__COMMAND__STATUS__STATUS_CODE__REMOTE_CONNECTION_ERROR));
    TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_DEVICE_BUSY,
                                    KineticProtoStatusCode_to_KineticStatus(COM__SEAGATE__KINETIC__PROTO__COMMAND__STATUS__STATUS_CODE__SERVICE_BUSY));
    TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_NOT_FOUND,
                                    KineticProtoStatusCode_to_KineticStatus(COM__SEAGATE__KINETIC__PROTO__COMMAND__STATUS__STATUS_CODE__NOT_FOUND));
    TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_CLUSTER_MISMATCH,
                                    KineticProtoStatusCode_to_KineticStatus(COM__SEAGATE__KINETIC__PROTO__COMMAND__STATUS__STATUS_CODE__VERSION_FAILURE));
    TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_VERSION_MISMATCH,
                                    KineticProtoStatusCode_to_KineticStatus(COM__SEAGATE__KINETIC__PROTO__COMMAND__STATUS__STATUS_CODE__VERSION_MISMATCH));
    TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_HMAC_FAILURE,
                                    KineticProtoStatusCode_to_KineticStatus(COM__SEAGATE__KINETIC__PROTO__COMMAND__STATUS__STATUS_CODE__HMAC_FAILURE));
    // End one-to-one mappings


    TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_INVALID_REQUEST,
                                    KineticProtoStatusCode_to_KineticStatus(COM__SEAGATE__KINETIC__PROTO__COMMAND__STATUS__STATUS_CODE__INVALID_REQUEST));
    TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_INVALID_REQUEST,
                                    KineticProtoStatusCode_to_KineticStatus(COM__SEAGATE__KINETIC__PROTO__COMMAND__STATUS__STATUS_CODE__NOT_ATTEMPTED));
    TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_INVALID_REQUEST,
                                    KineticProtoStatusCode_to_KineticStatus(COM__SEAGATE__KINETIC__PROTO__COMMAND__STATUS__STATUS_CODE__HEADER_REQUIRED));
    TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_INVALID_REQUEST,
                                    KineticProtoStatusCode_to_KineticStatus(COM__SEAGATE__KINETIC__PROTO__COMMAND__STATUS__STATUS_CODE__NO_SUCH_HMAC_ALGORITHM));

    TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_DATA_ERROR,
                                    KineticProtoStatusCode_to_KineticStatus(COM__SEAGATE__KINETIC__PROTO__COMMAND__STATUS__STATUS_CODE__DATA_ERROR));
    TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_DATA_ERROR,
                                    KineticProtoStatusCode_to_KineticStatus(COM__SEAGATE__KINETIC__PROTO__COMMAND__STATUS__STATUS_CODE__PERM_DATA_ERROR));
    TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_DATA_ERROR,
                                    KineticProtoStatusCode_to_KineticStatus(COM__SEAGATE__KINETIC__PROTO__COMMAND__STATUS__STATUS_CODE__PERM_DATA_ERROR));

    TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_OPERATION_FAILED,
                                    KineticProtoStatusCode_to_KineticStatus(COM__SEAGATE__KINETIC__PROTO__COMMAND__STATUS__STATUS_CODE__INTERNAL_ERROR));
    TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_NOT_AUTHORIZED,
                                    KineticProtoStatusCode_to_KineticStatus(COM__SEAGATE__KINETIC__PROTO__COMMAND__STATUS__STATUS_CODE__NOT_AUTHORIZED));
    TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_OPERATION_FAILED,
                                    KineticProtoStatusCode_to_KineticStatus(COM__SEAGATE__KINETIC__PROTO__COMMAND__STATUS__STATUS_CODE__EXPIRED));
    TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_OPERATION_FAILED,
                                    KineticProtoStatusCode_to_KineticStatus(COM__SEAGATE__KINETIC__PROTO__COMMAND__STATUS__STATUS_CODE__NO_SPACE));
    TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_OPERATION_FAILED,
                                    KineticProtoStatusCode_to_KineticStatus(COM__SEAGATE__KINETIC__PROTO__COMMAND__STATUS__STATUS_CODE__NESTED_OPERATION_ERRORS));

    TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_DEVICE_LOCKED,
                                    KineticProtoStatusCode_to_KineticStatus(COM__SEAGATE__KINETIC__PROTO__COMMAND__STATUS__STATUS_CODE__DEVICE_LOCKED));

    TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_INVALID,
                                    KineticProtoStatusCode_to_KineticStatus(COM__SEAGATE__KINETIC__PROTO__COMMAND__STATUS__STATUS_CODE__INVALID_STATUS_CODE));
    TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_INVALID,
                                    KineticProtoStatusCode_to_KineticStatus((Com__Seagate__Kinetic__Proto__Command__Status__StatusCode)
                                            (COM__SEAGATE__KINETIC__PROTO__COMMAND__STATUS__STATUS_CODE__NESTED_OPERATION_ERRORS + 100)));
}