Module: check_mk
Branch: master
Commit: d7417d25c440636600efecad18481ab8adab4772
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=d7417d25c44063…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Mon Dec 5 09:42:34 2016 +0100
Fixed new get_graph API tests
---
tests/testlib/__init__.py | 24 ++++++++++++++++++------
tests/web/test_webapi.py | 18 ++++++++++++++++--
2 files changed, 34 insertions(+), 8 deletions(-)
diff --git a/tests/testlib/__init__.py b/tests/testlib/__init__.py
index d57c038..454c33a 100644
--- a/tests/testlib/__init__.py
+++ b/tests/testlib/__init__.py
@@ -52,6 +52,10 @@ def omd(cmd):
return os.system(cmdline) >> 8
+class APIError(Exception):
+ pass
+
+
# It's ok to make it currently only work on debian based distros
class CMKVersion(object):
DEFAULT = "default"
@@ -333,7 +337,8 @@ class Site(object):
# Call WATO once for creating the default WATO configuration
response = web.get("wato.py").text
assert "<title>WATO" in response
- assert "<div class=\"title\">Manual Checks</div>"
in response
+ assert "<div class=\"title\">Manual Checks</div>"
in response, \
+ "WATO does not seem to be initialized: %r" % response
missing_files = [
"etc/check_mk/conf.d/wato/rules.mk",
@@ -667,14 +672,21 @@ class CMKWebSession(WebSession):
}
- def _api_request(self, url, data):
+ def _api_request(self, url, data, expect_error=False):
data.update(self._automation_credentials())
req = self.post(url, data=data)
response = json.loads(req.text)
- assert response["result_code"] == 0, \
- "An error occured: %r" % response
+ if not expect_error:
+ assert response["result_code"] == 0, \
+ "An error occured: %r" % response
+ else:
+ assert response["result_code"] == 1, \
+ "No error occured, but was expected: %r" % response
+
+ print repr(response["result"])
+ raise APIError(response["result"])
return response["result"]
@@ -774,7 +786,7 @@ class CMKWebSession(WebSession):
assert status["_time_ended"] > time_started
- def get_regular_graph(self, hostname, service_description, graph_index):
+ def get_regular_graph(self, hostname, service_description, graph_index,
expect_error=False):
result = self._api_request("webapi.py?action=get_graph", {
"request": json.dumps({
"specification": ["template", {
@@ -787,7 +799,7 @@ class CMKWebSession(WebSession):
"time_range": [time.time()-3600, time.time()]
}
}),
- })
+ }, expect_error=expect_error)
assert type(result) == dict
assert "start_time" in result
diff --git a/tests/web/test_webapi.py b/tests/web/test_webapi.py
index 5551356..de03f96 100644
--- a/tests/web/test_webapi.py
+++ b/tests/web/test_webapi.py
@@ -2,7 +2,9 @@
# encoding: utf-8
import pytest
-from testlib import web
+import time
+
+from testlib import web, APIError
def test_global_settings(site, web):
r = web.get("wato.py")
@@ -66,15 +68,27 @@ def test_activate_changes(web, site):
web.activate_changes()
-def test_get_graph(web):
+def test_get_graph(web, site):
try:
+ # No graph yet...
+ with pytest.raises(APIError) as e:
+ data = web.get_regular_graph("test-host-get-graph",
"Check_MK", 0, expect_error=True)
+ assert "Cannot calculate graph definitions" in "%s" % e
+
+ # Now add the host
web.add_host("test-host-get-graph", attributes={
"ipaddress": "127.0.0.1",
})
web.discover_services("test-host-get-graph")
web.activate_changes()
+ # Issue a reschedule
+
site.live.command("SCHEDULE_FORCED_SERVICE_CHECK;test-host-get-graph;Check_MK;%d"
% int(time.time()))
+ time.sleep(1)
+
+ # Now we get a graph
data = web.get_regular_graph("test-host-get-graph",
"Check_MK", 0)
+
assert len(data["curves"]) == 4
assert data["curves"][0]["title"] == "CPU time in user
space"
assert data["curves"][1]["title"] == "CPU time in
operating system"