STATUS ProducerClientTestBase::curlEasyPerformHookFunc()

in tst/ProducerTestFixture.cpp [547:622]


STATUS ProducerClientTestBase::curlEasyPerformHookFunc(PCurlResponse pCurlResponse)
{
    STATUS retStatus = STATUS_SUCCESS;
    if (pCurlResponse == NULL ||
        pCurlResponse->pCurlRequest == NULL ||
        pCurlResponse->pCurlRequest->pCurlApiCallbacks == NULL) {
        return STATUS_NULL_ARG;
    }

    // Get the test object
    ProducerClientTestBase* pTest = (ProducerClientTestBase*) pCurlResponse->pCurlRequest->pCurlApiCallbacks->hookCustomData;

    DLOGV("Curl perform hook for %s", pCurlResponse->pCurlRequest->requestInfo.url);

    pTest->mEasyPerformFnCount++;

    // Check which API function this is
    if (NULL != STRSTR(pCurlResponse->pCurlRequest->requestInfo.url, CREATE_API_POSTFIX)) {
        pTest->mCurlCreateStreamCount++;
        if (pTest->mCurlEasyPerformInjectionCount > 0 &&
            (STATUS_FAILED(pTest->mCreateStreamStatus) || pTest->mCreateStreamCallResult != SERVICE_CALL_RESULT_OK)) {
            retStatus = pTest->mCreateStreamStatus;
            pCurlResponse->callInfo.callResult = pTest->mCreateStreamCallResult;
            pTest->mCurlEasyPerformInjectionCount--;
        } else {
            pTest->mCreateStreamStatus = STATUS_SUCCESS;
            pTest->mCreateStreamCallResult = SERVICE_CALL_RESULT_OK;
        }
    } else if (NULL != STRSTR(pCurlResponse->pCurlRequest->requestInfo.url, DESCRIBE_API_POSTFIX)) {
        pTest->mCurlDescribeStreamCount++;
        if (pTest->mCurlEasyPerformInjectionCount > 0 &&
            (STATUS_FAILED(pTest->mDescribeStreamStatus) || pTest->mDescribeStreamCallResult != SERVICE_CALL_RESULT_OK)) {
            retStatus = pTest->mDescribeStreamStatus;
            pCurlResponse->callInfo.callResult = pTest->mDescribeStreamCallResult;
            pTest->mCurlEasyPerformInjectionCount--;
        } else {
            pTest->mDescribeStreamStatus = STATUS_SUCCESS;
            pTest->mDescribeStreamCallResult = SERVICE_CALL_RESULT_OK;
        }
    } else if (NULL != STRSTR(pCurlResponse->pCurlRequest->requestInfo.url, GET_DATA_ENDPOINT_API_POSTFIX)) {
        pTest->mCurlGetDataEndpointCount++;
        if (pTest->mCurlEasyPerformInjectionCount > 0 &&
            (STATUS_FAILED(pTest->mGetEndpointStatus) || pTest->mGetEndpointCallResult != SERVICE_CALL_RESULT_OK)) {
            retStatus = pTest->mGetEndpointStatus;
            pCurlResponse->callInfo.callResult = pTest->mGetEndpointCallResult;
            pTest->mCurlEasyPerformInjectionCount--;
        } else {
            pTest->mGetEndpointStatus = STATUS_SUCCESS;
            pTest->mGetEndpointCallResult = SERVICE_CALL_RESULT_OK;
        }
    } else if (NULL != STRSTR(pCurlResponse->pCurlRequest->requestInfo.url, TAG_RESOURCE_API_POSTFIX)) {
        pTest->mCurlTagResourceCount++;
        if (pTest->mCurlEasyPerformInjectionCount > 0 &&
            (STATUS_FAILED(pTest->mTagResourceStatus) || pTest->mTagResourceCallResult != SERVICE_CALL_RESULT_OK)) {
            retStatus = pTest->mTagResourceStatus;
            pCurlResponse->callInfo.callResult = pTest->mTagResourceCallResult;
            pTest->mCurlEasyPerformInjectionCount--;
        } else {
            pTest->mTagResourceStatus = STATUS_SUCCESS;
            pTest->mTagResourceCallResult = SERVICE_CALL_RESULT_OK;
        }
    } else if (NULL != STRSTR(pCurlResponse->pCurlRequest->requestInfo.url, PUT_MEDIA_API_POSTFIX)) {
        pTest->mCurlPutMediaCount++;
        if (pTest->mCurlEasyPerformInjectionCount > 0 &&
            (STATUS_FAILED(pTest->mPutMediaStatus) || pTest->mPutMediaCallResult != SERVICE_CALL_RESULT_OK)) {
            retStatus = pTest->mPutMediaStatus;
            pCurlResponse->callInfo.callResult = pTest->mPutMediaCallResult;
            pTest->mCurlEasyPerformInjectionCount--;
        } else {
            pTest->mPutMediaStatus = STATUS_SUCCESS;
            pTest->mPutMediaCallResult = SERVICE_CALL_RESULT_OK;
        }
    }

    return retStatus;
}