diff options
author | Paul Weaver <paul.weaver@osirium.com> | 2016-06-17 14:28:48 +0100 |
---|---|---|
committer | Paul Weaver <paul.weaver@osirium.com> | 2016-06-17 14:28:48 +0100 |
commit | d2b0ea51eb9ae5990fc46dd8705e6b1dbb8be634 (patch) | |
tree | ac3472c9c253072852346b987b6b80a798842fe4 /t/test.py | |
parent | cf09b28173f1bdf8a57f6f1dc9e629fe98f52043 (diff) | |
download | tftpy-d2b0ea51eb9ae5990fc46dd8705e6b1dbb8be634.tar.gz |
Implement dynamic upload support
Diffstat (limited to 't/test.py')
-rw-r--r-- | t/test.py | 28 |
1 files changed, 26 insertions, 2 deletions
@@ -7,6 +7,7 @@ import os import time import threading from errno import EINTR +from multiprocessing import Queue log = tftpy.log @@ -143,7 +144,11 @@ class TestTftpyState(unittest.TestCase): def setUp(self): tftpy.setLogLevel(logging.DEBUG) - def clientServerUploadOptions(self, options, input=None, transmitname=None): + def clientServerUploadOptions(self, + options, + input=None, + transmitname=None, + server_kwargs=None): """Fire up a client and a server and do an upload.""" root = '/tmp' home = os.path.dirname(os.path.abspath(__file__)) @@ -153,7 +158,8 @@ class TestTftpyState(unittest.TestCase): input = input_path if transmitname: filename = transmitname - server = tftpy.TftpServer(root) + server_kwargs = server_kwargs or {} + server = tftpy.TftpServer(root, **server_kwargs) client = tftpy.TftpClient('localhost', 20001, options) @@ -225,6 +231,24 @@ class TestTftpyState(unittest.TestCase): for blksize in [512, 1024, 2048, 4096]: self.clientServerUploadOptions({'blksize': blksize}) + def customUploadHelper(self, return_func): + q = Queue() + + def upload_open(path): + q.put('called') + return return_func(path) + self.clientServerUploadOptions( + {}, + server_kwargs={'upload_open': upload_open}) + self.assertEqual(q.get(True, 1), 'called') + + def testClientServerUploadCustomOpen(self): + self.customUploadHelper(lambda p: open(p, 'wb')) + + def testClientServerUploadCustomOpenForbids(self): + with self.assertRaisesRegexp(tftpy.TftpException, 'Access violation'): + self.customUploadHelper(lambda p: None) + def testClientServerUploadTsize(self): self.clientServerUploadOptions({'tsize': 64*1024}, transmitname='/foo/bar/640KBFILE') |