Revision 37e62cb9 test/ganeti.daemon_unittest.py
b/test/ganeti.daemon_unittest.py | ||
---|---|---|
273 | 273 |
class _MyMessageStreamHandler(daemon.AsyncTerminatedMessageStream): |
274 | 274 |
|
275 | 275 |
def __init__(self, connected_socket, client_address, terminator, family, |
276 |
message_fn, client_id): |
|
276 |
message_fn, client_id, unhandled_limit):
|
|
277 | 277 |
daemon.AsyncTerminatedMessageStream.__init__(self, connected_socket, |
278 | 278 |
client_address, |
279 |
terminator, family) |
|
279 |
terminator, family, |
|
280 |
unhandled_limit) |
|
280 | 281 |
self.message_fn = message_fn |
281 | 282 |
self.client_id = client_id |
282 | 283 |
self.error_count = 0 |
... | ... | |
301 | 302 |
self.server = _MyAsyncStreamServer(self.family, self.address, |
302 | 303 |
self.handle_connection) |
303 | 304 |
self.client_handler = _MyMessageStreamHandler |
305 |
self.unhandled_limit = None |
|
304 | 306 |
self.terminator = "\3" |
305 | 307 |
self.address = self.server.getsockname() |
306 | 308 |
self.clients = [] |
... | ... | |
339 | 341 |
client_handler = self.client_handler(connected_socket, client_address, |
340 | 342 |
self.terminator, self.family, |
341 | 343 |
self.handle_message, |
342 |
client_id) |
|
344 |
client_id, self.unhandled_limit)
|
|
343 | 345 |
self.connections.append(client_handler) |
344 | 346 |
self.countTerminate("connect_terminate_count") |
345 | 347 |
|
... | ... | |
494 | 496 |
self.assertEquals(client1.recv(4096), "r0\3r1\3r2\3") |
495 | 497 |
self.assertRaises(socket.error, client2.recv, 4096) |
496 | 498 |
|
499 |
def testLimitedUnhandledMessages(self): |
|
500 |
self.connect_terminate_count = None |
|
501 |
self.message_terminate_count = 3 |
|
502 |
self.unhandled_limit = 2 |
|
503 |
client1 = self.getClient() |
|
504 |
client2 = self.getClient() |
|
505 |
client1.send("one\3composed\3long\3message\3") |
|
506 |
client2.send("c2one\3") |
|
507 |
self.mainloop.Run() |
|
508 |
self.assertEquals(self.messages[0], ["one", "composed"]) |
|
509 |
self.assertEquals(self.messages[1], ["c2one"]) |
|
510 |
self.assertFalse(self.connections[0].readable()) |
|
511 |
self.assert_(self.connections[1].readable()) |
|
512 |
self.connections[0].send_message("r0") |
|
513 |
self.message_terminate_count = None |
|
514 |
client1.send("another\3") |
|
515 |
# when we write replies messages queued also get handled, but not the ones |
|
516 |
# in the socket. |
|
517 |
while self.connections[0].writable(): |
|
518 |
self.connections[0].handle_write() |
|
519 |
self.assertFalse(self.connections[0].readable()) |
|
520 |
self.assertEquals(self.messages[0], ["one", "composed", "long"]) |
|
521 |
self.connections[0].send_message("r1") |
|
522 |
self.connections[0].send_message("r2") |
|
523 |
while self.connections[0].writable(): |
|
524 |
self.connections[0].handle_write() |
|
525 |
self.assertEquals(self.messages[0], ["one", "composed", "long", "message"]) |
|
526 |
self.assert_(self.connections[0].readable()) |
|
527 |
|
|
528 |
def testLimitedUnhandledMessagesOne(self): |
|
529 |
self.connect_terminate_count = None |
|
530 |
self.message_terminate_count = 2 |
|
531 |
self.unhandled_limit = 1 |
|
532 |
client1 = self.getClient() |
|
533 |
client2 = self.getClient() |
|
534 |
client1.send("one\3composed\3message\3") |
|
535 |
client2.send("c2one\3") |
|
536 |
self.mainloop.Run() |
|
537 |
self.assertEquals(self.messages[0], ["one"]) |
|
538 |
self.assertEquals(self.messages[1], ["c2one"]) |
|
539 |
self.assertFalse(self.connections[0].readable()) |
|
540 |
self.assertFalse(self.connections[1].readable()) |
|
541 |
self.connections[0].send_message("r0") |
|
542 |
self.message_terminate_count = None |
|
543 |
while self.connections[0].writable(): |
|
544 |
self.connections[0].handle_write() |
|
545 |
self.assertFalse(self.connections[0].readable()) |
|
546 |
self.assertEquals(self.messages[0], ["one", "composed"]) |
|
547 |
self.connections[0].send_message("r2") |
|
548 |
self.connections[0].send_message("r3") |
|
549 |
while self.connections[0].writable(): |
|
550 |
self.connections[0].handle_write() |
|
551 |
self.assertEquals(self.messages[0], ["one", "composed", "message"]) |
|
552 |
self.assert_(self.connections[0].readable()) |
|
553 |
|
|
497 | 554 |
|
498 | 555 |
class TestAsyncStreamServerUnixPath(TestAsyncStreamServerTCP): |
499 | 556 |
"""Test daemon.AsyncStreamServer with a Unix path connection""" |
Also available in: Unified diff