[telepathy-gabble/master] Port jingle/hold-audio.py to JingleTest2

Will Thompson will.thompson at collabora.co.uk
Fri Mar 27 04:26:51 PDT 2009


---
 tests/twisted/constants.py          |    9 +++
 tests/twisted/jingle/hold-audio.py  |  130 ++++++++++++-----------------------
 tests/twisted/jingle/jingletest2.py |   11 +++
 3 files changed, 65 insertions(+), 85 deletions(-)

diff --git a/tests/twisted/constants.py b/tests/twisted/constants.py
index b5313bb..36a37c0 100644
--- a/tests/twisted/constants.py
+++ b/tests/twisted/constants.py
@@ -122,3 +122,12 @@ GC_REASON_NO_ANSWER = 8
 GC_REASON_RENAMED = 9
 GC_REASON_PERMISSION_DENIED = 10
 GC_REASON_SEPARATED = 11
+
+HS_UNHELD = 0
+HS_HELD = 1
+HS_PENDING_HOLD = 2
+HS_PENDING_UNHOLD = 3
+
+HSR_NONE = 0
+HSR_REQUESTED = 1
+HSR_RESOURCE_NOT_AVAILABLE = 2
diff --git a/tests/twisted/jingle/hold-audio.py b/tests/twisted/jingle/hold-audio.py
index 9d35f95..2fddd78 100644
--- a/tests/twisted/jingle/hold-audio.py
+++ b/tests/twisted/jingle/hold-audio.py
@@ -2,67 +2,30 @@
 Test the Hold API.
 """
 
-from gabbletest import exec_test, make_result_iq, acknowledge_iq, sync_stream
-from servicetest import make_channel_proxy, unwrap, tp_path_prefix, \
-        call_async, EventPattern
-import jingletest
-import gabbletest
-import dbus
-import time
-
+from gabbletest import make_result_iq
+from servicetest import make_channel_proxy, call_async, EventPattern
 import constants as cs
 
-MEDIA_STREAM_TYPE_AUDIO = 0
-# Hold states
-S_UNHELD = 0
-S_HELD = 1
-S_PENDING_HOLD = 2
-S_PENDING_UNHOLD = 3
-# Reasons
-R_NONE = 0
-R_REQUESTED = 1
-R_RESOURCE_NOT_AVAILABLE = 2
-
-
-def test(q, bus, conn, stream):
-    jt = jingletest.JingleTest(stream, 'test at localhost', 'foo at bar.com/Foo')
-
-    # If we need to override remote caps, feats, codecs or caps,
-    # this is a good time to do it
-
-    # Connecting
-    conn.Connect()
+from jingletest2 import JingleTest2, test_all_dialects
 
-    q.expect('dbus-signal', signal='StatusChanged', args=[1, 1])
-    q.expect('stream-authenticated')
-    q.expect('dbus-signal', signal='PresenceUpdate',
-        args=[{1L: (0L, {u'available': {}})}])
-    q.expect('dbus-signal', signal='StatusChanged', args=[0, 1])
+def test(jp, q, bus, conn, stream):
+    remote_jid = 'foo at bar.com/Foo'
+    jt = JingleTest2(jp, conn, q, stream, 'test at localhost', remote_jid)
 
-    # We need remote end's presence for capabilities
-    jt.send_remote_presence()
+    jt.prepare()
 
-    # Gabble doesn't trust it, so makes a disco
-    event = q.expect('stream-iq', query_ns='http://jabber.org/protocol/disco#info',
-             to='foo at bar.com/Foo')
+    self_handle = conn.GetSelfHandle()
+    handle = conn.RequestHandles(cs.HT_CONTACT, [remote_jid])[0]
 
-    jt.send_remote_disco_reply(event.stanza)
-
-    # Force Gabble to process the caps before calling RequestChannel
-    sync_stream(q, stream)
-
-    handle = conn.RequestHandles(1, [jt.remote_jid])[0]
-
-    path = conn.RequestChannel(
-        'org.freedesktop.Telepathy.Channel.Type.StreamedMedia',
-        1, handle, True)
+    path = conn.RequestChannel(cs.CHANNEL_TYPE_STREAMED_MEDIA, cs.HT_CONTACT,
+        handle, True)
 
     signalling_iface = make_channel_proxy(conn, path, 'Channel.Interface.MediaSignalling')
     media_iface = make_channel_proxy(conn, path, 'Channel.Type.StreamedMedia')
     group_iface = make_channel_proxy(conn, path, 'Channel.Interface.Group')
     hold_iface = make_channel_proxy(conn, path, 'Channel.Interface.Hold')
 
-    media_iface.RequestStreams(handle, [MEDIA_STREAM_TYPE_AUDIO])
+    media_iface.RequestStreams(handle, [cs.MEDIA_STREAM_TYPE_AUDIO])
 
     # S-E gets notified about new session handler, and calls Ready on it
     e = q.expect('dbus-signal', signal='NewSessionHandler')
@@ -79,19 +42,19 @@ def test(q, bus, conn, stream):
     stream_handler.Ready(jt.get_audio_codecs_dbus())
     stream_handler.StreamState(cs.MEDIA_STREAM_STATE_CONNECTED)
 
-    e = q.expect('stream-iq')
-    assert e.query.name == 'jingle'
-    assert e.query['action'] == 'session-initiate'
-    stream.send(gabbletest.make_result_iq(stream, e.stanza))
+    e = q.expect('stream-iq', predicate=lambda e:
+        jp.match_jingle_action(e.query, 'session-initiate'))
+    stream.send(make_result_iq(stream, e.stanza))
 
-    jt.outgoing_call_reply(e.query['sid'], True)
+    jt.set_sid_from_initiate(e.query)
+    jt.accept()
 
     q.expect('stream-iq', iq_type='result')
 
     # ---- Test 1: GetHoldState returns unheld and unhold is a no-op ----
 
     hold_state = hold_iface.GetHoldState()
-    assert hold_state[0] == S_UNHELD, hold_state
+    assert hold_state[0] == cs.HS_UNHELD, hold_state
     hold_iface.RequestHold(False)
 
     # ---- Test 2: successful hold ----
@@ -99,7 +62,7 @@ def test(q, bus, conn, stream):
     call_async(q, hold_iface, 'RequestHold', True)
     q.expect_many(
         EventPattern('dbus-signal', signal='HoldStateChanged',
-            args=[S_PENDING_HOLD, R_REQUESTED]),
+            args=[cs.HS_PENDING_HOLD, cs.HSR_REQUESTED]),
         EventPattern('dbus-signal', signal='SetStreamHeld', args=[True]),
         EventPattern('dbus-return', method='RequestHold', value=()),
         )
@@ -108,13 +71,13 @@ def test(q, bus, conn, stream):
     q.expect_many(
         EventPattern('dbus-return', method='HoldState', value=()),
         EventPattern('dbus-signal', signal='HoldStateChanged',
-            args=[S_HELD, R_REQUESTED]),
+            args=[cs.HS_HELD, cs.HSR_REQUESTED]),
         )
 
     # ---- Test 3: GetHoldState returns held and hold is a no-op ----
 
     hold_state = hold_iface.GetHoldState()
-    assert hold_state[0] == S_HELD, hold_state
+    assert hold_state[0] == cs.HS_HELD, hold_state
     hold_iface.RequestHold(True)
 
     # ---- Test 4: successful unhold ----
@@ -122,7 +85,7 @@ def test(q, bus, conn, stream):
     call_async(q, hold_iface, 'RequestHold', False)
     q.expect_many(
         EventPattern('dbus-signal', signal='HoldStateChanged',
-            args=[S_PENDING_UNHOLD, R_REQUESTED]),
+            args=[cs.HS_PENDING_UNHOLD, cs.HSR_REQUESTED]),
         EventPattern('dbus-signal', signal='SetStreamHeld', args=[False]),
         EventPattern('dbus-return', method='RequestHold', value=()),
         )
@@ -131,26 +94,26 @@ def test(q, bus, conn, stream):
     q.expect_many(
         EventPattern('dbus-return', method='HoldState', value=()),
         EventPattern('dbus-signal', signal='HoldStateChanged',
-            args=[S_UNHELD, R_REQUESTED]),
+            args=[cs.HS_UNHELD, cs.HSR_REQUESTED]),
         )
 
     # ---- Test 5: GetHoldState returns False and unhold is a no-op ----
 
     hold_state = hold_iface.GetHoldState()
-    assert hold_state[0] == S_UNHELD, hold_state
+    assert hold_state[0] == cs.HS_UNHELD, hold_state
     hold_iface.RequestHold(False)
 
     # ---- Test 6: 3 parallel calls to hold ----
 
     hold_state = hold_iface.GetHoldState()
-    assert hold_state[0] == S_UNHELD, hold_state
+    assert hold_state[0] == cs.HS_UNHELD, hold_state
 
     call_async(q, hold_iface, 'RequestHold', True)
     call_async(q, hold_iface, 'RequestHold', True)
     call_async(q, hold_iface, 'RequestHold', True)
     q.expect_many(
         EventPattern('dbus-signal', signal='HoldStateChanged',
-            args=[S_PENDING_HOLD, R_REQUESTED]),
+            args=[cs.HS_PENDING_HOLD, cs.HSR_REQUESTED]),
         EventPattern('dbus-signal', signal='SetStreamHeld', args=[True]),
         EventPattern('dbus-return', method='RequestHold', value=()),
         )
@@ -159,7 +122,7 @@ def test(q, bus, conn, stream):
     q.expect_many(
         EventPattern('dbus-return', method='HoldState', value=()),
         EventPattern('dbus-signal', signal='HoldStateChanged',
-            args=[S_HELD, R_REQUESTED]),
+            args=[cs.HS_HELD, cs.HSR_REQUESTED]),
         )
 
     # ---- Test 7: 3 parallel calls to unhold ----
@@ -169,7 +132,7 @@ def test(q, bus, conn, stream):
     call_async(q, hold_iface, 'RequestHold', False)
     q.expect_many(
         EventPattern('dbus-signal', signal='HoldStateChanged',
-            args=[S_PENDING_UNHOLD, R_REQUESTED]),
+            args=[cs.HS_PENDING_UNHOLD, cs.HSR_REQUESTED]),
         EventPattern('dbus-signal', signal='SetStreamHeld', args=[False]),
         EventPattern('dbus-return', method='RequestHold', value=()),
         )
@@ -178,24 +141,24 @@ def test(q, bus, conn, stream):
     q.expect_many(
         EventPattern('dbus-return', method='HoldState', value=()),
         EventPattern('dbus-signal', signal='HoldStateChanged',
-            args=[S_UNHELD, R_REQUESTED]),
+            args=[cs.HS_UNHELD, cs.HSR_REQUESTED]),
         )
 
     # ---- Test 8: hold, then change our minds before s-e has responded ----
 
     hold_state = hold_iface.GetHoldState()
-    assert hold_state[0] == S_UNHELD, hold_state
+    assert hold_state[0] == cs.HS_UNHELD, hold_state
 
     call_async(q, hold_iface, 'RequestHold', True)
     call_async(q, hold_iface, 'RequestHold', False)
     q.expect_many(
         EventPattern('dbus-signal', signal='HoldStateChanged',
-            args=[S_PENDING_HOLD, R_REQUESTED]),
+            args=[cs.HS_PENDING_HOLD, cs.HSR_REQUESTED]),
         EventPattern('dbus-signal', signal='SetStreamHeld', args=[True]),
         )
     q.expect_many(
         EventPattern('dbus-signal', signal='HoldStateChanged',
-            args=[S_PENDING_UNHOLD, R_REQUESTED]),
+            args=[cs.HS_PENDING_UNHOLD, cs.HSR_REQUESTED]),
         EventPattern('dbus-signal', signal='SetStreamHeld', args=[False]),
         )
 
@@ -204,11 +167,11 @@ def test(q, bus, conn, stream):
     q.expect_many(
         EventPattern('dbus-return', method='HoldState', value=()),
         EventPattern('dbus-signal', signal='HoldStateChanged',
-            args=[S_UNHELD, R_REQUESTED]),
+            args=[cs.HS_UNHELD, cs.HSR_REQUESTED]),
         )
 
     hold_state = hold_iface.GetHoldState()
-    assert hold_state[0] == S_UNHELD, hold_state
+    assert hold_state[0] == cs.HS_UNHELD, hold_state
 
     # ---- Test 9: unhold, then change our minds before s-e has responded ----
 
@@ -216,7 +179,7 @@ def test(q, bus, conn, stream):
     call_async(q, hold_iface, 'RequestHold', True)
     q.expect_many(
         EventPattern('dbus-signal', signal='HoldStateChanged',
-            args=[S_PENDING_HOLD, R_REQUESTED]),
+            args=[cs.HS_PENDING_HOLD, cs.HSR_REQUESTED]),
         EventPattern('dbus-signal', signal='SetStreamHeld', args=[True]),
         EventPattern('dbus-return', method='RequestHold', value=()),
         )
@@ -224,24 +187,24 @@ def test(q, bus, conn, stream):
     q.expect_many(
         EventPattern('dbus-return', method='HoldState', value=()),
         EventPattern('dbus-signal', signal='HoldStateChanged',
-            args=[S_HELD, R_REQUESTED]),
+            args=[cs.HS_HELD, cs.HSR_REQUESTED]),
         )
 
     # Actually do test 9
 
     hold_state = hold_iface.GetHoldState()
-    assert hold_state[0] == S_HELD, hold_state
+    assert hold_state[0] == cs.HS_HELD, hold_state
 
     call_async(q, hold_iface, 'RequestHold', False)
     call_async(q, hold_iface, 'RequestHold', True)
     q.expect_many(
         EventPattern('dbus-signal', signal='HoldStateChanged',
-            args=[S_PENDING_UNHOLD, R_REQUESTED]),
+            args=[cs.HS_PENDING_UNHOLD, cs.HSR_REQUESTED]),
         EventPattern('dbus-signal', signal='SetStreamHeld', args=[False]),
         )
     q.expect_many(
         EventPattern('dbus-signal', signal='HoldStateChanged',
-            args=[S_PENDING_HOLD, R_REQUESTED]),
+            args=[cs.HS_PENDING_HOLD, cs.HSR_REQUESTED]),
         EventPattern('dbus-signal', signal='SetStreamHeld', args=[True]),
         )
 
@@ -250,18 +213,18 @@ def test(q, bus, conn, stream):
     q.expect_many(
         EventPattern('dbus-return', method='HoldState', value=()),
         EventPattern('dbus-signal', signal='HoldStateChanged',
-            args=[S_HELD, R_REQUESTED]),
+            args=[cs.HS_HELD, cs.HSR_REQUESTED]),
         )
 
     hold_state = hold_iface.GetHoldState()
-    assert hold_state[0] == S_HELD, hold_state
+    assert hold_state[0] == cs.HS_HELD, hold_state
 
     # ---- Test 10: attempting to unhold fails ----
 
     call_async(q, hold_iface, 'RequestHold', False)
     q.expect_many(
         EventPattern('dbus-signal', signal='HoldStateChanged',
-            args=[S_PENDING_UNHOLD, R_REQUESTED]),
+            args=[cs.HS_PENDING_UNHOLD, cs.HSR_REQUESTED]),
         EventPattern('dbus-signal', signal='SetStreamHeld', args=[False]),
         EventPattern('dbus-return', method='RequestHold', value=()),
         )
@@ -271,12 +234,12 @@ def test(q, bus, conn, stream):
     q.expect_many(
         EventPattern('dbus-return', method='UnholdFailure', value=()),
         EventPattern('dbus-signal', signal='HoldStateChanged',
-            args=[S_HELD, R_RESOURCE_NOT_AVAILABLE]),
+            args=[cs.HS_HELD, cs.HSR_RESOURCE_NOT_AVAILABLE]),
         )
 
     # ---- The end ----
 
-    group_iface.RemoveMembers([dbus.UInt32(1)], 'closed')
+    group_iface.RemoveMembers([self_handle], 'closed')
 
     # Test completed, close the connection
 
@@ -285,9 +248,6 @@ def test(q, bus, conn, stream):
     conn.Disconnect()
     q.expect('dbus-signal', signal='StatusChanged', args=[2, 1])
 
-    return True
-
-
 if __name__ == '__main__':
-    exec_test(test)
+    test_all_dialects(test)
 
diff --git a/tests/twisted/jingle/jingletest2.py b/tests/twisted/jingle/jingletest2.py
index a214530..2d02411 100644
--- a/tests/twisted/jingle/jingletest2.py
+++ b/tests/twisted/jingle/jingletest2.py
@@ -339,6 +339,17 @@ class JingleTest2:
     def set_sid_from_initiate(self, query):
         self.sid = self.jp.extract_session_id(query)
 
+    def accept(self):
+        jp = self.jp
+        node = jp.SetIq(self.peer, self.jid, [
+            jp.Jingle(self.sid, self.peer, 'session-accept', [
+                jp.Content('stream1', 'initiator', 'both', [
+                    jp.Description('audio', [
+                        jp.PayloadType(name, str(rate), str(id)) for
+                            (name, id, rate) in self.audio_codecs ]),
+                jp.TransportGoogleP2P() ]) ]) ])
+        self.stream.send(jp.xml(node))
+
     def terminate(self, reason=None):
         jp = self.jp
 
-- 
1.5.6.5




More information about the telepathy-commits mailing list