]> git.mxchange.org Git - quix0rs-apt-p2p.git/blobdiff - test_airhook.py
Remove all the airhook stuff.
[quix0rs-apt-p2p.git] / test_airhook.py
diff --git a/test_airhook.py b/test_airhook.py
deleted file mode 100644 (file)
index 8ad6382..0000000
+++ /dev/null
@@ -1,768 +0,0 @@
-## Copyright 2002-2003 Andrew Loewenstern, All Rights Reserved
-# see LICENSE.txt for license information
-
-import unittest
-from airhook import *
-from random import uniform as rand
-from cStringIO import StringIO
-
-
-if __name__ =="__main__":
-    tests = unittest.defaultTestLoader.loadTestsFromNames(['test_airhook'])
-    result = unittest.TextTestRunner().run(tests)
-
-class Echo(protocol.Protocol):
-    def dataReceived(self, data):
-        self.transport.write(data)
-        
-class Noisy(protocol.Protocol):
-    def dataReceived(self, data):
-        print `data`
-
-class Receiver(protocol.Protocol):
-    def __init__(self):
-        self.q = []
-    def dataReceived(self, data):
-        self.q.append(data)
-
-class StreamReceiver(protocol.Protocol):
-    def __init__(self):
-        self.buf = ""
-    def dataReceived(self, data):
-        self.buf += data
-                
-def makeEcho(port):
-    f = protocol.Factory(); f.protocol = Echo
-    return listenAirhookStream(port, f)
-def makeNoisy(port):
-    f = protocol.Factory(); f.protocol = Noisy
-    return listenAirhookStream(port, f)
-def makeReceiver(port):
-    f = protocol.Factory(); f.protocol = Receiver
-    return listenAirhookStream(port, f)
-def makeStreamReceiver(port):
-    f = protocol.Factory(); f.protocol = StreamReceiver
-    return listenAirhookStream(port, f)
-
-class DummyTransport:
-    def __init__(self):
-        self.s = StringIO()
-    def write(self, data, addr):
-        self.s.write(data)
-    def seek(self, num):
-        return self.s.seek(num)
-    def read(self):
-        return self.s.read()
-        
-def test_createStartPacket():
-    flags = 0 | FLAG_AIRHOOK | FLAG_SESSION 
-    packet = chr(flags) + "\xff" + "\x00\x00" + pack("!L", long(rand(0, 2**32)))
-    return packet
-
-def test_createReply(session, observed, obseq, seq):
-    flags = 0 | FLAG_AIRHOOK | FLAG_SESSION | FLAG_OBSERVED
-    packet = chr(flags) + pack("!H", seq)[1] + pack("!H", obseq + 1) + pack("!L", session) + pack("!L", observed)
-    return packet
-
-def pscope(msg, noisy=0):
-    # packet scope
-    str = ""
-    p = AirhookPacket(msg)
-    str += "oseq: %s  seq: %s " %  (p.oseq, p.seq)
-    if noisy:
-        str += "packet: %s  \n" % (`p.datagram`)
-    flags = p.flags
-    str += "flags: "
-    if flags & FLAG_SESSION:
-        str += "FLAG_SESSION "
-    if flags & FLAG_OBSERVED:
-        str += "FLAG_OBSERVED "
-    if flags & FLAG_MISSED:
-        str += "FLAG_MISSED "
-    if flags & FLAG_NEXT:
-        str += "FLAG_NEXT "
-    str += "\n"
-    
-    if p.observed != None:
-        str += "OBSERVED: %s\n" % p.observed
-    if p.session != None:
-        str += "SESSION: %s\n" % p.session
-    if p.next != None:
-        str += "NEXT: %s\n" % p.next
-    if p.missed:
-        if noisy:
-            str += "MISSED: " + `p.missed`
-        else:
-            str += "MISSED: " + `len(p.missed)`
-        str += "\n"
-    if p.msgs:
-        if noisy:
-            str += "MSGS: " + `p.msgs` + "\n"
-        else:
-            str += "MSGS: <%s> " % len(p.msgs)
-        str += "\n"
-    return str
-            
-# testing function
-def swap(a, dir="", noisy=0):
-    msg = ""
-    while not msg:
-        a.transport.seek(0)
-        msg= a.transport.read()
-        a.transport = DummyTransport()
-        if not msg:
-            a.sendNext()
-    if noisy:
-                print 6*dir + " " + pscope(msg)
-    return msg
-    
-def runTillEmpty(a, b, prob=1.0, noisy=0):
-    msga = ''
-    msgb = ''
-    while a.omsgq or b.omsgq or a.weMissed or b.weMissed or ord(msga[0]) & (FLAG_NEXT | FLAG_MISSED) or ord(msgb[0]) & (FLAG_NEXT | FLAG_MISSED):
-        if rand(0,1) < prob:
-            msga = swap(a, '>', noisy)
-            b.datagramReceived(msga)
-        else:
-            msga = swap(a, '>', 0)
-        if rand(0,1) < prob:
-            msgb = swap(b, '<', noisy)
-            a.datagramReceived(msgb)
-        else:
-            msgb = swap(b, '<', 0)
-
-class UstrTests(unittest.TestCase):
-    def u(self, seq):
-        return ustr("%s%s" % (pack("!H", seq), 'foobar'))
-        
-    def testLT(self):
-        self.failUnless(self.u(0) < self.u(1))
-        self.failUnless(self.u(1) < self.u(2))
-        self.failUnless(self.u(2**16 - 1) < self.u(0))
-        self.failUnless(self.u(2**16 - 1) < self.u(1))
-        
-        self.failIf(self.u(1) < self.u(0))
-        self.failIf(self.u(2) < self.u(1))
-        self.failIf(self.u(0) < self.u(2**16 - 1))
-        self.failIf(self.u(1) < self.u(2**16 - 1))
-        
-    def testLTE(self):
-        self.failUnless(self.u(0) <= self.u(1))
-        self.failUnless(self.u(1) <= self.u(2))
-        self.failUnless(self.u(2) <= self.u(2))
-        self.failUnless(self.u(2**16 - 1) <= self.u(0))
-        self.failUnless(self.u(2**16 - 1) <= self.u(1))
-        self.failUnless(self.u(2**16 - 1) <= self.u(2**16))
-
-        self.failIf(self.u(1) <= self.u(0))
-        self.failIf(self.u(2) <= self.u(1))
-        self.failIf(self.u(0) <= self.u(2**16 - 1))
-        self.failIf(self.u(1) <= self.u(2**16 - 1))
-        
-    def testGT(self):
-        self.failUnless(self.u(1) > self.u(0))
-        self.failUnless(self.u(2) > self.u(1))
-        self.failUnless(self.u(0) > self.u(2**16 - 1))
-        self.failUnless(self.u(1) > self.u(2**16 - 1))
-
-        self.failIf(self.u(0) > self.u(1))
-        self.failIf(self.u(1) > self.u(2))
-        self.failIf(self.u(2**16 - 1) > self.u(0))
-        self.failIf(self.u(2**16 - 1) > self.u(1))
-
-    def testGTE(self):
-        self.failUnless(self.u(1) >= self.u(0))
-        self.failUnless(self.u(2) >= self.u(1))
-        self.failUnless(self.u(2) >= self.u(2))
-        self.failUnless(self.u(0) >= self.u(0))
-        self.failUnless(self.u(1) >= self.u(1))
-        self.failUnless(self.u(2**16 - 1) >= self.u(2**16 - 1))
-
-        self.failIf(self.u(0) >= self.u(1))
-        self.failIf(self.u(1) >= self.u(2))
-        self.failIf(self.u(2**16 - 1) >= self.u(0))
-        self.failIf(self.u(2**16 - 1) >= self.u(1))
-        
-    def testEQ(self):
-        self.failUnless(self.u(0) == self.u(0))
-        self.failUnless(self.u(1) == self.u(1))
-        self.failUnless(self.u(2**16 - 1) == self.u(2**16-1))
-    
-        self.failIf(self.u(0) == self.u(1))
-        self.failIf(self.u(1) == self.u(0))
-        self.failIf(self.u(2**16 - 1) == self.u(0))
-
-    def testNEQ(self):
-        self.failUnless(self.u(1) != self.u(0))
-        self.failUnless(self.u(2) != self.u(1))
-        self.failIf(self.u(2) != self.u(2))
-        self.failIf(self.u(0) != self.u(0))
-        self.failIf(self.u(1) != self.u(1))
-        self.failIf(self.u(2**16 - 1) != self.u(2**16 - 1))
-
-
-class SimpleTest(unittest.TestCase):
-    def setUp(self):
-        self.noisy = 0
-        self.a = AirhookConnection()
-        self.a.makeConnection(DummyTransport())
-        self.a.addr = ('127.0.0.1', 4444)
-        self.b = AirhookConnection()
-        self.b.makeConnection(DummyTransport())
-        self.b.addr = ('127.0.0.1', 4444)
-
-    def testReallySimple(self):
-        # connect to eachother and send a few packets, observe sequence incrementing
-        a = self.a
-        b = self.b
-        self.assertEqual(a.state, pending)
-        self.assertEqual(b.state, pending)
-        self.assertEqual(a.outSeq, 0)
-        self.assertEqual(b.outSeq, 0)
-        self.assertEqual(a.obSeq, 0)
-        self.assertEqual(b.obSeq, 0)
-
-        msg = swap(a, '>', self.noisy)         
-        self.assertEqual(a.state, sent)
-        self.assertEqual(a.outSeq, 1)
-        self.assertEqual(a.obSeq, 0)
-
-        b.datagramReceived(msg)
-        self.assertEqual(b.inSeq, 0)
-        self.assertEqual(b.obSeq, 0)
-        msg = swap(b, '<', self.noisy)         
-        self.assertEqual(b.state, sent)
-        self.assertEqual(b.outSeq, 1)
-
-        a.datagramReceived(msg)
-        self.assertEqual(a.state, confirmed)
-        self.assertEqual(a.obSeq, 0)
-        self.assertEqual(a.inSeq, 0)
-        msg = swap(a, '>', self.noisy)         
-        self.assertEqual(a.outSeq, 2)
-
-        b.datagramReceived(msg)
-        self.assertEqual(b.state, confirmed)
-        self.assertEqual(b.obSeq, 0)
-        self.assertEqual(b.inSeq, 1)
-        msg = swap(b, '<', self.noisy)         
-        self.assertEqual(b.outSeq, 2)
-
-        a.datagramReceived(msg)
-        self.assertEqual(a.outSeq, 2)
-        self.assertEqual(a.inSeq, 1)
-        self.assertEqual(a.obSeq, 1)
-
-class BasicTests(unittest.TestCase):
-    def setUp(self):
-        self.noisy = 0
-        self.a = AirhookConnection()
-        self.a.makeConnection(DummyTransport())
-        self.a.addr = ('127.0.0.1', 4444)
-        self.b = AirhookConnection()
-        self.b.makeConnection(DummyTransport())
-        self.b.addr = ('127.0.0.1', 4444)
-        self.a.protocol = Receiver()
-        self.b.protocol = Receiver()
-
-    def testSimple(self):
-        a = self.a
-        b = self.b
-        
-        TESTMSG = "Howdy, Y'All!"
-        a.omsgq.append(TESTMSG)
-        a.sendNext()
-        msg = swap(a, '>', self.noisy)
-        
-        b.datagramReceived(msg)
-        msg = swap(b, '<', self.noisy)
-        a.datagramReceived(msg)
-        msg = swap(a, '>', self.noisy)
-        b.datagramReceived(msg)
-        
-        self.assertEqual(b.inMsg, 1)
-        self.assertEqual(len(b.protocol.q), 1)
-        self.assertEqual(b.protocol.q[0], TESTMSG)
-        
-        msg = swap(b, '<', self.noisy)
-        
-        a.datagramReceived(msg)
-        msg = swap(a, '>', self.noisy)
-        b.datagramReceived(msg)
-        
-    def testLostFirst(self):
-        a = self.a
-        b = self.b
-        
-        TESTMSG = "Howdy, Y'All!"
-        TESTMSG2 = "Yee Haw"
-        
-        a.omsgq.append(TESTMSG)
-        msg = swap(a, '>', self.noisy)
-        b.datagramReceived(msg)
-        msg = swap(b, '<', self.noisy)
-        self.assertEqual(b.state, sent)
-        a.datagramReceived(msg)
-        msg = swap(a, '>', self.noisy)
-
-        del(msg) # dropping first message
-        
-        a.omsgq.append(TESTMSG2)
-        msg = swap(a, '>', self.noisy)
-    
-        b.datagramReceived(msg)
-        self.assertEqual(b.state, confirmed)
-        self.assertEqual(len(b.protocol.q), 1)
-        self.assertEqual(b.protocol.q[0], TESTMSG2)
-        self.assertEqual(b.weMissed, [(1, 0)])
-        msg = swap(b, '<', self.noisy)
-        
-        a.datagramReceived(msg)
-                                
-        msg = swap(a, '>', self.noisy)
-        
-        b.datagramReceived(msg)
-        self.assertEqual(len(b.protocol.q), 2)
-        b.protocol.q.sort()
-        l = [TESTMSG2, TESTMSG]
-        l.sort()
-        self.assertEqual(b.protocol.q,l)
-        
-        msg = swap(b, '<', self.noisy)
-        
-        a.datagramReceived(msg)
-        msg = swap(a, '>', self.noisy)
-        b.datagramReceived(msg)
-        
-        msg = swap(b, '<', self.noisy)
-        a.datagramReceived(msg)
-        msg = swap(a, '>', self.noisy)
-        b.datagramReceived(msg)
-
-        msg = swap(b, '<', self.noisy)
-        a.datagramReceived(msg)
-        msg = swap(a, '>', self.noisy)
-
-        self.assertEqual(len(b.protocol.q), 2)
-        b.protocol.q.sort()
-        l = [TESTMSG2, TESTMSG]
-        l.sort()
-        self.assertEqual(b.protocol.q,l)
-
-    def testLostSecond(self):
-        a = self.a
-        b = self.b
-        
-        TESTMSG = "Howdy, Y'All!"
-        TESTMSG2 = "Yee Haw"
-        
-        a.omsgq.append(TESTMSG)
-        msg = swap(a, '>', self.noisy)
-        b.datagramReceived(msg)
-        msg = swap(b, '<', self.noisy)
-        self.assertEqual(b.state, sent)
-        a.datagramReceived(msg)
-        msg = swap(a, '>', self.noisy)
-
-        a.omsgq.append(TESTMSG2)
-        msg2 = swap(a, '>', self.noisy)
-        del(msg2) # dropping second message
-
-        assert(a.outMsgs[1] != None)
-
-        b.datagramReceived(msg)
-        self.assertEqual(b.state, confirmed)
-        self.assertEqual(len(b.protocol.q), 1)
-        self.assertEqual(b.protocol.q[0], TESTMSG)
-        self.assertEqual(b.inMsg, 1)
-        self.assertEqual(b.weMissed, [])
-        msg = swap(b, '<', self.noisy)
-        
-        a.datagramReceived(msg)
-        assert(a.outMsgs[1] != None)
-        msg = swap(a, '>', self.noisy)
-
-        b.datagramReceived(msg)
-        self.assertEqual(b.state, confirmed)
-        self.assertEqual(len(b.protocol.q), 1)
-        self.assertEqual(b.protocol.q[0], TESTMSG)
-        self.assertEqual(b.weMissed, [(2, 1)])
-        msg = swap(b, '<', self.noisy)
-
-        a.datagramReceived(msg)
-        msg = swap(a, '>', self.noisy)
-
-        b.datagramReceived(msg)
-        self.assertEqual(len(b.protocol.q), 2)
-        b.protocol.q.sort()
-        l = [TESTMSG2, TESTMSG]
-        l.sort()
-        self.assertEqual(b.protocol.q,l)
-        
-        msg = swap(b, '<', self.noisy)
-
-        a.datagramReceived(msg)
-        msg = swap(a, '>', self.noisy)
-
-        b.datagramReceived(msg)
-        
-        msg = swap(b, '<', self.noisy)
-
-        a.datagramReceived(msg)
-        msg = swap(a, '>', self.noisy)
-
-        b.datagramReceived(msg)
-
-        msg = swap(b, '<', self.noisy)
-
-        a.datagramReceived(msg)
-
-
-        msg = swap(a, '>', self.noisy)
-
-        self.assertEqual(len(b.protocol.q), 2)
-        b.protocol.q.sort()
-        l = [TESTMSG2, TESTMSG]
-        l.sort()
-        self.assertEqual(b.protocol.q,l)
-
-    def testDoubleDouble(self):
-        a = self.a
-        b = self.b
-        
-        TESTMSGA = "Howdy, Y'All!"
-        TESTMSGB = "Yee Haw"
-        TESTMSGC = "FOO BAR"
-        TESTMSGD = "WING WANG"
-        
-        a.omsgq.append(TESTMSGA)
-        a.omsgq.append(TESTMSGB)
-
-        b.omsgq.append(TESTMSGC)
-        b.omsgq.append(TESTMSGD)
-        
-        
-        msg = swap(a, '>', self.noisy)
-            
-
-        b.datagramReceived(msg)
-        
-        msg = swap(b, '<', self.noisy)
-        self.assertEqual(b.state, sent)
-        a.datagramReceived(msg)
-
-        msg = swap(a, '>', self.noisy)
-
-        b.datagramReceived(msg)
-        self.assertEqual(len(b.protocol.q), 2)
-        l = [TESTMSGA, TESTMSGB]
-        l.sort();b.protocol.q.sort()
-        self.assertEqual(b.protocol.q, l)
-        self.assertEqual(b.inMsg, 2)
-
-        msg = swap(b, '<', self.noisy)
-        a.datagramReceived(msg)
-        
-        self.assertEqual(len(a.protocol.q), 2)
-        l = [TESTMSGC, TESTMSGD]
-        l.sort();a.protocol.q.sort()
-        self.assertEqual(a.protocol.q, l)
-        self.assertEqual(a.inMsg, 2)
-
-    def testDoubleDoubleProb(self, prob=0.25):
-        a = self.a
-        b = self.b
-
-        TESTMSGA = "Howdy, Y'All!"
-        TESTMSGB = "Yee Haw"
-        TESTMSGC = "FOO BAR"
-        TESTMSGD = "WING WANG"
-        
-        a.omsgq.append(TESTMSGA)
-        a.omsgq.append(TESTMSGB)
-
-        b.omsgq.append(TESTMSGC)
-        b.omsgq.append(TESTMSGD)
-        
-        runTillEmpty(a, b, prob, self.noisy)
-        
-        self.assertEqual(a.state, confirmed)
-        self.assertEqual(b.state, confirmed)
-        self.assertEqual(len(b.protocol.q), 2)
-        l = [TESTMSGA, TESTMSGB]
-        l.sort();b.protocol.q.sort()
-        self.assertEqual(b.protocol.q, l)
-                
-        self.assertEqual(len(a.protocol.q), 2)
-        l = [TESTMSGC, TESTMSGD]
-        l.sort();a.protocol.q.sort()
-        self.assertEqual(a.protocol.q, l)
-
-    def testOneWayBlast(self, num = 2**12):
-        a = self.a
-        b = self.b
-        
-        import sha
-        
-        
-        for i in xrange(num):
-            a.omsgq.append(sha.sha(`i`).digest())
-        runTillEmpty(a, b, noisy=self.noisy)
-
-        self.assertEqual(len(b.protocol.q), num)
-        
-    def testTwoWayBlast(self, num = 2**12, prob=0.5):
-        a = self.a
-        b = self.b
-
-        import sha
-        
-        
-        for i in xrange(num):
-            a.omsgq.append(sha.sha('a' + `i`).digest())
-            b.omsgq.append(sha.sha('b' + `i`).digest())
-            
-        runTillEmpty(a, b, prob, self.noisy)                    
-
-
-        self.assertEqual(len(a.protocol.q), num)
-        self.assertEqual(len(b.protocol.q), num)
-        
-    def testLimitMessageNumbers(self):
-        a = self.a
-        b = self.b
-        import sha
-
-        msg = swap(a, noisy=self.noisy)
-        b.datagramReceived(msg)
-
-        msg = swap(b, noisy=self.noisy)
-        a.datagramReceived(msg)
-        
-        
-        for i in range(5000):
-            a.omsgq.append(sha.sha('a' + 'i').digest())
-        
-        for i in range(5000 / 255):
-            msg = swap(a, noisy=self.noisy)
-            self.assertEqual(a.obSeq, 0)
-        self.assertEqual(a.next, 255)
-        self.assertEqual(a.outMsgNums[(a.outSeq-1) % 256], 254)
-
-    def testConnectionReset(self):
-        self.testTwoWayBlast()
-        self.b.protocol.q = []
-        a = self.a
-        b = self.b
-        msg = swap(a, noisy=self.noisy)
-        b.datagramReceived(msg)
-
-        msg = swap(b, noisy=self.noisy)
-        a.datagramReceived(msg)
-
-        a.omsgq.append("TESTING")
-        msg = swap(a, noisy=self.noisy)
-        b.datagramReceived(msg)
-
-        msg = swap(b, noisy=self.noisy)
-        a.datagramReceived(msg)
-
-        self.assertEqual(b.protocol.q[0], "TESTING")
-        self.assertEqual(b.state, confirmed)
-        
-        self.a = AirhookConnection()
-        self.a.makeConnection(DummyTransport())
-        self.a.addr = ('127.0.0.1', 4444)
-        a = self.a
-        
-        a.omsgq.append("TESTING2")
-        msg = swap(a, noisy=self.noisy)
-        b.datagramReceived(msg)
-
-        msg = swap(b, noisy=self.noisy)
-        a.datagramReceived(msg)
-        
-        self.assertEqual(len(b.protocol.q), 1)
-        msg = swap(a, noisy=self.noisy)
-        b.datagramReceived(msg)
-
-        msg = swap(b, noisy=self.noisy)
-        a.datagramReceived(msg)
-
-        self.assertEqual(len(b.protocol.q), 2)
-        self.assertEqual(b.protocol.q[1], "TESTING2")
-
-    def testRecipientReset(self):
-        self.testTwoWayBlast()
-        self.b.protocol.q = []
-        self.noisy = 0
-        a = self.a
-        b = self.b
-        msg = swap(a, noisy=self.noisy)
-        b.datagramReceived(msg)
-
-        msg = swap(b, noisy=self.noisy)
-        a.datagramReceived(msg)
-
-        a.omsgq.append("TESTING")
-        msg = swap(a, noisy=self.noisy)
-        b.datagramReceived(msg)
-
-        msg = swap(b, noisy=self.noisy)
-        a.datagramReceived(msg)
-
-        self.assertEqual(b.protocol.q[0], "TESTING")
-        self.assertEqual(b.state, confirmed)
-        
-        self.b = AirhookConnection()
-        self.b.makeConnection(DummyTransport())
-        self.b.protocol = Receiver()
-        self.b.addr = ('127.0.0.1', 4444)
-        b = self.b
-        
-        msg = swap(a, noisy=self.noisy)
-        b.datagramReceived(msg)
-
-        msg = swap(b, noisy=self.noisy)
-        a.datagramReceived(msg)
-        
-        a.omsgq.append("TESTING2")
-        self.assertEqual(len(b.protocol.q), 0)
-        msg = swap(a, noisy=self.noisy)
-        b.datagramReceived(msg)
-
-        msg = swap(b, noisy=self.noisy)
-        a.datagramReceived(msg)
-
-        msg = swap(a, noisy=self.noisy)
-        b.datagramReceived(msg)
-
-        msg = swap(b, noisy=self.noisy)
-        a.datagramReceived(msg)
-
-        self.assertEqual(len(b.protocol.q), 1)
-        self.assertEqual(b.protocol.q[0], "TESTING2")
-
-        
-class StreamTests(unittest.TestCase):
-    def setUp(self):
-        self.noisy = 0
-        self.a = StreamConnection()
-        self.a.makeConnection(DummyTransport())
-        self.a.addr = ('127.0.0.1', 4444)
-        self.b = StreamConnection()
-        self.b.makeConnection(DummyTransport())
-        self.b.addr = ('127.0.0.1', 4444)
-        self.a.protocol = StreamReceiver()
-        self.b.protocol = StreamReceiver()
-
-    def testStreamSimple(self, num = 2**12, prob=1.0):
-        f = open('/dev/urandom', 'r')
-        a = self.a
-        b = self.b
-
-        MSGA = f.read(num)
-        MSGB = f.read(num)
-        self.a.write(MSGA)
-        self.b.write(MSGB)
-        
-        runTillEmpty(a, b, prob, self.noisy)
-                
-        self.assertEqual(len(a.protocol.buf), len(MSGB))
-        self.assertEqual(len(b.protocol.buf), len(MSGA))
-        self.assertEqual(a.protocol.buf, MSGB)
-        self.assertEqual(b.protocol.buf, MSGA)
-
-    def testStreamLossy(self, num = 2**12, prob=0.5):
-        self.testStreamSimple(num, prob)
-
-class SimpleReactor(unittest.TestCase):
-    def setUp(self):
-        self.noisy = 0
-        self.a = makeReceiver(2020)
-        self.b = makeReceiver(2021)
-        self.ac = self.a.connectionForAddr(('127.0.0.1', 2021))
-        self.bc = self.b.connectionForAddr(('127.0.0.1', 2020))
-        self.ac.noisy = self.noisy
-        self.bc.noisy = self.noisy
-    def testSimple(self):
-        msg = "Testing 1, 2, 3"
-        self.ac.write(msg)
-        reactor.iterate()
-        reactor.iterate()
-        reactor.iterate()
-        self.assertEqual(self.bc.state, confirmed)
-        self.assertEqual(self.bc.protocol.q, [msg])
-
-class SimpleReactorEcho(unittest.TestCase):
-    def setUp(self):
-        self.noisy = 0
-        self.a = makeReceiver(2022)
-        self.b = makeEcho(2023)
-        self.ac = self.a.connectionForAddr(('127.0.0.1', 2023))
-        self.bc = self.b.connectionForAddr(('127.0.0.1', 2022))
-    def testSimple(self):
-        msg = "Testing 1, 2, 3"
-        self.ac.write(msg)
-        reactor.iterate()
-        reactor.iterate()
-        reactor.iterate()
-        reactor.iterate()
-        self.assertEqual(self.ac.protocol.q, [msg])
-        reactor.iterate()
-        reactor.iterate()
-        reactor.iterate()
-        self.assertEqual(self.ac.protocol.q, [msg])
-
-
-class SimpleReactorStream(unittest.TestCase):
-    def setUp(self):
-        self.noisy = 0
-        self.a = makeStreamReceiver(2024)
-        self.b = makeStreamReceiver(2025)
-        self.ac = self.a.connectionForAddr(('127.0.0.1', 2025))
-        self.bc = self.b.connectionForAddr(('127.0.0.1', 2024))
-    def testSimple(self):
-        msg = "Testing 1, 2, 3"
-        self.ac.write(msg)
-        reactor.iterate()
-        reactor.iterate()
-        reactor.iterate()
-        self.assertEqual(self.bc.protocol.buf, msg)
-        
-class SimpleReactorStreamBig(unittest.TestCase):
-    def setUp(self):
-        self.noisy = 0
-        self.a = makeStreamReceiver(2026)
-        self.b = makeStreamReceiver(2027)
-        self.ac = self.a.connectionForAddr(('127.0.0.1', 2027))
-        self.bc = self.b.connectionForAddr(('127.0.0.1', 2026))
-    def testBig(self):
-        msg = open('/dev/urandom').read(4096)
-        self.ac.write(msg)
-        reactor.iterate()
-        reactor.iterate()
-        reactor.iterate()
-        reactor.iterate()
-        reactor.iterate()
-        reactor.iterate()
-        reactor.iterate()
-        self.assertEqual(self.bc.protocol.buf, msg)
-
-class EchoReactorStreamBig(unittest.TestCase):
-    def setUp(self):
-        self.noisy = 0
-        self.a = makeStreamReceiver(2028)
-        self.b = makeEcho(2029)
-        self.ac = self.a.connectionForAddr(('127.0.0.1', 2029))
-    def testBig(self):
-        msg = open('/dev/urandom').read(256)
-        self.ac.write(msg)
-        reactor.iterate()
-        reactor.iterate()
-        reactor.iterate()
-        reactor.iterate()
-        reactor.iterate()
-        self.assertEqual(self.ac.protocol.buf, msg)
-
-