[telepathy-gabble/master] file_transfer_helper.py: BytestreamS5B: implement sending side methods
Guillaume Desmottes
guillaume.desmottes at collabora.co.uk
Fri Apr 3 09:25:50 PDT 2009
---
.../twisted/file-transfer/file_transfer_helper.py | 55 ++++++++++++++++++--
1 files changed, 51 insertions(+), 4 deletions(-)
diff --git a/tests/twisted/file-transfer/file_transfer_helper.py b/tests/twisted/file-transfer/file_transfer_helper.py
index 15d1f5f..5623b2a 100644
--- a/tests/twisted/file-transfer/file_transfer_helper.py
+++ b/tests/twisted/file-transfer/file_transfer_helper.py
@@ -8,9 +8,10 @@ from gabbletest import acknowledge_iq, sync_stream
import ns
from bytestream import parse_si_offer, create_si_reply, parse_ibb_open, parse_ibb_msg_data,\
create_si_offer, parse_si_reply, send_ibb_open, send_ibb_msg_data, listen_socks5, \
- send_socks5_init, socks5_expect_connection
+ send_socks5_init, socks5_expect_connection, expect_socks5_init, socks5_connect
from twisted.words.xish import domish, xpath
+from twisted.words.protocols.jabber.client import IQ
from dbus import PROPERTIES_IFACE
@@ -385,7 +386,7 @@ class SendFileTest(FileTransferTest):
self.bytestream.get_ns())
self.stream.send(result)
- self.bytestream.wait_bytestream_open()
+ self.bytestream.wait_bytestream_open(self.contact_name, 'test at localhost/Resource')
def send_file(self):
s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
@@ -414,7 +415,7 @@ class Bytestream(object):
def get_ns(self):
raise NotImplemented
- def wait_bytestream_open(self):
+ def wait_bytestream_open(self, from_, to):
raise NotImplemented
def get_file(self, ft_channel, size):
@@ -446,7 +447,7 @@ class BytestreamIBB(Bytestream):
self.seq += 1
- def wait_bytestream_open(self):
+ def wait_bytestream_open(self, from_, to):
# Wait IBB open iq
event = self.q.expect('stream-iq', iq_type='set')
sid = parse_ibb_open(event.stanza)
@@ -511,3 +512,49 @@ class BytestreamS5B(Bytestream):
def send_data(self, from_, to, data):
self.transport.write(data)
+
+ def wait_bytestream_open(self, from_, to):
+ id, mode, sid, hosts = expect_socks5_init(self.q)
+
+ assert mode == 'tcp'
+ assert sid == self.stream_id
+ jid, host, port = hosts[0]
+
+ self.transport = socks5_connect(self.q, host, port, sid, from_, to)
+
+ result = IQ(self.stream, 'result')
+ result['id'] = id
+ result['from'] = from_
+ result['to'] = to
+ # FIXME: should set streamhost-used
+ result.send()
+
+ def get_file(self, ft_channel, size):
+ # FIXME: try to share more code with parent class
+ data = ''
+ self.count = 0
+
+ def bytes_changed_cb(bytes):
+ self.count = bytes
+
+ ft_channel.connect_to_signal('TransferredBytesChanged', bytes_changed_cb)
+
+ # wait for IBB stanzas
+ while len(data) < size:
+ e = self.q.expect('s5b-data-received', transport=self.transport)
+ data += e.data
+
+ # The bytes transferred has been announced using
+ # TransferredBytesChanged
+ assert self.count == size
+
+ # FileTransferStateChanged could have already been fired
+ e, _ = self.q.expect_many(
+ EventPattern('dbus-signal', signal='FileTransferStateChanged'),
+ EventPattern('s5b-connection-lost'))
+
+ state, reason = e.args
+ assert state == FT_STATE_COMPLETED
+ assert reason == FT_STATE_CHANGE_REASON_NONE
+
+ return data
--
1.5.6.5
More information about the telepathy-commits
mailing list