📄 sipxtapitestcall.cpp
字号:
// // // Copyright (C) 2005, 2006 SIPez LLC// Licensed to SIPfoundry under a Contributor Agreement.//// Copyright (C) 2005, 2006 SIPfoundry Inc.// Licensed by SIPfoundry under the LGPL license.// // Copyright (C) 2004, 2005 Pingtel Corp.// Licensed to SIPfoundry under a Contributor Agreement.// // $$//////////////////////////////////////////////////////////////////////////////#include <cppunit/CompilerOutputter.h>#include <cppunit/extensions/TestFactoryRegistry.h>#include <cppunit/ui/text/TestRunner.h>#include "sipXtapiTest.h"#include "EventValidator.h"#include "callbacks.h"#include <cp/CallManager.h>extern SIPX_INST g_hInst;extern SIPX_INST g_hInst2;extern SIPX_INST g_hInst3;extern SIPX_INST g_hInst5;extern bool g_bCallbackCalled;extern SIPX_INST g_hInstInfo;extern SIPX_CALL ghCallHangup;// Do not check in with print enabled//#define TEST_PRINTvoid sipXtapiTestSuite::testCallMakeAPI(){ for (int iStressFactor = 0; iStressFactor<STRESS_FACTOR; iStressFactor++) { printf("\ntestCallMakeAPI (%2d of %2d)", iStressFactor+1, STRESS_FACTOR); SIPX_LINE hLine = SIPX_LINE_NULL; SIPX_CALL hCall = SIPX_CALL_NULL ; SIPX_RESULT rc ; rc = sipxLineAdd(g_hInst, "sip:bandreasen@pingtel.com", &hLine) ; CPPUNIT_ASSERT_EQUAL(rc, SIPX_RESULT_SUCCESS) ; CPPUNIT_ASSERT(hLine) ; rc = sipxCallCreate(g_hInst, hLine, &hCall) ; CPPUNIT_ASSERT_EQUAL(rc, SIPX_RESULT_SUCCESS) ; CPPUNIT_ASSERT(hCall != SIPX_CALL_NULL) ; rc = sipxCallDestroy(hCall) ; CPPUNIT_ASSERT_EQUAL(rc, SIPX_RESULT_SUCCESS) ; CPPUNIT_ASSERT(hCall == SIPX_CALL_NULL) ; rc = sipxLineRemove(hLine) ; CPPUNIT_ASSERT_EQUAL(rc, SIPX_RESULT_SUCCESS) ; } OsTask::delay(TEST_DELAY) ; checkForLeaks();}void sipXtapiTestSuite::testCallGetID() { for (int iStressFactor = 0; iStressFactor<STRESS_FACTOR; iStressFactor++) { SIPX_LINE hLine = SIPX_LINE_NULL ; SIPX_CALL hCall = SIPX_CALL_NULL ; printf("\ntestCallGetID (%2d of %2d)", iStressFactor+1, STRESS_FACTOR); createCall(&hLine, &hCall) ; char cBuf[128] ; memset(cBuf, 0, sizeof(cBuf)) ; CPPUNIT_ASSERT_EQUAL(sipxCallGetID(hCall, cBuf, sizeof(cBuf)), SIPX_RESULT_SUCCESS) ; CPPUNIT_ASSERT(strlen(cBuf) > 0) ; memset(cBuf, ' ', sizeof(cBuf)) ; CPPUNIT_ASSERT_EQUAL(sipxCallGetID(hCall, cBuf, 4), SIPX_RESULT_SUCCESS) ; CPPUNIT_ASSERT(strlen(cBuf) == 3) ; CPPUNIT_ASSERT(cBuf[5] == ' ') ; destroyCall(hLine, hCall) ; } OsTask::delay(TEST_DELAY) ; checkForLeaks();}void sipXtapiTestSuite::testCallRapidCallAndHangup(){ for (int iStressFactor = 0; iStressFactor<STRESS_FACTOR; iStressFactor++) { SIPX_LINE hLine = SIPX_LINE_NULL ; SIPX_CALL hCall = SIPX_CALL_NULL ; printf("\ntestCallRapidCallAndHangup (%2d of %2d)", iStressFactor+1, STRESS_FACTOR); CPPUNIT_ASSERT_EQUAL(sipxLineAdd(g_hInst, "sip:bandreasen@pingtel.com", &hLine), SIPX_RESULT_SUCCESS) ; CPPUNIT_ASSERT_EQUAL(sipxCallCreate(g_hInst, hLine, &hCall), SIPX_RESULT_SUCCESS) ; CPPUNIT_ASSERT_EQUAL(sipxCallConnect(hCall, "sip:mike2@cheetah.pingtel.com"), SIPX_RESULT_SUCCESS) ; CPPUNIT_ASSERT_EQUAL(sipxCallDestroy(hCall), SIPX_RESULT_SUCCESS); CPPUNIT_ASSERT_EQUAL(sipxCallCreate(g_hInst, hLine, &hCall), SIPX_RESULT_SUCCESS) ; CPPUNIT_ASSERT_EQUAL(sipxCallConnect(hCall, "sip:mike2@cheetah.pingtel.com"), SIPX_RESULT_SUCCESS) ; CPPUNIT_ASSERT_EQUAL(sipxCallDestroy(hCall), SIPX_RESULT_SUCCESS); CPPUNIT_ASSERT_EQUAL(sipxLineRemove(hLine), SIPX_RESULT_SUCCESS) ; OsTask::delay(CALL_DELAY*2); } OsTask::delay(TEST_DELAY) ; }void sipXtapiTestSuite::testCallGetRemoteID(){ bool bRC ; EventValidator validatorCalling("testCallGetRemoteID.calling") ; EventValidator validatorCalled("testCallGetRemoteID.called") ; for (int iStressFactor = 0; iStressFactor<STRESS_FACTOR; iStressFactor++) { printf("\ntestCallGetRemoteID (%2d of %2d)", iStressFactor+1, STRESS_FACTOR); SIPX_CALL hCall ; SIPX_LINE hLine ; SIPX_LINE hReceivingLine; validatorCalling.reset() ; validatorCalled.reset() ; // Setup Auto-answer call back resetAutoAnswerCallback() ; sipxEventListenerAdd(g_hInst2, AutoAnswerCallback, NULL) ; sipxEventListenerAdd(g_hInst2, UniversalEventValidatorCallback, &validatorCalled) ; sipxEventListenerAdd(g_hInst, UniversalEventValidatorCallback, &validatorCalling) ; sipxLineAdd(g_hInst2, "sip:foo@127.0.0.1:9100", &hReceivingLine, CONTACT_LOCAL); bRC = validatorCalled.waitForLineEvent(hReceivingLine, LINESTATE_PROVISIONED, LINESTATE_PROVISIONED_NORMAL, true) ; CPPUNIT_ASSERT(bRC) ; createCall(&hLine, &hCall) ;#ifdef TEST_PRINT UtlString callDumpString; sipxCallDataToString(hCall, callDumpString); printf("testCallGetRemoteID createCall:\n %s\n", callDumpString.data());#endif bRC = validatorCalling.waitForLineEvent(hLine, LINESTATE_PROVISIONED, LINESTATE_PROVISIONED_NORMAL, true) ; CPPUNIT_ASSERT(bRC) ; sipxCallConnect(hCall, "sip:foo@127.0.0.1:9100") ;#ifdef TEST_PRINT sipxCallDataToString(hCall, callDumpString); printf("testCallGetRemoteID sipxCallConnect:\n %s\n", callDumpString.data());#endif // Validate Calling Side bRC = validatorCalling.waitForCallEvent(hLine, hCall, CALLSTATE_DIALTONE, CALLSTATE_DIALTONE_UNKNOWN, true) ; CPPUNIT_ASSERT(bRC) ; bRC = validatorCalling.waitForCallEvent(hLine, hCall, CALLSTATE_REMOTE_OFFERING, CALLSTATE_REMOTE_OFFERING_NORMAL, true) ; CPPUNIT_ASSERT(bRC) ; bRC = validatorCalling.waitForCallEvent(hLine, hCall, CALLSTATE_REMOTE_ALERTING, CALLSTATE_REMOTE_ALERTING_NORMAL, true) ; CPPUNIT_ASSERT(bRC) ; bRC = validatorCalling.waitForCallEvent(hLine, hCall, CALLSTATE_CONNECTED, CALLSTATE_CONNECTED_ACTIVE, true) ; CPPUNIT_ASSERT(bRC) ; bRC = validatorCalling.waitForCallEvent(hLine, hCall, CALLSTATE_AUDIO_EVENT, CALLSTATE_AUDIO_START, true) ; CPPUNIT_ASSERT(bRC) ; // Validate Called Side bRC = validatorCalled.waitForCallEvent(g_hAutoAnswerCallbackLine, g_hAutoAnswerCallbackCall, CALLSTATE_NEWCALL, CALLSTATE_NEW_CALL_NORMAL, true) ; CPPUNIT_ASSERT(bRC) ; bRC = validatorCalled.waitForCallEvent(g_hAutoAnswerCallbackLine, g_hAutoAnswerCallbackCall, CALLSTATE_OFFERING, CALLSTATE_OFFERING_ACTIVE, true) ; CPPUNIT_ASSERT(bRC) ; bRC = validatorCalled.waitForCallEvent(g_hAutoAnswerCallbackLine, g_hAutoAnswerCallbackCall, CALLSTATE_ALERTING, CALLSTATE_ALERTING_NORMAL, true) ; CPPUNIT_ASSERT(bRC) ; bRC = validatorCalled.waitForCallEvent(g_hAutoAnswerCallbackLine, g_hAutoAnswerCallbackCall, CALLSTATE_CONNECTED, CALLSTATE_CONNECTED_ACTIVE, true) ; CPPUNIT_ASSERT(bRC) ; bRC = validatorCalled.waitForCallEvent(g_hAutoAnswerCallbackLine, g_hAutoAnswerCallbackCall, CALLSTATE_AUDIO_EVENT, CALLSTATE_AUDIO_START, true) ; CPPUNIT_ASSERT(bRC) ;#ifdef TEST_PRINT sipxCallDataToString(hCall, callDumpString); printf("testCallGetRemoteID steady state call setup:\n %s\n", callDumpString.data());#endif // Test sipxCallGetRemoteID char cBuf[128] ; memset(cBuf, 0, sizeof(cBuf)); CPPUNIT_ASSERT_EQUAL( sipxCallGetRemoteID(hCall, cBuf, sizeof(cBuf)), SIPX_RESULT_SUCCESS) ; CPPUNIT_ASSERT(strlen(cBuf) > 0) ; memset(cBuf, ' ', sizeof(cBuf)) ; CPPUNIT_ASSERT_EQUAL(sipxCallGetRemoteID(hCall, cBuf, 4), SIPX_RESULT_SUCCESS) ; CPPUNIT_ASSERT(strlen(cBuf) == 3) ; CPPUNIT_ASSERT(cBuf[5] == ' ') ; SIPX_CALL hDestroyedCall = hCall ; destroyCall(hCall) ; // Validate Calling Side bRC = validatorCalling.waitForCallEvent(hLine, hDestroyedCall, CALLSTATE_CONNECTED, CALLSTATE_CONNECTED_ACTIVE_HELD, true) ; CPPUNIT_ASSERT(bRC) ; bRC = validatorCalling.waitForCallEvent(hLine, hDestroyedCall, CALLSTATE_AUDIO_EVENT, CALLSTATE_AUDIO_STOP, true) ; CPPUNIT_ASSERT(bRC) ; bRC = validatorCalling.waitForCallEvent(hLine, hDestroyedCall, CALLSTATE_DISCONNECTED, CALLSTATE_DISCONNECTED_NORMAL, true) ; CPPUNIT_ASSERT(bRC) ; bRC = validatorCalling.waitForCallEvent(hLine, hDestroyedCall, CALLSTATE_DESTROYED, CALLSTATE_DESTROYED_NORMAL, true) ; CPPUNIT_ASSERT(bRC) ; // Validate Called Side bRC = validatorCalled.waitForCallEvent(g_hAutoAnswerCallbackLine, g_hAutoAnswerCallbackCall, CALLSTATE_AUDIO_EVENT, CALLSTATE_AUDIO_STOP, true) ; CPPUNIT_ASSERT(bRC) ; bRC = validatorCalled.waitForCallEvent(g_hAutoAnswerCallbackLine, g_hAutoAnswerCallbackCall, CALLSTATE_DISCONNECTED, CALLSTATE_DISCONNECTED_NORMAL, true) ; CPPUNIT_ASSERT(bRC) ; bRC = validatorCalled.waitForCallEvent(g_hAutoAnswerCallbackLine, g_hAutoAnswerCallbackCall, CALLSTATE_DESTROYED, CALLSTATE_DESTROYED_NORMAL, true) ; CPPUNIT_ASSERT(bRC) ; CPPUNIT_ASSERT_EQUAL(sipxEventListenerRemove(g_hInst, UniversalEventValidatorCallback, &validatorCalling), SIPX_RESULT_SUCCESS) ; CPPUNIT_ASSERT_EQUAL(sipxEventListenerRemove(g_hInst2, AutoAnswerCallback, NULL), SIPX_RESULT_SUCCESS) ; CPPUNIT_ASSERT_EQUAL(sipxEventListenerRemove(g_hInst2, UniversalEventValidatorCallback, &validatorCalled), SIPX_RESULT_SUCCESS) ; CPPUNIT_ASSERT_EQUAL(sipxLineRemove(hLine), SIPX_RESULT_SUCCESS); CPPUNIT_ASSERT_EQUAL(sipxLineRemove(hReceivingLine), SIPX_RESULT_SUCCESS); } OsTask::delay(TEST_DELAY) ; checkForLeaks();}void sipXtapiTestSuite::testCallGetLocalID(){ for (int iStressFactor = 0; iStressFactor<STRESS_FACTOR; iStressFactor++) { SIPX_LINE hLine = SIPX_LINE_NULL ; SIPX_CALL hCall = SIPX_CALL_NULL ; printf("\ntestCallGetLocalID (%2d of %2d)", iStressFactor+1, STRESS_FACTOR); createCall(&hLine, &hCall) ; char cBuf[128] ; memset(cBuf, 0, sizeof(cBuf)) ; CPPUNIT_ASSERT_EQUAL(sipxCallGetLocalID(hCall, cBuf, sizeof(cBuf)), SIPX_RESULT_SUCCESS) ; CPPUNIT_ASSERT(strlen(cBuf) > 0) ; memset(cBuf, ' ', sizeof(cBuf)) ; CPPUNIT_ASSERT_EQUAL(sipxCallGetLocalID(hCall, cBuf, 4), SIPX_RESULT_SUCCESS) ; CPPUNIT_ASSERT(strlen(cBuf) == 3) ; CPPUNIT_ASSERT(cBuf[5] == ' ') ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -