class LocalOriginWriteOptionNegotiation(unittest.TestCase): port = 65466 def setUp(self): self.clock = Clock() self.tmp_dir_path = tempfile.mkdtemp() self.target = FilePath(self.tmp_dir_path).child('foo') self.writer = DelayedWriter(self.target, _clock=self.clock, delay=2) self.transport = FakeTransport(hostAddress=('127.0.0.1', self.port)) self.ws = LocalOriginWriteSession(('127.0.0.1', 65465), self.writer, options={'blksize':'123'}, _clock=self.clock) self.wd = MockHandshakeWatchdog(4, self.ws.timedOut, _clock=self.clock) self.ws.timeout_watchdog = self.wd self.ws.transport = self.transport def test_option_normal(self): self.ws.startProtocol() self.ws.datagramReceived(OACKDatagram({'blksize':'12'}).to_wire(), ('127.0.0.1', 65465)) self.clock.advance(0.1) self.assertEqual(self.ws.session.block_size, WriteSession.block_size) self.assertEqual(self.transport.value(), ACKDatagram(0).to_wire()) self.transport.clear() self.ws.datagramReceived(OACKDatagram({'blksize':'9'}).to_wire(), ('127.0.0.1', 65465)) self.clock.advance(0.1) self.assertEqual(self.ws.session.block_size, WriteSession.block_size) self.assertEqual(self.transport.value(), ACKDatagram(0).to_wire()) self.transport.clear() self.ws.datagramReceived(DATADatagram(1, 'foobarbaz').to_wire(), ('127.0.0.1', 65465)) self.clock.advance(3) self.failUnless(self.ws.session.started) self.clock.advance(0.1) self.assertEqual(self.ws.session.block_size, 9) self.assertEqual(self.transport.value(), ACKDatagram(1).to_wire()) self.transport.clear() self.ws.datagramReceived(DATADatagram(2, 'asdfghjkl').to_wire(), ('127.0.0.1', 65465)) self.clock.advance(3) self.assertEqual(self.transport.value(), ACKDatagram(2).to_wire()) self.writer.finish() self.assertEqual(self.writer.file_path.open('r').read(), 'foobarbazasdfghjkl') self.transport.clear() self.ws.datagramReceived(OACKDatagram({'blksize':'12'}).to_wire(), ('127.0.0.1', 65465)) self.clock.advance(0.1) self.assertEqual(self.ws.session.block_size, 9) self.assertEqual(self.transport.value(), ACKDatagram(0).to_wire()) def test_option_timeout(self): self.ws.startProtocol() self.clock.advance(5) self.failUnless(self.transport.disconnecting) def tearDown(self): shutil.rmtree(self.tmp_dir_path)
class RemoteOriginWriteOptionNegotiation(unittest.TestCase): port = 65466 def setUp(self): self.clock = Clock() self.tmp_dir_path = tempfile.mkdtemp() self.target = FilePath(self.tmp_dir_path).child('foo') self.writer = DelayedWriter(self.target, _clock=self.clock, delay=2) self.transport = FakeTransport(hostAddress=('127.0.0.1', self.port)) self.ws = RemoteOriginWriteSession(('127.0.0.1', 65465), self.writer, options={'blksize':'9'}, _clock=self.clock) self.ws.transport = self.transport def test_option_normal(self): self.ws.startProtocol() self.clock.advance(0.1) oack_datagram = OACKDatagram({'blksize':'9'}).to_wire() self.assertEqual(self.transport.value(), oack_datagram) self.clock.advance(3) self.assertEqual(self.transport.value(), oack_datagram * 2) self.transport.clear() self.ws.datagramReceived(DATADatagram(1, 'foobarbaz').to_wire(), ('127.0.0.1', 65465)) self.clock.pump((1,)*3) self.assertEqual(self.transport.value(), ACKDatagram(1).to_wire()) self.assertEqual(self.ws.session.block_size, 9) self.transport.clear() self.ws.datagramReceived(DATADatagram(2, 'smthng').to_wire(), ('127.0.0.1', 65465)) self.clock.pump((1,)*3) self.assertEqual(self.transport.value(), ACKDatagram(2).to_wire()) self.clock.pump((1,)*10) self.writer.finish() self.assertEqual(self.writer.file_path.open('r').read(), 'foobarbazsmthng') self.failUnless(self.transport.disconnecting) def test_option_timeout(self): self.ws.startProtocol() self.clock.advance(0.1) oack_datagram = OACKDatagram({'blksize':'9'}).to_wire() self.assertEqual(self.transport.value(), oack_datagram) self.failIf(self.transport.disconnecting) self.clock.advance(3) self.assertEqual(self.transport.value(), oack_datagram * 2) self.failIf(self.transport.disconnecting) self.clock.advance(2) self.assertEqual(self.transport.value(), oack_datagram * 3) self.failIf(self.transport.disconnecting) self.clock.advance(2) self.assertEqual(self.transport.value(), oack_datagram * 3) self.failUnless(self.transport.disconnecting) def tearDown(self): shutil.rmtree(self.tmp_dir_path)
def setUp(self): self.clock = Clock() self.tmp_dir_path = tempfile.mkdtemp() self.target = FilePath(self.tmp_dir_path).child('foo') self.writer = DelayedWriter(self.target, _clock=self.clock, delay=2) self.transport = FakeTransport(hostAddress=('127.0.0.1', self.port)) self.ws = LocalOriginWriteSession(('127.0.0.1', 65465), self.writer, options={'blksize':'123'}, _clock=self.clock) self.wd = MockHandshakeWatchdog(4, self.ws.timedOut, _clock=self.clock) self.ws.timeout_watchdog = self.wd self.ws.transport = self.transport
def setUp(self): self.clock = Clock() self.temp_dir = FilePath(tempfile.mkdtemp()).asBytesMode() self.target = self.temp_dir.child(b'foo') self.writer = DelayedWriter(self.target, _clock=self.clock, delay=2) self.transport = FakeTransport(hostAddress=('127.0.0.1', self.port)) self.ws = LocalOriginWriteSession(('127.0.0.1', 65465), self.writer, options={b'blksize':b'123'}, _clock=self.clock) self.wd = timedCaller([5], None, self.ws.timedOut, self.clock) self.ws.timeout_watchdog = self.wd self.ws.transport = self.transport
def setUp(self): self.clock = Clock() self.tmp_dir_path = tempfile.mkdtemp() self.target = FilePath(self.tmp_dir_path).child('foo') self.writer = DelayedWriter(self.target, _clock=self.clock, delay=2) self.transport = FakeTransport(hostAddress=('127.0.0.1', self.port)) self.options = OrderedDict() self.options['blksize'] = '9' self.options['tsize'] = '45' self.ws = RemoteOriginWriteSession( ('127.0.0.1', 65465), self.writer, options=self.options, _clock=self.clock) self.ws.transport = self.transport
def setUp(self): self.clock = Clock() self.tmp_dir_path = tempfile.mkdtemp() self.target = FilePath(self.tmp_dir_path).child('foo') self.writer = DelayedWriter(self.target, _clock=self.clock, delay=2) self.transport = FakeTransport(hostAddress=('127.0.0.1', self.port)) self.ws = RemoteOriginWriteSession(('127.0.0.1', 65465), self.writer, options={'blksize':'9'}, _clock=self.clock) self.ws.transport = self.transport
def setUp(self): self.clock = Clock() self.tmp_dir_path = tempfile.mkdtemp() self.target = FilePath(self.tmp_dir_path).child('foo') self.writer = DelayedWriter(self.target, _clock=self.clock, delay=2) self.transport = FakeTransport(hostAddress=('127.0.0.1', self.port)) self.ws = RemoteOriginWriteSession(('127.0.0.1', 65465), self.writer, _clock=self.clock) self.ws.transport = self.transport self.ws.startProtocol()
def setUp(self): self.clock = Clock() self.tmp_dir_path = tempfile.mkdtemp() self.target = FilePath(self.tmp_dir_path).child("foo") self.writer = DelayedWriter(self.target, _clock=self.clock, delay=2) self.transport = FakeTransport(hostAddress=("127.0.0.1", self.port)) self.options = OrderedDict() self.options["blksize"] = "9" self.options["tsize"] = "45" self.ws = RemoteOriginWriteSession(("127.0.0.1", 65465), self.writer, options=self.options, _clock=self.clock) self.ws.transport = self.transport
def setUp(self): self.clock = Clock() self.temp_dir = FilePath(tempfile.mkdtemp()).asBytesMode() self.target = self.temp_dir.child(b'foo') self.writer = DelayedWriter(self.target, _clock=self.clock, delay=2) self.transport = FakeTransport(hostAddress=('127.0.0.1', self.port)) self.ws = LocalOriginWriteSession(('127.0.0.1', 65465), self.writer, _clock=self.clock) self.wd = MockHandshakeWatchdog(4, self.ws.timedOut, _clock=self.clock) self.ws.timeout_watchdog = self.wd self.ws.transport = self.transport
def setUp(self): self.clock = Clock() self.temp_dir = FilePath(tempfile.mkdtemp()).asBytesMode() self.target = self.temp_dir.child(b'foo') self.writer = DelayedWriter(self.target, _clock=self.clock, delay=2) self.transport = FakeTransport(hostAddress=('127.0.0.1', self.port)) self.options = OrderedDict() self.options[b'blksize'] = b'9' self.options[b'tsize'] = b'45' self.ws = RemoteOriginWriteSession( ('127.0.0.1', 65465), self.writer, options=self.options, _clock=self.clock) self.ws.transport = self.transport
class RemoteOriginWriteOptionNegotiation(unittest.TestCase): port = 65466 def setUp(self): self.clock = Clock() self.tmp_dir_path = tempfile.mkdtemp() self.target = FilePath(self.tmp_dir_path).child('foo') self.writer = DelayedWriter(self.target, _clock=self.clock, delay=2) self.transport = FakeTransport(hostAddress=('127.0.0.1', self.port)) self.options = OrderedDict() self.options['blksize'] = '9' self.options['tsize'] = '45' self.ws = RemoteOriginWriteSession( ('127.0.0.1', 65465), self.writer, options=self.options, _clock=self.clock) self.ws.transport = self.transport def test_option_normal(self): self.ws.startProtocol() self.clock.advance(0.1) oack_datagram = OACKDatagram(self.options).to_wire() self.assertEqual(self.transport.value(), oack_datagram) self.clock.advance(3) self.assertEqual(self.transport.value(), oack_datagram * 2) self.transport.clear() self.ws.datagramReceived(DATADatagram(1, 'foobarbaz').to_wire(), ('127.0.0.1', 65465)) self.clock.pump((1,)*3) self.assertEqual(self.transport.value(), ACKDatagram(1).to_wire()) self.assertEqual(self.ws.session.block_size, 9) self.transport.clear() self.ws.datagramReceived(DATADatagram(2, 'smthng').to_wire(), ('127.0.0.1', 65465)) self.clock.pump((1,)*3) self.assertEqual(self.transport.value(), ACKDatagram(2).to_wire()) self.clock.pump((1,)*10) self.writer.finish() self.assertEqual(self.writer.file_path.open('r').read(), 'foobarbazsmthng') self.failUnless(self.transport.disconnecting) def test_option_timeout(self): self.ws.startProtocol() self.clock.advance(0.1) oack_datagram = OACKDatagram(self.options).to_wire() self.assertEqual(self.transport.value(), oack_datagram) self.failIf(self.transport.disconnecting) self.clock.advance(3) self.assertEqual(self.transport.value(), oack_datagram * 2) self.failIf(self.transport.disconnecting) self.clock.advance(2) self.assertEqual(self.transport.value(), oack_datagram * 3) self.failIf(self.transport.disconnecting) self.clock.advance(2) self.assertEqual(self.transport.value(), oack_datagram * 3) self.failUnless(self.transport.disconnecting) def test_option_tsize(self): # A tsize option sent as part of a write session is recorded. self.ws.startProtocol() self.clock.advance(0.1) oack_datagram = OACKDatagram(self.options).to_wire() self.assertEqual(self.transport.value(), oack_datagram) self.failIf(self.transport.disconnecting) self.assertIsInstance(self.ws.session, WriteSession) # Options are not applied to the WriteSession until the first DATA # datagram is received, self.assertIsNone(self.ws.session.tsize) self.ws.datagramReceived( DATADatagram(1, 'foobarbaz').to_wire(), ('127.0.0.1', 65465)) # The tsize option has been applied to the WriteSession. self.assertEqual(45, self.ws.session.tsize) def tearDown(self): shutil.rmtree(self.tmp_dir_path)
class RemoteOriginWriteOptionNegotiation(unittest.TestCase): port = 65466 def setUp(self): self.clock = Clock() self.tmp_dir_path = tempfile.mkdtemp() self.target = FilePath(self.tmp_dir_path).child('foo') self.writer = DelayedWriter(self.target, _clock=self.clock, delay=2) self.transport = FakeTransport(hostAddress=('127.0.0.1', self.port)) self.options = OrderedDict() self.options['blksize'] = '9' self.options['tsize'] = '45' self.ws = RemoteOriginWriteSession( ('127.0.0.1', 65465), self.writer, options=self.options, _clock=self.clock) self.ws.transport = self.transport def test_option_normal(self): self.ws.startProtocol() self.clock.advance(0.1) oack_datagram = OACKDatagram(self.options).to_wire() self.assertEqual(self.transport.value(), oack_datagram) self.clock.advance(3) self.assertEqual(self.transport.value(), oack_datagram * 2) self.transport.clear() self.ws.datagramReceived(DATADatagram(1, 'foobarbaz').to_wire(), ('127.0.0.1', 65465)) self.clock.pump((1,)*3) self.assertEqual(self.transport.value(), ACKDatagram(1).to_wire()) self.assertEqual(self.ws.session.block_size, 9) self.transport.clear() self.ws.datagramReceived(DATADatagram(2, 'smthng').to_wire(), ('127.0.0.1', 65465)) self.clock.pump((1,)*3) self.assertEqual(self.transport.value(), ACKDatagram(2).to_wire()) self.clock.pump((1,)*10) self.writer.finish() self.assertEqual(self.writer.file_path.open('r').read(), 'foobarbazsmthng') self.failUnless(self.transport.disconnecting) def test_option_timeout(self): self.ws.startProtocol() self.clock.advance(0.1) oack_datagram = OACKDatagram(self.options).to_wire() self.assertEqual(self.transport.value(), oack_datagram) self.failIf(self.transport.disconnecting) self.clock.advance(3) self.assertEqual(self.transport.value(), oack_datagram * 2) self.failIf(self.transport.disconnecting) self.clock.advance(2) self.assertEqual(self.transport.value(), oack_datagram * 3) self.failIf(self.transport.disconnecting) self.clock.advance(2) self.assertEqual(self.transport.value(), oack_datagram * 3) self.failUnless(self.transport.disconnecting) def test_option_tsize(self): # A tsize option sent as part of a write session is recorded. self.ws.startProtocol() self.clock.advance(0.1) oack_datagram = OACKDatagram(self.options).to_wire() self.assertEqual(self.transport.value(), oack_datagram) self.failIf(self.transport.disconnecting) self.assertIsInstance(self.ws.session, WriteSession) # Options are not applied to the WriteSession until the first DATA # datagram is received, self.assertTrue(self.ws.session.tsize is None) self.ws.datagramReceived( DATADatagram(1, 'foobarbaz').to_wire(), ('127.0.0.1', 65465)) # The tsize option has been applied to the WriteSession. self.assertEqual(45, self.ws.session.tsize) def tearDown(self): shutil.rmtree(self.tmp_dir_path)