1 ## Copyright 2002-2003 Andrew Loewenstern, All Rights Reserved
2 # see LICENSE.txt for license information
11 if __name__ =="__main__":
12 tests = defaultTestLoader.loadTestsFromNames([sys.argv[0][:-3]])
13 result = TextTestRunner().run(tests)
16 def connectionForAddr(host, port):
20 class Receiver(protocol.Factory):
24 def krpc_store(self, msg, _krpc_sender):
26 def krpc_echo(self, msg, _krpc_sender):
33 p = reactor.listenUDP(port, a)
36 class KRPCTests(TestCase):
39 self.af, self.a, self.ap = make(1180)
40 self.bf, self.b, self.bp = make(1181)
43 self.ap.stopListening()
44 self.bp.stopListening()
48 def testSimpleMessage(self):
50 self.a.connectionForAddr(('127.0.0.1', 1181)).sendRequest('store', {'msg' : "This is a test."})
54 self.assertEqual(self.bf.buf, ["This is a test."])
56 def testMessageBlast(self):
57 self.a.connectionForAddr(('127.0.0.1', 1181)).sendRequest('store', {'msg' : "This is a test."})
61 self.assertEqual(self.bf.buf, ["This is a test."])
65 self.a.connectionForAddr(('127.0.0.1', 1181)).sendRequest('store', {'msg' : "This is a test."})
68 self.assertEqual(self.bf.buf, ["This is a test."] * 100)
71 df = self.a.connectionForAddr(('127.0.0.1', 1181)).sendRequest('echo', {'msg' : "This is a test."})
72 df.addCallback(self.gotMsg)
77 self.assertEqual(self.msg, "This is a test.")
79 def gotMsg(self, dict):
80 _krpc_sender = dict['_krpc_sender']
84 def testManyEcho(self):
85 df = self.a.connectionForAddr(('127.0.0.1', 1181)).sendRequest('echo', {'msg' : "This is a test."})
86 df.addCallback(self.gotMsg)
91 self.assertEqual(self.msg, "This is a test.")
94 df = self.a.connectionForAddr(('127.0.0.1', 1181)).sendRequest('echo', {'msg' : "This is a test."})
95 df.addCallback(self.gotMsg)
100 self.assertEqual(self.msg, "This is a test.")
102 def testMultiEcho(self):
104 df = self.a.connectionForAddr(('127.0.0.1', 1181)).sendRequest('echo', {'msg' : "This is a test."})
105 df.addCallback(self.gotMsg)
110 self.assertEqual(self.msg, "This is a test.")
112 df = self.a.connectionForAddr(('127.0.0.1', 1181)).sendRequest('echo', {'msg' : "This is another test."})
113 df.addCallback(self.gotMsg)
118 self.assertEqual(self.msg, "This is another test.")
120 df = self.a.connectionForAddr(('127.0.0.1', 1181)).sendRequest('echo', {'msg' : "This is yet another test."})
121 df.addCallback(self.gotMsg)
126 self.assertEqual(self.msg, "This is yet another test.")
128 def testEchoReset(self):
130 df = self.a.connectionForAddr(('127.0.0.1', 1181)).sendRequest('echo', {'msg' : "This is a test."})
131 df.addCallback(self.gotMsg)
136 self.assertEqual(self.msg, "This is a test.")
138 df = self.a.connectionForAddr(('127.0.0.1', 1181)).sendRequest('echo', {'msg' : "This is another test."})
139 df.addCallback(self.gotMsg)
144 self.assertEqual(self.msg, "This is another test.")
146 del(self.a.connections[('127.0.0.1', 1181)])
147 df = self.a.connectionForAddr(('127.0.0.1', 1181)).sendRequest('echo', {'msg' : "This is yet another test."})
148 df.addCallback(self.gotMsg)
153 self.assertEqual(self.msg, "This is yet another test.")
155 def testLotsofEchoReset(self):
159 def testUnknownMeth(self):
161 df = self.a.connectionForAddr(('127.0.0.1', 1181)).sendRequest('blahblah', {'msg' : "This is a test."})
162 df.addErrback(self.gotErr)
167 self.assertEqual(self.err, KRPC_ERROR_METHOD_UNKNOWN)
169 def gotErr(self, err):