summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorMikhail Zabaluev <mikhail.zabaluev@nokia.com>2011-08-24 17:32:52 +0300
committerMikhail Zabaluev <mikhail.zabaluev@nokia.com>2011-08-24 17:32:52 +0300
commit2129ffbadd2194a6df94d179a61a0169b01eb498 (patch)
tree552f837d98c101d3476f11ab117232fb26f33dac /tests
parenta3ff78f02af75261d5b322610a679a191082e927 (diff)
Exercise DTMF.MultipleTones in test, complete with deferred tones
Diffstat (limited to 'tests')
-rw-r--r--tests/twisted/voip/dtmf.py101
1 files changed, 91 insertions, 10 deletions
diff --git a/tests/twisted/voip/dtmf.py b/tests/twisted/voip/dtmf.py
index 8bf975f..df8a90b 100644
--- a/tests/twisted/voip/dtmf.py
+++ b/tests/twisted/voip/dtmf.py
@@ -4,25 +4,30 @@ Test DTMF dialstring playback and signalling.
from sofiatest import exec_test
from servicetest import (
- wrap_channel,
+ wrap_channel, EventPattern,
assertEquals, assertContains, assertLength, assertSameSets
)
from voip_test import VoipTestContext
import constants as cs
-def request_initial_tones(q, bus, conn, sip_proxy, peer='foo@bar.com'):
+def setup_dtmf_channel(context, initial_tones=None):
+ q = context.q
+ bus = context.bus
+ conn = context.conn
+
conn.Connect()
q.expect('dbus-signal', signal='StatusChanged', args=[0, 1])
- context = VoipTestContext(q, conn, bus, sip_proxy, 'sip:testacc@127.0.0.1', peer)
-
- path = conn.Requests.CreateChannel({
+ request_params = {
cs.CHANNEL_TYPE: cs.CHANNEL_TYPE_STREAMED_MEDIA,
cs.TARGET_HANDLE_TYPE: cs.HT_CONTACT,
- cs.TARGET_ID: peer,
+ cs.TARGET_ID: context.peer,
cs.INITIAL_AUDIO: True,
- cs.DTMF_INITIAL_TONES: '1234',
- })[0]
+ }
+ if initial_tones:
+ request_params[cs.DTMF_INITIAL_TONES] = initial_tones
+
+ path = conn.Requests.CreateChannel(request_params)[0]
chan = wrap_channel(bus.get_object(conn.bus_name, path), 'StreamedMedia',
['MediaSignalling', 'DTMF'])
@@ -33,7 +38,10 @@ def request_initial_tones(q, bus, conn, sip_proxy, peer='foo@bar.com'):
dtmf_props = chan.Properties.GetAll(cs.CHANNEL_IFACE_DTMF)
- assertEquals('1234', dtmf_props['InitialTones'])
+ if initial_tones:
+ assertEquals(initial_tones, dtmf_props['InitialTones'])
+ else:
+ assertEquals('', dtmf_props['InitialTones'])
assertEquals(False, dtmf_props['CurrentlySendingTones'])
stream_handler = context.handle_audio_session(chan)
@@ -42,13 +50,86 @@ def request_initial_tones(q, bus, conn, sip_proxy, peer='foo@bar.com'):
context.accept(invite_event.sip_message)
+ q.expect('dbus-signal', signal='SetRemoteCodecs')
+
+ stream_handler.SupportedCodecs(context.get_audio_codecs_dbus())
stream_handler.StreamState(cs.MEDIA_STREAM_STATE_CONNECTED)
- q.expect('dbus-signal', signal='SendingTones', args=['1234'])
+ return chan
+
+def request_initial_tones(q, bus, conn, sip_proxy, peer='foo@bar.com'):
+ context = VoipTestContext(q, conn, bus, sip_proxy, 'sip:testacc@127.0.0.1', peer)
+
+ tones = '123'
+
+ chan = setup_dtmf_channel(context, tones)
+
+ q.expect_many(
+ EventPattern('dbus-signal', signal='SendingTones', args=[tones]),
+ EventPattern('dbus-signal', signal='StartTelephonyEvent', args=[int(tones[0])]))
+
+ assertEquals(True, chan.Properties.Get(cs.CHANNEL_IFACE_DTMF, 'CurrentlySendingTones'))
+
+ q.expect('dbus-signal', signal='StopTelephonyEvent')
+
+ for i in range(1, len(tones) - 1):
+ q.expect('dbus-signal', signal='StartTelephonyEvent', args=[int(tones[i])])
+ q.expect('dbus-signal', signal='StopTelephonyEvent')
+
+ q.expect('dbus-signal', signal='StoppedTones')
+
+ assertEquals(False, chan.Properties.Get(cs.CHANNEL_IFACE_DTMF, 'CurrentlySendingTones'))
+
+def multiple_tones(q, bus, conn, sip_proxy, peer='foo@bar.com'):
+
+ context = VoipTestContext(q, conn, bus, sip_proxy, 'sip:testacc@127.0.0.1', peer)
+
+ chan = setup_dtmf_channel(context)
+
+ tones_deferred = '78'
+ tones = '56w' + tones_deferred
+
+ chan.DTMF.MultipleTones(tones)
+
+ q.expect_many(
+ EventPattern('dbus-signal', signal='SendingTones', args=[tones]),
+ EventPattern('dbus-signal', signal='StartTelephonyEvent', args=[int(tones[0])]))
+
+ dtmf_props = chan.Properties.GetAll(cs.CHANNEL_IFACE_DTMF)
+ assertEquals(True, dtmf_props['CurrentlySendingTones'])
+ assertEquals('', dtmf_props['DeferredTones'])
+
+ q.expect('dbus-signal', signal='StopTelephonyEvent')
+
+ q.expect('dbus-signal', signal='StartTelephonyEvent', args=[int(tones[1])])
+ q.expect('dbus-signal', signal='StopTelephonyEvent')
+
+ q.expect('dbus-signal', signal='TonesDeferred', args=[tones_deferred])
+
+ dtmf_props = chan.Properties.GetAll(cs.CHANNEL_IFACE_DTMF)
+
+ assertEquals(False, dtmf_props['CurrentlySendingTones'])
+ assertEquals(tones_deferred, dtmf_props['DeferredTones'])
+
+ chan.DTMF.MultipleTones(tones_deferred)
+
+ q.expect_many(
+ EventPattern('dbus-signal', signal='SendingTones', args=[tones_deferred]),
+ EventPattern('dbus-signal', signal='StartTelephonyEvent', args=[int(tones_deferred[0])]))
dtmf_props = chan.Properties.GetAll(cs.CHANNEL_IFACE_DTMF)
assertEquals(True, dtmf_props['CurrentlySendingTones'])
+ assertEquals('', dtmf_props['DeferredTones'])
+
+ q.expect('dbus-signal', signal='StopTelephonyEvent')
+
+ for i in range(1, len(tones_deferred) - 1):
+ q.expect('dbus-signal', signal='StartTelephonyEvent', args=[int(tones_deferred[i])])
+ q.expect('dbus-signal', signal='StopTelephonyEvent')
+
+ q.expect('dbus-signal', signal='StoppedTones')
if __name__ == '__main__':
exec_test(request_initial_tones)
+ exec_test(multiple_tones)