Browse Source

[1175] deadlock will be killed afer 20 secs

Naoki Kambe 13 years ago
parent
commit
06f7bc4b3b
2 changed files with 26 additions and 0 deletions
  1. 19 0
      src/bin/stats/tests/b10-stats-httpd_test.py
  2. 7 0
      src/bin/stats/tests/b10-stats_test.py

+ 19 - 0
src/bin/stats/tests/b10-stats-httpd_test.py

@@ -32,6 +32,7 @@ import time
 import threading
 import http.client
 import xml.etree.ElementTree
+import signal
 
 import isc
 import stats_httpd
@@ -89,6 +90,9 @@ def is_ipv6_enabled(address='::1', port=8000):
 class TestHttpHandler(unittest.TestCase):
     """Tests for HttpHandler class"""
     def setUp(self):
+        # deadlock will be killed afer 20 secs
+        signal.signal(signal.SIGALRM, self.my_signal_handler)
+        signal.alarm(20)
         self.base = BaseModules()
         self.stats_server = ThreadingServerManager(MyStats)
         self.stats = self.stats_server.server
@@ -107,6 +111,9 @@ class TestHttpHandler(unittest.TestCase):
         self.stats_server.shutdown()
         self.base.shutdown()
 
+    def my_signal_handler(self, signal, frame):
+        self.fail("A deadlock might be detected")
+
     def test_do_GET(self):
         self.assertTrue(type(self.stats_httpd.httpd) is list)
         self.assertEqual(len(self.stats_httpd.httpd), 1)
@@ -265,11 +272,17 @@ class TestHttpServerError(unittest.TestCase):
 class TestHttpServer(unittest.TestCase):
     """Tests for HttpServer class"""
     def setUp(self):
+        # deadlock will be killed afer 20 secs
+        signal.signal(signal.SIGALRM, self.my_signal_handler)
+        signal.alarm(20)
         self.base = BaseModules()
 
     def tearDown(self):
         self.base.shutdown()
 
+    def my_signal_handler(self, signal, frame):
+        self.fail("A deadlock might be detected")
+
     def test_httpserver(self):
         self.stats_httpd = MyStatsHttpd(get_availaddr())
         self.assertEqual(type(self.stats_httpd.httpd), list)
@@ -291,6 +304,9 @@ class TestStatsHttpd(unittest.TestCase):
     """Tests for StatsHttpd class"""
 
     def setUp(self):
+        # deadlock will be killed afer 20 secs
+        signal.signal(signal.SIGALRM, self.my_signal_handler)
+        signal.alarm(20)
         self.base = BaseModules()
         self.stats_server = ThreadingServerManager(MyStats)
         self.stats_server.run()
@@ -301,6 +317,9 @@ class TestStatsHttpd(unittest.TestCase):
         self.stats_server.shutdown()
         self.base.shutdown()
 
+    def my_signal_handler(self, signal, frame):
+        self.fail("A deadlock might be detected")
+
     def test_init(self):
         server_address = get_availaddr()
         self.stats_httpd = MyStatsHttpd(server_address)

+ 7 - 0
src/bin/stats/tests/b10-stats_test.py

@@ -27,6 +27,7 @@ import threading
 import io
 import time
 import imp
+import signal
 
 import stats
 import isc.cc.session
@@ -145,6 +146,9 @@ class TestCallback(unittest.TestCase):
 
 class TestStats(unittest.TestCase):
     def setUp(self):
+        # deadlock will be killed afer 20 secs
+        signal.signal(signal.SIGALRM, self.my_signal_handler)
+        signal.alarm(20)
         self.base = BaseModules()
         self.stats = stats.Stats()
         self.const_timestamp = 1308730448.965706
@@ -154,6 +158,9 @@ class TestStats(unittest.TestCase):
     def tearDown(self):
         self.base.shutdown()
 
+    def my_signal_handler(self, signal, frame):
+        self.fail("A deadlock might be detected")
+
     def test_init(self):
         self.assertEqual(self.stats.module_name, 'Stats')
         self.assertFalse(self.stats.running)