📄 sipxtapitestconfig.cpp
字号:
////// 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 + -