Browse Source

[trac930] modify b10-stats-httpd_test.py and b10-stats_test.py

 - revise header comments in each test script

 - replace some hard-coded time strings with the constants defined in
   the setUp function

 - merged several checks about B10_FROM_SOURCE into the TestOSEnv
   class
Naoki Kambe 13 years ago
parent
commit
53314ecb63
2 changed files with 55 additions and 44 deletions
  1. 5 4
      src/bin/stats/tests/b10-stats-httpd_test.py
  2. 50 40
      src/bin/stats/tests/b10-stats_test.py

+ 5 - 4
src/bin/stats/tests/b10-stats-httpd_test.py

@@ -14,10 +14,11 @@
 # WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 
 """
-This unittests run Msgq, Cfgmgr, Auth, Boss and Stats as mock in
-background. Because the stats httpd communicates various other modules
-in runtime. However this aim is not to actually simulate a whole
-system running.
+In each of these tests we start several virtual components. They are
+not the real components, no external processes are started. They are
+just simple mock objects running each in its own thread and pretending
+to be bind10 modules. This helps testing the stats http server in a
+close to real environment.
 """
 
 import unittest

+ 50 - 40
src/bin/stats/tests/b10-stats_test.py

@@ -14,10 +14,11 @@
 # WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 
 """
-This unittests run Msgq, Cfgmgr, Auth and Boss as mock in
-background. Because the stats module communicates various other
-modules in runtime. However this aim is not to actually simulate a
-whole system running.
+In each of these tests we start several virtual components. They are
+not the real components, no external processes are started. They are
+just simple mock objects running each in its own thread and pretending
+to be bind10 modules. This helps testing the stats module in a close
+to real environment.
 """
 
 import unittest
@@ -146,11 +147,9 @@ class TestStats(unittest.TestCase):
     def setUp(self):
         self.base = BaseModules()
         self.stats = stats.Stats()
-        self.assertTrue("B10_FROM_SOURCE" in os.environ)
-        self.assertEqual(stats.SPECFILE_LOCATION, \
-                             os.environ["B10_FROM_SOURCE"] + os.sep + \
-                             "src" + os.sep + "bin" + os.sep + "stats" + \
-                             os.sep + "stats.spec")
+        self.const_timestamp = 1308730448.965706
+        self.const_datetime = '2011-06-22T08:14:08Z'
+        self.const_default_datetime = '1970-01-01T00:00:00Z'
 
     def tearDown(self):
         self.base.shutdown()
@@ -216,19 +215,19 @@ class TestStats(unittest.TestCase):
                 'show', 'Stats',
                 params={ 'owner' : 'Boss',
                   'name'  : 'boot_time' }),
-            (0, '2011-06-22T08:14:08Z'))
+            (0, self.const_datetime))
         self.assertEqual(
             send_command(
                 'set', 'Stats',
                 params={ 'owner' : 'Boss',
-                  'data'  : { 'boot_time' : '2012-06-22T18:24:08Z' } }),
+                  'data'  : { 'boot_time' : self.const_datetime } }),
             (0, None))
         self.assertEqual(
             send_command(
                 'show', 'Stats',
                 params={ 'owner' : 'Boss',
                   'name'  : 'boot_time' }),
-            (0, '2012-06-22T18:24:08Z'))
+            (0, self.const_datetime))
         self.assertEqual(
             send_command('status', 'Stats'),
             (0, "Stats is up. (PID " + str(os.getpid()) + ")"))
@@ -242,7 +241,7 @@ class TestStats(unittest.TestCase):
         self.assertEqual(len(value['Stats']), 5)
         self.assertEqual(len(value['Boss']), 1)
         self.assertTrue('boot_time' in value['Boss'])
-        self.assertEqual(value['Boss']['boot_time'], '2012-06-22T18:24:08Z')
+        self.assertEqual(value['Boss']['boot_time'], self.const_datetime)
         self.assertTrue('report_time' in value['Stats'])
         self.assertTrue('boot_time' in value['Stats'])
         self.assertTrue('last_update_time' in value['Stats'])
@@ -294,14 +293,14 @@ class TestStats(unittest.TestCase):
         self.assertTrue('last_update_time' in my_statistics_data)
         self.assertTrue('timestamp' in my_statistics_data)
         self.assertTrue('lname' in my_statistics_data)
-        self.assertEqual(my_statistics_data['report_time'], "1970-01-01T00:00:00Z")
-        self.assertEqual(my_statistics_data['boot_time'], "1970-01-01T00:00:00Z")
-        self.assertEqual(my_statistics_data['last_update_time'], "1970-01-01T00:00:00Z")
+        self.assertEqual(my_statistics_data['report_time'], self.const_default_datetime)
+        self.assertEqual(my_statistics_data['boot_time'], self.const_default_datetime)
+        self.assertEqual(my_statistics_data['last_update_time'], self.const_default_datetime)
         self.assertEqual(my_statistics_data['timestamp'], 0.0)
         self.assertEqual(my_statistics_data['lname'], "")
         my_statistics_data = stats.get_spec_defaults(self.stats.modules['Boss'].get_statistics_spec())
         self.assertTrue('boot_time' in my_statistics_data)
-        self.assertEqual(my_statistics_data['boot_time'], "1970-01-01T00:00:00Z")
+        self.assertEqual(my_statistics_data['boot_time'], self.const_default_datetime)
         orig_parse_answer = stats.isc.config.ccsession.parse_answer
         stats.isc.config.ccsession.parse_answer = lambda x: (99, 'error')
         self.assertRaises(stats.StatsError, self.stats.update_modules)
@@ -321,11 +320,11 @@ class TestStats(unittest.TestCase):
         my_statistics_data = self.stats.get_statistics_data(owner='Stats')
         self.assertTrue('boot_time' in my_statistics_data)
         my_statistics_data = self.stats.get_statistics_data(owner='Stats', name='report_time')
-        self.assertEqual(my_statistics_data, "1970-01-01T00:00:00Z")
+        self.assertEqual(my_statistics_data, self.const_default_datetime)
         my_statistics_data = self.stats.get_statistics_data(owner='Stats', name='boot_time')
-        self.assertEqual(my_statistics_data, "1970-01-01T00:00:00Z")
+        self.assertEqual(my_statistics_data, self.const_default_datetime)
         my_statistics_data = self.stats.get_statistics_data(owner='Stats', name='last_update_time')
-        self.assertEqual(my_statistics_data, "1970-01-01T00:00:00Z")
+        self.assertEqual(my_statistics_data, self.const_default_datetime)
         my_statistics_data = self.stats.get_statistics_data(owner='Stats', name='timestamp')
         self.assertEqual(my_statistics_data, 0.0)
         my_statistics_data = self.stats.get_statistics_data(owner='Stats', name='lname')
@@ -342,10 +341,10 @@ class TestStats(unittest.TestCase):
         self.assertTrue('Stats' in self.stats.statistics_data)
         my_statistics_data = self.stats.statistics_data['Stats']
         self.assertEqual(my_statistics_data['lname'], 'foo@bar')
-        self.stats.update_statistics_data(owner='Stats', last_update_time='2000-01-01T10:10:10Z')
+        self.stats.update_statistics_data(owner='Stats', last_update_time=self.const_datetime)
         self.assertTrue('Stats' in self.stats.statistics_data)
         my_statistics_data = self.stats.statistics_data['Stats']
-        self.assertEqual(my_statistics_data['last_update_time'], '2000-01-01T10:10:10Z')
+        self.assertEqual(my_statistics_data['last_update_time'], self.const_datetime)
         self.assertEqual(self.stats.update_statistics_data(owner='Stats', lname=0.0),
                          ['0.0 should be a string'])
         self.assertEqual(self.stats.update_statistics_data(owner='Dummy', foo='bar'),
@@ -381,14 +380,14 @@ class TestStats(unittest.TestCase):
                 0, 0))
         orig_get_timestamp = stats.get_timestamp
         orig_get_datetime = stats.get_datetime
