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;
}