BIND 10 trac615, updated. 02d45b17f160bd3662ee765147debe770c6d3faa [trac615] Pass cmdctl port trough
BIND 10 source code commits
bind10-changes at lists.isc.org
Wed Mar 9 20:13:52 UTC 2011
The branch, trac615 has been updated
via 02d45b17f160bd3662ee765147debe770c6d3faa (commit)
via fc26c7396d98fa84a8f057cc409303f911792365 (commit)
from 9dcb53261abe3c16324155fbc4c3436100b9e2ee (commit)
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 02d45b17f160bd3662ee765147debe770c6d3faa
Author: Michal 'vorner' Vaner <michal.vaner at nic.cz>
Date: Wed Mar 9 20:25:02 2011 +0100
[trac615] Pass cmdctl port trough
commit fc26c7396d98fa84a8f057cc409303f911792365
Author: Michal 'vorner' Vaner <michal.vaner at nic.cz>
Date: Wed Mar 9 19:57:06 2011 +0100
[trac615] Parsing of port for cmdctl
-----------------------------------------------------------------------
Summary of changes:
configure.ac | 1 +
src/bin/bind10/bind10.py.in | 25 +++++++++++++++----
src/bin/bind10/tests/bind10_test.py | 22 +++++++++++++----
src/bin/cfgmgr/tests/b10-cfgmgr_test.py.in | 16 +------------
src/lib/python/isc/Makefile.am | 2 +-
src/lib/python/isc/testutils/Makefile.am | 1 +
src/lib/python/isc/testutils/README | 3 ++
.../python/isc/testutils/__init__.py} | 7 ++---
.../python/isc/testutils/parse_args.py} | 18 ++++++++++++--
9 files changed, 61 insertions(+), 34 deletions(-)
create mode 100644 src/lib/python/isc/testutils/Makefile.am
create mode 100644 src/lib/python/isc/testutils/README
copy src/{bin/stats/tests/isc/util/process.py => lib/python/isc/testutils/__init__.py} (84%)
copy src/{bin/stats/tests/isc/util/process.py => lib/python/isc/testutils/parse_args.py} (60%)
-----------------------------------------------------------------------
diff --git a/configure.ac b/configure.ac
index 0f34b0d..d5795c4 100644
--- a/configure.ac
+++ b/configure.ac
@@ -657,6 +657,7 @@ AC_CONFIG_FILES([Makefile
src/lib/python/isc/net/tests/Makefile
src/lib/python/isc/notify/Makefile
src/lib/python/isc/notify/tests/Makefile
+ src/lib/python/isc/testutils/Makefile
src/lib/config/Makefile
src/lib/config/tests/Makefile
src/lib/config/tests/testdata/Makefile
diff --git a/src/bin/bind10/bind10.py.in b/src/bin/bind10/bind10.py.in
index fea7f40..bbca56a 100755
--- a/src/bin/bind10/bind10.py.in
+++ b/src/bin/bind10/bind10.py.in
@@ -196,7 +196,7 @@ class BoB:
def __init__(self, msgq_socket_file=None, data_path = None,
config_filename = None, nocache=False, verbose=False, setuid=None,
- username=None):
+ username=None, cmdctl_port=None):
"""
Initialize the Boss of BIND. This is a singleton (only one can run).
@@ -224,6 +224,7 @@ class BoB:
self.verbose = verbose
self.data_path = data_path
self.config_filename = config_filename
+ self.cmdctl_port = cmdctl_port
def config_handler(self, new_config):
# If this is initial update, don't do anything now, leave it to startup
@@ -510,8 +511,13 @@ class BoB:
self.start_simple("b10-stats", c_channel_env)
def start_cmdctl(self, c_channel_env):
- # XXX: we hardcode port 8080
- self.start_simple("b10-cmdctl", c_channel_env, 8080)
+ """
+ Starts the command control process
+ """
+ opts = ["b10-cmdctl"]
+ if self.cmdctl_port is not None:
+ opts.append("--port=" + str(self.cmdctl_port))
+ self.start_process("b10-cmdctl", opts, c_channel_env, self.cmdctl_port)
def start_all_processes(self):
"""
@@ -795,12 +801,12 @@ def process_rename(option, opt_str, value, parser):
"""Function that renames the process if it is requested by a option."""
isc.util.process.rename(value)
-def parse_args(args=sys.argv[1:]):
+def parse_args(args=sys.argv[1:], Parser=OptionParser):
"""
Function for parsing command line arguments. Returns the
options object from OptionParser.
"""
- parser = OptionParser(version=VERSION)
+ parser = Parser(version=VERSION)
parser.add_option("-m", "--msgq-socket-file", dest="msgq_socket_file",
type="string", default=None,
help="UNIX domain socket file the b10-msgq daemon will use")
@@ -819,7 +825,14 @@ def parse_args(args=sys.argv[1:]):
parser.add_option("-p", "--data-path", dest="data_path",
help="Directory to search for configuration files",
default=None)
+ parser.add_option("--cmdctl-port", dest="cmdctl_port", type="int",
+ default=None, help="Port of command control")
(options, args) = parser.parse_args(args)
+ if options.cmdctl_port is not None:
+ try:
+ isc.net.parse.port_parse(options.cmdctl_port)
+ except ValueError as e:
+ parser.error(e)
if args:
parser.print_help()
sys.exit(1)
@@ -884,7 +897,7 @@ def main():
# Go bob!
boss_of_bind = BoB(options.msgq_socket_file, options.data_path,
options.config_file, options.nocache, options.verbose,
- setuid, username)
+ setuid, username, options.cmdctl_port)
startup_result = boss_of_bind.startup()
if startup_result:
sys.stderr.write("[bind10] Error on startup: %s\n" % startup_result)
diff --git a/src/bin/bind10/tests/bind10_test.py b/src/bin/bind10/tests/bind10_test.py
index 623a6fa..6eb6189 100644
--- a/src/bin/bind10/tests/bind10_test.py
+++ b/src/bin/bind10/tests/bind10_test.py
@@ -9,6 +9,7 @@ import os
import signal
import socket
from isc.net.addr import IPAddr
+from isc.testutils.parse_args import TestOptParser, OptsError
class TestProcessInfo(unittest.TestCase):
def setUp(self):
@@ -421,26 +422,37 @@ class TestParseArgs(unittest.TestCase):
"""
Test correct default values when no options are passed.
"""
- options = parse_args([])
+ options = parse_args([], TestOptParser)
self.assertEqual(None, options.data_path)
self.assertEqual(None, options.config_file)
+ self.assertEqual(None, options.cmdctl_port)
def test_data_path(self):
"""
Test it can parse the data path.
"""
- options = parse_args(['-p', '/data/path'])
+ options = parse_args(['-p', '/data/path'], TestOptParser)
self.assertEqual('/data/path', options.data_path)
- options = parse_args(['--data-path=/data/path'])
+ options = parse_args(['--data-path=/data/path'], TestOptParser)
self.assertEqual('/data/path', options.data_path)
def test_config_filename(self):
"""
Test it can parse the config switch.
"""
- options = parse_args(['-c', 'config-file'])
+ options = parse_args(['-c', 'config-file'], TestOptParser)
self.assertEqual('config-file', options.config_file)
- options = parse_args(['--config-file=config-file'])
+ options = parse_args(['--config-file=config-file'], TestOptParser)
self.assertEqual('config-file', options.config_file)
+ def test_cmdctl_port(self):
+ """
+ Test it can parse the command control port.
+ """
+ self.assertRaises(OptsError, parse_args, ['--cmdctl-port=abc'],
+ TestOptParser)
+ self.assertRaises(OptsError, parse_args, ['--cmdctl-port=100000000'],
+ TestOptParser)
+ options = parse_args(['--cmdctl-port=1234'], TestOptParser)
+ self.assertEqual(1234, options.cmdctl_port)
if __name__ == '__main__':
unittest.main()
diff --git a/src/bin/cfgmgr/tests/b10-cfgmgr_test.py.in b/src/bin/cfgmgr/tests/b10-cfgmgr_test.py.in
index e0a492b..cdc4306 100644
--- a/src/bin/cfgmgr/tests/b10-cfgmgr_test.py.in
+++ b/src/bin/cfgmgr/tests/b10-cfgmgr_test.py.in
@@ -20,7 +20,7 @@
import unittest
import os
import sys
-from optparse import OptionParser
+from isc.testutils.parse_args import OptsError, TestOptParser
class MyConfigManager:
def __init__(self, path, filename):
@@ -89,20 +89,6 @@ class TestConfigManagerStartup(unittest.TestCase):
sys.modules.pop("b10-cfgmgr")
-class OptsError(Exception):
- """To know when OptionParser would exit"""
- pass
-
-class TestOptParser(OptionParser):
- """
- We define our own option parser to push into the parsing routine.
- This one does not exit the whole application on error, it just raises
- exception. It doesn't change anything else. The application uses the
- stock one.
- """
- def error(self, message):
- raise OptsError(message)
-
class TestParseArgs(unittest.TestCase):
"""
Test for the parsing of command line arguments. We provide a different
diff --git a/src/lib/python/isc/Makefile.am b/src/lib/python/isc/Makefile.am
index bda911b..7a54909 100644
--- a/src/lib/python/isc/Makefile.am
+++ b/src/lib/python/isc/Makefile.am
@@ -1,4 +1,4 @@
-SUBDIRS = datasrc cc config log net notify util
+SUBDIRS = datasrc cc config log net notify util testutils
python_PYTHON = __init__.py
diff --git a/src/lib/python/isc/testutils/Makefile.am b/src/lib/python/isc/testutils/Makefile.am
new file mode 100644
index 0000000..8f00a9b
--- /dev/null
+++ b/src/lib/python/isc/testutils/Makefile.am
@@ -0,0 +1 @@
+EXTRA_DIST = __init__.py parse_args.py
diff --git a/src/lib/python/isc/testutils/README b/src/lib/python/isc/testutils/README
new file mode 100644
index 0000000..7e6ef06
--- /dev/null
+++ b/src/lib/python/isc/testutils/README
@@ -0,0 +1,3 @@
+This contains some shared test code for other modules and python processes.
+That's why it doesn't have it's own test subdirectory and why it isn't
+installed.
diff --git a/src/lib/python/isc/testutils/__init__.py b/src/lib/python/isc/testutils/__init__.py
new file mode 100644
index 0000000..afcccf4
--- /dev/null
+++ b/src/lib/python/isc/testutils/__init__.py
@@ -0,0 +1,17 @@
+# Copyright (C) 2011 Internet Systems Consortium.
+#
+# Permission to use, copy, modify, and distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SYSTEMS CONSORTIUM
+# DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
+# INTERNET SYSTEMS CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
+# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
+# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+# Nothing here, really, it's just to tell python this directory is in
+# module hierarchy
diff --git a/src/lib/python/isc/testutils/parse_args.py b/src/lib/python/isc/testutils/parse_args.py
new file mode 100644
index 0000000..5d79137
--- /dev/null
+++ b/src/lib/python/isc/testutils/parse_args.py
@@ -0,0 +1,30 @@
+# Copyright (C) 2011 Internet Systems Consortium.
+#
+# Permission to use, copy, modify, and distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SYSTEMS CONSORTIUM
+# DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
+# INTERNET SYSTEMS CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
+# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
+# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+from optparse import OptionParser
+
+class OptsError(Exception):
+ """To know when OptionParser would exit"""
+ pass
+
+class TestOptParser(OptionParser):
+ """
+ We define our own option parser to push into the parsing routine.
+ This one does not exit the whole application on error, it just raises
+ exception. It doesn't change anything else. The application uses the
+ stock one.
+ """
+ def error(self, message):
+ raise OptsError(message)
More information about the bind10-changes
mailing list