resperf-report revision f3ad877eb05befbc862b0233d985758c0caef29a
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#!/bin/sh
1fdd2470b625a58b57d0b155e6caf8c4fc0afe8aAutomatic Updater#
75c0816e8295e180f4bc7f10db3d0d880383bc1cMark Andrews# Driver script to run resperf and generate an HTML report of
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# the results, with graphs.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# Program locations - change these if not in $PATH
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinresperf=resperf
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeingnuplot=gnuplot
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# The gnuplot terminal type. This determines the image format for the
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# plots; "png" or "gif" will both work as long as the corresponding
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# terminal support is compiled into your copy of gnuplot.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinterminal=png
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# Create a unique ID for this report
9c6a5d1f22f972232d7a9fd5c5fa64f10bacbdffAutomatic Updaterid=`date '+%Y%m%d-%H%M'`
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# Set up file names
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinreportfile="$id.html"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinoutputfile="$id.output"
e21a2904f02a03fa06b6db04d348f65fe9c67b2bMark Andrewsplotfile="$id.gnuplot"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinrate_graph="$id.rate.$terminal"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinlatency_graph="$id.latency.$terminal"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# Run the test
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein$resperf -P "$plotfile" "$@" >"$outputfile" 2>&1 ||
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein { echo "`basename $0`: error running resperf:" >&2;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein cat $outputfile >&2;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein exit 1;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein }
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# Create plots
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinif
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $gnuplot <<EOF
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinset terminal $terminal
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinset output "$rate_graph"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinset title "Query / response / failure rate"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinset key top left
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinset xlabel "Time (seconds)"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinset yrange [0:]
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinplot \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein"$plotfile" using 1:3 title "Queries sent per second" with lines, \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein"$plotfile" using 1:4 title "Total responses received per second" with lines, \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein"$plotfile" using 1:5 title "Failure responses received per second" with lines
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinEOF
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinthen
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein :
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinelse
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein echo "`basename $0`: error running gnuplot" >&2; exit 1;
58d9e9169e7ab4355a0b0bfc13bc616bc5247dfeAutomatic Updaterfi
58d9e9169e7ab4355a0b0bfc13bc616bc5247dfeAutomatic Updater
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinif
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $gnuplot <<EOF
58d9e9169e7ab4355a0b0bfc13bc616bc5247dfeAutomatic Updaterset terminal $terminal
58d9e9169e7ab4355a0b0bfc13bc616bc5247dfeAutomatic Updaterset output "$latency_graph"
58d9e9169e7ab4355a0b0bfc13bc616bc5247dfeAutomatic Updaterset title "Latency"
9c6a5d1f22f972232d7a9fd5c5fa64f10bacbdffAutomatic Updaterset key top left
9c6a5d1f22f972232d7a9fd5c5fa64f10bacbdffAutomatic Updaterset xlabel "Time (seconds)"
9c6a5d1f22f972232d7a9fd5c5fa64f10bacbdffAutomatic Updaterset yrange [0:]
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinplot \
9c6a5d1f22f972232d7a9fd5c5fa64f10bacbdffAutomatic Updater"$plotfile" using 1:6 title "Average latency (seconds)" with lines
9c6a5d1f22f972232d7a9fd5c5fa64f10bacbdffAutomatic UpdaterEOF
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinthen
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein :
9c6a5d1f22f972232d7a9fd5c5fa64f10bacbdffAutomatic Updaterelse
9c6a5d1f22f972232d7a9fd5c5fa64f10bacbdffAutomatic Updater echo "`basename $0`: error running gnuplot" >&2; exit 1;
9c6a5d1f22f972232d7a9fd5c5fa64f10bacbdffAutomatic Updaterfi
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
9c6a5d1f22f972232d7a9fd5c5fa64f10bacbdffAutomatic Updater# Generate the report
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
9c6a5d1f22f972232d7a9fd5c5fa64f10bacbdffAutomatic Updaterexec >"$reportfile"
9c6a5d1f22f972232d7a9fd5c5fa64f10bacbdffAutomatic Updater
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeincat <<EOF
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<html><head></head><body>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<h1>Resperf report $id</h1>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<h2>Resperf output</h2>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<pre>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinEOF
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeincat "$outputfile"
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrewscat <<EOF
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</pre>
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark AndrewsEOF
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeincat <<EOF
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<h2>Plots</h2>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<p>
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews<img src="$rate_graph" />
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<img src="$latency_graph" />
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</body></html>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinEOF
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinecho "Done, report is in $reportfile" >&2
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews