[svn] commit: r1660 - in /branches/trac58/src/lib/python/isc/cc: session.py tests/session_test.py

BIND 10 source code commits bind10-changes at lists.isc.org
Tue Mar 30 15:35:55 UTC 2010


Author: jelte
Date: Tue Mar 30 15:35:54 2010
New Revision: 1660

Log:
added has_queued_msgs() to CC/Session objects (+tests)

Modified:
    branches/trac58/src/lib/python/isc/cc/session.py
    branches/trac58/src/lib/python/isc/cc/tests/session_test.py

Modified: branches/trac58/src/lib/python/isc/cc/session.py
==============================================================================
--- branches/trac58/src/lib/python/isc/cc/session.py (original)
+++ branches/trac58/src/lib/python/isc/cc/session.py Tue Mar 30 15:35:54 2010
@@ -83,20 +83,16 @@
             self._socket.send(msg)
 
     def recvmsg(self, nonblock = True, seq = None):
-        #print("[XX] queue len: " + str(len(self._queue)))
         if len(self._queue) > 0:
             if seq == None:
-                #print("[XX] return first")
                 return self._queue.pop(0)
             else:
                 i = 0;
-                #print("[XX] check rest")
                 for env, msg in self._queue:
                     if "reply" in env and seq == env["reply"]:
                         return self._queue.pop(i)
                     else:
                         i = i + 1
-                #print("[XX] not found")
         if self._closed:
             raise SessionError("Session has been closed.")
         data = self._receive_full_buffer(nonblock)
@@ -182,6 +178,9 @@
         }, isc.cc.message.to_wire(msg))
         return seq
 
+    def has_queued_msgs(self):
+        return len(self._queue) > 0
+
     def group_recvmsg(self, nonblock = True, seq = None):
         env, msg  = self.recvmsg(nonblock, seq)
         if env == None:

Modified: branches/trac58/src/lib/python/isc/cc/tests/session_test.py
==============================================================================
--- branches/trac58/src/lib/python/isc/cc/tests/session_test.py (original)
+++ branches/trac58/src/lib/python/isc/cc/tests/session_test.py Tue Mar 30 15:35:54 2010
@@ -179,65 +179,82 @@
         #print("sending message {'to': 'someone', 'reply': 1}, {'hello': 'a'}")
 
         # simply get the message without asking for a specific sequence number reply
-        sess._socket.addrecv(b'\x00\x00\x00(\x00\x19Skan\x02to(\x07someone\x05reply&\x011Skan\x05hello(\x01a')
-        env, msg = sess.recvmsg(False)
-        self.assertEqual({'to': 'someone', 'reply': 1}, env)
-        self.assertEqual({"hello": "a"}, msg)
+        self.assertFalse(sess.has_queued_msgs())
+        sess._socket.addrecv(b'\x00\x00\x00(\x00\x19Skan\x02to(\x07someone\x05reply&\x011Skan\x05hello(\x01a')
+        env, msg = sess.recvmsg(False)
+        self.assertEqual({'to': 'someone', 'reply': 1}, env)
+        self.assertEqual({"hello": "a"}, msg)
+        self.assertFalse(sess.has_queued_msgs())
 
         # simply get the message, asking for a specific sequence number reply
+        self.assertFalse(sess.has_queued_msgs())
         sess._socket.addrecv(b'\x00\x00\x00(\x00\x19Skan\x02to(\x07someone\x05reply&\x011Skan\x05hello(\x01a')
         env, msg = sess.recvmsg(False, 1)
         self.assertEqual({'to': 'someone', 'reply': 1}, env)
         self.assertEqual({"hello": "a"}, msg)
+        self.assertFalse(sess.has_queued_msgs())
         
         # ask for a differe sequence number reply (that doesn't exist)
         # then ask for the one that is there
+        self.assertFalse(sess.has_queued_msgs())
         sess._socket.addrecv(b'\x00\x00\x00(\x00\x19Skan\x02to(\x07someone\x05reply&\x011Skan\x05hello(\x01a')
         env, msg = sess.recvmsg(False, 2)
         self.assertEqual(None, env)
         self.assertEqual(None, msg)
+        self.assertTrue(sess.has_queued_msgs())
         env, msg = sess.recvmsg(False, 1)
         self.assertEqual({'to': 'someone', 'reply': 1}, env)
         self.assertEqual({"hello": "a"}, msg)
+        self.assertFalse(sess.has_queued_msgs())
         
         # ask for a differe sequence number reply (that doesn't exist)
         # then ask for any message
+        self.assertFalse(sess.has_queued_msgs())
         sess._socket.addrecv(b'\x00\x00\x00(\x00\x19Skan\x02to(\x07someone\x05reply&\x011Skan\x05hello(\x01a')
         env, msg = sess.recvmsg(False, 2)
         self.assertEqual(None, env)
         self.assertEqual(None, msg)
-        env, msg = sess.recvmsg(False)
-        self.assertEqual({'to': 'someone', 'reply': 1}, env)
-        self.assertEqual({"hello": "a"}, msg)
+        self.assertTrue(sess.has_queued_msgs())
+        env, msg = sess.recvmsg(False)
+        self.assertEqual({'to': 'someone', 'reply': 1}, env)
+        self.assertEqual({"hello": "a"}, msg)
+        self.assertFalse(sess.has_queued_msgs())
         
         #print("sending message {'to': 'someone', 'reply': 1}, {'hello': 'a'}")
 
         # ask for a differe sequence number reply (that doesn't exist)
         # send a new message, ask for any message (get the first)
         # then ask for any message (get the second)
+        self.assertFalse(sess.has_queued_msgs())
         sess._socket.addrecv(b'\x00\x00\x00(\x00\x19Skan\x02to(\x07someone\x05reply&\x011Skan\x05hello(\x01a')
         env, msg = sess.recvmsg(False, 2)
         self.assertEqual(None, env)
         self.assertEqual(None, msg)
+        self.assertTrue(sess.has_queued_msgs())
         sess._socket.addrecv(b'\x00\x00\x00\x1f\x00\x10Skan\x02to(\x07someoneSkan\x05hello(\x01b')
         env, msg = sess.recvmsg(False)
         self.assertEqual({'to': 'someone', 'reply': 1}, env)
         self.assertEqual({"hello": "a"}, msg)
+        self.assertFalse(sess.has_queued_msgs())
         env, msg = sess.recvmsg(False)
         self.assertEqual({'to': 'someone'}, env)
         self.assertEqual({"hello": "b"}, msg)
+        self.assertFalse(sess.has_queued_msgs())
         
         # send a message, then one with specific reply value
         # ask for that specific message (get the second)
         # then ask for any message (get the first)
+        self.assertFalse(sess.has_queued_msgs())
         sess._socket.addrecv(b'\x00\x00\x00\x1f\x00\x10Skan\x02to(\x07someoneSkan\x05hello(\x01b')
         sess._socket.addrecv(b'\x00\x00\x00(\x00\x19Skan\x02to(\x07someone\x05reply&\x011Skan\x05hello(\x01a')
         env, msg = sess.recvmsg(False, 1)
         self.assertEqual({'to': 'someone', 'reply': 1}, env)
         self.assertEqual({"hello": "a"}, msg)
+        self.assertTrue(sess.has_queued_msgs())
         env, msg = sess.recvmsg(False)
         self.assertEqual({'to': 'someone'}, env)
         self.assertEqual({"hello": "b"}, msg)
+        self.assertFalse(sess.has_queued_msgs())
 
     def test_next_sequence(self):
         sess = MySession()




More information about the bind10-changes mailing list