-        stats.get_timestamp = lambda : 1308730448.965706
-        stats.get_datetime = lambda : '2011-06-22T08:14:08Z'
-        self.assertEqual(stats.get_timestamp(), 1308730448.965706)
-        self.assertEqual(stats.get_datetime(), '2011-06-22T08:14:08Z')
+        stats.get_timestamp = lambda : self.const_timestamp
+        stats.get_datetime = lambda : self.const_datetime
+        self.assertEqual(stats.get_timestamp(), self.const_timestamp)
+        self.assertEqual(stats.get_datetime(), self.const_datetime)
         self.assertEqual(self.stats.command_show(owner='Stats', name='report_time'), \
-                             isc.config.create_answer(0, '2011-06-22T08:14:08Z'))
-        self.assertEqual(self.stats.statistics_data['Stats']['timestamp'], 1308730448.965706)
-        self.assertEqual(self.stats.statistics_data['Stats']['boot_time'], '1970-01-01T00:00:00Z')
+                             isc.config.create_answer(0, self.const_datetime))
+        self.assertEqual(self.stats.statistics_data['Stats']['timestamp'], self.const_timestamp)
+        self.assertEqual(self.stats.statistics_data['Stats']['boot_time'], self.const_default_datetime)
         stats.get_timestamp = orig_get_timestamp
         stats.get_datetime = orig_get_datetime
         self.stats.mccs.specification = isc.config.module_spec.ModuleSpec(
@@ -520,17 +519,17 @@ class TestStats(unittest.TestCase):
 
     def test_command_set(self):
         orig_get_datetime = stats.get_datetime
-        stats.get_datetime = lambda : '2011-06-22T06:12:38Z'
+        stats.get_datetime = lambda : self.const_datetime
         (rcode, value) = isc.config.ccsession.parse_answer(
             self.stats.command_set(owner='Boss',
-                                   data={ 'boot_time' : '2011-06-22T13:15:04Z' }))
+                                   data={ 'boot_time' : self.const_datetime }))
         stats.get_datetime = orig_get_datetime
         self.assertEqual(rcode, 0)
         self.assertTrue(value is None)
         self.assertEqual(self.stats.statistics_data['Boss']['boot_time'],
-                         '2011-06-22T13:15:04Z')
+                         self.const_datetime)
         self.assertEqual(self.stats.statistics_data['Stats']['last_update_time'],
-                         '2011-06-22T06:12:38Z')
+                         self.const_datetime)
         self.assertEqual(self.stats.command_set(owner='Stats',
                                                 data={ 'lname' : 'foo@bar' }),
                          isc.config.create_answer(0, None))
@@ -566,16 +565,27 @@ class TestStats(unittest.TestCase):
         self.assertRaises(stats.StatsError,
                           self.stats.command_set, owner='Stats', data={ 'dummy' : '_xxxx_yyyy_zzz_' })
 
+class TestOSEnv(unittest.TestCase):
     def test_osenv(self):
         """
-        test for not having environ "B10_FROM_SOURCE"
+        test for the environ variable "B10_FROM_SOURCE"
+        "B10_FROM_SOURCE" is set in Makefile
         """
-        if "B10_FROM_SOURCE" in os.environ:
-            path = os.environ["B10_FROM_SOURCE"]
-            os.environ.pop("B10_FROM_SOURCE")
-            imp.reload(stats)
-            os.environ["B10_FROM_SOURCE"] = path
-            imp.reload(stats)
+        # test case having B10_FROM_SOURCE
+        self.assertTrue("B10_FROM_SOURCE" in os.environ)
+        self.assertEqual(stats.SPECFILE_LOCATION, \
+                             os.environ["B10_FROM_SOURCE"] + os.sep + \
+                             "src" + os.sep + "bin" + os.sep + "stats" + \
+                             os.sep + "stats.spec")
+        # test case not having B10_FROM_SOURCE
+        path = os.environ["B10_FROM_SOURCE"]
+        os.environ.pop("B10_FROM_SOURCE")
+        self.assertFalse("B10_FROM_SOURCE" in os.environ)
+        # import stats again
+        imp.reload(stats)
+        # revert the changes
+        os.environ["B10_FROM_SOURCE"] = path
+        imp.reload(stats)
 
 def test_main():
     unittest.main()