[telepathy-gabble/master] file_transfer_helper.py: support offset when testing receiving file

Guillaume Desmottes guillaume.desmottes at collabora.co.uk
Fri Apr 17 06:37:03 PDT 2009


---
 .../twisted/file-transfer/file_transfer_helper.py  |   28 ++++++++++++-------
 1 files changed, 18 insertions(+), 10 deletions(-)

diff --git a/tests/twisted/file-transfer/file_transfer_helper.py b/tests/twisted/file-transfer/file_transfer_helper.py
index 1d969a1..e58b335 100644
--- a/tests/twisted/file-transfer/file_transfer_helper.py
+++ b/tests/twisted/file-transfer/file_transfer_helper.py
@@ -34,6 +34,8 @@ class File(object):
 
         self.compute_hash(hash_type)
 
+        self.offset = 0
+
     def compute_hash(self, hash_type):
         assert hash_type == cs.FILE_HASH_TYPE_MD5
 
@@ -162,9 +164,10 @@ class ReceiveFileTest(FileTransferTest):
         file_node['hash'] = self.file.hash
         date = datetime.datetime.utcfromtimestamp(self.file.date).strftime('%FT%H:%M:%SZ')
         file_node['date'] = date
-        # TODO: intial offset
 
         file_node.addElement('desc', content=self.file.description)
+        # we support range transfer
+        file_node.addElement('range')
         iq.send()
 
     def check_new_channel(self):
@@ -206,7 +209,7 @@ class ReceiveFileTest(FileTransferTest):
 
     def accept_file(self):
         self.address = self.ft_channel.AcceptFile(self.address_type,
-                self.access_control, self.access_control_param, 0,
+                self.access_control, self.access_control_param, self.file.offset,
                 byte_arrays=True)
 
         state_event, iq_event = self.q.expect_many(
@@ -220,6 +223,10 @@ class ReceiveFileTest(FileTransferTest):
         # Got SI reply
         self.bytestream.check_si_reply(iq_event.stanza)
 
+        if self.file.offset != 0:
+            range = xpath.queryForNodes('/iq/si/file/range', iq_event.stanza)[0]
+            assert range['offset'] == str(self.file.offset)
+
         _, events = self.bytestream.open_bytestream([], [
             EventPattern('dbus-signal', signal='InitialOffsetDefined'),
             EventPattern('dbus-signal', signal='FileTransferStateChanged')])
@@ -227,15 +234,14 @@ class ReceiveFileTest(FileTransferTest):
         offset_event, state_event = events
 
         offset = offset_event.args[0]
-        # We don't support resume
-        assert offset == 0
+        assert offset == self.file.offset
 
         state, reason = state_event.args
         assert state == cs.FT_STATE_OPEN
         assert reason == cs.FT_STATE_CHANGE_REASON_NONE
 
         # send the beginning of the file (client didn't connect to socket yet)
-        self.bytestream.send_data(self.file.data[:2])
+        self.bytestream.send_data(self.file.data[self.file.offset:self.file.offset + 2])
 
     def receive_file(self):
         # Connect to Gabble's socket
@@ -243,7 +249,8 @@ class ReceiveFileTest(FileTransferTest):
         s.connect(self.address)
 
         # send the rest of the file
-        self.bytestream.send_data(self.file.data[2:])
+        i = self.file.offset + 2
+        self.bytestream.send_data(self.file.data[i:])
 
         self._read_file_from_socket(s)
 
@@ -251,16 +258,17 @@ class ReceiveFileTest(FileTransferTest):
         # Read the file from Gabble's socket
         data = ''
         read = 0
+        to_receive = self.file.size - self.file.offset
 
         e = self.q.expect('dbus-signal', signal='TransferredBytesChanged')
         count = e.args[0]
 
-        while read < self.file.size:
-            data += s.recv(self.file.size - read)
+        while read < to_receive:
+            data += s.recv(to_receive - read)
             read = len(data)
-        assert data == self.file.data
+        assert data == self.file.data[self.file.offset:]
 
-        while count < self.file.size:
+        while count < to_receive:
             # Catch TransferredBytesChanged until we transfered all the data
             e = self.q.expect('dbus-signal', signal='TransferredBytesChanged')
             count = e.args[0]
-- 
1.5.6.5




More information about the telepathy-commits mailing list