2
0
mirror of https://gitlab.isc.org/isc-projects/kea synced 2025-09-05 16:35:23 +00:00

[1451] addressed review comments

This commit is contained in:
Jelte Jansen
2011-12-16 18:21:45 +01:00
parent a0a07a1b5e
commit ae488cc48d
7 changed files with 140 additions and 52 deletions

View File

@@ -32,6 +32,32 @@ class MyCCSession(isc.config.ConfigData):
'''Called by DDNSServer initialization, but not used in tests'''
self._started = True
class MyDDNSServer():
'''Fake DDNS server used to test the main() function'''
def __init__(self):
self.reset()
def run(self):
'''
Fake the run() method of the DDNS server. This will set
self._run_called to True.
If self._exception is not None, this is raised as an exception
'''
self.run_called = True
if self._exception is not None:
self.exception_raised = True
raise self._exception
def set_exception(self, exception):
'''Set an exception to be raised when run() is called'''
self._exception = exception
def reset(self):
'''(Re)set to initial values'''
self.run_called = False
self.exception_raised = False
self._exception = None
class TestDDNSServer(unittest.TestCase):
def setUp(self):
cc_session = MyCCSession()
@@ -67,6 +93,65 @@ class TestDDNSServer(unittest.TestCase):
signal_handler(None, None)
self.assertTrue(self.ddns_server._shutdown)
class TestMain(unittest.TestCase):
def setUp(self):
self._server = MyDDNSServer()
def test_main(self):
self.assertFalse(self._server.run_called)
ddns.main(self._server)
self.assertTrue(self._server.run_called)
def test_exceptions(self):
'''
Test whether exceptions are caught in main()
These exceptions should not bubble up.
'''
self._server.set_exception(KeyboardInterrupt())
self.assertFalse(self._server.exception_raised)
ddns.main(self._server)
self.assertTrue(self._server.exception_raised)
# Should technically not be necessary, but reset server to be sure
self._server.reset()
self.assertFalse(self._server.exception_raised)
self._server.set_exception(isc.cc.SessionError("error"))
ddns.main(self._server)
self.assertTrue(self._server.exception_raised)
self._server.reset()
self.assertFalse(self._server.exception_raised)
self._server.set_exception(isc.config.ModuleCCSessionError("error"))
ddns.main(self._server)
self.assertTrue(self._server.exception_raised)
self._server.reset()
self.assertFalse(self._server.exception_raised)
self._server.set_exception(ddns.DDNSConfigError("error"))
ddns.main(self._server)
self.assertTrue(self._server.exception_raised)
self._server.reset()
self.assertFalse(self._server.exception_raised)
self._server.set_exception(isc.cc.SessionTimeout("error"))
ddns.main(self._server)
self.assertTrue(self._server.exception_raised)
self._server.reset()
self.assertFalse(self._server.exception_raised)
self._server.set_exception(Exception("error"))
ddns.main(self._server)
self.assertTrue(self._server.exception_raised)
# Add one that is not a subclass of Exception, and hence not
# caught. Misuse BaseException for that.
self._server.reset()
self.assertFalse(self._server.exception_raised)
self._server.set_exception(BaseException("error"))
self.assertRaises(BaseException, ddns.main, self._server)
self.assertTrue(self._server.exception_raised)
if __name__== "__main__":
isc.log.resetUnitTestRootLogger()
unittest.main()