Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1928)

Unified Diff: third_party/twisted_8_1/twisted/test/test_protocols.py

Issue 12261012: Remove third_party/twisted_8_1 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/build
Patch Set: Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/twisted_8_1/twisted/test/test_protocols.py
diff --git a/third_party/twisted_8_1/twisted/test/test_protocols.py b/third_party/twisted_8_1/twisted/test/test_protocols.py
deleted file mode 100644
index 8fc8ae5318e023bb919c74d6c6ef945e2d3cd966..0000000000000000000000000000000000000000
--- a/third_party/twisted_8_1/twisted/test/test_protocols.py
+++ /dev/null
@@ -1,725 +0,0 @@
-# Copyright (c) 2001-2007 Twisted Matrix Laboratories.
-# See LICENSE for details.
-
-
-"""
-Test cases for twisted.protocols package.
-"""
-
-from twisted.trial import unittest
-from twisted.protocols import basic, wire, portforward
-from twisted.internet import reactor, protocol, defer, task, error
-from twisted.test import proto_helpers
-
-import struct
-import StringIO
-
-class StringIOWithoutClosing(StringIO.StringIO):
- """
- A StringIO that can't be closed.
- """
- def close(self):
- """
- Do nothing.
- """
-
-class LineTester(basic.LineReceiver):
- """
- A line receiver that parses data received and make actions on some tokens.
-
- @type delimiter: C{str}
- @ivar delimiter: character used between received lines.
- @type MAX_LENGTH: C{int}
- @ivar MAX_LENGTH: size of a line when C{lineLengthExceeded} will be called.
- @type clock: L{twisted.internet.task.Clock}
- @ivar clock: clock simulating reactor callLater. Pass it to constructor if
- you want to use the pause/rawpause functionalities.
- """
-
- delimiter = '\n'
- MAX_LENGTH = 64
-
- def __init__(self, clock=None):
- """
- If given, use a clock to make callLater calls.
- """
- self.clock = clock
-
- def connectionMade(self):
- """
- Create/clean data received on connection.
- """
- self.received = []
-
- def lineReceived(self, line):
- """
- Receive line and make some action for some tokens: pause, rawpause,
- stop, len, produce, unproduce.
- """
- self.received.append(line)
- if line == '':
- self.setRawMode()
- elif line == 'pause':
- self.pauseProducing()
- self.clock.callLater(0, self.resumeProducing)
- elif line == 'rawpause':
- self.pauseProducing()
- self.setRawMode()
- self.received.append('')
- self.clock.callLater(0, self.resumeProducing)
- elif line == 'stop':
- self.stopProducing()
- elif line[:4] == 'len ':
- self.length = int(line[4:])
- elif line.startswith('produce'):
- self.transport.registerProducer(self, False)
- elif line.startswith('unproduce'):
- self.transport.unregisterProducer()
-
- def rawDataReceived(self, data):
- """
- Read raw data, until the quantity specified by a previous 'len' line is
- reached.
- """
- data, rest = data[:self.length], data[self.length:]
- self.length = self.length - len(data)
- self.received[-1] = self.received[-1] + data
- if self.length == 0:
- self.setLineMode(rest)
-
- def lineLengthExceeded(self, line):
- """
- Adjust line mode when long lines received.
- """
- if len(line) > self.MAX_LENGTH + 1:
- self.setLineMode(line[self.MAX_LENGTH + 1:])
-
-
-class LineOnlyTester(basic.LineOnlyReceiver):
- """
- A buffering line only receiver.
- """
- delimiter = '\n'
- MAX_LENGTH = 64
-
- def connectionMade(self):
- """
- Create/clean data received on connection.
- """
- self.received = []
-
- def lineReceived(self, line):
- """
- Save received data.
- """
- self.received.append(line)
-
-class WireTestCase(unittest.TestCase):
- """
- Test wire protocols.
- """
- def testEcho(self):
- """
- Test wire.Echo protocol: send some data and check it send it back.
- """
- t = StringIOWithoutClosing()
- a = wire.Echo()
- a.makeConnection(protocol.FileWrapper(t))
- a.dataReceived("hello")
- a.dataReceived("world")
- a.dataReceived("how")
- a.dataReceived("are")
- a.dataReceived("you")
- self.failUnlessEqual(t.getvalue(), "helloworldhowareyou")
-
- def testWho(self):
- """
- Test wire.Who protocol.
- """
- t = StringIOWithoutClosing()
- a = wire.Who()
- a.makeConnection(protocol.FileWrapper(t))
- self.failUnlessEqual(t.getvalue(), "root\r\n")
-
- def testQOTD(self):
- """
- Test wire.QOTD protocol.
- """
- t = StringIOWithoutClosing()
- a = wire.QOTD()
- a.makeConnection(protocol.FileWrapper(t))
- self.failUnlessEqual(t.getvalue(),
- "An apple a day keeps the doctor away.\r\n")
-
- def testDiscard(self):
- """
- Test wire.Discard protocol.
- """
- t = StringIOWithoutClosing()
- a = wire.Discard()
- a.makeConnection(protocol.FileWrapper(t))
- a.dataReceived("hello")
- a.dataReceived("world")
- a.dataReceived("how")
- a.dataReceived("are")
- a.dataReceived("you")
- self.failUnlessEqual(t.getvalue(), "")
-
-class LineReceiverTestCase(unittest.TestCase):
- """
- Test LineReceiver, using the C{LineTester} wrapper.
- """
- buffer = '''\
-len 10
-
-0123456789len 5
-
-1234
-len 20
-foo 123
-
-0123456789
-012345678len 0
-foo 5
-
-1234567890123456789012345678901234567890123456789012345678901234567890
-len 1
-
-a'''
-
- output = ['len 10', '0123456789', 'len 5', '1234\n',
- 'len 20', 'foo 123', '0123456789\n012345678',
- 'len 0', 'foo 5', '', '67890', 'len 1', 'a']
-
- def testBuffer(self):
- """
- Test buffering for different packet size, checking received matches
- expected data.
- """
- for packet_size in range(1, 10):
- t = StringIOWithoutClosing()
- a = LineTester()
- a.makeConnection(protocol.FileWrapper(t))
- for i in range(len(self.buffer)/packet_size + 1):
- s = self.buffer[i*packet_size:(i+1)*packet_size]
- a.dataReceived(s)
- self.failUnlessEqual(self.output, a.received)
-
-
- pause_buf = 'twiddle1\ntwiddle2\npause\ntwiddle3\n'
-
- pause_output1 = ['twiddle1', 'twiddle2', 'pause']
- pause_output2 = pause_output1+['twiddle3']
-
- def testPausing(self):
- """
- Test pause inside data receiving. It uses fake clock to see if
- pausing/resuming work.
- """
- for packet_size in range(1, 10):
- t = StringIOWithoutClosing()
- clock = task.Clock()
- a = LineTester(clock)
- a.makeConnection(protocol.FileWrapper(t))
- for i in range(len(self.pause_buf)/packet_size + 1):
- s = self.pause_buf[i*packet_size:(i+1)*packet_size]
- a.dataReceived(s)
- self.failUnlessEqual(self.pause_output1, a.received)
- clock.advance(0)
- self.failUnlessEqual(self.pause_output2, a.received)
-
- rawpause_buf = 'twiddle1\ntwiddle2\nlen 5\nrawpause\n12345twiddle3\n'
-
- rawpause_output1 = ['twiddle1', 'twiddle2', 'len 5', 'rawpause', '']
- rawpause_output2 = ['twiddle1', 'twiddle2', 'len 5', 'rawpause', '12345',
- 'twiddle3']
-
- def testRawPausing(self):
- """
- Test pause inside raw date receiving.
- """
- for packet_size in range(1, 10):
- t = StringIOWithoutClosing()
- clock = task.Clock()
- a = LineTester(clock)
- a.makeConnection(protocol.FileWrapper(t))
- for i in range(len(self.rawpause_buf)/packet_size + 1):
- s = self.rawpause_buf[i*packet_size:(i+1)*packet_size]
- a.dataReceived(s)
- self.failUnlessEqual(self.rawpause_output1, a.received)
- clock.advance(0)
- self.failUnlessEqual(self.rawpause_output2, a.received)
-
- stop_buf = 'twiddle1\ntwiddle2\nstop\nmore\nstuff\n'
-
- stop_output = ['twiddle1', 'twiddle2', 'stop']
-
- def testStopProducing(self):
- """
- Test stop inside producing.
- """
- for packet_size in range(1, 10):
- t = StringIOWithoutClosing()
- a = LineTester()
- a.makeConnection(protocol.FileWrapper(t))
- for i in range(len(self.stop_buf)/packet_size + 1):
- s = self.stop_buf[i*packet_size:(i+1)*packet_size]
- a.dataReceived(s)
- self.failUnlessEqual(self.stop_output, a.received)
-
-
- def testLineReceiverAsProducer(self):
- """
- Test produce/unproduce in receiving.
- """
- a = LineTester()
- t = StringIOWithoutClosing()
- a.makeConnection(protocol.FileWrapper(t))
- a.dataReceived('produce\nhello world\nunproduce\ngoodbye\n')
- self.assertEquals(a.received,
- ['produce', 'hello world', 'unproduce', 'goodbye'])
-
-
-class LineOnlyReceiverTestCase(unittest.TestCase):
- """
- Test line only receiveer.
- """
- buffer = """foo
- bleakness
- desolation
- plastic forks
- """
-
- def testBuffer(self):
- """
- Test buffering over line protocol: data received should match buffer.
- """
- t = StringIOWithoutClosing()
- a = LineOnlyTester()
- a.makeConnection(protocol.FileWrapper(t))
- for c in self.buffer:
- a.dataReceived(c)
- self.failUnlessEqual(a.received, self.buffer.split('\n')[:-1])
-
- def testLineTooLong(self):
- """
- Test sending a line too long: it should close the connection.
- """
- t = StringIOWithoutClosing()
- a = LineOnlyTester()
- a.makeConnection(protocol.FileWrapper(t))
- res = a.dataReceived('x'*200)
- self.assertTrue(isinstance(res, error.ConnectionLost))
-
-
-
-class TestMixin:
-
- def connectionMade(self):
- self.received = []
-
- def stringReceived(self, s):
- self.received.append(s)
-
- MAX_LENGTH = 50
- closed = 0
-
- def connectionLost(self, reason):
- self.closed = 1
-
-
-class TestNetstring(TestMixin, basic.NetstringReceiver):
- pass
-
-
-class LPTestCaseMixin:
-
- illegalStrings = []
- protocol = None
-
- def getProtocol(self):
- t = StringIOWithoutClosing()
- a = self.protocol()
- a.makeConnection(protocol.FileWrapper(t))
- return a
-
- def test_illegal(self):
- """
- Assert that illegal strings cause the transport to be closed.
- """
- for s in self.illegalStrings:
- r = self.getProtocol()
- for c in s:
- r.dataReceived(c)
- self.assertEquals(r.transport.closed, 1)
-
-
-class NetstringReceiverTestCase(unittest.TestCase, LPTestCaseMixin):
-
- strings = ['hello', 'world', 'how', 'are', 'you123', ':today', "a"*515]
-
- illegalStrings = [
- '9999999999999999999999', 'abc', '4:abcde',
- '51:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab,',]
-
- protocol = TestNetstring
-
- def testBuffer(self):
- for packet_size in range(1, 10):
- t = StringIOWithoutClosing()
- a = TestNetstring()
- a.MAX_LENGTH = 699
- a.makeConnection(protocol.FileWrapper(t))
- for s in self.strings:
- a.sendString(s)
- out = t.getvalue()
- for i in range(len(out)/packet_size + 1):
- s = out[i*packet_size:(i+1)*packet_size]
- if s:
- a.dataReceived(s)
- self.assertEquals(a.received, self.strings)
-
-
-class IntNTestCaseMixin(LPTestCaseMixin):
- """
- TestCase mixin for int-prefixed protocols.
- """
-
- protocol = None
- strings = None
- illegalStrings = None
- partialStrings = None
-
- def test_receive(self):
- """
- Test receiving data find the same data send.
- """
- r = self.getProtocol()
- for s in self.strings:
- for c in struct.pack(self.protocol.structFormat,len(s)) + s:
- r.dataReceived(c)
- self.assertEquals(r.received, self.strings)
-
- def test_partial(self):
- """
- Send partial data, nothing should be definitely received.
- """
- for s in self.partialStrings:
- r = self.getProtocol()
- for c in s:
- r.dataReceived(c)
- self.assertEquals(r.received, [])
-
- def test_send(self):
- """
- Test sending data over protocol.
- """
- r = self.getProtocol()
- r.sendString("b" * 16)
- self.assertEquals(r.transport.file.getvalue(),
- struct.pack(self.protocol.structFormat, 16) + "b" * 16)
-
-
-class TestInt32(TestMixin, basic.Int32StringReceiver):
- """
- A L{basic.Int32StringReceiver} storing received strings in an array.
-
- @ivar received: array holding received strings.
- """
-
-
-class Int32TestCase(unittest.TestCase, IntNTestCaseMixin):
- """
- Test case for int32-prefixed protocol
- """
- protocol = TestInt32
- strings = ["a", "b" * 16]
- illegalStrings = ["\x10\x00\x00\x00aaaaaa"]
- partialStrings = ["\x00\x00\x00", "hello there", ""]
-
- def test_data(self):
- """
- Test specific behavior of the 32-bits length.
- """
- r = self.getProtocol()
- r.sendString("foo")
- self.assertEquals(r.transport.file.getvalue(), "\x00\x00\x00\x03foo")
- r.dataReceived("\x00\x00\x00\x04ubar")
- self.assertEquals(r.received, ["ubar"])
-
-
-class TestInt16(TestMixin, basic.Int16StringReceiver):
- """
- A L{basic.Int16StringReceiver} storing received strings in an array.
-
- @ivar received: array holding received strings.
- """
-
-
-class Int16TestCase(unittest.TestCase, IntNTestCaseMixin):
- """
- Test case for int16-prefixed protocol
- """
- protocol = TestInt16
- strings = ["a", "b" * 16]
- illegalStrings = ["\x10\x00aaaaaa"]
- partialStrings = ["\x00", "hello there", ""]
-
- def test_data(self):
- """
- Test specific behavior of the 16-bits length.
- """
- r = self.getProtocol()
- r.sendString("foo")
- self.assertEquals(r.transport.file.getvalue(), "\x00\x03foo")
- r.dataReceived("\x00\x04ubar")
- self.assertEquals(r.received, ["ubar"])
-
- def test_tooLongSend(self):
- """
- Send too much data: that should cause an error.
- """
- r = self.getProtocol()
- tooSend = "b" * (2**(r.prefixLength*8) + 1)
- self.assertRaises(AssertionError, r.sendString, tooSend)
-
-
-class TestInt8(TestMixin, basic.Int8StringReceiver):
- """
- A L{basic.Int8StringReceiver} storing received strings in an array.
-
- @ivar received: array holding received strings.
- """
-
-
-class Int8TestCase(unittest.TestCase, IntNTestCaseMixin):
- """
- Test case for int8-prefixed protocol
- """
- protocol = TestInt8
- strings = ["a", "b" * 16]
- illegalStrings = ["\x00\x00aaaaaa"]
- partialStrings = ["\x08", "dzadz", ""]
-
- def test_data(self):
- """
- Test specific behavior of the 8-bits length.
- """
- r = self.getProtocol()
- r.sendString("foo")
- self.assertEquals(r.transport.file.getvalue(), "\x03foo")
- r.dataReceived("\x04ubar")
- self.assertEquals(r.received, ["ubar"])
-
- def test_tooLongSend(self):
- """
- Send too much data: that should cause an error.
- """
- r = self.getProtocol()
- tooSend = "b" * (2**(r.prefixLength*8) + 1)
- self.assertRaises(AssertionError, r.sendString, tooSend)
-
-
-class OnlyProducerTransport(object):
- # Transport which isn't really a transport, just looks like one to
- # someone not looking very hard.
-
- paused = False
- disconnecting = False
-
- def __init__(self):
- self.data = []
-
- def pauseProducing(self):
- self.paused = True
-
- def resumeProducing(self):
- self.paused = False
-
- def write(self, bytes):
- self.data.append(bytes)
-
-
-class ConsumingProtocol(basic.LineReceiver):
- # Protocol that really, really doesn't want any more bytes.
-
- def lineReceived(self, line):
- self.transport.write(line)
- self.pauseProducing()
-
-
-class ProducerTestCase(unittest.TestCase):
- def testPauseResume(self):
- p = ConsumingProtocol()
- t = OnlyProducerTransport()
- p.makeConnection(t)
-
- p.dataReceived('hello, ')
- self.failIf(t.data)
- self.failIf(t.paused)
- self.failIf(p.paused)
-
- p.dataReceived('world\r\n')
-
- self.assertEquals(t.data, ['hello, world'])
- self.failUnless(t.paused)
- self.failUnless(p.paused)
-
- p.resumeProducing()
-
- self.failIf(t.paused)
- self.failIf(p.paused)
-
- p.dataReceived('hello\r\nworld\r\n')
-
- self.assertEquals(t.data, ['hello, world', 'hello'])
- self.failUnless(t.paused)
- self.failUnless(p.paused)
-
- p.resumeProducing()
- p.dataReceived('goodbye\r\n')
-
- self.assertEquals(t.data, ['hello, world', 'hello', 'world'])
- self.failUnless(t.paused)
- self.failUnless(p.paused)
-
- p.resumeProducing()
-
- self.assertEquals(t.data, ['hello, world', 'hello', 'world', 'goodbye'])
- self.failUnless(t.paused)
- self.failUnless(p.paused)
-
- p.resumeProducing()
-
- self.assertEquals(t.data, ['hello, world', 'hello', 'world', 'goodbye'])
- self.failIf(t.paused)
- self.failIf(p.paused)
-
-
-
-class TestableProxyClientFactory(portforward.ProxyClientFactory):
- """
- Test proxy client factory that keeps the last created protocol instance.
-
- @ivar protoInstance: the last instance of the protocol.
- @type protoInstance: L{portforward.ProxyClient}
- """
-
- def buildProtocol(self, addr):
- """
- Create the protocol instance and keeps track of it.
- """
- proto = portforward.ProxyClientFactory.buildProtocol(self, addr)
- self.protoInstance = proto
- return proto
-
-
-
-class TestableProxyFactory(portforward.ProxyFactory):
- """
- Test proxy factory that keeps the last created protocol instance.
-
- @ivar protoInstance: the last instance of the protocol.
- @type protoInstance: L{portforward.ProxyServer}
-
- @ivar clientFactoryInstance: client factory used by C{protoInstance} to
- create forward connections.
- @type clientFactoryInstance: L{TestableProxyClientFactory}
- """
-
- def buildProtocol(self, addr):
- """
- Create the protocol instance, keeps track of it, and makes it use
- C{clientFactoryInstance} as client factory.
- """
- proto = portforward.ProxyFactory.buildProtocol(self, addr)
- self.clientFactoryInstance = TestableProxyClientFactory()
- # Force the use of this specific instance
- proto.clientProtocolFactory = lambda: self.clientFactoryInstance
- self.protoInstance = proto
- return proto
-
-
-
-class Portforwarding(unittest.TestCase):
- """
- Test port forwarding.
- """
-
- def setUp(self):
- self.serverProtocol = wire.Echo()
- self.clientProtocol = protocol.Protocol()
- self.openPorts = []
-
-
- def tearDown(self):
- try:
- self.proxyServerFactory.protoInstance.transport.loseConnection()
- except AttributeError:
- pass
- try:
- self.proxyServerFactory.clientFactoryInstance.protoInstance.transport.loseConnection()
- except AttributeError:
- pass
- try:
- self.clientProtocol.transport.loseConnection()
- except AttributeError:
- pass
- try:
- self.serverProtocol.transport.loseConnection()
- except AttributeError:
- pass
- return defer.gatherResults(
- [defer.maybeDeferred(p.stopListening) for p in self.openPorts])
-
-
- def test_portforward(self):
- """
- Test port forwarding through Echo protocol.
- """
- realServerFactory = protocol.ServerFactory()
- realServerFactory.protocol = lambda: self.serverProtocol
- realServerPort = reactor.listenTCP(0, realServerFactory,
- interface='127.0.0.1')
- self.openPorts.append(realServerPort)
- self.proxyServerFactory = TestableProxyFactory('127.0.0.1',
- realServerPort.getHost().port)
- proxyServerPort = reactor.listenTCP(0, self.proxyServerFactory,
- interface='127.0.0.1')
- self.openPorts.append(proxyServerPort)
-
- nBytes = 1000
- received = []
- d = defer.Deferred()
- def testDataReceived(data):
- received.extend(data)
- if len(received) >= nBytes:
- self.assertEquals(''.join(received), 'x' * nBytes)
- d.callback(None)
- self.clientProtocol.dataReceived = testDataReceived
-
- def testConnectionMade():
- self.clientProtocol.transport.write('x' * nBytes)
- self.clientProtocol.connectionMade = testConnectionMade
-
- clientFactory = protocol.ClientFactory()
- clientFactory.protocol = lambda: self.clientProtocol
-
- reactor.connectTCP(
- '127.0.0.1', proxyServerPort.getHost().port, clientFactory)
-
- return d
-
-
-
-class StringTransportTestCase(unittest.TestCase):
- """
- Test L{proto_helpers.StringTransport} helper behaviour.
- """
-
- def test_noUnicode(self):
- """
- Test that L{proto_helpers.StringTransport} doesn't accept unicode data.
- """
- s = proto_helpers.StringTransport()
- self.assertRaises(TypeError, s.write, u'foo')
« no previous file with comments | « third_party/twisted_8_1/twisted/test/test_process.py ('k') | third_party/twisted_8_1/twisted/test/test_randbytes.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698