sipxtapitesttransfer.cpp

来自「基于sipfoundy 公司开发的sipx协议API」· C++ 代码 · 共 918 行 · 第 1/4 页

CPP
918
字号
//// Copyright (C) 2004, 2005 Pingtel Corp.// //// $$//////////////////////////////////////////////////////////////////////////////#include <cppunit/CompilerOutputter.h>#include <cppunit/extensions/TestFactoryRegistry.h>#include <cppunit/ui/text/TestRunner.h>#include "sipXtapiTest.h"#include "EventValidator.h"#include "callbacks.h"extern SIPX_INST g_hInst;extern SIPX_INST g_hInst2;extern SIPX_INST g_hInst3;void sipXtapiTestSuite::testBlindTransferSuccess() {    EventValidator validatorTransferController("testBlindTransferSuccess.validatorTransferController") ;    EventValidator validatorTransferee("testBlindTransferSuccess.validatorTransferee") ;    EventValidator validatorTransferTarget("testBlindTransferSuccess.validatorTransferTarget") ;    SIPX_CALL hTransferee ;    SIPX_LINE hLine ;    SIPX_LINE hReceivingLine1 ;    SIPX_LINE hReceivingLine2 ;    SIPX_RESULT sipxRC ;    bool        bRC ;    for (int iStressFactor = 0; iStressFactor<STRESS_FACTOR; iStressFactor++)    {        printf("\ntestBlindTransferSuccess (%2d of %2d)", iStressFactor+1, STRESS_FACTOR);        validatorTransferController.reset() ;        validatorTransferee.reset() ;        validatorTransferTarget.reset() ;        resetAutoAnswerCallback() ;        resetAutoAnswerCallback2() ;                sipxRC = sipxEventListenerAdd(g_hInst, UniversalEventValidatorCallback, &validatorTransferController) ;        CPPUNIT_ASSERT(sipxRC == SIPX_RESULT_SUCCESS) ;        sipxRC = sipxEventListenerAdd(g_hInst2, UniversalEventValidatorCallback, &validatorTransferee) ;        CPPUNIT_ASSERT(sipxRC == SIPX_RESULT_SUCCESS) ;        sipxRC = sipxEventListenerAdd(g_hInst2, AutoAnswerCallback, NULL) ;                CPPUNIT_ASSERT(sipxRC == SIPX_RESULT_SUCCESS) ;        sipxRC = sipxEventListenerAdd(g_hInst3, UniversalEventValidatorCallback, &validatorTransferTarget) ;        CPPUNIT_ASSERT(sipxRC == SIPX_RESULT_SUCCESS) ;        sipxRC = sipxEventListenerAdd(g_hInst3, AutoAnswerCallback2, NULL) ;               CPPUNIT_ASSERT(sipxRC == SIPX_RESULT_SUCCESS) ;        // Create Lines        sipxRC = sipxLineAdd(g_hInst, "sip:foo@127.0.0.1:8000", &hLine) ;        CPPUNIT_ASSERT(sipxRC == SIPX_RESULT_SUCCESS) ;        bRC = validatorTransferController.waitForLineEvent(hLine, LINESTATE_PROVISIONED, LINESTATE_PROVISIONED_NORMAL) ;        CPPUNIT_ASSERT(bRC) ;        sipxRC = sipxLineAdd(g_hInst2, "sip:foo@127.0.0.1:9100", &hReceivingLine1, CONTACT_AUTO) ;        CPPUNIT_ASSERT(sipxRC == SIPX_RESULT_SUCCESS) ;        bRC = validatorTransferee.waitForLineEvent(hReceivingLine1, LINESTATE_PROVISIONED, LINESTATE_PROVISIONED_NORMAL) ;        CPPUNIT_ASSERT(bRC) ;        sipxRC = sipxLineAdd(g_hInst3, "sip:foo@127.0.0.1:10000", &hReceivingLine2, CONTACT_AUTO) ;        CPPUNIT_ASSERT(sipxRC == SIPX_RESULT_SUCCESS) ;        bRC = validatorTransferTarget.waitForLineEvent(hReceivingLine2, LINESTATE_PROVISIONED, LINESTATE_PROVISIONED_NORMAL) ;        CPPUNIT_ASSERT(bRC) ;        // Setup call to transfer source (transferee)        sipxRC = sipxCallCreate(g_hInst, hLine, &hTransferee) ;        CPPUNIT_ASSERT(sipxRC == SIPX_RESULT_SUCCESS) ;        sipxRC = sipxCallConnect(hTransferee, "foo:foo@127.0.0.1:9100") ;        CPPUNIT_ASSERT(sipxRC == SIPX_RESULT_SUCCESS) ;        validatorTransferController.addMarker("Validate Calling Side: Transferee") ;        bRC = validatorTransferController.waitForCallEvent(hLine, hTransferee, CALLSTATE_DIALTONE, CALLSTATE_DIALTONE_UNKNOWN) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorTransferController.waitForCallEvent(hLine, hTransferee, CALLSTATE_REMOTE_OFFERING, CALLSTATE_REMOTE_OFFERING_NORMAL) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorTransferController.waitForCallEvent(hLine, hTransferee, CALLSTATE_REMOTE_ALERTING, CALLSTATE_REMOTE_ALERTING_NORMAL) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorTransferController.waitForCallEvent(hLine, hTransferee, CALLSTATE_CONNECTED, CALLSTATE_CONNECTED_ACTIVE) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorTransferController.waitForCallEvent(hLine, hTransferee, CALLSTATE_AUDIO_EVENT, CALLSTATE_AUDIO_START) ;        CPPUNIT_ASSERT(bRC) ;        validatorTransferee.addMarker("Validated Called Side: Transferee") ;        bRC = validatorTransferee.waitForCallEvent(g_hAutoAnswerCallbackLine, g_hAutoAnswerCallbackCall, CALLSTATE_NEWCALL, CALLSTATE_NEW_CALL_NORMAL) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorTransferee.waitForCallEvent(g_hAutoAnswerCallbackLine, g_hAutoAnswerCallbackCall, CALLSTATE_OFFERING, CALLSTATE_OFFERING_ACTIVE) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorTransferee.waitForCallEvent(g_hAutoAnswerCallbackLine, g_hAutoAnswerCallbackCall, CALLSTATE_ALERTING, CALLSTATE_ALERTING_NORMAL) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorTransferee.waitForCallEvent(g_hAutoAnswerCallbackLine, g_hAutoAnswerCallbackCall, CALLSTATE_CONNECTED, CALLSTATE_CONNECTED_ACTIVE) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorTransferee.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(!validatorTransferController.validateNoWaitingEvent()) ;        CPPUNIT_ASSERT(!validatorTransferee.validateNoWaitingEvent()) ;        CPPUNIT_ASSERT(!validatorTransferTarget.validateNoWaitingEvent()) ;        sipxRC = sipxCallBlindTransfer(hTransferee, "sip:foo@127.0.0.1:10000") ;        CPPUNIT_ASSERT(sipxRC == SIPX_RESULT_SUCCESS) ;        // Validate Calling Side: Transfer Target        bRC = validatorTransferController.waitForCallEvent(hLine, hTransferee, CALLSTATE_TRANSFER, CALLSTATE_TRANSFER_INITIATED) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorTransferController.waitForCallEvent(hLine, hTransferee, CALLSTATE_CONNECTED, CALLSTATE_CONNECTED_ACTIVE_HELD) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorTransferController.waitForCallEvent(hLine, hTransferee, CALLSTATE_CONNECTED, CALLSTATE_CONNECTED_INACTIVE) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorTransferController.waitForCallEvent(hLine, hTransferee, CALLSTATE_AUDIO_EVENT, CALLSTATE_AUDIO_STOP) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorTransferController.waitForCallEvent(hLine, hTransferee, CALLSTATE_TRANSFER, CALLSTATE_TRANSFER_ACCEPTED) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorTransferController.waitForCallEvent(hLine, hTransferee, CALLSTATE_TRANSFER, CALLSTATE_TRANSFER_RINGING) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorTransferController.waitForCallEvent(hLine, hTransferee, CALLSTATE_TRANSFER, CALLSTATE_TRANSFER_SUCCESS) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorTransferController.waitForCallEvent(hLine, hTransferee, CALLSTATE_DISCONNECTED, CALLSTATE_DISCONNECTED_NORMAL) ;        CPPUNIT_ASSERT(bRC) ;        // Validate Calling Side: Transferee        bRC = validatorTransferee.waitForCallEvent(g_hAutoAnswerCallbackLine, g_hAutoAnswerCallbackCall, CALLSTATE_AUDIO_EVENT, CALLSTATE_AUDIO_STOP) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorTransferee.waitForCallEvent(g_hAutoAnswerCallbackLine, g_hAutoAnswerCallbackCall, CALLSTATE_CONNECTED, CALLSTATE_CONNECTED_ACTIVE_HELD) ;        CPPUNIT_ASSERT(bRC) ;        // BUG:: Why is line 0????        bRC = validatorTransferee.waitForCallEvent(0, g_hAutoAnswerCallbackCallOther, CALLSTATE_NEWCALL, CALLSTATE_NEW_CALL_TRANSFER) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorTransferee.waitForCallEvent(0, g_hAutoAnswerCallbackCallOther, CALLSTATE_REMOTE_OFFERING, CALLSTATE_REMOTE_OFFERING_NORMAL) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorTransferee.waitForCallEvent(0, g_hAutoAnswerCallbackCallOther, CALLSTATE_REMOTE_ALERTING, CALLSTATE_REMOTE_ALERTING_NORMAL) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorTransferee.waitForCallEvent(0, g_hAutoAnswerCallbackCallOther, CALLSTATE_CONNECTED, CALLSTATE_CONNECTED_ACTIVE) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorTransferee.waitForCallEvent(0, g_hAutoAnswerCallbackCallOther, CALLSTATE_AUDIO_EVENT, CALLSTATE_AUDIO_START) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorTransferee.waitForCallEvent(g_hAutoAnswerCallbackLine, g_hAutoAnswerCallbackCall, CALLSTATE_DISCONNECTED, CALLSTATE_DISCONNECTED_NORMAL) ;        CPPUNIT_ASSERT(bRC) ;        // Validated Called Side: Transfer Target        bRC = validatorTransferTarget.waitForCallEvent(g_hAutoAnswerCallbackLine2, g_hAutoAnswerCallbackCall2, CALLSTATE_NEWCALL, CALLSTATE_NEW_CALL_NORMAL) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorTransferTarget.waitForCallEvent(g_hAutoAnswerCallbackLine2, g_hAutoAnswerCallbackCall2, CALLSTATE_OFFERING, CALLSTATE_OFFERING_ACTIVE) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorTransferTarget.waitForCallEvent(g_hAutoAnswerCallbackLine2, g_hAutoAnswerCallbackCall2, CALLSTATE_ALERTING, CALLSTATE_ALERTING_NORMAL) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorTransferTarget.waitForCallEvent(g_hAutoAnswerCallbackLine2, g_hAutoAnswerCallbackCall2, CALLSTATE_CONNECTED, CALLSTATE_CONNECTED_ACTIVE) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorTransferTarget.waitForCallEvent(g_hAutoAnswerCallbackLine2, g_hAutoAnswerCallbackCall2, CALLSTATE_AUDIO_EVENT, CALLSTATE_AUDIO_START) ;        CPPUNIT_ASSERT(bRC) ;              // Drop Original Call        SIPX_CALL hDestroy = hTransferee ;        sipxRC = sipxCallDestroy(hDestroy) ;        CPPUNIT_ASSERT(sipxRC == SIPX_RESULT_SUCCESS) ;        bRC = validatorTransferController.waitForCallEvent(hLine, hTransferee, CALLSTATE_DESTROYED, CALLSTATE_DESTROYED_NORMAL) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorTransferee.waitForCallEvent(g_hAutoAnswerCallbackLine, g_hAutoAnswerCallbackCall, CALLSTATE_DESTROYED, CALLSTATE_DESTROYED_NORMAL) ;                CPPUNIT_ASSERT(bRC) ;        // Drop Calls        hDestroy = g_hAutoAnswerCallbackCallOther ;        sipxRC = sipxCallDestroy(hDestroy) ;        CPPUNIT_ASSERT(sipxRC == SIPX_RESULT_SUCCESS) ;        bRC = validatorTransferee.waitForCallEvent(0, g_hAutoAnswerCallbackCallOther, CALLSTATE_CONNECTED, CALLSTATE_CONNECTED_ACTIVE_HELD) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorTransferee.waitForCallEvent(0, g_hAutoAnswerCallbackCallOther, CALLSTATE_AUDIO_EVENT, CALLSTATE_AUDIO_STOP) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorTransferee.waitForCallEvent(0, g_hAutoAnswerCallbackCallOther, CALLSTATE_DISCONNECTED, CALLSTATE_DISCONNECTED_NORMAL) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorTransferee.waitForCallEvent(0, g_hAutoAnswerCallbackCallOther, CALLSTATE_DESTROYED, CALLSTATE_DESTROYED_NORMAL) ;                CPPUNIT_ASSERT(bRC) ;        bRC = validatorTransferTarget.waitForCallEvent(g_hAutoAnswerCallbackLine2, g_hAutoAnswerCallbackCall2, CALLSTATE_AUDIO_EVENT, CALLSTATE_AUDIO_STOP) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorTransferTarget.waitForCallEvent(g_hAutoAnswerCallbackLine2, g_hAutoAnswerCallbackCall2, CALLSTATE_DISCONNECTED, CALLSTATE_DISCONNECTED_NORMAL) ;        CPPUNIT_ASSERT(bRC) ;        bRC = validatorTransferTarget.waitForCallEvent(g_hAutoAnswerCallbackLine2, g_hAutoAnswerCallbackCall2, CALLSTATE_DESTROYED, CALLSTATE_DESTROYED_NORMAL) ;        CPPUNIT_ASSERT(bRC) ;        CPPUNIT_ASSERT(!validatorTransferController.validateNoWaitingEvent()) ;        CPPUNIT_ASSERT(!validatorTransferee.validateNoWaitingEvent()) ;        CPPUNIT_ASSERT(!validatorTransferTarget.validateNoWaitingEvent()) ;        // Remove Listeners        sipxRC = sipxEventListenerRemove(g_hInst, UniversalEventValidatorCallback, &validatorTransferController) ;        CPPUNIT_ASSERT(sipxRC == SIPX_RESULT_SUCCESS) ;        sipxRC = sipxEventListenerRemove(g_hInst2, UniversalEventValidatorCallback, &validatorTransferee) ;        CPPUNIT_ASSERT(sipxRC == SIPX_RESULT_SUCCESS) ;        sipxRC = sipxEventListenerRemove(g_hInst2, AutoAnswerCallback, NULL) ;        CPPUNIT_ASSERT(sipxRC == SIPX_RESULT_SUCCESS) ;        sipxRC = sipxEventListenerRemove(g_hInst3, UniversalEventValidatorCallback, &validatorTransferTarget) ;        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() ;}void sipXtapiTestSuite::testBlindTransferFailureBusy() {    EventValidator validatorTransferController("testBlindTransferFailureBusy.validatorTransferController") ;    EventValidator validatorTransferee("testBlindTransferFailureBusy.validatorTransferee") ;    EventValidator validatorTransferTarget("testBlindTransferFailureBusy.validatorTransferTarget") ;    SIPX_CALL hTransferee ;    SIPX_LINE hLine ;    SIPX_LINE hReceivingLine1 ;    SIPX_LINE hReceivingLine2 ;

⌨️ 快捷键说明

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