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

Attachment: 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

Reply via email to