From 6659a1c08dda0d6ec20f945e135b23b544db55a4 Mon Sep 17 00:00:00 2001 From: Magnus Ahltorp Date: Wed, 2 Nov 2016 12:55:20 +0100 Subject: Added performance tests --- test/Makefile | 6 ++++ test/scripts/perf-test.sh | 71 +++++++++++++++++++++++++++++++++++++++++++++++ test/scripts/testutils.sh | 2 +- tools/parsebench.py | 19 ++++++++----- 4 files changed, 90 insertions(+), 8 deletions(-) create mode 100755 test/scripts/perf-test.sh diff --git a/test/Makefile b/test/Makefile index bd58cfe..c92c30d 100644 --- a/test/Makefile +++ b/test/Makefile @@ -18,3 +18,9 @@ tests: rm -r $(INSTDIR)/tests || true mkdir $(INSTDIR)/tests (cd $(INSTDIR)/tests && ../../test/scripts/light-system-test.sh) + +perf-tests: + @make tests-makemk + rm -r $(INSTDIR)/tests || true + mkdir $(INSTDIR)/tests + (cd $(INSTDIR)/tests && ../../test/scripts/perf-test.sh) diff --git a/test/scripts/perf-test.sh b/test/scripts/perf-test.sh new file mode 100755 index 0000000..aaf3b1d --- /dev/null +++ b/test/scripts/perf-test.sh @@ -0,0 +1,71 @@ +#!/bin/sh + +set -o nounset +set -o errexit + +top_srcdir=$(cd $(dirname $0)/../..; pwd) + +. ${top_srcdir}/test/scripts/testutils.sh + +SCRIPTS=${top_srcdir}/test/scripts + +tests_start() { + ${SCRIPTS}/light-system-test-start.sh +} + +tests_stop() { + ${SCRIPTS}/light-system-test-stop.sh +} + +${SCRIPTS}/light-system-test-prepare.sh + +cp ${top_srcdir}/test/known_roots/* known_roots + +tests_start + +do_merge +check_sth + +assert_equal "Tree size" "$(get_treesize)" 0 + +python ${top_srcdir}/tools/submitcert.py --parallel=1 --store ${top_srcdir}/test/bulktestcerts/0000.zip --sct-file=submittedcerts ${BASEURL} --publickey=keys/logkey.pem --cafile httpsca/demoCA/cacert.pem || (tests_stop ; fail "Submission failed") + + +do_merge 2> bench-1 || (tests_stop ; fail "Merge failed") +check_sth || (tests_stop ; fail "Check STH failed") + +sleep 5 +tests_stop +sleep 5 + +mv mergedb mergedb-down +mv mergedb-secondary mergedb +mkdir mergedb-secondary +touch mergedb-secondary/logorder +printf 0 > mergedb-secondary/verifiedsize + +tests_start + +do_merge 2> bench-2 || (tests_stop ; fail "Merge failed") +check_sth || (tests_stop ; fail "Check STH failed") + +sleep 5 +tests_stop +sleep 5 + +mv machine/machine-1 machine/machine-1-down +mkdir -p machine/machine-1/db +touch machine/machine-1/db/index +touch machine/machine-1/db/newentries + +tests_start + +do_merge 2> bench-3 || (tests_stop ; fail "Merge failed") +check_sth || (tests_stop ; fail "Check STH failed") + +sleep 5 +tests_stop +sleep 5 + +grep timing: bench-[123] > bench.txt +${top_srcdir}/tools/parsebench.py bench.txt > bench.html diff --git a/test/scripts/testutils.sh b/test/scripts/testutils.sh index 94d6223..e779e07 100644 --- a/test/scripts/testutils.sh +++ b/test/scripts/testutils.sh @@ -18,5 +18,5 @@ check_sth() { } do_merge() { - ${top_srcdir}/tools/merge --config ${top_srcdir}/test/catlfish-test.cfg --localconfig ${top_srcdir}/test/catlfish-test-local-merge.cfg || fail "Merge failed" + ${top_srcdir}/tools/merge --config ${top_srcdir}/test/catlfish-test.cfg --timing --localconfig ${top_srcdir}/test/catlfish-test-local-merge.cfg || fail "Merge failed" } diff --git a/tools/parsebench.py b/tools/parsebench.py index 96c36d6..671e482 100755 --- a/tools/parsebench.py +++ b/tools/parsebench.py @@ -10,8 +10,8 @@ import itertools def parse_one_line(line): row = line.rstrip().split(":") - assert row[0].startswith("mergeoutput.") - iteration = int(row[0][12:]) + assert row[0].startswith("bench-") + iteration = int(row[0][6:]) stage = row[2].strip() data = ast.literal_eval(row[3].strip()) return (iteration, stage, data) @@ -30,29 +30,34 @@ def main(): print "" print "" +scale = 0.25 + def parse_one_file(filename): lines = [parse_one_line(line) for line in open(filename)] iterations = itertools.groupby(lines, lambda x: x[0]) print "

%s

" % (filename,) print "
" legend = [] + firsttime = True for (i, iteration) in iterations: - print "" + print >>sys.stderr, (i, iteration) + print "
" for (stagen, (_, stage, data)) in enumerate(iteration): - if i == 0: + if firsttime: legend.append("
%s" % (stage,)) data = list(data) for (itemn, (item, useconds)) in enumerate(data): seconds = useconds / 1000000 step = 50 / (len(data) - 1) - print "
" - if i == 0: + if firsttime: legend.append("") print "
" % (seconds/4, stagen * 90, itemn * step + 40, stage, item, seconds) - if i == 0: + print "" % (int(seconds*scale), stagen * 90, itemn * step + 40, stage, item, seconds) + if firsttime: legend.append("%s" % (stagen * 90, itemn * step + 40, item)) print " " print "
" + firsttime = False print "
" print "
" print "
" -- cgit v1.1