Module: check_mk
Branch: master
Commit: b754aef7ad8c99d92f18703630f16c8c948097a4
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=b754aef7ad8c99…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Tue Dec 8 10:12:09 2015 +0100
GUI-Tests: intermediate step
---
doc/helpers/cmk-guitest | 140 +++++++++++++++++------------------------------
web/htdocs/htmllib.py | 9 ++-
2 files changed, 59 insertions(+), 90 deletions(-)
diff --git a/doc/helpers/cmk-guitest b/doc/helpers/cmk-guitest
index bfeaec7..c6c1797 100644
--- a/doc/helpers/cmk-guitest
+++ b/doc/helpers/cmk-guitest
@@ -1,8 +1,8 @@
#!/usr/bin/python
+# encoding: utf-8
import os, sys, getopt, pprint, time, requests
-
# .--GUI Test------------------------------------------------------------.
# | ____ _ _ ___ _____ _ |
# | / ___| | | |_ _| |_ _|__ ___| |_ |
@@ -21,9 +21,13 @@ def tests_dir():
return path
+def recording_symlink():
+ return tests_dir() + "RECORD"
+
+
def run_guitests(args):
if not args:
- bail_out("Please specify tests to run. Available are: %s" % "
".join(names_of_all_tests()))
+ args = names_of_all_tests()
sys.stdout.write("Going to run %d tests...\n" % len(args))
@@ -81,6 +85,30 @@ def run_test_step(test_name, step_nr, step):
return response.status_code == requests.codes.ok
+def list_guitests(test_names):
+ if not test_names:
+ test_names = names_of_all_tests()
+ for test_name in test_names:
+ sys.stdout.write("%s\n" % test_name)
+ test = load_guitest(test_name)
+ for nr, step in enumerate(test):
+ sys.stdout.write(" #%d - %s\n" % (nr,
step["output"]["page_title"]))
+
+
+def start_recording(test_name):
+ if os.path.lexists(recording_symlink()):
+ bail_out("Currently recording. Stop with cmk-guitest -s.\n")
+ os.symlink(test_name + ".mk", recording_symlink())
+ sys.stdout.write("Started recording into test %s.\n" % test_name)
+
+
+def stop_recording(args):
+ if not os.path.lexists(recording_symlink()):
+ bail_out("Currently not recording.")
+ os.remove(recording_symlink())
+ sys.stdout.write("Stopped recording.\n")
+
+
#.
# .-Helpers--------------------------------------------------------------.
# | _ _ _ |
@@ -119,101 +147,27 @@ def bail_out(x):
def usage():
sys.stderr.write("""
-Usage: %s [OPTION] TEST1 TEST2 ...
+Usage: cmk-guitest [OPTIONS] {TEST|-r TEST|-R|-l}
-h, --help Show this help
-v, --verbose Output debug information on stderr
--debug Do not catch Python exceptions
-""" % os.path.split(sys.argv[0])[1])
-
-def print_version():
- sys.stdout.write("This is cmcdump version %s\n" % check_mk_version)
-
-#.
-# .-main-----------------------------------------------------------------.
-# | _ |
-# | _ __ ___ __ _(_)_ __ |
-# | | '_ ` _ \ / _` | | '_ \ |
-# | | | | | | | (_| | | | | | |
-# | |_| |_| |_|\__,_|_|_| |_| |
-# | |
-# +----------------------------------------------------------------------+
-# | Main entry point, getopt, etc. |
-# '----------------------------------------------------------------------'
+ -r, --record TEST Start recording new test
+ -s, --stop-recording Stop recording test
+ -l, --list-tests List all tests
-short_options = 'hv'
-long_options = [ "help", "debug", "verbose" ]
-opt_verbose = False
-opt_debug = False
+ Running tests:
-try:
- opts, args = getopt.getopt(sys.argv[1:], short_options, long_options)
-except getopt.GetoptError, err:
- sys.stderr.write("%s\n\n" % err)
- usage()
- sys.exit(1)
+ cmk-guitest [OPTIONS] [TEST1 TEST2...]
-for o,a in opts:
- # modes
- if o in [ '-h', '--help' ]:
- usage()
- sys.exit(0)
+ Recording tests:
- # Modifiers
- elif o in [ '-v', '--verbose' ]:
- opt_verbose = True
- elif o == '--debug':
- opt_debug = True
+ cmk-guitest [OPTIONS] -r TEST
+ cmk-guitest [OPTIONS] -s
-# Main modes
-try:
- run_guitests(args)
-
-except Exception, e:
- if opt_debug:
- raise
- bail_out(e)
-
-
-# .-Helpers--------------------------------------------------------------.
-# | _ _ _ |
-# | | | | | ___| |_ __ ___ _ __ ___ |
-# | | |_| |/ _ \ | '_ \ / _ \ '__/ __| |
-# | | _ | __/ | |_) | __/ | \__ \ |
-# | |_| |_|\___|_| .__/ \___|_| |___/ |
-# | |_| |
-# +----------------------------------------------------------------------+
-# | Various helper functions |
-# '----------------------------------------------------------------------'
-
-def omd_root():
- return os.getenv("OMD_ROOT")
-
-def omd_site():
- return os.getenv("OMD_SITE")
-
-def verbose(x):
- if opt_verbose:
- sys.stderr.write("%s\n" % x)
-
-def bail_out(x):
- sys.stderr.write("%s\n" % x)
- sys.exit(1)
-
-def usage():
- sys.stderr.write("""
-Usage: %s [OPTION] TEST
-
- -h, --help Show this help
- -v, --verbose Output debug information on stderr
- --debug Do not catch Python exceptions
-
-""" % os.path.split(sys.argv[0])[1])
-
-def print_version():
- sys.stdout.write("This is cmcdump version %s\n" % check_mk_version)
+""")
#.
# .-main-----------------------------------------------------------------.
@@ -227,8 +181,8 @@ def print_version():
# | Main entry point, getopt, etc. |
# '----------------------------------------------------------------------'
-short_options = 'hv'
-long_options = [ "help", "debug", "verbose" ]
+short_options = 'hvr:sl'
+long_options = [ "help", "debug", "verbose",
"list-tests=", "record=", "stop-recording" ]
opt_verbose = False
opt_debug = False
@@ -240,11 +194,19 @@ except getopt.GetoptError, err:
usage()
sys.exit(1)
+mode_function = run_guitests
+
for o,a in opts:
# modes
if o in [ '-h', '--help' ]:
usage()
sys.exit(0)
+ elif o in [ '-l', '--list-tests' ]:
+ mode_function = list_guitests
+ elif o in [ '-r', '--record' ]:
+ mode_function = (lambda a: (lambda args: start_recording(a)))(a)
+ elif o in [ '-s', '--stop-recording' ]:
+ mode_function = stop_recording
# Modifiers
elif o in [ '-v', '--verbose' ]:
@@ -254,7 +216,7 @@ for o,a in opts:
# Main modes
try:
- run_guitest(args)
+ mode_function(args)
except Exception, e:
if opt_debug:
diff --git a/web/htdocs/htmllib.py b/web/htdocs/htmllib.py
index 8e5ba8f..210430e 100644
--- a/web/htdocs/htmllib.py
+++ b/web/htdocs/htmllib.py
@@ -136,6 +136,7 @@ class html:
self.guitest = {
"variables" : self.vars.copy(),
"filename" : self.myfile,
+ "output" : {},
}
# Fix transaction ID: We are just interested in whether it is valid or not
if "_transid" in self.vars:
@@ -203,7 +204,12 @@ class html:
def guitest_ignored_pages(self):
- return [ "run_cron", "index", "side",
"sidebar_snapin" ]
+ return [ "run_cron", "index", "side",
"sidebar_snapin", "dashboard", "dashboard_dashlet",
"login" ]
+
+
+ def guitest_record_output(self, key, value):
+ if self.guitest:
+ self.guitest["output"].setdefault(key, []).append(value)
def is_mobile(self):
@@ -880,6 +886,7 @@ class html:
self.default_html_headers()
self.write('<title>')
self.write(self.attrencode(title))
+ self.add_guitest_record("page_title", title)
self.write('</title>\n')
# If the variable _link_target is set, then all links in this page