Skip to content

Commit

Permalink
check_sql: refactored arguments str to list + create unit check test
Browse files Browse the repository at this point in the history
CMK-873

Change-Id: Iec31fa411c991ebcb20fbff9582efbc65cfa18dd
  • Loading branch information
Jonas Kluger committed Jun 25, 2019
1 parent 2aa134a commit e133627
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 20 deletions.
35 changes: 15 additions & 20 deletions checks/check_sql
Expand Up @@ -24,13 +24,6 @@
# to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
# Boston, MA 02110-1301 USA.

#active_checks['sql'] = [
# ( {'dbms': 'postgres', 'description': u'SQL Test', 'user': 'golla',
# 'sql': 'testerer', 'password': 'toor',
# 'procedure': {'useprocs': True, 'input': '1223,456'},
# 'name': 'messpc'}, [], ALL_HOSTS ),
# ] + active_checks['sql']


def check_sql_arguments(params):
args = []
Expand All @@ -40,19 +33,19 @@ def check_sql_arguments(params):
else:
args += ["--hostname=$HOSTADDRESS$"]

args += ["--dbms=%s" % params["dbms"]]
args += ["--name=%s" % params["name"]]
args += ["--user=%s" % params["user"]]
args += [passwordstore_get_cmdline("--password=%s", params["password"])]
args.append("--dbms=%s" % params["dbms"])
args.append("--name=%s" % params["name"])
args.append("--user=%s" % params["user"])
args.append(passwordstore_get_cmdline("--password=%s", params["password"]))

if "port" in params:
args += ["--port=%s" % params["port"]]
args.append("--port=%s" % params["port"])

if "procedure" in params:
if "procedure" in params and "useprocs" in params["procedure"]:
args += ["--procedure"]
args.append("--procedure")
if "input" in params["procedure"]:
args += ["--inputvars=%s" % params["procedure"]["input"]]
args.append("--inputvars=%s" % params["procedure"]["input"])

if "levels" in params:
upper = params["levels"]
Expand All @@ -65,24 +58,26 @@ def check_sql_arguments(params):
lower = "", ""

if "perfdata" in params:
args += ["--metrics"]
args.append("--metrics")

if "levels" in params or "levels_low" in params:
args += ["-w%s:%s" % (lower[0], upper[0])]
args += ["-c%s:%s" % (lower[1], upper[1])]
warn_low, crit_low = lower
warn_high, crit_high = upper
args.append("-w%s:%s" % (warn_low, warn_high))
args.append("-c%s:%s" % (crit_low, crit_high))

if isinstance(params["sql"], tuple):
sql_tmp = params["sql"][-1]
else:
sql_tmp = params["sql"]

args += ["%s" % sql_tmp.replace("\n", r"\n").replace(";", r"\;")]
args.append("%s" % sql_tmp.replace("\n", r"\n").replace(";", r"\;"))

return args


active_check_info['sql'] = {
"command_line": '$USER1$/check_sql $ARG1$',
active_check_info["sql"] = {
"command_line": "$USER1$/check_sql $ARG1$",
"argument_function": check_sql_arguments,
"service_description": lambda args: args["description"],
"has_perfdata": True,
Expand Down
22 changes: 22 additions & 0 deletions tests/unit/checks/test_check_sql.py
@@ -0,0 +1,22 @@
import pytest

pytestmark = pytest.mark.checks


@pytest.mark.parametrize("params,expected_args", [
({
"description": "foo",
"dbms": "postgres",
"name": "bar",
"user": "hans",
"password": "wurst",
"sql": ("")
}, [
"--hostname=$HOSTADDRESS$", "--dbms=postgres", "--name=bar", "--user=hans",
"--password=wurst", ""
]),
])
def test_check_sql_argument_parsing(check_manager, params, expected_args):
"""Tests if all required arguments are present."""
active_check = check_manager.get_active_check("check_sql")
assert active_check.run_argument_function(params) == expected_args

0 comments on commit e133627

Please sign in to comment.