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

📄 sipxtapitestconfig.cpp

📁 基于sipfoundy 公司开发的sipx协议API
💻 CPP
📖 第 1 页 / 共 2 页
字号:
////// Copyright (C) 2005-2006 SIPez LLC.// Licensed to SIPfoundry under a Contributor Agreement.//// Copyright (C) 2004-2006 SIPfoundry Inc.// Licensed by SIPfoundry under the LGPL license.//// Copyright (C) 2004-2006 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 "EventRecorder.h"#include "EventValidator.h"#include "callbacks.h"extern EventRecorder g_recorder ;bool g_bCallbackCalled = false;extern SIPX_INST g_hInst;extern EventRecorder g_recorder ;extern EventRecorder g_lineRecorder; extern EventRecorder g_lineRecorder2; extern SIPX_INST g_hInst2;extern EventRecorder g_recorder2 ;extern SIPX_INST g_hInst3;extern EventRecorder g_recorder3 ;extern bool g_bCallbackCalled;extern SIPX_INST g_hInstInfo;extern EventRecorder g_recorderInfo;extern SIPX_CALL ghCallHangup;/** * Test valid bounds: min gain, mid gain, and max gain.  */void sipXtapiTestSuite::testGainAPI() {    for (int iStressFactor = 0; iStressFactor<STRESS_FACTOR; iStressFactor++)    {        int iGainLevel ;            printf("\ntestGainAPI (%2d of %2d)", iStressFactor+1, STRESS_FACTOR);        // Set to min        CPPUNIT_ASSERT_EQUAL(sipxAudioSetGain(g_hInst, GAIN_MIN), SIPX_RESULT_SUCCESS) ;        CPPUNIT_ASSERT_EQUAL(sipxAudioGetGain(g_hInst, iGainLevel), SIPX_RESULT_SUCCESS) ;            CPPUNIT_ASSERT_EQUAL(iGainLevel, GAIN_MIN) ;        // Set to default        CPPUNIT_ASSERT_EQUAL(sipxAudioSetGain(g_hInst, GAIN_DEFAULT), SIPX_RESULT_SUCCESS) ;        CPPUNIT_ASSERT_EQUAL(sipxAudioGetGain(g_hInst, iGainLevel), SIPX_RESULT_SUCCESS) ;        CPPUNIT_ASSERT_EQUAL(iGainLevel, GAIN_DEFAULT) ;                // set to max        CPPUNIT_ASSERT_EQUAL(sipxAudioSetGain(g_hInst, GAIN_MAX), SIPX_RESULT_SUCCESS) ;            CPPUNIT_ASSERT_EQUAL(sipxAudioGetGain(g_hInst, iGainLevel), SIPX_RESULT_SUCCESS) ;        CPPUNIT_ASSERT_EQUAL(iGainLevel, GAIN_MAX) ;        // set to max again        CPPUNIT_ASSERT_EQUAL(sipxAudioSetGain(g_hInst, GAIN_MAX), SIPX_RESULT_SUCCESS) ;            CPPUNIT_ASSERT_EQUAL(sipxAudioGetGain(g_hInst, iGainLevel), SIPX_RESULT_SUCCESS) ;        CPPUNIT_ASSERT_EQUAL(iGainLevel, GAIN_MAX) ;        }    // Does not create a call -- no need to pause    OsTask::delay(TEST_DELAY) ;        checkForLeaks();}/** * Verify mute state and that gain is not modified */void sipXtapiTestSuite::testMuteAPI(){    for (int iStressFactor = 0; iStressFactor<STRESS_FACTOR; iStressFactor++)    {        int iGainLevel ;        bool bMuted ;        printf("\ntestMuteAPI (%2d of %2d)", iStressFactor+1, STRESS_FACTOR);        for (int i = 0; i < 10; i++)        {            // Set gain to known value            CPPUNIT_ASSERT_EQUAL(sipxAudioSetGain(g_hInst, GAIN_DEFAULT), SIPX_RESULT_SUCCESS) ;            CPPUNIT_ASSERT_EQUAL(sipxAudioGetGain(g_hInst, iGainLevel), SIPX_RESULT_SUCCESS) ;            CPPUNIT_ASSERT_EQUAL(iGainLevel, GAIN_DEFAULT) ;            // Test Mute API            CPPUNIT_ASSERT_EQUAL(sipxAudioMute(g_hInst, true), SIPX_RESULT_SUCCESS) ;            CPPUNIT_ASSERT_EQUAL(sipxAudioIsMuted(g_hInst, bMuted), SIPX_RESULT_SUCCESS) ;            CPPUNIT_ASSERT_EQUAL(bMuted, true) ;            CPPUNIT_ASSERT_EQUAL(sipxAudioGetGain(g_hInst, iGainLevel), SIPX_RESULT_SUCCESS) ;            CPPUNIT_ASSERT_EQUAL(iGainLevel, GAIN_DEFAULT) ;            // Test Unmute API            CPPUNIT_ASSERT_EQUAL(sipxAudioMute(g_hInst, false), SIPX_RESULT_SUCCESS) ;            CPPUNIT_ASSERT_EQUAL(sipxAudioIsMuted(g_hInst, bMuted), SIPX_RESULT_SUCCESS) ;            CPPUNIT_ASSERT_EQUAL(bMuted, false) ;            CPPUNIT_ASSERT_EQUAL(sipxAudioGetGain(g_hInst, iGainLevel), SIPX_RESULT_SUCCESS) ;            CPPUNIT_ASSERT_EQUAL(iGainLevel, GAIN_DEFAULT) ;            // Test Unmute again            CPPUNIT_ASSERT_EQUAL(sipxAudioMute(g_hInst, false), SIPX_RESULT_SUCCESS) ;            CPPUNIT_ASSERT_EQUAL(sipxAudioIsMuted(g_hInst, bMuted), SIPX_RESULT_SUCCESS) ;            CPPUNIT_ASSERT_EQUAL(bMuted, false) ;            CPPUNIT_ASSERT_EQUAL(sipxAudioGetGain(g_hInst, iGainLevel), SIPX_RESULT_SUCCESS) ;            CPPUNIT_ASSERT_EQUAL(iGainLevel, GAIN_DEFAULT) ;        }    }        // Does not create a call -- no need to pause    // OsTask::delay(TEST_DELAY) ;        checkForLeaks() ;}/* * Test valid bounds: min, mid, and max.  */void sipXtapiTestSuite::testVolumeAPI() {    for (int iStressFactor = 0; iStressFactor<STRESS_FACTOR; iStressFactor++)    {        SPEAKER_TYPE type ;        int iLevel ;        printf("\ntestVolumeAPI (%2d of %2d)", iStressFactor+1, STRESS_FACTOR);        // Test Enable Speaker        CPPUNIT_ASSERT_EQUAL(sipxAudioEnableSpeaker(g_hInst, SPEAKER), SIPX_RESULT_SUCCESS) ;        CPPUNIT_ASSERT_EQUAL(sipxAudioGetEnabledSpeaker(g_hInst, type), SIPX_RESULT_SUCCESS) ;        CPPUNIT_ASSERT_EQUAL(type, SPEAKER) ;        CPPUNIT_ASSERT_EQUAL(sipxAudioEnableSpeaker(g_hInst, RINGER), SIPX_RESULT_SUCCESS) ;        CPPUNIT_ASSERT_EQUAL(sipxAudioGetEnabledSpeaker(g_hInst, type), SIPX_RESULT_SUCCESS) ;        CPPUNIT_ASSERT_EQUAL(type, RINGER) ;        // Set both RINGER and SPEAKER to know states (cloned below)        CPPUNIT_ASSERT_EQUAL(sipxAudioSetVolume(g_hInst, SPEAKER, VOLUME_DEFAULT), SIPX_RESULT_SUCCESS) ;        CPPUNIT_ASSERT_EQUAL(sipxAudioSetVolume(g_hInst, RINGER, VOLUME_DEFAULT), SIPX_RESULT_SUCCESS) ;        CPPUNIT_ASSERT_EQUAL(sipxAudioGetVolume(g_hInst, SPEAKER, iLevel), SIPX_RESULT_SUCCESS) ;        CPPUNIT_ASSERT_EQUAL(iLevel, VOLUME_DEFAULT) ;        CPPUNIT_ASSERT_EQUAL(sipxAudioGetVolume(g_hInst, RINGER, iLevel), SIPX_RESULT_SUCCESS) ;        CPPUNIT_ASSERT_EQUAL(iLevel, VOLUME_DEFAULT) ;        // Test SPEAKER making sure RINGER doesn't change        CPPUNIT_ASSERT_EQUAL(sipxAudioSetVolume(g_hInst, SPEAKER, VOLUME_MIN), SIPX_RESULT_SUCCESS) ;        CPPUNIT_ASSERT_EQUAL(sipxAudioGetVolume(g_hInst, SPEAKER, iLevel), SIPX_RESULT_SUCCESS) ;        CPPUNIT_ASSERT_EQUAL(iLevel, VOLUME_MIN) ;        CPPUNIT_ASSERT_EQUAL(sipxAudioGetVolume(g_hInst, RINGER, iLevel), SIPX_RESULT_SUCCESS) ;        CPPUNIT_ASSERT_EQUAL(iLevel, VOLUME_DEFAULT) ;        CPPUNIT_ASSERT_EQUAL(sipxAudioSetVolume(g_hInst, SPEAKER, VOLUME_MAX), SIPX_RESULT_SUCCESS) ;        CPPUNIT_ASSERT_EQUAL(sipxAudioGetVolume(g_hInst, SPEAKER, iLevel), SIPX_RESULT_SUCCESS) ;        CPPUNIT_ASSERT_EQUAL(iLevel, VOLUME_MAX) ;                // Set both RINGER and SPEAKER to know states (clone of above)        CPPUNIT_ASSERT_EQUAL(sipxAudioSetVolume(g_hInst, SPEAKER, VOLUME_DEFAULT), SIPX_RESULT_SUCCESS) ;        CPPUNIT_ASSERT_EQUAL(sipxAudioSetVolume(g_hInst, RINGER, VOLUME_DEFAULT), SIPX_RESULT_SUCCESS) ;        CPPUNIT_ASSERT_EQUAL(sipxAudioGetVolume(g_hInst, SPEAKER, iLevel), SIPX_RESULT_SUCCESS) ;        CPPUNIT_ASSERT_EQUAL(iLevel, VOLUME_DEFAULT) ;        CPPUNIT_ASSERT_EQUAL(sipxAudioGetVolume(g_hInst, RINGER, iLevel), SIPX_RESULT_SUCCESS) ;        CPPUNIT_ASSERT_EQUAL(iLevel, VOLUME_DEFAULT) ;        // Test RINGER making sure SPEAKER doesn't change        CPPUNIT_ASSERT_EQUAL(sipxAudioSetVolume(g_hInst, RINGER, VOLUME_MIN), SIPX_RESULT_SUCCESS) ;        CPPUNIT_ASSERT_EQUAL(sipxAudioGetVolume(g_hInst, RINGER, iLevel), SIPX_RESULT_SUCCESS) ;        CPPUNIT_ASSERT_EQUAL(iLevel, VOLUME_MIN) ;        CPPUNIT_ASSERT_EQUAL(sipxAudioGetVolume(g_hInst, SPEAKER, iLevel), SIPX_RESULT_SUCCESS) ;        CPPUNIT_ASSERT_EQUAL(iLevel, VOLUME_DEFAULT) ;        CPPUNIT_ASSERT_EQUAL(sipxAudioSetVolume(g_hInst, RINGER, VOLUME_MAX), SIPX_RESULT_SUCCESS) ;        CPPUNIT_ASSERT_EQUAL(sipxAudioGetVolume(g_hInst, RINGER, iLevel), SIPX_RESULT_SUCCESS) ;        CPPUNIT_ASSERT_EQUAL(iLevel, VOLUME_MAX) ;    }    // Does not create a call -- no need to pause    // OsTask::delay(TEST_DELAY) ;        checkForLeaks() ;}void sipXtapiTestSuite::testAudioSettings(){    size_t  i;    for (int iStressFactor = 0; iStressFactor<STRESS_FACTOR; iStressFactor++)    {        printf("\ntestAudioSettings (%2d of %2d)", iStressFactor+1, STRESS_FACTOR);        // Test Enable AEC        CPPUNIT_ASSERT_EQUAL( sipxAudioEnableAEC(g_hInst, true), SIPX_RESULT_SUCCESS);        bool bResult = false;        CPPUNIT_ASSERT_EQUAL( sipxAudioIsAECEnabled(g_hInst, bResult), SIPX_RESULT_SUCCESS);        CPPUNIT_ASSERT_EQUAL( bResult, true);        CPPUNIT_ASSERT_EQUAL( sipxAudioEnableAEC(g_hInst, false), SIPX_RESULT_SUCCESS);        CPPUNIT_ASSERT_EQUAL( sipxAudioIsAECEnabled(g_hInst, bResult), SIPX_RESULT_SUCCESS);        CPPUNIT_ASSERT_EQUAL( bResult, false);        size_t numOfDevices;        const char* szDevice;        const char* checker = NULL;        //Test sipxAudioGetNumInputDevices        CPPUNIT_ASSERT_EQUAL( sipxAudioGetNumInputDevices(g_hInst, numOfDevices), SIPX_RESULT_SUCCESS);        for(i = 0; i < numOfDevices; i++)         {            CPPUNIT_ASSERT_EQUAL( sipxAudioGetInputDevice(g_hInst, i, szDevice), SIPX_RESULT_SUCCESS);        }        //checks if there are no more devices        CPPUNIT_ASSERT_EQUAL( sipxAudioGetInputDevice(g_hInst, i, szDevice), SIPX_RESULT_SUCCESS);        //szDevice should be NULL        CPPUNIT_ASSERT_EQUAL(szDevice, checker);        numOfDevices = 0;        //Test sipxAudioGetNumOutputDevices        CPPUNIT_ASSERT_EQUAL( sipxAudioGetNumOutputDevices(g_hInst, numOfDevices), SIPX_RESULT_SUCCESS);        for(i = 0; i < numOfDevices; i++)         {            CPPUNIT_ASSERT_EQUAL( sipxAudioGetOutputDevice(g_hInst, i, szDevice), SIPX_RESULT_SUCCESS);        }        //checks if there are no more devices        CPPUNIT_ASSERT_EQUAL( sipxAudioGetOutputDevice(g_hInst, i, szDevice), SIPX_RESULT_SUCCESS);        //checker is NULL        CPPUNIT_ASSERT_EQUAL(szDevice, checker);    }    // Does not create a call -- no need to pause    // OsTask::delay(TEST_DELAY) ;        checkForLeaks() ;}// Try the GetVersion API, one time with large buffer,// then with very small buffervoid sipXtapiTestSuite::testGetVersion() {    for (int iStressFactor = 0; iStressFactor<STRESS_FACTOR; iStressFactor++)    {        char szBuffer[64];        printf("\ntestGetVersion (%2d of %2d)", iStressFactor+1, STRESS_FACTOR);        CPPUNIT_ASSERT_EQUAL(sipxConfigGetVersion(szBuffer, 64), SIPX_RESULT_SUCCESS);        CPPUNIT_ASSERT(strstr(szBuffer, "SIPxua")!=NULL);        CPPUNIT_ASSERT_EQUAL(sipxConfigGetVersion(szBuffer, 2), SIPX_RESULT_INSUFFICIENT_BUFFER);    }    // Does not create a call -- no need to pause    // OsTask::delay(TEST_DELAY) ;        checkForLeaks() ;}void testCallback(const char* szPriority, const char *szSource, const char* szMsg){    if (strcmp(szPriority, "DEBUG") == 0)    {        if ( strstr(szMsg, "**Testing callbacks**") != NULL )        {            g_bCallbackCalled = true;        }    }}void sipXtapiTestSuite::testSetCallback(){    for (int iStressFactor = 0; iStressFactor<STRESS_FACTOR; iStressFactor++)    {        g_bCallbackCalled = false;        printf("\ntestSetCallback (%2d of %2d)", iStressFactor+1, STRESS_FACTOR);        // Enable logging at DEBUG level        sipxConfigSetLogLevel( LOG_LEVEL_DEBUG );        // Set callback function        sipxConfigSetLogCallback( testCallback );        // Send special log messafe at DEBUG level        sipxLogEntryAdd(PRI_DEBUG, "**Testing callbacks**");        OsTask::delay(200);        CPPUNIT_ASSERT_EQUAL(g_bCallbackCalled, true);        // Disable logging        sipxConfigSetLogCallback( NULL );        sipxConfigSetLogLevel( LOG_LEVEL_NONE );    }        // Does not create a call -- no need to pause    // OsTask::delay(TEST_DELAY) ;        checkForLeaks() ;}void sipXtapiTestSuite::testAutoPortSelection() {    for (int iStressFactor = 0; iStressFactor<STRESS_FACTOR; iStressFactor++)    {        SIPX_INST hHandle ;        SIPX_RESULT rc ;        int iPort ;        printf("\ntestAutoPortSelection (%2d of %2d)", iStressFactor+1, STRESS_FACTOR);        rc = sipxInitialize(&hHandle, SIPX_PORT_AUTO, SIPX_PORT_AUTO, SIPX_PORT_AUTO,                            1234) ;        CPPUNIT_ASSERT_EQUAL(rc, SIPX_RESULT_SUCCESS) ;        rc = sipxConfigGetLocalSipUdpPort(hHandle, &iPort) ;        CPPUNIT_ASSERT_EQUAL(rc, SIPX_RESULT_SUCCESS) ;        CPPUNIT_ASSERT(portIsValid(iPort)) ;        rc = sipxConfigGetLocalSipTcpPort(hHandle, &iPort) ;        CPPUNIT_ASSERT_EQUAL(rc, SIPX_RESULT_SUCCESS) ;        CPPUNIT_ASSERT(portIsValid(iPort)) ;    #if 0        // Bob 2005-04-06: Wait until TLS is supported/enabled for this        // this test case        rc = sipxConfigGetLocalSipTlsPort(hHandle, &iPort) ;        CPPUNIT_ASSERT_EQUAL(rc, SIPX_RESULT_SUCCESS) ;        CPPUNIT_ASSERT(portIsValid(iPort)) ;    #endif        SIPX_CONTACT_ADDRESS addresses[32];        size_t actualNum = 0;                sipxConfigGetLocalContacts(hHandle, addresses, 32, actualNum);        for (size_t i = 0; i < actualNum; i++)        {            CPPUNIT_ASSERT(addresses[i].iPort > 0);        }                rc = sipxUnInitialize(hHandle) ;        CPPUNIT_ASSERT_EQUAL(rc, SIPX_RESULT_SUCCESS) ;            }    // Does not create a call -- no need to pause    // OsTask::delay(TEST_DELAY) ;        checkForLeaks() ;}void sipXtapiTestSuite::testSeqPortSelection() {    for (int iStressFactor = 0; iStressFactor<STRESS_FACTOR; iStressFactor++)    {        SIPX_INST hHandle ;        SIPX_INST hHandle2 ;        SIPX_RESULT rc ;        int iPort ;        printf("\ntestSeqPortSelection (%2d of %2d)", iStressFactor+1, STRESS_FACTOR);        rc = sipxInitialize(&hHandle, 8100, 8100, 8101, 9999, DEFAULT_CONNECTIONS, DEFAULT_IDENTITY, DEFAULT_BIND_ADDRESS, TRUE) ;        CPPUNIT_ASSERT_EQUAL(rc, SIPX_RESULT_SUCCESS) ;        rc = sipxConfigGetLocalSipUdpPort(hHandle, &iPort) ;        CPPUNIT_ASSERT_EQUAL(rc, SIPX_RESULT_SUCCESS) ;        CPPUNIT_ASSERT_EQUAL(iPort, 8100) ;

⌨️ 快捷键说明

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