BIND 10 trac930, updated. 3e3f4cad1dd4068070cac2e322d070df563565eb [trac930] - 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
BIND 10 source code commits
bind10-changes at lists.isc.org
Fri Aug 5 07:47:02 UTC 2011
The branch, trac930 has been updated
discards 458c7e33edc2c25bc5176bbfb38faad963f0c456 (commit)
discards d416c7129eaa198d9eaae83e450cd9ea1512a993 (commit)
discards f01a238e53d6605ab61b211efce353e56849f2db (commit)
discards 218398279cac1fa76369dfdf653e6377dca71115 (commit)
discards 20936bf7906b7ab874c3e2cf467cc6e8dd9f5d8d (commit)
discards 9d9f09b9787913e6825722f70891b9c530fd35ed (commit)
discards 180ac439ed61b5b85dc711758f67aa5c72cf526a (commit)
discards 69cc9cd34877eae68b8880a9f021eb1deed8f5ad (commit)
discards 529ac4f93066672de1c8078cfc1601fad085a5d5 (commit)
discards 6a429f7c60ea91a925e9493fbbd1fcda875c8404 (commit)
discards 353c45fdbbccaf789c26a73e4c1df17c48beb0fe (commit)
discards 651bba3f8c44fb22e758e1cf222dac0db18e22f8 (commit)
discards 9b218d066781a7626811a3be7b913d75cb72f163 (commit)
discards f5b31a317a6d3666919504d73e8330f4700cbfb8 (commit)
discards 7da48e07c415dbb3669cc1a51c9e37d0db2db8c6 (commit)
discards eb872d369c4bab1daaf144551024c7d9166b0126 (commit)
discards 1758b4db4d39ae2f36d4d3d57cb0240d856470e2 (commit)
discards 64fa2483853deba0612c15bdc3ccb7409f56d15f (commit)
discards aa1483525e8a3e8ec9e05a159934f95121920c14 (commit)
discards 7187899e2a96be92c4fd4ff91f952aef62848cd9 (commit)
discards 1da03c959043324519f36e247482224918570e9d (commit)
discards 7be2a078498cd44c9a79a0616663aead1586d6e6 (commit)
discards ff6c4caf3462376ebe2cc6da8994a2d86b809b11 (commit)
discards 6b110c3f38c2d06d7363515fb3fb425bedebcd12 (commit)
discards ac4c49866a6756eae3c330b4b3b078093c0ee1db (commit)
discards 3437a1e428a85f657e4928ab5a8494616a97920b (commit)
discards cac7b10eb4cb97bdece6c98d4db7ce2233212b52 (commit)
discards b8aeb85fc359f288f7dca2e418cedc87955c42ec (commit)
discards 09b10f389d2d96288b8c0844bc43b8daa969379a (commit)
discards 043db26a1e0201c112219e5e5484b5785ac84c21 (commit)
discards 564ec91746b2d369f36a1c890023b0ce9e6df6a8 (commit)
discards 4e60c0d75d6ecf9d2b251003fb85c12ab43a77bf (commit)
discards a1c2a94e9b1031c6d9472082f383841e5ca9e847 (commit)
discards 60672150ae4964384627d78bfbd29671080cf922 (commit)
discards 7b55ca06618d2c880f9b007542d6291ea8cee524 (commit)
discards 86999b955594c55fff6409007264cbe1f2eaf018 (commit)
discards b5a87a6327eb2a4cac8d94c65062d7c00285c5c6 (commit)
via 3e3f4cad1dd4068070cac2e322d070df563565eb (commit)
via 81724ff9d7b84fffbef12d5fe29110ac648cc27f (commit)
via 8d00801d054d1dcdfab031fcdff895a245299946 (commit)
via b5f7d2f658eea96de478fdd93bf8829a3796e4e4 (commit)
via 3e3b4e83da31e95a6b62361b79a7de8a4cec4825 (commit)
via 41597849af52581a55896a1adec8e9730e1660fb (commit)
via 7152b60e61796d94afc882b1b21c1d43a16971ce (commit)
via 099b2f55652f9d930b7c130632bd4ef9368dc27b (commit)
via eb1d8842771b797936e423a517ec6a23f6f46c1d (commit)
via 8b973f544001cc9ae440f776bfb8bb86976a7410 (commit)
via 7e05d2ecca76c9c0ff37d9e75c8d799834abede7 (commit)
via e8bfaefe7e1a89c38fcfa07389795707542e30a7 (commit)
via 3e5f7b8db4d92dd81ca8078380f13300ac4e2dad (commit)
via 5a6e52a43b511c50444d57b2a39e882d6045f284 (commit)
via 08d6bee9e8a64d9034d1526339fa7058cc47ec0e (commit)
via fd00a47b22e779e8aab897ea2c347746493fd856 (commit)
via 841ce466f7da2e69f64db2df000757d13390bd92 (commit)
via f899d2da84eb0794e1871743a6ab0c47709e8abb (commit)
via afbb0539629d9b8a6d056d9f507df47126339c65 (commit)
via beb81dfe817b6e37d5861e3dfc56ca5cba61e03d (commit)
via cf0dd1deccf98fbf891770237ab10001ceea0d5d (commit)
via 5599adceb9df14b884f2f9fbf8495c514522862a (commit)
via 02fd716235598062a85f5390696dbba38ef9ed09 (commit)
via fc0dfceb6eacd6294ac7175b288354e89e1fd0ca (commit)
via e2fb32f9a1445039e53fb25f8da55e0a66fcd969 (commit)
via 13626af26c9827aa4ea01b9a02e7e46c19b10742 (commit)
via 01aad4ccc702a40ce6dc87f9e3d3057346a4d2bf (commit)
via 5386e91c0ad84e890176ac27466cc77cb4cfb07b (commit)
via c84b1c33cbcfe13903c7b118f25199ec12263ecf (commit)
via 5a06a689308cf93bab0376d14cd75ea2da98e70e (commit)
via 49856af0435720158af25e8dbc27ad879a404ad9 (commit)
via ffe7cc13b12bce0a36865c448222325720d84c0a (commit)
via 01a624c91b204920ad0a562c947f8bc5f89ad28a (commit)
via 4aaac79296588b0395ce0e9b77c5f2d5f31370b2 (commit)
via 639d6e72a50bf429da4588d89c57a20a227da2c7 (commit)
via 82dfd1f88136caad942d79ac0e45fdc7eef03b73 (commit)
via 478b35c644a486fdc58708c85b318bbc86d59491 (commit)
via f7c4cfed198d0d8b06bc05f43c9df8b39b5a6e16 (commit)
via e657471f75d60643b5f608724313338081074b02 (commit)
via e9620e0d9dd3d967bcfb99562f13848c70538a44 (commit)
This update added new revisions after undoing existing revisions. That is
to say, the old revision is not a strict subset of the new revision. This
situation occurs when you --force push a change and generate a repository
containing something like this:
* -- * -- B -- O -- O -- O (458c7e33edc2c25bc5176bbfb38faad963f0c456)
\
N -- N -- N (3e3f4cad1dd4068070cac2e322d070df563565eb)
When this happens we assume that you've already had alert emails for all
of the O revisions, and so we here report only the revisions in the N
branch from the common base, B.
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 3e3f4cad1dd4068070cac2e322d070df563565eb
Author: Naoki Kambe <kambe at jprs.co.jp>
Date: Fri Aug 5 16:24:03 2011 +0900
[trac930]
- 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
commit 81724ff9d7b84fffbef12d5fe29110ac648cc27f
Author: Naoki Kambe <kambe at jprs.co.jp>
Date: Fri Aug 5 14:48:27 2011 +0900
[trac930]
- change address for test to 127.0.0.1 due to platform 127.0.0.2 can't be
assigned
- remove unnecessary thread.Event.wait()
- add thread.Event.clear() after thread.Event.wait()
commit 8d00801d054d1dcdfab031fcdff895a245299946
Author: Naoki Kambe <kambe at jprs.co.jp>
Date: Wed Aug 3 11:41:05 2011 +0900
[trac930] refactor unittests
- remove time.sleep from various unittests and add in the "run" method in
ThreadingServerManager
- adjust the sleep time (TIMEOUT_SEC)
- join some small unittests
(test_start_with_err, test_command_status, test_command_shutdown)
commit b5f7d2f658eea96de478fdd93bf8829a3796e4e4
Author: Naoki Kambe <kambe at jprs.co.jp>
Date: Tue Aug 2 22:00:11 2011 +0900
[trac930] add comments about abstracts of the test scripts in their headers
commit 3e3b4e83da31e95a6b62361b79a7de8a4cec4825
Author: Naoki Kambe <kambe at jprs.co.jp>
Date: Tue Aug 2 21:44:07 2011 +0900
[trac930] modify stats.py
- add more documentations into update_modules, get_statistics_data and
update_statistics_data methods
- modify two methods: "update_modules" and "get_statistics_data" methods raise
StatsError instead of just returning None, when communication between stats
module and config manager is failed or when it can't find specified
statistics data.
- also modify the unittest depending on the changes of these behaviors.
commit 41597849af52581a55896a1adec8e9730e1660fb
Author: Naoki Kambe <kambe at jprs.co.jp>
Date: Tue Aug 2 20:17:28 2011 +0900
[trac930] modify b10-stats_test.py
- set the constant variables in the setUp method in the TestUtilties class,
and compare values returned from the functions with these constants in
testing methods.
[trac930] remove the tearDown method which has no test case in the TestCallback
class
commit 7152b60e61796d94afc882b1b21c1d43a16971ce
Author: Naoki Kambe <kambe at jprs.co.jp>
Date: Tue Aug 2 19:57:58 2011 +0900
[trac930] remove tailing whitespaces.
commit 099b2f55652f9d930b7c130632bd4ef9368dc27b
Author: Naoki Kambe <kambe at jprs.co.jp>
Date: Mon Aug 1 18:38:35 2011 +0900
[trac930] raise StatsError including errors in the stats spec file
commit eb1d8842771b797936e423a517ec6a23f6f46c1d
Author: Naoki Kambe <kambe at jprs.co.jp>
Date: Mon Aug 1 18:21:23 2011 +0900
[trac930] rename the function name
- rename the name of 'parse_spec' to 'get_spec_defaults' in the result of
consideration of what it is doing
- modify the description of the function as docstring
- fix unitttests for the stats module depending on the function name
commit 8b973f544001cc9ae440f776bfb8bb86976a7410
Author: Naoki Kambe <kambe at jprs.co.jp>
Date: Fri Jul 29 22:11:38 2011 +0900
[trac930] remove a unnecessary x bit from stats_httpd.py.in
commit 7e05d2ecca76c9c0ff37d9e75c8d799834abede7
Author: Naoki Kambe <kambe at jprs.co.jp>
Date: Thu Jul 28 22:07:15 2011 +0900
[trac930] modify logging
add loggings and new messages for logging
remove unused messages from the message file
add test logging names into unittest scripts
commit e8bfaefe7e1a89c38fcfa07389795707542e30a7
Author: Naoki Kambe <kambe at jprs.co.jp>
Date: Wed Jul 27 20:45:18 2011 +0900
[trac930] modify the update_modues function
There is no part of statistics category in the spec file of a module which has
no statistics data.
commit 3e5f7b8db4d92dd81ca8078380f13300ac4e2dad
Author: Naoki Kambe <kambe at jprs.co.jp>
Date: Wed Jul 27 16:49:21 2011 +0900
[trac930]
- correct error messages in bindctl
it prints together with arguments.
- modify the command_show function
it reports statistics data of the module even if name is not specified.
- add/modify unittests depending on the changes of error messages
commit 5a6e52a43b511c50444d57b2a39e882d6045f284
Author: Naoki Kambe <kambe at jprs.co.jp>
Date: Wed Jul 27 16:42:54 2011 +0900
[trac930] remove unnecessary a white space
commit 08d6bee9e8a64d9034d1526339fa7058cc47ec0e
Author: Naoki Kambe <kambe at jprs.co.jp>
Date: Wed Jul 27 10:18:07 2011 +0900
[trac930] add a test pattern which the set command with a non-existent item
name is sent
commit fd00a47b22e779e8aab897ea2c347746493fd856
Author: Naoki Kambe <kambe at jprs.co.jp>
Date: Wed Jul 27 10:14:57 2011 +0900
[trac930] modify parse_spec function
returns empty dict if list-type is not specified in the argument
commit 841ce466f7da2e69f64db2df000757d13390bd92
Author: Naoki Kambe <kambe at jprs.co.jp>
Date: Fri Jul 22 21:40:07 2011 +0900
[trac930] fix conflicts with trac1021
commit f899d2da84eb0794e1871743a6ab0c47709e8abb
Author: Naoki Kambe <kambe at jprs.co.jp>
Date: Fri Jul 22 18:50:41 2011 +0900
[trac930] add changes because query counter names described in the specfile are changed.
commit afbb0539629d9b8a6d056d9f507df47126339c65
Author: Naoki Kambe <kambe at jprs.co.jp>
Date: Fri Jul 22 18:45:19 2011 +0900
[trac930] add the logging when the validation of statistics data fails
commit beb81dfe817b6e37d5861e3dfc56ca5cba61e03d
Author: Naoki Kambe <kambe at jprs.co.jp>
Date: Fri Jul 22 18:43:26 2011 +0900
[trac930] Add unittests to test sumitStatistics with the validation of statistics data and add mock ModuleSpec class
commit cf0dd1deccf98fbf891770237ab10001ceea0d5d
Author: Naoki Kambe <kambe at jprs.co.jp>
Date: Fri Jul 22 18:41:34 2011 +0900
[trac930] Add prototypes of validator_typea and registerStatisticsValidator
- validator_type -- a type of statistics validation function
- registerStatisticsValidator -- the function to register the validation function
commit 5599adceb9df14b884f2f9fbf8495c514522862a
Author: Naoki Kambe <kambe at jprs.co.jp>
Date: Fri Jul 22 18:37:22 2011 +0900
[trac930]
- Add implementation to validate statistics data
-- When validation is success, it sends data to statistics module. But when it fails, it doesn't send and logs the message.
- Add the function to register the validation function into the class
commit 02fd716235598062a85f5390696dbba38ef9ed09
Author: Naoki Kambe <kambe at jprs.co.jp>
Date: Fri Jul 22 18:32:22 2011 +0900
[trac930] add the helper functions which are used around the registration of the function to validate the statistics data.
commit fc0dfceb6eacd6294ac7175b288354e89e1fd0ca
Author: Naoki Kambe <kambe at jprs.co.jp>
Date: Fri Jul 22 18:28:40 2011 +0900
[trac930] add new messages into the message file of Auth and Boss
when validation of statistics data to send to statistics module is failed.
commit e2fb32f9a1445039e53fb25f8da55e0a66fcd969
Author: Naoki Kambe <kambe at jprs.co.jp>
Date: Wed Jul 20 10:00:29 2011 +0900
[trac930] add statistics validation for bob
commit 13626af26c9827aa4ea01b9a02e7e46c19b10742
Author: Naoki Kambe <kambe at jprs.co.jp>
Date: Wed Jul 13 20:25:54 2011 +0900
[trac930]
- increase seconds in sleep time which is before HTTP client connects to the server
- delete 'test_log_message' because of the deletion of original function
commit 01aad4ccc702a40ce6dc87f9e3d3057346a4d2bf
Author: Naoki Kambe <kambe at jprs.co.jp>
Date: Fri Jul 8 21:22:34 2011 +0900
[trac930] remove unneeded empty TODO comments
commit 5386e91c0ad84e890176ac27466cc77cb4cfb07b
Author: Naoki Kambe <kambe at jprs.co.jp>
Date: Fri Jul 8 21:09:41 2011 +0900
[trac930] add new entry for #928-#930
commit c84b1c33cbcfe13903c7b118f25199ec12263ecf
Author: Naoki Kambe <kambe at jprs.co.jp>
Date: Fri Jul 8 20:08:22 2011 +0900
[trac930] refurbish the unittests for new stats module, new stats httpd module
and new mockups and utilities in test_utils.py
commit 5a06a689308cf93bab0376d14cd75ea2da98e70e
Author: Naoki Kambe <kambe at jprs.co.jp>
Date: Fri Jul 8 19:56:24 2011 +0900
[trac930] modify Stats
- remove unneeded subject and listener classes
- add StatsError for handling errors in Stats
- add some new methods (update_modules, update_statistics_data and
get_statistics_data)
- modify implementations of existent commands(show and set) according changes
stats.spec
- remove reset and remove command because stats module couldn't manage other
modules' statistics data schema
- add implementation of strict validation of each statistics data
(If the validation is failed, it puts out the error.)
- stats module shows its PID when status command invoked
- add new command showschema invokable via bindctl
- set command requires arguments of owner module name and statistics item name
- show and showschema commands accepts arguments of owner module name and
statistics item name
- exits at exit code 1 if got runtime errors
- has boot time in _BASETIME
commit 49856af0435720158af25e8dbc27ad879a404ad9
Author: Naoki Kambe <kambe at jprs.co.jp>
Date: Fri Jul 8 19:40:15 2011 +0900
[trac930]
- remove "stats-schema.spec" setting and getting statistics data schema via
this spec file
- add "version" item in DEFAULT_CONFIG
- get the address family by socket.getaddrinfo function with specified
server_address in advance, and create HttpServer object once, in stead of
creating double HttpServer objects for IPv6 and IPv4 in the prior code
(It is aimed for avoiding to fail to close the once opened sockets.)
- open HTTP port in start method
- avoid calling config_handler recursively in the except statement
- create XML, XSD, XSL documents after getting statistics data and schema from
remote stats module via CC session
- definitely close once opened template file object
commit ffe7cc13b12bce0a36865c448222325720d84c0a
Author: Naoki Kambe <kambe at jprs.co.jp>
Date: Fri Jul 8 16:33:59 2011 +0900
[trac930] update spec file of stats module
- update description of status command, shutdown command and show command
- change argument of show command (Owner module name of statistics data can be
specified)
- change argument of set command (Owner module name of statistics data is
always required)
- add showschema command which shows statistics data schema of each module
specified)
- disabled reset command and remove command
commit 01a624c91b204920ad0a562c947f8bc5f89ad28a
Author: Naoki Kambe <kambe at jprs.co.jp>
Date: Fri Jul 8 16:21:49 2011 +0900
[trac930] update argument name and argument format of set command in auth module and boss module
and also update related unittests of their modules
commit 4aaac79296588b0395ce0e9b77c5f2d5f31370b2
Author: Naoki Kambe <kambe at jprs.co.jp>
Date: Fri Jul 8 16:18:38 2011 +0900
[trac930] remove description about removing statistics data by stats module
update example format in bindctl when show command of stats module is invoked
commit 639d6e72a50bf429da4588d89c57a20a227da2c7
Author: Naoki Kambe <kambe at jprs.co.jp>
Date: Fri Jul 8 16:13:17 2011 +0900
[trac930] add a column "Owner" in the table tag
commit 82dfd1f88136caad942d79ac0e45fdc7eef03b73
Author: Naoki Kambe <kambe at jprs.co.jp>
Date: Fri Jul 8 16:12:09 2011 +0900
[trac930] remove descriptions about "stats-schema.spec" and add description about new
features because stats module can be requested to show statistics data schema.
commit 478b35c644a486fdc58708c85b318bbc86d59491
Author: Naoki Kambe <kambe at jprs.co.jp>
Date: Fri Jul 8 16:00:30 2011 +0900
[trac930] add utilities and mock-up modules for unittests of
statistics modules and change some environ variables (PYTHONPATH,
CONFIG_TESTDATA_PATH) in Makefile
test_utilies.py internally calls msgq, cfgmgr and some mock modules
with threads for as real situation as possible.
commit f7c4cfed198d0d8b06bc05f43c9df8b39b5a6e16
Author: Naoki Kambe <kambe at jprs.co.jp>
Date: Fri Jul 8 15:57:41 2011 +0900
[trac930] remove unneeded mockups, fake modules and dummy data
commit e657471f75d60643b5f608724313338081074b02
Author: Naoki Kambe <kambe at jprs.co.jp>
Date: Fri Jul 8 15:55:55 2011 +0900
[trac930] remove unneeded specfile "stats-schema.spec"
-----------------------------------------------------------------------
Summary of changes:
src/bin/stats/tests/b10-stats-httpd_test.py | 13 ++--
src/bin/stats/tests/b10-stats_test.py | 91 ++++++++++++++-----------
src/bin/stats/tests/test_utils.py | 1 +
src/lib/config/module_spec.cc | 9 ++-
src/lib/config/tests/module_spec_unittests.cc | 2 +-
src/lib/python/isc/config/module_spec.py | 6 +-
6 files changed, 71 insertions(+), 51 deletions(-)
-----------------------------------------------------------------------
diff --git a/src/bin/stats/tests/b10-stats-httpd_test.py b/src/bin/stats/tests/b10-stats-httpd_test.py
index 870e6b9..8c84277 100644
--- a/src/bin/stats/tests/b10-stats-httpd_test.py
+++ b/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
@@ -512,13 +513,13 @@ class TestStatsHttpd(unittest.TestCase):
self.assertEqual(
self.stats_httpd.config_handler(
- dict(listen_on=[dict(address="127.0.0.2",port=8000)])),
+ dict(listen_on=[dict(address="127.0.0.1",port=8000)])),
isc.config.ccsession.create_answer(0))
self.assertTrue("listen_on" in self.stats_httpd.config)
for addr in self.stats_httpd.config["listen_on"]:
self.assertTrue("address" in addr)
self.assertTrue("port" in addr)
- self.assertTrue(addr["address"] == "127.0.0.2")
+ self.assertTrue(addr["address"] == "127.0.0.1")
self.assertTrue(addr["port"] == 8000)
if self.ipv6_enabled:
diff --git a/src/bin/stats/tests/b10-stats_test.py b/src/bin/stats/tests/b10-stats_test.py
index b2c1b7f..7cf4f7e 100644
--- a/src/bin/stats/tests/b10-stats_test.py
+++ b/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()
@@ -211,25 +210,24 @@ class TestStats(unittest.TestCase):
# command_handler
statsserver = ThreadingServerManager(MyStats)
statsserver.run()
- self.base.boss.server._started.wait()
self.assertEqual(
send_command(
'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()) + ")"))
@@ -243,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'])
@@ -295,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)
@@ -322,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')
@@ -343,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 at 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'),
@@ -382,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(
@@ -521,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 at bar' }),
isc.config.create_answer(0, None))
@@ -567,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()
diff --git a/src/bin/stats/tests/test_utils.py b/src/bin/stats/tests/test_utils.py
index f9ab969..e79db48 100644
--- a/src/bin/stats/tests/test_utils.py
+++ b/src/bin/stats/tests/test_utils.py
@@ -53,6 +53,7 @@ class ThreadingServerManager:
def run(self):
self.server._thread.start()
self.server._started.wait()
+ self.server._started.clear()
# waiting for the server's being ready for listening
time.sleep(TIMEOUT_SEC)
diff --git a/src/lib/config/module_spec.cc b/src/lib/config/module_spec.cc
index eed6b72..27cf993 100644
--- a/src/lib/config/module_spec.cc
+++ b/src/lib/config/module_spec.cc
@@ -103,8 +103,15 @@ check_format(ConstElementPtr value, ConstElementPtr format_name) {
BOOST_FOREACH (const format_types::value_type& f, time_formats) {
if (format_name->stringValue() == f.first) {
struct tm tm;
+ char buf[255] = "";
+ memset(&tm, 0, sizeof(tm));
+ // reverse check
return (strptime(value->stringValue().c_str(),
- f.second.c_str(), &tm) != NULL);
+ f.second.c_str(), &tm) != NULL
+ && strftime(buf, sizeof(buf),
+ f.second.c_str(), &tm) != 0
+ && strcmp(value->stringValue().c_str(),
+ buf) == 0);
}
}
return (false);
diff --git a/src/lib/config/tests/module_spec_unittests.cc b/src/lib/config/tests/module_spec_unittests.cc
index 315a78d..cfd0ff5 100644
--- a/src/lib/config/tests/module_spec_unittests.cc
+++ b/src/lib/config/tests/module_spec_unittests.cc
@@ -287,7 +287,7 @@ TEST(ModuleSpec, CheckFormat) {
item_default = "\"item_default\": \"2011-05-27\",";
item_format = "\"item_format\": \"date\"";
specs.push_back("," + item_default + item_format);
- item_default = "\"item_default\": \"19:42:57Z\",";
+ item_default = "\"item_default\": \"19:42:57\",";
item_format = "\"item_format\": \"time\"";
specs.push_back("," + item_default + item_format);
diff --git a/src/lib/python/isc/config/module_spec.py b/src/lib/python/isc/config/module_spec.py
index d120080..b79f928 100644
--- a/src/lib/python/isc/config/module_spec.py
+++ b/src/lib/python/isc/config/module_spec.py
@@ -330,8 +330,10 @@ def _check_format(value, format_name):
for fmt in time_formats:
if format_name == fmt:
try:
- time.strptime(value, time_formats[fmt])
- return True
+ # reverse check
+ return value == time.strftime(
+ time_formats[fmt],
+ time.strptime(value, time_formats[fmt]))
except (ValueError, TypeError):
break
return False
More information about the bind10-changes
mailing list