From: Tomek Mrugalski Date: Wed, 8 Mar 2017 09:16:14 +0000 (+0100) Subject: [5137] version is now reported properly. X-Git-Tag: trac5152_base~6^2~12 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=357a7ea37810d44be8ab0a617cd5b3d5a02356e9;p=thirdparty%2Fkea.git [5137] version is now reported properly. --- diff --git a/src/bin/shell/Makefile.am b/src/bin/shell/Makefile.am index 4ecc853d1a..d9786c7bd1 100644 --- a/src/bin/shell/Makefile.am +++ b/src/bin/shell/Makefile.am @@ -40,7 +40,9 @@ endif # this is done here since configure.ac AC_OUTPUT doesn't expand exec_prefix kea-shell: kea-shell.py - $(SED) "s|@@PYTHONPATH@@|@pyexecdir@|" kea-shell.py >$@ + rm -f kea-shell.tmp + $(SED) "s|@@PYTHONPATH@@|@pyexecdir@|" kea-shell.py > kea-shell.tmp + $(SED) "s|REPORTED_VERSION|@PACKAGE_VERSION@|" kea-shell.tmp >$@ chmod a+x $@ install-data-local: diff --git a/src/bin/shell/kea-shell.py b/src/bin/shell/kea-shell.py index a8530835e9..ebc1833d69 100644 --- a/src/bin/shell/kea-shell.py +++ b/src/bin/shell/kea-shell.py @@ -1,5 +1,9 @@ #!/usr/bin/python +# This is going to be replaced with the actual version (see kea-shell target +# in Makefile.am) +VERSION = "REPORTED_VERSION" + # First, let's import the right kea_connector. # We have two versions: one for python 2.x and another for python 3.x. # Sadly, there's no unified way to handle http connections. The recommended @@ -29,22 +33,27 @@ from kea_conn import CARequest, CAResponse # the help and sanity checking input parameters. parser = argparse.ArgumentParser(description='Connects to Kea Control Agent.') -parser.add_argument('--host', type=str, nargs=1, default='127.0.0.1', +parser.add_argument('--host', type=str, default='127.0.0.1', help='hostname of the CA to connect to') -parser.add_argument('--port', type=int, nargs=1, default=8000, +parser.add_argument('--port', type=int, default=8000, help='TCP port of the CA to connect to') -parser.add_argument('--timeout', type=int, nargs=1, default='10', +parser.add_argument('--timeout', type=int, default='10', help='Timeout (in seconds) when attempting to connect to CA') parser.add_argument('command', type=str, nargs="?", default='list-commands', help='command to be executed. If not specified, "list-commands" is used') +parser.add_argument('-v', action="store_true", help="Prints version") cmd_args = parser.parse_args() +if (cmd_args.v): + print (VERSION) + exit(0) + # Ok, now time to put the parameters parsed into the structure to be used by the # connection. params = CARequest() params.command = cmd_args.command -params.http_host = cmd_args.host[0] -params.http_port = cmd_args.port[0] +params.http_host = cmd_args.host +params.http_port = cmd_args.port params.timeout = cmd_args.timeout params.generateBody() diff --git a/src/bin/shell/tests/shell_process_tests.sh.in b/src/bin/shell/tests/shell_process_tests.sh.in index c4cfaf183d..875e324047 100644 --- a/src/bin/shell/tests/shell_process_tests.sh.in +++ b/src/bin/shell/tests/shell_process_tests.sh.in @@ -35,6 +35,9 @@ CONFIG="{ } }" +# In these tests we need to use two binaries: Control Agent and Kea shell. +# Using bin and bin_path would be confusing, so we omit defining bin and bin_path +# on purpose. ca_bin="kea-ctrl-agent" ca_bin_path=@abs_top_builddir@/src/bin/agent @@ -146,7 +149,30 @@ shell_command_test() { test_finish 0 } -shell_command_test "shell.list-commands" "list-commands" "[ { \"arguments\": [ \"list-commands\" ], \"result\": 0 } ]" "" -shell_command_test "shell.bogus" "give-me-a-beer" "[ { \"result\": 1, \"text\": \"'give-me-a-beer' command not supported.\" } ]" "" +# This test verifies that the binary is reporting its version properly. +version_test() { + test_name=${1} # Test name + + # Log the start of the test and print test name. + test_start ${test_name} + + # Remove dangling Kea instances and remove log files. + cleanup + + REPORTED_VERSION="`${shell_bin_path}/${shell_bin} -v`" + + if test "${REPORTED_VERSION}" == "${EXPECTED_VERSION}"; then + test_finish 0 + else + printf "ERROR: Expected version ${EXPECTED_VERSION}, got ${REPORTED_VERSION}\n" + test_finish 1 + fi +} + +version_test "shell.version" +shell_command_test "shell.list-commands" "list-commands" \ + "[ { \"arguments\": [ \"list-commands\" ], \"result\": 0 } ]" "" +shell_command_test "shell.bogus" "give-me-a-beer" \ + "[ { \"result\": 1, \"text\": \"'give-me-a-beer' command not supported.\" } ]" ""