def initiate(self): CallTest.initiate(self) q = self.q jp = self.jp cstream = self.audio_stream chan = self.chan recv_state = cstream.GetAll(cs.CALL_STREAM_IFACE_MEDIA, dbus_interface=dbus.PROPERTIES_IFACE)["ReceivingState"] send_state = cstream.GetAll(cs.CALL_STREAM_IFACE_MEDIA, dbus_interface=dbus.PROPERTIES_IFACE)["SendingState"] assertEquals (cs.CALL_STREAM_FLOW_STATE_STOPPED, recv_state) assertEquals (cs.CALL_STREAM_FLOW_STATE_STOPPED, send_state) # These are 0- (for old dialects) or 1- (for new dialects) element lists # that can be splatted into expect_many with * self.hold_event = jp.rtp_info_event_list("hold") self.unhold_event = jp.rtp_info_event_list("unhold") # Before we have accepted any streams, GetHoldState returns Unheld and # unhold is a no-op. assertEquals((cs.HS_UNHELD, cs.HSR_REQUESTED), chan.Hold.GetHoldState()) chan.Hold.RequestHold(False) q.forbid_events(self.hold_event) q.forbid_events(self.unhold_event) assertEquals((cs.HS_UNHELD, cs.HSR_REQUESTED), chan.Hold.GetHoldState()) chan.Hold.RequestHold(False) # Before we have any streams, RequestHold(True) should work; because # there are no streams, it should take effect at once. It certainly # should't send anything to the peer. q.forbid_events(self.hold_event) q.forbid_events(self.unhold_event) call_async(q, chan.Hold, 'RequestHold', True) q.expect('dbus-signal', signal='HoldStateChanged', args=[cs.HS_PENDING_HOLD, cs.HSR_REQUESTED]) q.expect('dbus-signal', signal='HoldStateChanged', args=[cs.HS_HELD, cs.HSR_REQUESTED]) assertEquals((cs.HS_HELD, cs.HSR_REQUESTED), chan.Hold.GetHoldState()) # If we unhold, it should succeed immediately again, because there are # no resources to reclaim. call_async(q, chan.Hold, 'RequestHold', False) q.expect('dbus-signal', signal='HoldStateChanged', args=[cs.HS_PENDING_UNHOLD, cs.HSR_REQUESTED]) q.expect('dbus-signal', signal='HoldStateChanged', args=[cs.HS_UNHELD, cs.HSR_REQUESTED]) assertEquals((cs.HS_UNHELD, cs.HSR_REQUESTED), chan.Hold.GetHoldState()) # Put the call back on hold ... call_async(q, chan.Hold, 'RequestHold', True) q.expect('dbus-signal', signal='HoldStateChanged', args=[cs.HS_PENDING_HOLD, cs.HSR_REQUESTED]) q.expect('dbus-signal', signal='HoldStateChanged', args=[cs.HS_HELD, cs.HSR_REQUESTED]) assertEquals((cs.HS_HELD, cs.HSR_REQUESTED), chan.Hold.GetHoldState())