[telepathy-gabble/master] file_transfer_helper.py: refactor get_file
Guillaume Desmottes
guillaume.desmottes at collabora.co.uk
Fri Apr 3 09:25:48 PDT 2009
---
.../twisted/file-transfer/file_transfer_helper.py | 99 ++++++++------------
1 files changed, 40 insertions(+), 59 deletions(-)
diff --git a/tests/twisted/file-transfer/file_transfer_helper.py b/tests/twisted/file-transfer/file_transfer_helper.py
index 5623b2a..a22ff20 100644
--- a/tests/twisted/file-transfer/file_transfer_helper.py
+++ b/tests/twisted/file-transfer/file_transfer_helper.py
@@ -393,10 +393,33 @@ class SendFileTest(FileTransferTest):
s.connect(self.address)
s.send(self.file.data)
- data = self.bytestream.get_file(self.ft_channel, self.file.size)
+ self.count = 0
+
+ def bytes_changed_cb(bytes):
+ self.count = bytes
+
+ self.ft_channel.connect_to_signal('TransferredBytesChanged', bytes_changed_cb)
+
+ # get data from bytestream
+ data = ''
+ while len(data) < self.file.size:
+ data += self.bytestream.get_data()
assert data == self.file.data
+ # The bytes transferred has been announced using
+ # TransferredBytesChanged
+ assert self.count == self.file.size
+
+ # FileTransferStateChanged could have already been fired
+ e = self.q.expect('dbus-signal', signal='FileTransferStateChanged')
+
+ self.bytestream.wait_bytestream_closed()
+
+ state, reason = e.args
+ assert state == FT_STATE_COMPLETED
+ assert reason == FT_STATE_CHANGE_REASON_NONE
+
class Bytestream(object):
def __init__(self, stream, q):
self.stream = stream
@@ -418,7 +441,10 @@ class Bytestream(object):
def wait_bytestream_open(self, from_, to):
raise NotImplemented
- def get_file(self, ft_channel, size):
+ def get_data(self):
+ raise NotImplemented
+
+ def wait_bytestream_closed(self):
raise NotImplemented
class BytestreamIBB(Bytestream):
@@ -456,41 +482,19 @@ class BytestreamIBB(Bytestream):
# open IBB bytestream
acknowledge_iq(self.stream, event.stanza)
- 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)
-
+ def get_data(self):
# wait for IBB stanzas
- while len(data) < size:
- ibb_event = self.q.expect('stream-message')
- sid, binary = parse_ibb_msg_data(ibb_event.stanza)
- assert sid == self.stream_id
- data += binary
-
- # The bytes transferred has been announced using
- # TransferredBytesChanged
- assert self.count == size
-
- # FileTransferStateChanged could have already been fired
- e, close_event = self.q.expect_many(
- EventPattern('dbus-signal', signal='FileTransferStateChanged'),
- EventPattern('stream-iq', iq_type='set', query_name='close', query_ns=ns.IBB))
+ ibb_event = self.q.expect('stream-message')
+ sid, binary = parse_ibb_msg_data(ibb_event.stanza)
+ assert sid == self.stream_id
+ return binary
- state, reason = e.args
- assert state == FT_STATE_COMPLETED
- assert reason == FT_STATE_CHANGE_REASON_NONE
+ def wait_bytestream_closed(self):
+ close_event = self.q.expect('stream-iq', iq_type='set', query_name='close', query_ns=ns.IBB)
# sender finish to send the file and so close the bytestream
acknowledge_iq(self.stream, close_event.stanza)
- return data
-
class BytestreamS5B(Bytestream):
def get_ns(self):
return ns.BYTESTREAMS
@@ -529,32 +533,9 @@ class BytestreamS5B(Bytestream):
# 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
+ def get_data(self):
+ e = self.q.expect('s5b-data-received', transport=self.transport)
+ return e.data
- return data
+ def wait_bytestream_closed(self):
+ self.q.expect('s5b-connection-lost')
--
1.5.6.5
More information about the telepathy-commits
mailing list