summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorOlivier CrĂȘte <olivier.crete@collabora.com>2012-02-23 21:54:21 -0500
committerOlivier CrĂȘte <olivier.crete@collabora.com>2012-02-23 21:54:21 -0500
commit8517957e4d266351eb1dd0e0b2e8834e6a163248 (patch)
tree29d75c5104675d0d13ff75985c41a6bcd2657697 /tests
parent86ded282b0416ab12583e1da0d21670aac632b6d (diff)
Make Hold/Unhold work
Diffstat (limited to 'tests')
-rw-r--r--tests/twisted/voip/add-remove-content.py2
-rw-r--r--tests/twisted/voip/calltest.py3
-rw-r--r--tests/twisted/voip/direction-change.py92
3 files changed, 90 insertions, 7 deletions
diff --git a/tests/twisted/voip/add-remove-content.py b/tests/twisted/voip/add-remove-content.py
index 90c4246..d72102e 100644
--- a/tests/twisted/voip/add-remove-content.py
+++ b/tests/twisted/voip/add-remove-content.py
@@ -101,7 +101,7 @@ class AddRemoveContent(calltest.CallTest):
self.context.check_call_sdp(reinvite_event.sip_message.body,
self.medias + [('audio', None, None)])
- res = re.match('(.*)(m=.*)', reinvite_event.sip_message.body,
+ res = re.match('(.*)(m=.*)', reinvite_event.sip_message.body,
re.MULTILINE | re.DOTALL)
body = res.group(1) + 'm=audio 0 RTP/AVP 0'
diff --git a/tests/twisted/voip/calltest.py b/tests/twisted/voip/calltest.py
index 07f6115..cc95e73 100644
--- a/tests/twisted/voip/calltest.py
+++ b/tests/twisted/voip/calltest.py
@@ -270,7 +270,8 @@ class CallTest:
self.check_channel_props(props, True)
self.chan = wrap_channel(
- self.bus.get_object(self.conn.bus_name, self.chan_path), 'Call1')
+ self.bus.get_object(self.conn.bus_name, self.chan_path), 'Call1',
+ ['Hold'])
call_props = self.chan.Properties.GetAll(cs.CHANNEL_TYPE_CALL)
self.check_call_properties(call_props)
diff --git a/tests/twisted/voip/direction-change.py b/tests/twisted/voip/direction-change.py
index e1f0acc..8e2a3a3 100644
--- a/tests/twisted/voip/direction-change.py
+++ b/tests/twisted/voip/direction-change.py
@@ -367,14 +367,98 @@ class DirectionChange(calltest.CallTest):
def hold(self):
- pass
- def unhold(self):
+ self.chan.Hold.RequestHold(True)
+
+ events = self.stream_dbus_signal_event (
+ 'ReceivingStateChanged',
+ args=[cs.CALL_STREAM_FLOW_STATE_PENDING_STOP])
+ events += self.stream_dbus_signal_event(
+ 'SendingStateChanged',
+ args=[cs.CALL_STREAM_FLOW_STATE_PENDING_STOP])
+ o = self.q.expect_many(
+ EventPattern('sip-invite'),
+ EventPattern('dbus-signal', signal='HoldStateChanged',
+ args=[cs.HS_PENDING_HOLD, cs.HSR_REQUESTED]),
+ *events)
+ reinvite_event = o[0]
+ for c in self.contents:
+ c.stream.Media.CompleteReceivingStateChange(
+ cs.CALL_STREAM_FLOW_STATE_STOPPED)
+ c.stream.Media.CompleteSendingStateChange(
+ cs.CALL_STREAM_FLOW_STATE_STOPPED)
+
+ events = self.stream_dbus_signal_event (
+ 'ReceivingStateChanged',
+ args=[cs.CALL_STREAM_FLOW_STATE_STOPPED])
+ events += self.stream_dbus_signal_event(
+ 'SendingStateChanged',
+ args=[cs.CALL_STREAM_FLOW_STATE_STOPPED])
+ self.q.expect_many(
+ EventPattern('dbus-signal', signal='HoldStateChanged',
+ args=[cs.HS_HELD, cs.HSR_REQUESTED]),
+ *events)
+ medias = map(lambda x: (x[0], x[1] == 'recvonly' and 'inactive' or 'sendonly'), self.medias)
+ self.context.check_call_sdp(reinvite_event.sip_message.body, medias)
+
+ body = reinvite_event.sip_message.body.replace('sendonly', 'recvonly')
+ self.context.accept(reinvite_event.sip_message, body)
+
+ ack_cseq = "%s ACK" % reinvite_event.cseq.split()[0]
+ self.q.expect('sip-ack', cseq=ack_cseq)
+
+
+ def unhold_fail(self):
+ # TODO!!
pass
+ def unhold_succeed(self):
+ self.chan.Hold.RequestHold(False)
+
+ events = self.stream_dbus_signal_event (
+ 'ReceivingStateChanged',
+ args=[cs.CALL_STREAM_FLOW_STATE_PENDING_START])
+ events += self.stream_dbus_signal_event(
+ 'SendingStateChanged',
+ args=[cs.CALL_STREAM_FLOW_STATE_PENDING_START])
+ o = self.q.expect_many(
+ EventPattern('dbus-signal', signal='HoldStateChanged',
+ args=[cs.HS_PENDING_UNHOLD, cs.HSR_REQUESTED]),
+ *events)
+ for c in self.contents:
+ c.stream.Media.CompleteReceivingStateChange(
+ cs.CALL_STREAM_FLOW_STATE_STARTED)
+ c.stream.Media.CompleteSendingStateChange(
+ cs.CALL_STREAM_FLOW_STATE_STARTED)
+
+ events = self.stream_dbus_signal_event (
+ 'ReceivingStateChanged',
+ args=[cs.CALL_STREAM_FLOW_STATE_STARTED])
+ events += self.stream_dbus_signal_event(
+ 'SendingStateChanged',
+ args=[cs.CALL_STREAM_FLOW_STATE_STARTED])
+ o = self.q.expect_many(
+ EventPattern('sip-invite'),
+ EventPattern('dbus-signal', signal='HoldStateChanged',
+ args=[cs.HS_UNHELD, cs.HSR_REQUESTED]),
+ *events)
+ reinvite_event = o[0]
+ medias = map(lambda x: (x[0], None), self.medias)
+ assertDoesNotContain('a=sendonly', reinvite_event.sip_message.body)
+ assertDoesNotContain('a=inactive', reinvite_event.sip_message.body)
+ self.context.check_call_sdp(reinvite_event.sip_message.body, medias)
+
+ self.context.accept(reinvite_event.sip_message)
+
+ ack_cseq = "%s ACK" % reinvite_event.cseq.split()[0]
+ self.q.expect('sip-ack', cseq=ack_cseq)
+
+
def hold_unhold(self):
self.hold()
- self.unhold()
+ self.unhold_fail()
+ self.unhold_succeed()
+
def during_call(self):
content = self.contents[0]
@@ -396,8 +480,6 @@ class DirectionChange(calltest.CallTest):
self.hold_unhold()
-
-
return calltest.CallTest.during_call(self)