⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sipxtapitesttransfer.cpp

📁 基于sipfoundy 公司开发的sipx协议API
💻 CPP
📖 第 1 页 / 共 4 页
字号:
        CPPUNIT_ASSERT(sipxRC == SIPX_RESULT_SUCCESS) ;        sipxRC = sipxCallConnect(hCallSource, "blah:foo@127.0.0.1:9100") ;        CPPUNIT_ASSERT(sipxRC == SIPX_RESULT_SUCCESS) ;        // Validate Calling Side: Transferee        bRC = validatorSource.waitForCallEvent(hLine, hCallSource, CALLSTATE_DIALTONE, CALLSTATE_DIALTONE_UNKNOWN) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorSource.waitForCallEvent(hLine, hCallSource, CALLSTATE_REMOTE_OFFERING, CALLSTATE_REMOTE_OFFERING_NORMAL) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorSource.waitForCallEvent(hLine, hCallSource, CALLSTATE_REMOTE_ALERTING, CALLSTATE_REMOTE_ALERTING_NORMAL) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorSource.waitForCallEvent(hLine, hCallSource, CALLSTATE_CONNECTED, CALLSTATE_CONNECTED_ACTIVE) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorSource.waitForCallEvent(hLine, hCallSource, CALLSTATE_AUDIO_EVENT, CALLSTATE_AUDIO_START) ;        CPPUNIT_ASSERT(bRC) ;        // Validated Called Side: Transferee        bRC = validatorCalled1.waitForCallEvent(g_hAutoAnswerCallbackLine, g_hAutoAnswerCallbackCall, CALLSTATE_NEWCALL, CALLSTATE_NEW_CALL_NORMAL) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorCalled1.waitForCallEvent(g_hAutoAnswerCallbackLine, g_hAutoAnswerCallbackCall, CALLSTATE_OFFERING, CALLSTATE_OFFERING_ACTIVE) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorCalled1.waitForCallEvent(g_hAutoAnswerCallbackLine, g_hAutoAnswerCallbackCall, CALLSTATE_ALERTING, CALLSTATE_ALERTING_NORMAL) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorCalled1.waitForCallEvent(g_hAutoAnswerCallbackLine, g_hAutoAnswerCallbackCall, CALLSTATE_CONNECTED, CALLSTATE_CONNECTED_ACTIVE) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorCalled1.waitForCallEvent(g_hAutoAnswerCallbackLine, g_hAutoAnswerCallbackCall, CALLSTATE_AUDIO_EVENT, CALLSTATE_AUDIO_START) ;        CPPUNIT_ASSERT(bRC) ;        // Make sure we don't have any unexpected events        CPPUNIT_ASSERT(!validatorSource.validateNoWaitingEvent()) ;        CPPUNIT_ASSERT(!validatorCalled1.validateNoWaitingEvent()) ;        CPPUNIT_ASSERT(!validatorCalled2.validateNoWaitingEvent()) ;        // Setup call to transfer target (Transfer Target)                sipxRC = sipxCallCreate(g_hInst, hLine, &hCallTarget) ;                CPPUNIT_ASSERT(sipxRC == SIPX_RESULT_SUCCESS) ;        sipxRC = sipxCallConnect(hCallTarget, "sip:foo@127.0.0.1:10000") ;        CPPUNIT_ASSERT(sipxRC == SIPX_RESULT_SUCCESS) ;        // Validate Calling Side: Transfer Target        bRC = validatorSource.waitForCallEvent(hLine, hCallTarget, CALLSTATE_DIALTONE, CALLSTATE_DIALTONE_UNKNOWN) ;        CPPUNIT_ASSERT(bRC) ;        // BUG, the active event can be fire before ringing as focus is switched to this call.        bRC = validatorSource.waitForCallEvent(hLine, hCallTarget, CALLSTATE_REMOTE_OFFERING, CALLSTATE_REMOTE_OFFERING_NORMAL, false) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorSource.waitForCallEvent(hLine, hCallTarget, CALLSTATE_REMOTE_ALERTING, CALLSTATE_REMOTE_ALERTING_NORMAL, false) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorSource.waitForCallEvent(hLine, hCallTarget, CALLSTATE_CONNECTED, CALLSTATE_CONNECTED_ACTIVE, false) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorSource.waitForCallEvent(hLine, hCallTarget, CALLSTATE_AUDIO_EVENT, CALLSTATE_AUDIO_START) ;        CPPUNIT_ASSERT(bRC) ;        // Validated Called Side: Transfer Target        bRC = validatorCalled2.waitForCallEvent(g_hAutoAnswerCallbackLine2, g_hAutoAnswerCallbackCall2, CALLSTATE_NEWCALL, CALLSTATE_NEW_CALL_NORMAL) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorCalled2.waitForCallEvent(g_hAutoAnswerCallbackLine2, g_hAutoAnswerCallbackCall2, CALLSTATE_OFFERING, CALLSTATE_OFFERING_ACTIVE) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorCalled2.waitForCallEvent(g_hAutoAnswerCallbackLine2, g_hAutoAnswerCallbackCall2, CALLSTATE_ALERTING, CALLSTATE_ALERTING_NORMAL) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorCalled2.waitForCallEvent(g_hAutoAnswerCallbackLine2, g_hAutoAnswerCallbackCall2, CALLSTATE_CONNECTED, CALLSTATE_CONNECTED_ACTIVE) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorCalled2.waitForCallEvent(g_hAutoAnswerCallbackLine2, g_hAutoAnswerCallbackCall2, CALLSTATE_AUDIO_EVENT, CALLSTATE_AUDIO_START) ;        CPPUNIT_ASSERT(bRC) ;        // Make sure we don't have any unexpected events        CPPUNIT_ASSERT(!validatorSource.validateNoWaitingEvent()) ;        CPPUNIT_ASSERT(!validatorCalled1.validateNoWaitingEvent()) ;        CPPUNIT_ASSERT(!validatorCalled2.validateNoWaitingEvent()) ;                // Kick off transfer        sipxRC = sipxCallTransfer(hCallSource, hCallTarget) ;        CPPUNIT_ASSERT(sipxRC == SIPX_RESULT_SUCCESS) ;        validatorSource.setMaxLookhead(8) ;        // Validate Calling Side                bRC = validatorSource.waitForCallEvent(hLine, hCallSource, CALLSTATE_TRANSFER, CALLSTATE_TRANSFER_INITIATED, false) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorSource.waitForCallEvent(hLine, hCallSource, CALLSTATE_CONNECTED, CALLSTATE_CONNECTED_ACTIVE_HELD, false) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorSource.waitForCallEvent(hLine, hCallSource, CALLSTATE_AUDIO_EVENT, CALLSTATE_AUDIO_STOP, false) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorSource.waitForCallEvent(hLine, hCallSource, CALLSTATE_TRANSFER, CALLSTATE_TRANSFER_ACCEPTED, false) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorSource.waitForCallEvent(hLine, hCallSource, CALLSTATE_DISCONNECTED, CALLSTATE_DISCONNECTED_NORMAL, false) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorSource.waitForCallEvent(hLine, hCallSource, CALLSTATE_TRANSFER, CALLSTATE_TRANSFER_SUCCESS, false) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorSource.waitForCallEvent(hLine, hCallTarget, CALLSTATE_CONNECTED, CALLSTATE_CONNECTED_ACTIVE_HELD, false) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorSource.waitForCallEvent(hLine, hCallTarget, CALLSTATE_CONNECTED, CALLSTATE_CONNECTED_INACTIVE, false) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorSource.waitForCallEvent(hLine, hCallTarget, CALLSTATE_AUDIO_EVENT, CALLSTATE_AUDIO_STOP, false) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorSource.waitForCallEvent(hLine, hCallTarget, CALLSTATE_DISCONNECTED, CALLSTATE_DISCONNECTED_NORMAL, false) ;        CPPUNIT_ASSERT(bRC) ;        // Validate remote Transferee Side (called1)        bRC = validatorCalled1.waitForCallEvent(g_hAutoAnswerCallbackLine, g_hAutoAnswerCallbackCall, CALLSTATE_CONNECTED, CALLSTATE_CONNECTED_ACTIVE_HELD, false) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorCalled1.waitForCallEvent(g_hAutoAnswerCallbackLine, g_hAutoAnswerCallbackCall, CALLSTATE_AUDIO_EVENT, CALLSTATE_AUDIO_STOP, false) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorCalled1.waitForCallEvent(g_hAutoAnswerCallbackLine, g_hAutoAnswerCallbackCallOther, CALLSTATE_NEWCALL, CALLSTATE_NEW_CALL_TRANSFER, false) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorCalled1.waitForCallEvent(g_hAutoAnswerCallbackLine, g_hAutoAnswerCallbackCallOther, CALLSTATE_REMOTE_OFFERING, CALLSTATE_REMOTE_OFFERING_NORMAL, false) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorCalled1.waitForCallEvent(g_hAutoAnswerCallbackLine, g_hAutoAnswerCallbackCallOther, CALLSTATE_CONNECTED, CALLSTATE_CONNECTED_ACTIVE, false) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorCalled1.waitForCallEvent(g_hAutoAnswerCallbackLine, g_hAutoAnswerCallbackCallOther, CALLSTATE_AUDIO_EVENT, CALLSTATE_AUDIO_START, false) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorCalled1.waitForCallEvent(g_hAutoAnswerCallbackLine, g_hAutoAnswerCallbackCall, CALLSTATE_DISCONNECTED, CALLSTATE_DISCONNECTED_NORMAL, false) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorCalled1.waitForCallEvent(g_hAutoAnswerCallbackLine, g_hAutoAnswerCallbackCall, CALLSTATE_DESTROYED, CALLSTATE_DESTROYED_NORMAL, false) ;        CPPUNIT_ASSERT(bRC) ;        // Validate remote Transfer Target Side (called2)        bRC = validatorCalled2.waitForCallEvent(g_hAutoAnswerCallbackLine2, g_hAutoAnswerCallbackCall2, CALLSTATE_AUDIO_EVENT, CALLSTATE_AUDIO_STOP, false) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorCalled2.waitForCallEvent(g_hAutoAnswerCallbackLine2, g_hAutoAnswerCallbackCall2, CALLSTATE_CONNECTED, CALLSTATE_CONNECTED_ACTIVE_HELD, false) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorCalled2.waitForCallEvent(g_hAutoAnswerCallbackLine2, g_hAutoAnswerCallbackCall2Other, CALLSTATE_NEWCALL, CALLSTATE_NEW_CALL_TRANSFERRED, false) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorCalled2.waitForCallEvent(g_hAutoAnswerCallbackLine2, g_hAutoAnswerCallbackCall2Other, CALLSTATE_CONNECTED, CALLSTATE_CONNECTED_ACTIVE, false) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorCalled2.waitForCallEvent(g_hAutoAnswerCallbackLine2, g_hAutoAnswerCallbackCall2Other, CALLSTATE_AUDIO_EVENT, CALLSTATE_AUDIO_START, false) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorCalled2.waitForCallEvent(g_hAutoAnswerCallbackLine2, g_hAutoAnswerCallbackCall2, CALLSTATE_DISCONNECTED, CALLSTATE_DISCONNECTED_NORMAL, false) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorCalled2.waitForCallEvent(g_hAutoAnswerCallbackLine2, g_hAutoAnswerCallbackCall2, CALLSTATE_DESTROYED, CALLSTATE_DESTROYED_NORMAL, false) ;        CPPUNIT_ASSERT(bRC) ;                // Make sure we don't have any unexpected events        CPPUNIT_ASSERT(!validatorSource.validateNoWaitingEvent()) ;        CPPUNIT_ASSERT(!validatorCalled1.validateNoWaitingEvent()) ;        CPPUNIT_ASSERT(!validatorCalled2.validateNoWaitingEvent()) ;                        // Destroy calls.        SIPX_CALL hDestroy = hCallSource ;        sipxRC = sipxCallDestroy(hDestroy) ;        CPPUNIT_ASSERT(sipxRC == SIPX_RESULT_SUCCESS) ;        hDestroy = hCallTarget ;        sipxRC = sipxCallDestroy(hDestroy) ;        CPPUNIT_ASSERT(sipxRC == SIPX_RESULT_SUCCESS) ;        // Validate destroy        bRC = validatorSource.waitForCallEvent(hLine, hCallSource, CALLSTATE_DESTROYED, CALLSTATE_DESTROYED_NORMAL, false) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorSource.waitForCallEvent(hLine, hCallTarget, CALLSTATE_DESTROYED, CALLSTATE_DESTROYED_NORMAL, false) ;        CPPUNIT_ASSERT(bRC) ;        // Drop other calls        hDestroy = g_hAutoAnswerCallbackCallOther ;        sipxRC = sipxCallDestroy(hDestroy) ;        CPPUNIT_ASSERT(sipxRC == SIPX_RESULT_SUCCESS) ;        hDestroy = g_hAutoAnswerCallbackCall2Other ;        sipxRC = sipxCallDestroy(hDestroy) ;        CPPUNIT_ASSERT(sipxRC == SIPX_RESULT_SUCCESS) ;        bRC = validatorCalled1.waitForCallEvent(g_hAutoAnswerCallbackLine, g_hAutoAnswerCallbackCallOther, CALLSTATE_CONNECTED, CALLSTATE_CONNECTED_ACTIVE_HELD) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorCalled1.waitForCallEvent(g_hAutoAnswerCallbackLine, g_hAutoAnswerCallbackCallOther, CALLSTATE_AUDIO_EVENT, CALLSTATE_AUDIO_STOP) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorCalled1.waitForCallEvent(g_hAutoAnswerCallbackLine, g_hAutoAnswerCallbackCallOther, CALLSTATE_DISCONNECTED, CALLSTATE_DISCONNECTED_NORMAL) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorCalled1.waitForCallEvent(g_hAutoAnswerCallbackLine, g_hAutoAnswerCallbackCallOther, CALLSTATE_DESTROYED, CALLSTATE_DESTROYED_NORMAL) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorCalled2.waitForCallEvent(g_hAutoAnswerCallbackLine2, g_hAutoAnswerCallbackCall2Other, CALLSTATE_AUDIO_EVENT, CALLSTATE_AUDIO_STOP) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorCalled2.waitForCallEvent(g_hAutoAnswerCallbackLine2, g_hAutoAnswerCallbackCall2Other, CALLSTATE_DISCONNECTED, CALLSTATE_DISCONNECTED_NORMAL) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorCalled2.waitForCallEvent(g_hAutoAnswerCallbackLine2, g_hAutoAnswerCallbackCall2Other, CALLSTATE_DESTROYED, CALLSTATE_DESTROYED_NORMAL) ;        CPPUNIT_ASSERT(bRC) ;        // Remove Listeners        sipxRC = sipxEventListenerRemove(g_hInst, UniversalEventValidatorCallback, &validatorSource) ;        CPPUNIT_ASSERT(sipxRC == SIPX_RESULT_SUCCESS) ;        sipxRC = sipxEventListenerRemove(g_hInst2, UniversalEventValidatorCallback, &validatorCalled1) ;        CPPUNIT_ASSERT(sipxRC == SIPX_RESULT_SUCCESS) ;        sipxRC = sipxEventListenerRemove(g_hInst2, AutoAnswerCallback, NULL) ;        CPPUNIT_ASSERT(sipxRC == SIPX_RESULT_SUCCESS) ;        sipxRC = sipxEventListenerRemove(g_hInst3, UniversalEventValidatorCallback, &validatorCalled2) ;        CPPUNIT_ASSERT(sipxRC == SIPX_RESULT_SUCCESS) ;        sipxRC = sipxEventListenerRemove(g_hInst3, AutoAnswerCallback2, NULL) ;        CPPUNIT_ASSERT(sipxRC == SIPX_RESULT_SUCCESS) ;        sipxRC = sipxLineRemove(hLine) ;        CPPUNIT_ASSERT(sipxRC == SIPX_RESULT_SUCCESS) ;        sipxRC = sipxLineRemove(hReceivingLine1) ;        CPPUNIT_ASSERT(sipxRC == SIPX_RESULT_SUCCESS) ;        sipxRC = sipxLineRemove(hReceivingLine2) ;        CPPUNIT_ASSERT(sipxRC == SIPX_RESULT_SUCCESS) ;    }    OsTask::delay(TEST_DELAY) ;        checkForLeaks() ;}/** * This test creates a conference by creating two outbound call legs.   * Afterwards, it removes itself from the conference by transferring * the first party called to the second party called. */void sipXtapiTestSuite::testTransferConferenceSuccess(){    EventValidator validatorSource("testTransferConferenceSuccess.source") ;    EventValidator validatorCalled1("testTransferConferenceSuccess.validatorCalled1") ;    EventValidator validatorCalled2("testTransferConferenceSuccess.validatorCalled2") ;    SIPX_RESULT sipxRC ;    bool        bRC ;    for (int iStressFactor = 0; iStressFactor<STRESS_FACTOR; iStressFactor++)    {        SIPX_LINE hLine ;           // Local Line definition        SIPX_CONF hConf ;           // Local Conference        SIPX_CALL hCallSource ;     // Transferee        SIPX_CALL hCallTarget ;     // Tranfer Target        SIPX_LINE hReceivingLine1;  // Other side of hCallSource        SIPX_LINE hReceivingLine2;  // Other side of hCallTarget        printf("\ntestTransferConferenceSuccess (%2d of %2d)", iStressFactor+1, STRESS_FACTOR);        validatorSource.reset() ;        validatorCalled1.reset() ;        validatorCalled2.reset() ;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -