Browse Source

[trac547]
- added prefix 'fake_' to names of mock-up modules to be apart from builtin modules (socket, select)
- updated class names according to above changes
- updated and corrected docstrings
- added NOTEs for usage into docstrings

Naoki Kambe 14 years ago
parent
commit
f1ac03b814

+ 2 - 2
src/bin/stats/tests/Makefile.am

@@ -1,8 +1,8 @@
 SUBDIRS = isc http testdata
 PYCOVERAGE_RUN = @PYCOVERAGE_RUN@
 PYTESTS = b10-stats_test.py b10-stats-httpd_test.py
-EXTRA_DIST = $(PYTESTS) fake_time.py socket.py select.py
-CLEANFILES = fake_time.pyc socket.pyc select.pyc
+EXTRA_DIST = $(PYTESTS) fake_time.py fake_socket.py fake_select.py
+CLEANFILES = fake_time.pyc fake_socket.pyc fake_select.pyc
 
 # test using command-line arguments, so use check-local target instead of TESTS
 check-local:

+ 26 - 22
src/bin/stats/tests/b10-stats-httpd_test.py

@@ -17,14 +17,16 @@ import unittest
 import os
 import http.server
 import string
-import select
+import fake_select
 import imp
 import sys
-import socket
+import fake_socket
 
 import isc.cc
 
 import stats_httpd
+stats_httpd.socket = fake_socket
+stats_httpd.select = fake_select
 
 DUMMY_DATA = {
     "auth.queries.tcp": 10000,
@@ -195,7 +197,7 @@ class TestHttpServer(unittest.TestCase):
             self.assertEqual(ht.xsl_handler, self.stats_httpd.xsl_handler)
             self.assertEqual(ht.log_writer, self.stats_httpd.write_log)
             self.assertTrue(isinstance(ht._handler, stats_httpd.HttpHandler))
-            self.assertTrue(isinstance(ht.socket, socket.socket))
+            self.assertTrue(isinstance(ht.socket, fake_socket.socket))
 
 class TestStatsHttpdError(unittest.TestCase):
     """Tests for StatsHttpdError exception"""
@@ -211,8 +213,8 @@ class TestStatsHttpd(unittest.TestCase):
 
     def setUp(self):
         self.verbose = True
-        socket._CLOSED = False
-        socket.has_ipv6 = True
+        fake_socket._CLOSED = False
+        fake_socket.has_ipv6 = True
         self.stats_httpd = stats_httpd.StatsHttpd(self.verbose)
         self.stats_httpd.cc_session.verbose = False
 
@@ -227,15 +229,15 @@ class TestStatsHttpd(unittest.TestCase):
         for ht in self.stats_httpd.httpd:
             self.assertFalse(ht.socket._closed)
             self.assertEqual(ht.socket.fileno(), id(ht.socket))
-        socket._CLOSED = True
+        fake_socket._CLOSED = True
         self.assertRaises(isc.cc.session.SessionError,
                           stats_httpd.StatsHttpd)
-        socket._CLOSED = False
+        fake_socket._CLOSED = False
 
     def test_mccs(self):
         self.stats_httpd.open_mccs()
         self.assertTrue(
-            isinstance(self.stats_httpd.mccs.get_socket(), socket.socket))
+            isinstance(self.stats_httpd.mccs.get_socket(), fake_socket.socket))
         self.assertTrue(
             isinstance(self.stats_httpd.cc_session, isc.cc.session.Session))
         self.assertTrue(
@@ -251,42 +253,42 @@ class TestStatsHttpd(unittest.TestCase):
 
     def test_httpd(self):
         # dual stack (addresses is ipv4 and ipv6)
-        socket.has_ipv6 = True
+        fake_socket.has_ipv6 = True
         self.assertTrue(('127.0.0.1', 8000) in set(self.stats_httpd.http_addrs))
         self.stats_httpd.http_addrs = [ ('::1', 8000), ('127.0.0.1', 8000) ]
         self.assertTrue(
-            stats_httpd.HttpServer.address_family in set([socket.AF_INET, socket.AF_INET6]))
+            stats_httpd.HttpServer.address_family in set([fake_socket.AF_INET, fake_socket.AF_INET6]))
         self.stats_httpd.open_httpd()
         for ht in self.stats_httpd.httpd:
-            self.assertTrue(isinstance(ht.socket, socket.socket))
+            self.assertTrue(isinstance(ht.socket, fake_socket.socket))
         self.stats_httpd.close_httpd()
 
         # dual stack (address is ipv6)
-        socket.has_ipv6 = True
+        fake_socket.has_ipv6 = True
         self.stats_httpd.http_addrs = [ ('::1', 8000) ]
         self.stats_httpd.open_httpd()
         for ht in self.stats_httpd.httpd:
-            self.assertTrue(isinstance(ht.socket, socket.socket))
+            self.assertTrue(isinstance(ht.socket, fake_socket.socket))
         self.stats_httpd.close_httpd()
 
         # dual stack (address is ipv4)
-        socket.has_ipv6 = True
+        fake_socket.has_ipv6 = True
         self.stats_httpd.http_addrs = [ ('127.0.0.1', 8000) ]
         self.stats_httpd.open_httpd()
         for ht in self.stats_httpd.httpd:
-            self.assertTrue(isinstance(ht.socket, socket.socket))
+            self.assertTrue(isinstance(ht.socket, fake_socket.socket))
         self.stats_httpd.close_httpd()
 
         # only-ipv4 single stack
-        socket.has_ipv6 = False
+        fake_socket.has_ipv6 = False
         self.stats_httpd.http_addrs = [ ('127.0.0.1', 8000) ]
         self.stats_httpd.open_httpd()
         for ht in self.stats_httpd.httpd:
-            self.assertTrue(isinstance(ht.socket, socket.socket))
+            self.assertTrue(isinstance(ht.socket, fake_socket.socket))
         self.stats_httpd.close_httpd()
 
         # only-ipv4 single stack (force set ipv6 )
-        socket.has_ipv6 = False
+        fake_socket.has_ipv6 = False
         self.stats_httpd.http_addrs = [ ('::1', 8000) ]
         self.assertRaises(stats_httpd.HttpServerError,
             self.stats_httpd.open_httpd)
@@ -295,13 +297,13 @@ class TestStatsHttpd(unittest.TestCase):
         self.stats_httpd.http_addrs = [ ('localhost', 8000) ]
         self.stats_httpd.open_httpd()
         for ht in self.stats_httpd.httpd:
-            self.assertTrue(isinstance(ht.socket, socket.socket))
+            self.assertTrue(isinstance(ht.socket, fake_socket.socket))
         self.stats_httpd.close_httpd()
 
         self.stats_httpd.http_addrs = [ ('my.host.domain', 8000) ]
         self.stats_httpd.open_httpd()
         for ht in self.stats_httpd.httpd:
-            self.assertTrue(isinstance(ht.socket, socket.socket))
+            self.assertTrue(isinstance(ht.socket, fake_socket.socket))
         self.stats_httpd.close_httpd()
 
         # over flow of port number
@@ -321,11 +323,11 @@ class TestStatsHttpd(unittest.TestCase):
         self.stats_httpd = stats_httpd.StatsHttpd(self.verbose)
         self.stats_httpd.cc_session.verbose = False
         self.assertRaises(
-            select.error, self.stats_httpd.start)
+            fake_select.error, self.stats_httpd.start)
 
     def test_stop(self):
         # success case
-        socket._CLOSED = False
+        fake_socket._CLOSED = False
         self.stats_httpd.stop()
         self.assertFalse(self.stats_httpd.running)
         self.assertIsNone(self.stats_httpd.mccs)
@@ -413,6 +415,8 @@ class TestStatsHttpd(unittest.TestCase):
             imp.reload(stats_httpd)
             os.environ["B10_FROM_SOURCE"] = tmppath
             imp.reload(stats_httpd)
+            stats_httpd.socket = fake_socket
+            stats_httpd.select = fake_select
 
 if __name__ == "__main__":
     unittest.main()

+ 10 - 5
src/bin/stats/tests/select.py

@@ -13,21 +13,26 @@
 # NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
 # WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 
-import socket
+"""
+A mock-up module of select
+
+*** NOTE ***
+It is only for testing stats_httpd module and not reusable for
+external module.
+"""
+
+import fake_socket
 import errno
 
 class error(Exception):
     pass
 
 def select(rlst, wlst, xlst, timeout):
-    """
-    This module is a mock-up function of select.select
-    """
     if type(timeout) != int and type(timeout) != float:
             raise TypeError("Error: %s must be integer or float"
                             % timeout.__class__.__name__)
     for s in rlst + wlst + xlst:
-        if type(s) != socket.socket:
+        if type(s) != fake_socket.socket:
             raise TypeError("Error: %s must be a dummy socket"
                             % s.__class__.__name__)
         s._called = s._called + 1

+ 5 - 1
src/bin/stats/tests/socket.py

@@ -14,7 +14,11 @@
 # WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 
 """
-This module is a mock-up classes of socket module
+A mock-up module of socket
+
+*** NOTE ***
+It is only for testing stats_httpd module and not reusable for
+external module.
 """
 
 import re

+ 13 - 5
src/bin/stats/tests/http/server.py

@@ -13,7 +13,15 @@
 # NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
 # WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 
-import socket
+"""
+A mock-up module of http.server
+
+*** NOTE ***
+It is only for testing stats_httpd module and not reusable for
+external module.
+"""
+
+import fake_socket
 
 class DummyHttpResponse:
     def __init__(self, path):
@@ -26,11 +34,11 @@ class DummyHttpResponse:
 
 class HTTPServer:
     """
-    This module is a mock-up class of http.server.HTTPServer
+    A mock-up class of http.server.HTTPServer
     """
-    address_family = socket.AF_INET
+    address_family = fake_socket.AF_INET
     def __init__(self, server_class, handler_class):
-        self.socket = socket.socket(self.address_family)
+        self.socket = fake_socket.socket(self.address_family)
         self.server_class = server_class
         self.socket.bind(self.server_class)
         self._handler = handler_class(None, None, self)
@@ -43,7 +51,7 @@ class HTTPServer:
 
 class BaseHTTPRequestHandler:
     """
-    This module is a mock-up class of http.server.BaseHTTPRequestHandler
+    A mock-up class of http.server.BaseHTTPRequestHandler
     """
 
     def __init__(self, request, client_address, server):

+ 10 - 4
src/bin/stats/tests/isc/cc/session.py

@@ -13,10 +13,16 @@
 # NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
 # WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 
-# This module is a mock-up class of isc.cc.session
+"""
+A mock-up module of isc.cc.session
+
+*** NOTE ***
+It is only for testing stats_httpd module and not reusable for
+external module.
+"""
 
 import sys
-import socket
+import fake_socket
 
 # set a dummy lname
 _TEST_LNAME = '123abc@xxxx'
@@ -41,8 +47,8 @@ class Session:
         self.message_queue = []
         self.old_message_queue = []
         try:
-            self._socket = socket.socket()
-        except socket.error as se:
+            self._socket = fake_socket.socket()
+        except fake_socket.error as se:
             raise SessionError(se)
         self.verbose = verbose
 

+ 7 - 1
src/bin/stats/tests/isc/config/ccsession.py

@@ -13,7 +13,13 @@
 # NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
 # WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 
-# This module is a mock-up class of isc.cc.session
+"""
+A mock-up module of isc.cc.session
+
+*** NOTE ***
+It is only for testing stats_httpd module and not reusable for
+external module.
+"""
 
 import json
 import os

+ 4 - 1
src/bin/stats/tests/isc/util/process.py

@@ -13,6 +13,9 @@
 # NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
 # WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 
-# A dummy function of isc.util.process.rename()
+"""
+A dummy function of isc.util.process.rename()
+"""
+
 def rename(name=None):
     pass