]> git.mxchange.org Git - quix0rs-apt-p2p.git/blobdiff - test_krpc.py
Remove all the airhook stuff.
[quix0rs-apt-p2p.git] / test_krpc.py
index 5f2c5b74fd9fa0ab94c5c8657ed33c63ac2982e9..c068408e82d0c3711f19f55b2e796c80bb27dda0 100644 (file)
@@ -1,17 +1,22 @@
+## Copyright 2002-2003 Andrew Loewenstern, All Rights Reserved
+# see LICENSE.txt for license information
+
 from unittest import *
 from krpc import *
-from airhook import *
+
+KRPC.noisy = 0
 
 import sys
 
 if __name__ =="__main__":
-    tests = unittest.defaultTestLoader.loadTestsFromNames([sys.argv[0][:-3]])
-    result = unittest.TextTestRunner().run(tests)
+    tests = defaultTestLoader.loadTestsFromNames([sys.argv[0][:-3]])
+    result = TextTestRunner().run(tests)
 
 
 def connectionForAddr(host, port):
     return host
     
+
 class Receiver(protocol.Factory):
     protocol = KRPC
     def __init__(self):
@@ -21,53 +26,49 @@ class Receiver(protocol.Factory):
     def krpc_echo(self, msg, _krpc_sender):
         return msg
 
-class SimpleTest(TestCase):
+def make(port):
+    af = Receiver()
+    a = hostbroker(af)
+    a.protocol = KRPC
+    p = reactor.listenUDP(port, a)
+    return af, a, p
+    
+class KRPCTests(TestCase):
     def setUp(self):
         self.noisy = 0
-        
-        self.af = Receiver()
-        self.bf = Receiver()        
-        self.a = listenAirhookStream(4040, self.af)
-        self.b = listenAirhookStream(4041, self.bf)
-        
+        self.af, self.a, self.ap = make(1180)
+        self.bf, self.b, self.bp = make(1181)
+
+    def tearDown(self):
+        self.ap.stopListening()
+        self.bp.stopListening()
+        reactor.iterate()
+        reactor.iterate()
+
     def testSimpleMessage(self):
-        self.noisy = 1
-        self.a.connectionForAddr(('127.0.0.1', 4041)).protocol.sendRequest('store', {'msg' : "This is a test."})
+        self.noisy = 0
+        self.a.connectionForAddr(('127.0.0.1', 1181)).sendRequest('store', {'msg' : "This is a test."})
         reactor.iterate()
         reactor.iterate()
         reactor.iterate()
         self.assertEqual(self.bf.buf, ["This is a test."])
 
-class SimpleTest(TestCase):
-    def setUp(self):
-        self.noisy = 0
-        
-        self.af = Receiver()
-        self.bf = Receiver()        
-        self.a = listenAirhookStream(4050, self.af)
-        self.b = listenAirhookStream(4051, self.bf)
-        
-    def testSimpleMessage(self):
-        self.noisy = 1
-        self.a.connectionForAddr(('127.0.0.1', 4051)).protocol.sendRequest('store', {'msg' : "This is a test."})
+    def testMessageBlast(self):
+        self.a.connectionForAddr(('127.0.0.1', 1181)).sendRequest('store', {'msg' : "This is a test."})
         reactor.iterate()
         reactor.iterate()
         reactor.iterate()
         self.assertEqual(self.bf.buf, ["This is a test."])
-
-class EchoTest(TestCase):
-    def setUp(self):
-        self.noisy = 0
-        self.msg = None
-        
-        self.af = Receiver()
-        self.bf = Receiver()        
-        self.a = listenAirhookStream(4042, self.af)
-        self.b = listenAirhookStream(4043, self.bf)
+        self.bf.buf = []
         
+        for i in range(100):
+            self.a.connectionForAddr(('127.0.0.1', 1181)).sendRequest('store', {'msg' : "This is a test."})
+            reactor.iterate()
+            #self.bf.buf = []
+        self.assertEqual(self.bf.buf, ["This is a test."] * 100)
+
     def testEcho(self):
-        self.noisy = 1
-        df = self.a.connectionForAddr(('127.0.0.1', 4043)).protocol.sendRequest('echo', {'msg' : "This is a test."})
+        df = self.a.connectionForAddr(('127.0.0.1', 1181)).sendRequest('echo', {'msg' : "This is a test."})
         df.addCallback(self.gotMsg)
         reactor.iterate()
         reactor.iterate()
@@ -75,22 +76,32 @@ class EchoTest(TestCase):
         reactor.iterate()
         self.assertEqual(self.msg, "This is a test.")
 
-    def gotMsg(self, msg):
+    def gotMsg(self, dict):
+        _krpc_sender = dict['_krpc_sender']
+        msg = dict['rsp']
         self.msg = msg
 
