X-Git-Url: https://git.mxchange.org/?p=quix0rs-apt-p2p.git;a=blobdiff_plain;f=test_krpc.py;h=c068408e82d0c3711f19f55b2e796c80bb27dda0;hp=42b7b161c6b2272a816d04bde83c904b4b4903c9;hb=ce646c5d477b8cea8d1d69c435d686624d9c2e15;hpb=67ea324e46570a42861fe6a342c626738134bbfc diff --git a/test_krpc.py b/test_krpc.py index 42b7b16..c068408 100644 --- a/test_krpc.py +++ b/test_krpc.py @@ -1,19 +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): @@ -23,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 = 0 - self.a.connectionForAddr(('127.0.0.1', 4041)).protocol.sendRequest('store', {'msg' : "This is a test."}) + 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() @@ -77,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() @@ -100,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() @@ -108,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() @@ -116,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() @@ -140,3 +168,4 @@ class UnknownMethErrTest(TestCase): def gotErr(self, err): self.err = err.value + \ No newline at end of file