diff options
author | Olivier CrĂȘte <olivier.crete@collabora.com> | 2012-02-23 21:54:21 -0500 |
---|---|---|
committer | Olivier CrĂȘte <olivier.crete@collabora.com> | 2012-02-23 21:54:21 -0500 |
commit | 8517957e4d266351eb1dd0e0b2e8834e6a163248 (patch) | |
tree | 29d75c5104675d0d13ff75985c41a6bcd2657697 /tests | |
parent | 86ded282b0416ab12583e1da0d21670aac632b6d (diff) |
Make Hold/Unhold work
Diffstat (limited to 'tests')
-rw-r--r-- | tests/twisted/voip/add-remove-content.py | 2 | ||||
-rw-r--r-- | tests/twisted/voip/calltest.py | 3 | ||||
-rw-r--r-- | tests/twisted/voip/direction-change.py | 92 |
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) |