On Tue, 2009-09-08 at 17:47 +0200, Johan Euphrosine wrote: > On Tue, 2009-09-08 at 17:30 +0200, Loic Dachary wrote: > > > > > > I don't understand how this patch notifies the caller when a LongPoll > > returns. Could you comment your patch in this respect ? > > It does not, > > As we discussed on IRC we can't use the deferred returned by sendPacket, > and I'm not sure how to use a callback on pokerrestclient, since we > could have multiple pokerrest instance for one avatar. > > I'll be available to discuss more with you on this topic.
Hi, Here is a patch that I believe implement the new pokerrestclient interface (i.e: callback on longpoll). -- Johan Euphrosine <pro...@aminche.com>
Index: test-pokeravatar.py.in =================================================================== --- test-pokeravatar.py.in (revision 6220) +++ test-pokeravatar.py.in (working copy) @@ -3982,11 +3982,12 @@ d.addCallback(self.joinTable, 0, 2, 'Table2', '2-4-limit') def handleLongPoll(x): avatar = self.service.avatars[0] + client = avatar.getOrCreateRestClient(('host', 11111, 'path'), 2) d = avatar.handlePacketDefer(PacketPokerLongPoll()) self.assertEquals(d, avatar._longpoll_deferred) self.assertEquals(False, avatar._block_longpoll_deferred) avatar._longpoll_deferred.addCallback(lambda packets: self.assertEquals(PACKET_PING, packets[0].type)) - avatar.sendPacket(PacketPing()) + client.longPollCallback([PacketPing()]) return d d.addCallback(handleLongPoll) return d Index: test-pokerrestclient.py.in =================================================================== --- test-pokerrestclient.py.in (revision 6220) +++ test-pokerrestclient.py.in (working copy) @@ -95,26 +95,88 @@ return d # -------------------------------------------------------------- def test01_longPoll(self): - client = pokerrestclient.PokerRestClient('127.0.0.1', 19481, '/POKER_REST', verbose=6, timeout=10) + def longPollCallback(packets): + self.assertEquals(PACKET_PING, packets[0].type) + class PokerRestClientTest(pokerrestclient.PokerRestClient): + def __init__(client): + pokerrestclient.PokerRestClient.__init__(client, '127.0.0.1', 19481, '/POKER_REST', longPollCallback, verbose=6, timeout=10) + def sendPacketData(client, data): + self.assertSubstring('LongPoll', data) + return '[ { "type": "PacketPing" } ]' + client = PokerRestClientTest() self.assertEquals(True, client.pendingLongPoll) self.assertEquals(None, client.timer) return client.queue # -------------------------------------------------------------- def test02_longPollReturn(self): - client = pokerrestclient.PokerRestClient('127.0.0.1', 19481, '/POKER_REST', verbose=6, timeout=10) - message = client.message - def checkMessageString(string): - self.assertSubstring('PacketPokerLongPollReturn', string) - message(string) - client.message = checkMessageString - client.sendPacket(PacketPokerTableSelect(), '{"type": "PacketPokerTableSelect"}') + packets = [] + class PokerRestClientTest(pokerrestclient.PokerRestClient): + def __init__(client): + pokerrestclient.PokerRestClient.__init__(client, '127.0.0.1', 19481, '/POKER_REST', lambda packets: None, verbose=6, timeout=10) + def sendPacketData(client, data): + packets.append(data) + return "[]" + client = PokerRestClientTest() + d = client.sendPacket(PacketPokerTableSelect(), '{"type": "PacketPokerTableSelect"}') + d.addCallback(lambda arg: self.assertSubstring('LongPollReturn', packets[1])) + d.addCallback(lambda arg: self.assertNotEquals(None, client.timer)) return client.queue # -------------------------------------------------------------- - def test03_longPollBis(self): - client = pokerrestclient.PokerRestClient('127.0.0.1', 19481, '/POKER_REST', verbose=6, timeout=10) + def test03_longPollSchedule(self): + class PokerRestClientTest(pokerrestclient.PokerRestClient): + def __init__(client): + pokerrestclient.PokerRestClient.__init__(client, '127.0.0.1', 19481, '/POKER_REST', lambda packets: None, verbose=6, timeout=10) + def sendPacketData(client, data): + return "[]" + client = PokerRestClientTest() client.longPoll() self.assertNotEquals(None, client.timer) + client.clearTimeout() return client.queue + # -------------------------------------------------------------- + def test04_sendPacketData(self): + class PokerRestClientTest(pokerrestclient.PokerRestClient): + def __init__(client): + pokerrestclient.PokerRestClient.__init__(client, '127.0.0.1', 19481, '/POKER_REST', lambda packets: None, verbose=6, timeout=10) + def longPoll(client): + pass + client = PokerRestClientTest() + d = client.sendPacketData('{"type": "PacketPokerTableSelect"}') + d.addCallback(lambda data: self.assertSubstring('PacketPokerTableList', data)) + return d + # -------------------------------------------------------------- + def test05_sendPacket(self): + class PokerRestClientTest(pokerrestclient.PokerRestClient): + def __init__(client): + pokerrestclient.PokerRestClient.__init__(client, '127.0.0.1', 19481, '/POKER_REST', lambda packets: None, verbose=6, timeout=10) + def longPoll(client): + pass + client = PokerRestClientTest() + d = client.sendPacket(PacketPokerTableSelect(), '{"type": "PacketPokerTableSelect"}') + d.addCallback(lambda packets: self.assertEquals(PACKET_POKER_TABLE_LIST, packets[0].type)) + return d + # -------------------------------------------------------------- + def test06_404(self): + class PokerRestClientTest(pokerrestclient.PokerRestClient): + def __init__(client): + pokerrestclient.PokerRestClient.__init__(client, '127.0.0.1', 19481, '/POKER_REST2', lambda packets: None, verbose=6, timeout=10) + def longPoll(client): + pass + client = PokerRestClientTest() + d = client.sendPacket(PacketPokerTableSelect(), '{"type": "PacketPokerTableSelect"}') + d.addCallback(lambda packets: self.assertEquals(PACKET_ERROR, packets[0].type)) + return d + # -------------------------------------------------------------- + def test07_connectionFailed(self): + class PokerRestClientTest(pokerrestclient.PokerRestClient): + def __init__(client): + pokerrestclient.PokerRestClient.__init__(client, '127.0.0.1', 20000, '/POKER_REST', lambda packets: None, verbose=6, timeout=10) + def longPoll(client): + pass + client = PokerRestClientTest() + d = client.sendPacket(PacketPokerTableSelect(), '{"type": "PacketPokerTableSelect"}') + d.addCallback(lambda packets: self.assertEquals(PACKET_ERROR, packets[0].type)) + return d class MockRequest: def finish(self): pass
signature.asc
Description: This is a digitally signed message part
_______________________________________________ Pokersource-users mailing list Pokersource-users@gna.org https://mail.gna.org/listinfo/pokersource-users