如果SIP软电话振铃,接听电话,断开连接,则从JUnit进行测试

时间:2013-08-02 22:23:13

标签: sip voip asterisk pjsip jain-sip

我想使用第三方API启动对两个号码的调用。我需要确保设备在接到电话时响铃,媒体在接听电话时开始发送,并在挂断电话时终止呼叫。

理想情况下,我想从JUnit测试中执行此操作,以便我可以自动完成整个过程。但是任何其他工具也都可以。

所以这就是我想以编程方式做的事情,

1)配置两个SIP软电话,使用测试提供的一些凭据来回答2个不同的号码。

2)使用API​​

拨打电话

3)断言两部手机处于振铃状态

4)接听电话

5)断言RTP媒体正在它们之间传输

6)挂断

7)断言呼叫现已成功断开

我是电话新手,所以我会很感激任何有助于我实现这一目标的工具或SDK的指针。

2 个答案:

答案 0 :(得分:1)

请查看SipUnit https://code.google.com/p/commtesting/wiki/SipUnit。 它可以做到以上所有,除了检查媒体正在流动。

答案 1 :(得分:0)

查看KitCAT framework。它基于JUnit,可以满足您的所有要求。它支持多个用户代理,这些代理都可以在测试用例中进行协调。它还提供与其他协议(例如,RTP,HTTP)的协调。

示例代码:

SIPAgent callee1 = createAgent("callee1"); // sip:callee1@host
SIPAgent callee2 = createAgent("callee2"); // sip:callee2@host

// invoke your API here
invoke3rdPartyAPI(callee1.getSipURI(), callee2.getSipURI());

pause(2000);
assertThat(callee1, is(invited()));
assertThat(callee2, is(invited()));

callee1.answer();
callee2.answer();

pause(500);
assertThat(callee1, is(connectedTo(callee2))); // check for SDP match
callee1.playAudio(audioFileName);

pause(500);
assertThat(callee2, has(incomingMedia());
callee1.disconnect();

pause(500);
assertThat(callee2, is(disconnected()));

查看complete API here