void sipXtapiTestSuite::testReRegistrationFailure() { for (int iStressFactor = 0; iStressFactor<STRESS_FACTOR; iStressFactor++) { printf("\ntestReRegistrationFailure (%2d of %2d)", iStressFactor+1, STRESS_FACTOR); g_lineRecorder.clear() ; CPPUNIT_ASSERT_EQUAL(sipxEventListenerAdd(g_hInst4, lineCallback, NULL), SIPX_RESULT_SUCCESS); CPPUNIT_ASSERT_EQUAL(sipxConfigSetOutboundProxy(g_hInst4, "127.0.0.1:5070"), SIPX_RESULT_SUCCESS); SIPX_LINE hLine; CPPUNIT_ASSERT_EQUAL(sipxLineAdd(g_hInst4, "sip:[email protected]:12070", &hLine), SIPX_RESULT_SUCCESS) ; CPPUNIT_ASSERT_EQUAL(sipxConfigSetRegisterExpiration(g_hInst4, 10), SIPX_RESULT_SUCCESS); CPPUNIT_ASSERT_EQUAL(sipxLineAddCredential(hLine, "mike", "1234", "TestRegistrar"), SIPX_RESULT_SUCCESS) ; CPPUNIT_ASSERT_EQUAL(sipxLineRegister(hLine, true), SIPX_RESULT_SUCCESS) ; OsTask::delay(9000); g_lineRecorder.addCompareEvent(hLine, LINESTATE_PROVISIONED, LINESTATE_PROVISIONED_NORMAL); g_lineRecorder.addCompareEvent(hLine, LINESTATE_REGISTERING, LINESTATE_REGISTERING_NORMAL); g_lineRecorder.addCompareEvent(hLine, LINESTATE_REGISTER_FAILED, LINESTATE_REGISTER_FAILED_TIMEOUT); g_lineRecorder.addCompareEvent(hLine, LINESTATE_REGISTERING, LINESTATE_REGISTERING_NORMAL); TestRegistrar* pTestRegistrar = new TestRegistrar(); pTestRegistrar->init(); g_lineRecorder.addCompareEvent(hLine, LINESTATE_REGISTERED, LINESTATE_REGISTERED_NORMAL); g_lineRecorder.addCompareEvent(hLine, LINESTATE_REGISTERING, LINESTATE_REGISTERING_NORMAL); g_lineRecorder.addCompareEvent(hLine, LINESTATE_REGISTERED, LINESTATE_REGISTERED_NORMAL); OsTask::delay(8000); pTestRegistrar->pause(true); g_lineRecorder.addCompareEvent(hLine, LINESTATE_REGISTERING, LINESTATE_REGISTERING_NORMAL); g_lineRecorder.addCompareEvent(hLine, LINESTATE_REGISTER_FAILED, LINESTATE_REGISTER_FAILED_TIMEOUT); g_lineRecorder.addCompareEvent(hLine, LINESTATE_REGISTERING, LINESTATE_REGISTERING_NORMAL); g_lineRecorder.addCompareEvent(hLine, LINESTATE_REGISTER_FAILED, LINESTATE_REGISTER_FAILED_TIMEOUT); OsTask::delay(20000); CPPUNIT_ASSERT(g_lineRecorder.compare()) ; pTestRegistrar->pause(false); sipxLineRegister(hLine, false); g_lineRecorder.addCompareEvent(hLine, LINESTATE_UNREGISTERING, LINESTATE_UNREGISTERING_NORMAL); g_lineRecorder.addCompareEvent(hLine, LINESTATE_UNREGISTERED, LINESTATE_UNREGISTERED_NORMAL); CPPUNIT_ASSERT_EQUAL(sipxLineRemove(hLine), SIPX_RESULT_SUCCESS) ; OsTask::delay(3000); CPPUNIT_ASSERT_EQUAL(sipxEventListenerRemove(g_hInst4, lineCallback, NULL), SIPX_RESULT_SUCCESS); delete pTestRegistrar; } OsTask::delay(TEST_DELAY) ; checkForLeaks() ; }
void sipXtapiTestSuite::testBadRegistrarRegistration() { for (int iStressFactor = 0; iStressFactor<STRESS_FACTOR; iStressFactor++) { TestRegistrar testRegistrar; testRegistrar.init(); printf("\ntestBadRegistrarRegistration (%2d of %2d)", iStressFactor+1, STRESS_FACTOR); g_lineRecorder.clear() ; CPPUNIT_ASSERT_EQUAL(sipxEventListenerAdd(g_hInst4, lineCallback, NULL), SIPX_RESULT_SUCCESS); CPPUNIT_ASSERT_EQUAL(sipxConfigSetOutboundProxy(g_hInst4, "127.0.0.1:5070"), SIPX_RESULT_SUCCESS); // receiving a 480 response SIPX_LINE hLine; CPPUNIT_ASSERT_EQUAL(sipxLineAdd(g_hInst4, "sip:[email protected]:12070", &hLine), SIPX_RESULT_SUCCESS) ; CPPUNIT_ASSERT_EQUAL(sipxLineRegister(hLine, true), SIPX_RESULT_SUCCESS) ; g_lineRecorder.addCompareEvent(hLine, LINESTATE_PROVISIONED, LINESTATE_PROVISIONED_NORMAL); g_lineRecorder.addCompareEvent(hLine, LINESTATE_REGISTERING, LINESTATE_REGISTERING_NORMAL); g_lineRecorder.addCompareEvent(hLine, LINESTATE_REGISTER_FAILED, LINESTATE_CAUSE_UNKNOWN); OsTask::delay(1000); CPPUNIT_ASSERT(g_lineRecorder.compare()) ; CPPUNIT_ASSERT_EQUAL(sipxLineRemove(hLine), SIPX_RESULT_SUCCESS) ; g_lineRecorder.clear() ; // receiving a 503 response CPPUNIT_ASSERT_EQUAL(sipxLineAdd(g_hInst4, "sip:[email protected]:12070", &hLine), SIPX_RESULT_SUCCESS) ; CPPUNIT_ASSERT_EQUAL(sipxLineRegister(hLine, true), SIPX_RESULT_SUCCESS) ; g_lineRecorder.addCompareEvent(hLine, LINESTATE_PROVISIONED, LINESTATE_PROVISIONED_NORMAL); g_lineRecorder.addCompareEvent(hLine, LINESTATE_REGISTERING, LINESTATE_REGISTERING_NORMAL); g_lineRecorder.addCompareEvent(hLine, LINESTATE_REGISTER_FAILED, LINESTATE_CAUSE_UNKNOWN); OsTask::delay(1000); CPPUNIT_ASSERT(g_lineRecorder.compare()) ; CPPUNIT_ASSERT_EQUAL(sipxLineRemove(hLine), SIPX_RESULT_SUCCESS) ; g_lineRecorder.clear() ; // receiving a 600 response CPPUNIT_ASSERT_EQUAL(sipxLineAdd(g_hInst4, "sip:[email protected]:12070", &hLine), SIPX_RESULT_SUCCESS) ; CPPUNIT_ASSERT_EQUAL(sipxLineRegister(hLine, true), SIPX_RESULT_SUCCESS) ; g_lineRecorder.addCompareEvent(hLine, LINESTATE_PROVISIONED, LINESTATE_PROVISIONED_NORMAL); g_lineRecorder.addCompareEvent(hLine, LINESTATE_REGISTERING, LINESTATE_REGISTERING_NORMAL); g_lineRecorder.addCompareEvent(hLine, LINESTATE_REGISTER_FAILED, LINESTATE_CAUSE_UNKNOWN); OsTask::delay(1000); CPPUNIT_ASSERT(g_lineRecorder.compare()) ; CPPUNIT_ASSERT_EQUAL(sipxLineRemove(hLine), SIPX_RESULT_SUCCESS) ; g_lineRecorder.clear() ; CPPUNIT_ASSERT_EQUAL(sipxEventListenerRemove(g_hInst4, lineCallback, NULL), SIPX_RESULT_SUCCESS); } OsTask::delay(TEST_DELAY) ; checkForLeaks() ; }
void sipXtapiTestSuite::testLineEvents() { for (int iStressFactor = 0; iStressFactor<STRESS_FACTOR; iStressFactor++) { printf("\ntestLineEvents (%2d of %2d)", iStressFactor+1, STRESS_FACTOR); g_lineRecorder.clear() ; CPPUNIT_ASSERT_EQUAL(sipxEventListenerAdd(g_hInst, lineCallback, NULL), SIPX_RESULT_SUCCESS); // TODO - we need to figure out how to better test registrar interaction. // It might require creating a test registrar that responds to REGISTER messages. SIPX_LINE hLine; CPPUNIT_ASSERT_EQUAL(sipxLineAdd(g_hInst, "sip:[email protected]", &hLine), SIPX_RESULT_SUCCESS) ; CPPUNIT_ASSERT_EQUAL(sipxLineRegister(hLine, true), SIPX_RESULT_SUCCESS) ; g_lineRecorder.addCompareEvent(hLine, LINESTATE_PROVISIONED, LINESTATE_PROVISIONED_NORMAL); g_lineRecorder.addCompareEvent(hLine, LINESTATE_REGISTER_FAILED, LINESTATE_REGISTER_FAILED_COULD_NOT_CONNECT); OsTask::delay(500); CPPUNIT_ASSERT(g_lineRecorder.compare()) ; CPPUNIT_ASSERT_EQUAL(sipxEventListenerRemove(g_hInst, lineCallback, NULL), SIPX_RESULT_SUCCESS); CPPUNIT_ASSERT_EQUAL(sipxLineRemove(hLine), SIPX_RESULT_SUCCESS) ; } OsTask::delay(TEST_DELAY) ; checkForLeaks(); }
void sipXtapiTestSuite::testReRegistration() { for (int iStressFactor = 0; iStressFactor<STRESS_FACTOR; iStressFactor++) { TestRegistrar testRegistrar; testRegistrar.init(); printf("\ntestReRegistration (%2d of %2d)", iStressFactor+1, STRESS_FACTOR); g_lineRecorder.clear() ; CPPUNIT_ASSERT_EQUAL(sipxEventListenerAdd(g_hInst4, lineCallback, NULL), SIPX_RESULT_SUCCESS); CPPUNIT_ASSERT_EQUAL(sipxConfigSetOutboundProxy(g_hInst4, "127.0.0.1:5070"), SIPX_RESULT_SUCCESS); SIPX_LINE hLine; CPPUNIT_ASSERT_EQUAL(sipxLineAdd(g_hInst4, "sip:[email protected]:12070", &hLine), SIPX_RESULT_SUCCESS) ; CPPUNIT_ASSERT_EQUAL(sipxConfigSetRegisterExpiration(g_hInst4, 10), SIPX_RESULT_SUCCESS); CPPUNIT_ASSERT_EQUAL(sipxLineAddCredential(hLine, "mike", "1234", "TestRegistrar"), SIPX_RESULT_SUCCESS) ; CPPUNIT_ASSERT_EQUAL(sipxLineRegister(hLine, true), SIPX_RESULT_SUCCESS) ; g_lineRecorder.addCompareEvent(hLine, LINESTATE_PROVISIONED, LINESTATE_PROVISIONED_NORMAL); g_lineRecorder.addCompareEvent(hLine, LINESTATE_REGISTERING, LINESTATE_REGISTERING_NORMAL); g_lineRecorder.addCompareEvent(hLine, LINESTATE_REGISTERED, LINESTATE_REGISTERED_NORMAL); g_lineRecorder.addCompareEvent(hLine, LINESTATE_REGISTERING, LINESTATE_REGISTERING_NORMAL); g_lineRecorder.addCompareEvent(hLine, LINESTATE_REGISTERED, LINESTATE_REGISTERED_NORMAL); g_lineRecorder.addCompareEvent(hLine, LINESTATE_REGISTERING, LINESTATE_REGISTERING_NORMAL); g_lineRecorder.addCompareEvent(hLine, LINESTATE_REGISTERED, LINESTATE_REGISTERED_NORMAL); printf("\nWaiting for 12 seconds! (for the re-registration test)"); OsTask::delay(12000); CPPUNIT_ASSERT(g_lineRecorder.compare()) ; CPPUNIT_ASSERT_EQUAL(sipxLineRemove(hLine), SIPX_RESULT_SUCCESS) ; OsTask::delay(1000); g_lineRecorder.clear() ; CPPUNIT_ASSERT_EQUAL(sipxEventListenerRemove(g_hInst4, lineCallback, NULL), SIPX_RESULT_SUCCESS); } OsTask::delay(TEST_DELAY) ; checkForLeaks() ; }
SIPX_LINE lineInit(SIPX_INST hInst, char* szIdentity, char* szUsername, char* szPassword, char* szRealm) { SIPX_LINE hLine = NULL ; if (szIdentity && strlen(szIdentity)) { sipxLineAdd(hInst, szIdentity, &hLine) ; if ( szUsername && strlen(szUsername) && szPassword && strlen(szPassword) && szRealm && strlen(szRealm)) { sipxLineAddCredential(hLine, szUsername, szPassword, szRealm) ; sipxLineRegister(hLine, true); } } else { sipxLineAdd(hInst, "sip:receivecall@localhost", &hLine) ; } return hLine ; }
void lineShutdown(SIPX_INST hInst, SIPX_LINE hLine) { // Terminate our registration. sipxLineRegister(hLine, false); }