class SuccessfulAsyncDispatch(unittest.TestCase): def setUp(self): self.clock = Clock() self.tmp_dir_path = tempfile.mkdtemp() with FilePath(self.tmp_dir_path).child('nonempty').open('w') as fd: fd.write('Something uninteresting') self.backend = FilesystemAsyncBackend(self.tmp_dir_path, self.clock) self.tftp = TFTP(self.backend, self.clock) def test_get_reader_defers(self): rrq_datagram = RRQDatagram('nonempty', 'NetASCiI', {}) rrq_addr = ('127.0.0.1', 1069) rrq_mode = "octet" d = self.tftp._startSession(rrq_datagram, rrq_addr, rrq_mode) self.assertFalse(d.called) self.clock.advance(1) self.assertTrue(d.called) self.assertTrue(IReader.providedBy(d.result.backend)) def test_get_writer_defers(self): wrq_datagram = WRQDatagram('foobar', 'NetASCiI', {}) wrq_addr = ('127.0.0.1', 1069) wrq_mode = "octet" d = self.tftp._startSession(wrq_datagram, wrq_addr, wrq_mode) self.assertFalse(d.called) self.clock.advance(1) self.assertTrue(d.called) self.assertTrue(IWriter.providedBy(d.result.backend))
class BackendCallingContext(unittest.TestCase): def setUp(self): super(BackendCallingContext, self).setUp() self.backend = ContextCapturingBackend("local", "remote") self.tftp = TFTP(self.backend) self.tftp.transport = HostTransport(("12.34.56.78", 1234)) @inlineCallbacks def test_context_rrq(self): rrq_datagram = RRQDatagram('nonempty', 'NetASCiI', {}) rrq_addr = ('127.0.0.1', 1069) error = yield self.assertFailure( self.tftp._startSession(rrq_datagram, rrq_addr, "octet"), CapturedContext) self.assertEqual(("get_reader", rrq_datagram.filename), error.args) self.assertEqual( {"local": self.tftp.transport.host, "remote": rrq_addr}, error.context) @inlineCallbacks def test_context_wrq(self): wrq_datagram = WRQDatagram('nonempty', 'NetASCiI', {}) wrq_addr = ('127.0.0.1', 1069) error = yield self.assertFailure( self.tftp._startSession(wrq_datagram, wrq_addr, "octet"), CapturedContext) self.assertEqual(("get_writer", wrq_datagram.filename), error.args) self.assertEqual( {"local": self.tftp.transport.host, "remote": wrq_addr}, error.context)
class BackendCallingContext(unittest.TestCase): def setUp(self): super(BackendCallingContext, self).setUp() self.backend = ContextCapturingBackend("local", "remote") self.tftp = TFTP(self.backend) self.tftp.transport = HostTransport(("12.34.56.78", 1234)) @inlineCallbacks def test_context_rrq(self): rrq_datagram = RRQDatagram(b'nonempty', b'NetASCiI', {}) rrq_addr = ('127.0.0.1', 1069) error = yield self.assertFailure( self.tftp._startSession(rrq_datagram, rrq_addr, b"octet"), CapturedContext) self.assertEqual(("get_reader", rrq_datagram.filename), error.args) self.assertEqual( { "local": self.tftp.transport.host, "remote": rrq_addr }, error.context) @inlineCallbacks def test_context_wrq(self): wrq_datagram = WRQDatagram(b'nonempty', b'NetASCiI', {}) wrq_addr = ('127.0.0.1', 1069) error = yield self.assertFailure( self.tftp._startSession(wrq_datagram, wrq_addr, b"octet"), CapturedContext) self.assertEqual(("get_writer", wrq_datagram.filename), error.args) self.assertEqual( { "local": self.tftp.transport.host, "remote": wrq_addr }, error.context)
class SuccessfulAsyncDispatch(unittest.TestCase): def setUp(self): self.clock = Clock() self.temp_dir = FilePath(tempfile.mkdtemp()).asBytesMode() with self.temp_dir.child(b'nonempty').open('w') as fd: fd.write(b'Something uninteresting') self.backend = FilesystemAsyncBackend(self.temp_dir, self.clock) self.tftp = TFTP(self.backend, self.clock) def test_get_reader_defers(self): rrq_datagram = RRQDatagram(b'nonempty', b'NetASCiI', {}) rrq_addr = ('127.0.0.1', 1069) rrq_mode = b"octet" d = self.tftp._startSession(rrq_datagram, rrq_addr, rrq_mode) self.assertFalse(d.called) self.clock.advance(1) self.assertTrue(d.called) self.assertTrue(IReader.providedBy(d.result.backend)) def test_get_writer_defers(self): wrq_datagram = WRQDatagram(b'foobar', b'NetASCiI', {}) wrq_addr = ('127.0.0.1', 1069) wrq_mode = b"octet" d = self.tftp._startSession(wrq_datagram, wrq_addr, wrq_mode) self.assertFalse(d.called) self.clock.advance(1) self.assertTrue(d.called) self.assertTrue(IWriter.providedBy(d.result.backend))
class SuccessfulAsyncDispatch(unittest.TestCase): def setUp(self): self.clock = Clock() self.temp_dir = FilePath(tempfile.mkdtemp()).asBytesMode() with self.temp_dir.child(b"nonempty").open("w") as fd: fd.write(b"Something uninteresting") self.backend = FilesystemAsyncBackend(self.temp_dir, self.clock) self.tftp = TFTP(self.backend, self.clock) def test_get_reader_defers(self): rrq_datagram = RRQDatagram(b"nonempty", b"NetASCiI", {}) rrq_addr = ("127.0.0.1", 1069) rrq_mode = b"octet" d = self.tftp._startSession(rrq_datagram, rrq_addr, rrq_mode) self.assertFalse(d.called) self.clock.advance(1) self.assertTrue(d.called) self.assertTrue(IReader.providedBy(d.result.backend)) def test_get_writer_defers(self): wrq_datagram = WRQDatagram(b"foobar", b"NetASCiI", {}) wrq_addr = ("127.0.0.1", 1069) wrq_mode = b"octet" d = self.tftp._startSession(wrq_datagram, wrq_addr, wrq_mode) self.assertFalse(d.called) self.clock.advance(1) self.assertTrue(d.called) self.assertTrue(IWriter.providedBy(d.result.backend))
def _startSession(self, *args, **kwargs): d = TFTP._startSession(self, *args, **kwargs) def save_session(session): self.session = session return session d.addCallback(save_session) return d