1
# -*- twisted.conch.test.test_mixin -*-
2
# Copyright (c) 2001-2004 Twisted Matrix Laboratories.
3
# See LICENSE for details.
7
from twisted.internet import reactor, protocol
9
from twisted.trial import unittest
10
from twisted.test.proto_helpers import StringTransport
12
from twisted.conch import mixin
14
class BufferingTest(unittest.TestCase):
15
def testBuffering(self):
16
p = mixin.BufferingMixin()
17
t = p.transport = StringTransport()
19
L = ['foo', 'bar', 'baz', 'quux']
23
self.assertEquals(t.value(), '')
30
self.assertEquals(t.value(), ''.join(L))
32
class BufferingProtocol(protocol.Protocol, mixin.BufferingMixin):
35
class UnbufferingProtocol(protocol.Protocol):
36
def connectionMade(self):
37
self.write = self.transport.write
38
self.flush = lambda: None
40
class BufferingTiming(unittest.TestCase):
42
f = protocol.ServerFactory()
43
f.protocol = protocol.Protocol
44
self.server = reactor.listenTCP(0, f)
46
f2 = protocol.ClientCreator(reactor, BufferingProtocol)
47
self.buffered = f2.connectTCP('127.0.0.1', self.server.getHost().port)
49
f3 = protocol.ClientCreator(reactor, UnbufferingProtocol)
50
self.unbuffered = f3.connectTCP('127.0.0.1', self.server.getHost().port)
52
def benchmarkBuffering(self, clock=time.clock, sleep=time.sleep):
53
bufp = unittest.deferredResult(self.buffered)
54
unbufp = unittest.deferredResult(self.unbuffered)
59
thousand = hundred * 10
61
for p in bufp, unbufp:
63
iteration = xrange(100)
71
print 'Took', end - start