# $Id$ | |
import time | |
import imp | |
import sys | |
import inc_param as param | |
import inc_const as const | |
# Load configuration | |
cfg_file = imp.load_source("cfg_file", sys.argv[2]) | |
# Test title | |
title = cfg_file.config.title | |
port1 = "9060" | |
# First pjsua | |
p1 = param.Pjsua( | |
"callee", | |
args = cfg_file.config.callee_cfg.arg + " --local-port="+port1, | |
echo = cfg_file.config.callee_cfg.echo_enabled, | |
trace = cfg_file.config.callee_cfg.trace_enabled | |
) | |
# Second pjsua, make call to the first one | |
p2 = param.Pjsua( | |
"caller", | |
args = cfg_file.config.caller_cfg.arg + " --local-port=0", | |
echo = cfg_file.config.caller_cfg.echo_enabled, | |
trace = cfg_file.config.caller_cfg.trace_enabled | |
) | |
# Test body function | |
def test_func(t): | |
callee = t.process[0] | |
caller = t.process[1] | |
# Caller making call | |
caller.send("m") | |
caller.send("sip:localhost:" + port1 + cfg_file.config.uri_param) | |
caller.expect(const.STATE_CALLING) | |
# Callee answers with 200/OK | |
time.sleep(1) | |
callee.expect(const.EVENT_INCOMING_CALL) | |
callee.send("a") | |
callee.send("200") | |
# Wait until call is connected in both endpoints | |
time.sleep(1) | |
if callee.expect(const.STATE_CONFIRMED, False)==None: | |
raise TestError("Call failed") | |
caller.expect(const.STATE_CONFIRMED) | |
# Synchronize stdout | |
caller.send("echo 1") | |
caller.expect("echo 1") | |
callee.send("echo 1") | |
callee.expect("echo 1") | |
# Test that media is okay (with RFC 2833 DTMF) | |
time.sleep(2) | |
caller.send("#") | |
caller.send("1122") | |
callee.expect(const.RX_DTMF + "1") | |
callee.expect(const.RX_DTMF + "1") | |
callee.expect(const.RX_DTMF + "2") | |
callee.expect(const.RX_DTMF + "2") | |
# Hold call | |
caller.send("H") | |
caller.expect(const.MEDIA_HOLD) | |
callee.expect(const.MEDIA_HOLD) | |
# Release hold | |
time.sleep(2) | |
caller.send("v") | |
caller.expect(const.MEDIA_ACTIVE) | |
callee.expect(const.MEDIA_ACTIVE) | |
# Synchronize stdout | |
caller.send("echo 1") | |
caller.expect("echo 1") | |
callee.send("echo 1") | |
callee.expect("echo 1") | |
# Test that media is okay (with RFC 2833 DTMF) | |
caller.send("#") | |
caller.send("1122") | |
callee.expect(const.RX_DTMF + "1") | |
callee.expect(const.RX_DTMF + "1") | |
callee.expect(const.RX_DTMF + "2") | |
callee.expect(const.RX_DTMF + "2") | |
# Synchronize stdout | |
caller.send("echo 1") | |
caller.expect("echo 1") | |
callee.send("echo 1") | |
callee.expect("echo 1") | |
# UPDATE (by caller) | |
caller.send("U") | |
caller.expect(const.MEDIA_ACTIVE) | |
callee.expect(const.MEDIA_ACTIVE) | |
# Synchronize stdout | |
caller.send("echo 1") | |
caller.expect("echo 1") | |
callee.send("echo 1") | |
callee.expect("echo 1") | |
# Test that media is okay (with RFC 2833 DTMF) | |
time.sleep(2) | |
caller.send("#") | |
caller.send("1122") | |
callee.expect(const.RX_DTMF + "1") | |
callee.expect(const.RX_DTMF + "1") | |
callee.expect(const.RX_DTMF + "2") | |
callee.expect(const.RX_DTMF + "2") | |
# UPDATE (by callee) | |
callee.send("U") | |
callee.expect(const.MEDIA_ACTIVE) | |
caller.expect(const.MEDIA_ACTIVE) | |
# Synchronize stdout | |
caller.send("echo 1") | |
caller.expect("echo 1") | |
callee.send("echo 1") | |
callee.expect("echo 1") | |
# Test that media is okay (with RFC 2833 DTMF) | |
time.sleep(2) | |
caller.send("#") | |
caller.send("1122") | |
callee.expect(const.RX_DTMF + "1") | |
callee.expect(const.RX_DTMF + "1") | |
callee.expect(const.RX_DTMF + "2") | |
callee.expect(const.RX_DTMF + "2") | |
# Hangup call | |
time.sleep(1) | |
caller.send("h") | |
# Wait until calls are cleared in both endpoints | |
caller.expect(const.STATE_DISCONNECTED) | |
callee.expect(const.STATE_DISCONNECTED) | |
# Here where it all comes together | |
test = param.Test(title, run=[p1, p2], func=test_func) | |