[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