1 ## Copyright 2002-2003 Andrew Loewenstern, All Rights Reserved
2 # see LICENSE.txt for license information
12 if __name__ =="__main__":
13 tests = defaultTestLoader.loadTestsFromNames([sys.argv[0][:-3]])
14 result = TextTestRunner().run(tests)
17 def connectionForAddr(host, port):
21 class Receiver(protocol.Factory):
25 def krpc_store(self, msg, _krpc_sender):
27 def krpc_echo(self, msg, _krpc_sender):
34 p = reactor.listenUDP(port, a)
37 class KRPCTests(TestCase):
40 self.af, self.a, self.ap = make(1180)
41 self.bf, self.b, self.bp = make(1181)
44 self.ap.stopListening()
45 self.bp.stopListening()
49 def testSimpleMessage(self):
51 self.a.connectionForAddr(('127.0.0.1', 1181)).sendRequest('store', {'msg' : "This is a test."})
55 self.assertEqual(self.bf.buf, ["This is a test."])
57 def testMessageBlast(self):
58 self.a.connectionForAddr(('127.0.0.1', 1181)).sendRequest('store', {'msg' : "This is a test."})
62 self.assertEqual(self.bf.buf, ["This is a test."])
66 self.a.connectionForAddr(('127.0.0.1', 1181)).sendRequest('store', {'msg' : "This is a test."})
69 self.assertEqual(self.bf.buf, ["This is a test."] * 100)
72 df = self.a.connectionForAddr(('127.0.0.1', 1181)).sendRequest('echo', {'msg' : "This is a test."})
73 df.addCallback(self.gotMsg)
78 self.assertEqual(self.msg, "This is a test.")
80 def gotMsg(self, dict):
81 _krpc_sender = dict['_krpc_sender']
85 def testManyEcho(self):
86 df = self.a.connectionForAddr(('127.0.0.1', 1181)).sendRequest('echo', {'msg' : "This is a test."})
87 df.addCallback(self.gotMsg)
92 self.assertEqual(self.msg, "This is a test.")
95 df = self.a.connectionForAddr(('127.0.0.1', 1181)).sendRequest('echo', {'msg' : "This is a test."})
96 df.addCallback(self.gotMsg)
101 self.assertEqual(self.msg, "This is a test.")
103 def testMultiEcho(self):
105 df = self.a.connectionForAddr(('127.0.0.1', 1181)).sendRequest('echo', {'msg' : "This is a test."})
106 df.addCallback(self.gotMsg)
111 self.assertEqual(self.msg, "This is a test.")
113 df = self.a.connectionForAddr(('127.0.0.1', 1181)).sendRequest('echo', {'msg' : "This is another test."})
114 df.addCallback(self.gotMsg)
119 self.assertEqual(self.msg, "This is another test.")
121 df = self.a.connectionForAddr(('127.0.0.1', 1181)).sendRequest('echo', {'msg' : "This is yet another test."})
122 df.addCallback(self.gotMsg)
127 self.assertEqual(self.msg, "This is yet another test.")
129 def testEchoReset(self):
131 df = self.a.connectionForAddr(('127.0.0.1', 1181)).sendRequest('echo', {'msg' : "This is a test."})
132 df.addCallback(self.gotMsg)
137 self.assertEqual(self.msg, "This is a test.")
139 df = self.a.connectionForAddr(('127.0.0.1', 1181)).sendRequest('echo', {'msg' : "This is another test."})
140 df.addCallback(self.gotMsg)
145 self.assertEqual(self.msg, "This is another test.")
147 del(self.a.connections[('127.0.0.1', 1181)])
148 df = self.a.connectionForAddr(('127.0.0.1', 1181)).sendRequest('echo', {'msg' : "This is yet another test."})
149 df.addCallback(self.gotMsg)
154 self.assertEqual(self.msg, "This is yet another test.")
156 def testLotsofEchoReset(self):
160 def testUnknownMeth(self):
162 df = self.a.connectionForAddr(('127.0.0.1', 1181)).sendRequest('blahblah', {'msg' : "This is a test."})
163 df.addErrback(self.gotErr)
168 self.assertEqual(self.err, KRPC_ERROR_METHOD_UNKNOWN)
170 def gotErr(self, err):