9 if __name__ =="__main__":
10 tests = unittest.defaultTestLoader.loadTestsFromNames([sys.argv[0][:-3]])
11 result = unittest.TextTestRunner().run(tests)
14 def connectionForAddr(host, port):
17 class Receiver(protocol.Factory):
21 def krpc_store(self, msg, _krpc_sender):
23 def krpc_echo(self, msg, _krpc_sender):
26 class SimpleTest(TestCase):
32 self.a = listenAirhookStream(4040, self.af)
33 self.b = listenAirhookStream(4041, self.bf)
35 def testSimpleMessage(self):
37 self.a.connectionForAddr(('127.0.0.1', 4041)).protocol.sendRequest('store', {'msg' : "This is a test."})
41 self.assertEqual(self.bf.buf, ["This is a test."])
43 class SimpleTest(TestCase):
49 self.a = listenAirhookStream(4050, self.af)
50 self.b = listenAirhookStream(4051, self.bf)
52 def testSimpleMessage(self):
54 self.a.connectionForAddr(('127.0.0.1', 4051)).protocol.sendRequest('store', {'msg' : "This is a test."})
58 self.assertEqual(self.bf.buf, ["This is a test."])
60 class BlastTest(TestCase):
66 self.a = listenAirhookStream(4060, self.af)
67 self.b = listenAirhookStream(4061, self.bf)
69 def testMessageBlast(self):
70 self.a.connectionForAddr(('127.0.0.1', 4061)).protocol.sendRequest('store', {'msg' : "This is a test."})
74 self.assertEqual(self.bf.buf, ["This is a test."])
78 self.a.connectionForAddr(('127.0.0.1', 4061)).protocol.sendRequest('store', {'msg' : "This is a test."})
81 self.assertEqual(self.bf.buf, ["This is a test."] * 100)
83 class EchoTest(TestCase):
90 self.a = listenAirhookStream(4042, self.af)
91 self.b = listenAirhookStream(4043, self.bf)
94 df = self.a.connectionForAddr(('127.0.0.1', 4043)).protocol.sendRequest('echo', {'msg' : "This is a test."})
95 df.addCallback(self.gotMsg)
100 self.assertEqual(self.msg, "This is a test.")
102 def gotMsg(self, dict):
103 _krpc_sender = dict['_krpc_sender']
107 class ManyEchoTest(TestCase):
114 self.a = listenAirhookStream(4588, self.af)
115 self.b = listenAirhookStream(4589, self.bf)
117 def testManyEcho(self):
118 df = self.a.connectionForAddr(('127.0.0.1', 4589)).protocol.sendRequest('echo', {'msg' : "This is a test."})
119 df.addCallback(self.gotMsg)
124 self.assertEqual(self.msg, "This is a test.")
125 for i in xrange(100):
127 df = self.a.connectionForAddr(('127.0.0.1', 4589)).protocol.sendRequest('echo', {'msg' : "This is a test."})
128 df.addCallback(self.gotMsg)
133 self.assertEqual(self.msg, "This is a test.")
135 def gotMsg(self, dict):
136 _krpc_sender = dict['_krpc_sender']
140 class MultiEchoTest(TestCase):
147 self.a = listenAirhookStream(4048, self.af)
148 self.b = listenAirhookStream(4049, self.bf)
150 def testMultiEcho(self):
152 df = self.a.connectionForAddr(('127.0.0.1', 4049)).protocol.sendRequest('echo', {'msg' : "This is a test."})
153 df.addCallback(self.gotMsg)
158 self.assertEqual(self.msg, "This is a test.")
160 df = self.a.connectionForAddr(('127.0.0.1', 4049)).protocol.sendRequest('echo', {'msg' : "This is another test."})
161 df.addCallback(self.gotMsg)
166 self.assertEqual(self.msg, "This is another test.")
168 df = self.a.connectionForAddr(('127.0.0.1', 4049)).protocol.sendRequest('echo', {'msg' : "This is yet another test."})
169 df.addCallback(self.gotMsg)
174 self.assertEqual(self.msg, "This is yet another test.")
176 def gotMsg(self, dict):
177 _krpc_sender = dict['_krpc_sender']
181 class EchoResetTest(TestCase):
188 self.a = listenAirhookStream(4078, self.af)
189 self.b = listenAirhookStream(4079, self.bf)
191 def testEchoReset(self):
193 df = self.a.connectionForAddr(('127.0.0.1', 4079)).protocol.sendRequest('echo', {'msg' : "This is a test."})
194 df.addCallback(self.gotMsg)
199 self.assertEqual(self.msg, "This is a test.")
201 df = self.a.connectionForAddr(('127.0.0.1', 4079)).protocol.sendRequest('echo', {'msg' : "This is another test."})
202 df.addCallback(self.gotMsg)
207 self.assertEqual(self.msg, "This is another test.")
209 del(self.a.connections[('127.0.0.1', 4079)])
210 df = self.a.connectionForAddr(('127.0.0.1', 4079)).protocol.sendRequest('echo', {'msg' : "This is yet another test."})
211 df.addCallback(self.gotMsg)
216 self.assertEqual(self.msg, "This is yet another test.")
218 def testLotsofEchoReset(self):
221 def gotMsg(self, dict):
222 _krpc_sender = dict['_krpc_sender']
226 class UnknownMethErrTest(TestCase):
232 self.a = listenAirhookStream(4044, self.af)
233 self.b = listenAirhookStream(4045, self.bf)
235 def testUnknownMeth(self):
237 df = self.a.connectionForAddr(('127.0.0.1', 4045)).protocol.sendRequest('blahblah', {'msg' : "This is a test."})
238 df.addErrback(self.gotErr)
243 self.assertEqual(self.err, KRPC_ERROR_METHOD_UNKNOWN)
245 def gotErr(self, err):