|
@@ -241,6 +241,41 @@ class TestDDNSServer(unittest.TestCase):
|
|
|
self.assertTrue(isinstance(receiver, FakeSessionReceiver))
|
|
|
self.assertEqual(socket, receiver.socket())
|
|
|
|
|
|
+ def test_accept_fail(self):
|
|
|
+ """
|
|
|
+ Test we don't crash if an accept fails and that we don't modify the
|
|
|
+ internals.
|
|
|
+ """
|
|
|
+
|
|
|
+ def accept_failure():
|
|
|
+ raise socket.error(errno.ECONNABORTED)
|
|
|
+ orig = self.ddns_server._listen_socket.accept
|
|
|
+ self.ddns_server._listen_socket.accept = accept_failure
|
|
|
+ self.assertEqual({}, self.ddns_server._socksession_receivers)
|
|
|
+
|
|
|
+ self.ddns_server.accept()
|
|
|
+
|
|
|
+ self.assertEqual({}, self.ddns_server._socksession_receivers)
|
|
|
+
|
|
|
+ self.ddns_server._listen_socket.accept = orig
|
|
|
+ def receiver_failure(sock):
|
|
|
+ raise isc.util.io.socketsession.SocketSessionError('Test error')
|
|
|
+ ddns.isc.util.io.socketsession.SocketSessionReceiver = \
|
|
|
+ receiver_failure
|
|
|
+
|
|
|
+ self.ddns_server.accept()
|
|
|
+
|
|
|
+ self.assertEqual({}, self.ddns_server._socksession_receivers)
|
|
|
+
|
|
|
+ def unexpected_failure(sock):
|
|
|
+ raise Exception('Test error')
|
|
|
+ ddns.isc.util.io.socketsession.SocketSessionReceiver = \
|
|
|
+ unexpected_failure
|
|
|
+
|
|
|
+ self.assertRaises(Exception, self.ddns_server.accept)
|
|
|
+
|
|
|
+ self.assertEqual({}, self.ddns_server._socksession_receivers)
|
|
|
+
|
|
|
def test_session_called(self):
|
|
|
"""
|
|
|
Test the run calls handle_session when there's something on the
|