-class MultiEchoTest(TestCase):
-    def setUp(self):
-        self.noisy = 0
-        self.msg = None
-        
-        self.af = Receiver()
-        self.bf = Receiver()        
-        self.a = listenAirhookStream(4048, self.af)
-        self.b = listenAirhookStream(4049, self.bf)
-        
+    def testManyEcho(self):
+        df = self.a.connectionForAddr(('127.0.0.1', 1181)).sendRequest('echo', {'msg' : "This is a test."})
+        df.addCallback(self.gotMsg)
+        reactor.iterate()
+        reactor.iterate()
+        reactor.iterate()
+        reactor.iterate()
+        self.assertEqual(self.msg, "This is a test.")
+        for i in xrange(100):
+            self.msg = None
+            df = self.a.connectionForAddr(('127.0.0.1', 1181)).sendRequest('echo', {'msg' : "This is a test."})
+            df.addCallback(self.gotMsg)
+            reactor.iterate()
+            reactor.iterate()
+            reactor.iterate()
+            reactor.iterate()
+            self.assertEqual(self.msg, "This is a test.")
+
     def testMultiEcho(self):
         self.noisy = 1
-        df = self.a.connectionForAddr(('127.0.0.1', 4049)).protocol.sendRequest('echo', {'msg' : "This is a test."})
+        df = self.a.connectionForAddr(('127.0.0.1', 1181)).sendRequest('echo', {'msg' : "This is a test."})
         df.addCallback(self.gotMsg)
         reactor.iterate()
         reactor.iterate()
@@ -98,7 +109,7 @@ class MultiEchoTest(TestCase):
         reactor.iterate()
         self.assertEqual(self.msg, "This is a test.")
 
-        df = self.a.connectionForAddr(('127.0.0.1', 4049)).protocol.sendRequest('echo', {'msg' : "This is another test."})
+        df = self.a.connectionForAddr(('127.0.0.1', 1181)).sendRequest('echo', {'msg' : "This is another test."})
         df.addCallback(self.gotMsg)
         reactor.iterate()
         reactor.iterate()
@@ -106,7 +117,7 @@ class MultiEchoTest(TestCase):
         reactor.iterate()
         self.assertEqual(self.msg, "This is another test.")
 
-        df = self.a.connectionForAddr(('127.0.0.1', 4049)).protocol.sendRequest('echo', {'msg' : "This is yet another test."})
+        df = self.a.connectionForAddr(('127.0.0.1', 1181)).sendRequest('echo', {'msg' : "This is yet another test."})
         df.addCallback(self.gotMsg)
         reactor.iterate()
         reactor.iterate()
@@ -114,21 +125,40 @@ class MultiEchoTest(TestCase):
         reactor.iterate()
         self.assertEqual(self.msg, "This is yet another test.")
 
-    def gotMsg(self, msg):
-        self.msg = msg
+    def testEchoReset(self):
+        self.noisy = 1
+        df = self.a.connectionForAddr(('127.0.0.1', 1181)).sendRequest('echo', {'msg' : "This is a test."})
+        df.addCallback(self.gotMsg)
+        reactor.iterate()
+        reactor.iterate()
+        reactor.iterate()
+        reactor.iterate()
+        self.assertEqual(self.msg, "This is a test.")
 
-class UnknownMethErrTest(TestCase):
-    def setUp(self):
-        self.noisy = 0
-        self.err = None
-        self.af = Receiver()
-        self.bf = Receiver()        
-        self.a = listenAirhookStream(4044, self.af)
-        self.b = listenAirhookStream(4045, self.bf)
-        
+        df = self.a.connectionForAddr(('127.0.0.1', 1181)).sendRequest('echo', {'msg' : "This is another test."})
+        df.addCallback(self.gotMsg)
+        reactor.iterate()
+        reactor.iterate()
+        reactor.iterate()
+        reactor.iterate()
+        self.assertEqual(self.msg, "This is another test.")
+
+        del(self.a.connections[('127.0.0.1', 1181)])
+        df = self.a.connectionForAddr(('127.0.0.1', 1181)).sendRequest('echo', {'msg' : "This is yet another test."})
+        df.addCallback(self.gotMsg)
+        reactor.iterate()
+        reactor.iterate()
+        reactor.iterate()
+        reactor.iterate()
+        self.assertEqual(self.msg, "This is yet another test.")
+
+    def testLotsofEchoReset(self):
+        for i in range(100):
+            self.testEchoReset()
+            
     def testUnknownMeth(self):
         self.noisy = 1
-        df = self.a.connectionForAddr(('127.0.0.1', 4045)).protocol.sendRequest('blahblah', {'msg' : "This is a test."})
+        df = self.a.connectionForAddr(('127.0.0.1', 1181)).sendRequest('blahblah', {'msg' : "This is a test."})
         df.addErrback(self.gotErr)
         reactor.iterate()
         reactor.iterate()
@@ -138,3 +168,4 @@ class UnknownMethErrTest(TestCase):
 
     def gotErr(self, err):
         self.err = err.value
+        
\ No newline at end of file