[svn] commit: r2758 - /branches/trac216/src/bin/xfrin/tests/xfrin_test.py
BIND 10 source code commits
bind10-changes at lists.isc.org
Wed Aug 18 04:32:48 UTC 2010
Author: shentingting
Date: Wed Aug 18 04:32:47 2010
New Revision: 2758
Log:
add some test cases to improve test coverage
Modified:
branches/trac216/src/bin/xfrin/tests/xfrin_test.py
Modified: branches/trac216/src/bin/xfrin/tests/xfrin_test.py
==============================================================================
--- branches/trac216/src/bin/xfrin/tests/xfrin_test.py (original)
+++ branches/trac216/src/bin/xfrin/tests/xfrin_test.py Wed Aug 18 04:32:47 2010
@@ -53,6 +53,19 @@
class XfrinTestException(Exception):
pass
+class MockModuleCCSession:
+ def __init__(self, spec_file_name, config_handler, command_handler, cc_session = None):
+ pass
+
+ def start(self):
+ pass
+
+ def get_full_config(self):
+ return ({"transfers_in":10})
+
+ def check_command(self):
+ return True
+
class MockXfrin(Xfrin):
# This is a class attribute of a callable object that specifies a non
# default behavior triggered in _cc_check_command(). Specific test methods
@@ -62,12 +75,37 @@
check_command_hook = None
def _cc_setup(self):
- self._max_transfers_in = 10
+ isc.config.ModuleCCSession = MockModuleCCSession
+ super()._cc_setup()
+ #self._max_transfers_in = 10
def _cc_check_command(self):
self._shutdown_flag = 1
if MockXfrin.check_command_hook:
MockXfrin.check_command_hook()
+
+class MockSocket():
+ def __init__(self):
+ self.sendqueue = bytearray()
+
+ def recv(self, size):
+ if size < 0:
+ raise socket.error("error bufsize")
+ if len(self.sendqueue) < size:
+ size = len(self.sendqueue)
+ result = self.sendqueue[:size]
+ del self.sendqueue[:size]
+ return result
+
+ def send(self, data):
+ try:
+ self.sendqueue.extend(data)
+ except TypeError as e:
+ raise socket.error(e)
+ return len(data)
+
+ def close(self):
+ return True
class MockXfrinConnection(XfrinConnection):
def __init__(self, conn_socket, zone_name, rrclass, db_file, shutdown_flag,
@@ -83,7 +121,7 @@
self.response_generator = None
def connect_to_master(self):
- return True
+ return self._socket
def _loop(self):
if self.force_close:
@@ -91,6 +129,9 @@
self._conn_socket.close()
elif not self.force_time_out:
self.handle_read()
+
+ def mock_handle_read(self):
+ return True
def recv(self, size):
data = self.reply_data[:size]
@@ -170,6 +211,40 @@
#self.assertEqual(, "")
self.assertRaises(Exception, self.conn.connect, (TEST_MASTER_IPV4_ADDRESS,53))
+ def test_send(self):
+ self.conn._socket.close()
+ self.conn._socket = MockSocket()
+ self.assertEqual(len(b"hello bind10"), super(MockXfrinConnection, self.conn).send(b"hello bind10"))
+
+ def test_send_exception(self):
+ self.conn._socket.close()
+ self.conn._socket = MockSocket()
+ self.assertRaises(socket.error, super(MockXfrinConnection, self.conn).send, "hello bind10")
+
+ def test_recv(self):
+ self.conn._socket.close()
+ self.conn._socket = MockSocket()
+ super(MockXfrinConnection, self.conn).send(b"hello bind10")
+ self.assertEqual(b"hello bind10", super(MockXfrinConnection, self.conn).recv(20))
+
+ def test_recv_nodata(self):
+ self.conn._socket.close()
+ self.conn._socket = MockSocket()
+ self.assertEqual(b"", super(MockXfrinConnection, self.conn).recv(20))
+
+ def test_recv_exception(self):
+ self.conn._socket.close()
+ self.conn._socket = MockSocket()
+ super(MockXfrinConnection, self.conn).send(b"hello bind10")
+ self.assertRaises(socket.error, super(MockXfrinConnection, self.conn).recv, -1)
+
+ def test_loop(self):
+ self.conn._idle_timeout = 0.1
+
+ self.conn.handle_read = self.conn.mock_handle_read
+ self.assertRaises(XfrinException, super(MockXfrinConnection, self.conn)._loop)
+
+
def test_init_ip6(self):
# This test simply creates a new XfrinConnection object with an
# IPv6 address, tries to bind it to an IPv6 wildcard address/port
@@ -376,6 +451,10 @@
def _do_parse(self):
return self.xfr._parse_cmd_params(self.args)
+ def test_cc_check_command(self):
+ self.assertEqual(None, self.xfr._cc_check_command())
+
+
def test_parse_cmd_params(self):
name, master_addrinfo, db_file = self._do_parse()
self.assertEqual(master_addrinfo[4][1], int(TEST_MASTER_PORT))
More information about the bind10-changes
mailing list