From: Peter Stamfest Date: Thu, 4 Sep 2014 06:55:46 +0000 (+0200) Subject: Improve test suite. Allow to have tests run using a local rrdcached instance X-Git-Tag: v1.5.0-rc1~42^2~5 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=52d9c4be962dc57e3470249d748ab7d1380a987c;p=thirdparty%2Frrdtool-1.x.git Improve test suite. Allow to have tests run using a local rrdcached instance using the TESTS_STLYE environment variable (Set it to 'rrdcached') --- diff --git a/tests/create-with-source-1 b/tests/create-with-source-1 index 9c8ba6fd..cfa8c9c7 100755 --- a/tests/create-with-source-1 +++ b/tests/create-with-source-1 @@ -42,6 +42,8 @@ $RRDTOOL update ${PREFIX}a1.rrd $UPDATE $RRDTOOL create ${PREFIX}a2.rrd --start $ST --step 60 --source ${PREFIX}a1.rrd DS:a:GAUGE:120:0:U RRA:AVERAGE:0.5:1:100 RRA:AVERAGE:0.5:5:2 RRA:MIN:0.5:5:2 RRA:MAX:0.5:5:2 RRA:LAST:0.5:5:2 report create-with-source-1 +[ -f ${PREFIX}a2.rrd ] || fail "file is missing!!" + $RRDTOOL dump ${PREFIX}a1.rrd > ${PREFIX}a1.xml $RRDTOOL dump ${PREFIX}a2.rrd > ${PREFIX}a2.xml $DIFF ${PREFIX}a1.xml ${PREFIX}a2.xml diff --git a/tests/create-with-source-4 b/tests/create-with-source-4 index b4f98aec..2811374f 100755 --- a/tests/create-with-source-4 +++ b/tests/create-with-source-4 @@ -80,7 +80,7 @@ AVG2=$2 [ $AVG1 = 1 ] ; report average ab1 == 1 [ $(dc <<< "$AVG2 1 - 10000 * 1 / p") -lt 10 ] ; report "average ab2 ($AVG2 - 1) < 1/1000" -[ $STDEV1 = 0 ] ; report std dev ab1 == 0 +[ $STDEV1 = 0 ] ; report "std dev ab1 == 0 ($STDEV1)" [ $(dc <<< "$STDEV2 10000 * 1 / p") -lt 20 ] ; report "std dev ab2 ($STDEV2) < 1/500" diff --git a/tests/functions b/tests/functions index bea24d0d..86260071 100644 --- a/tests/functions +++ b/tests/functions @@ -3,9 +3,13 @@ TZ=CET export TZ BASEDIR="${BASEDIR:-$(dirname $0)}" +BASEDIR="$(realpath $BASEDIR)" + BUILDDIR="${BUILDDIR:-${BASEDIR}}" TOP_BUILDDIR="${TOP_BUILDDIR:-${BASEDIR}/..}" +DIFF="diff -u" + # # because valgrind has trouble with glib memory handling # (see e.g. https://developer.gnome.org/glib/2.30/glib-running.html or @@ -58,40 +62,11 @@ function valgrind { return $? } -if [ -z "$RRDTOOL" ] ; then - case "$TESTS_STYLE" in - valgrind) - echo >&2 "# Note: exit code 111 indicates a valgrind detected memory problem" - RRDTOOL="valgrind $TOP_BUILDDIR/src/rrdtool" - RRDCACHED="valgrind $TOP_BUILDDIR/src/rrdcached" - ;; - valgrind-logfile) - echo >&2 "# Note: exit code 111 indicates a valgrind detected memory problem" - RRDTOOL="valgrind $TOP_BUILDDIR/src/rrdtool" - RRDCACHED="valgrind $TOP_BUILDDIR/src/rrdcached" - VALGRIND_LOGFILE="${BASEDIR}/$(basename $0)"-valgrind.log - rm -f "$VALGRIND_LOGFILE" - ;; - *) - RRDTOOL=$TOP_BUILDDIR/src/rrdtool - RRDCACHED=$TOP_BUILDDIR/src/rrdcached - ;; - esac -fi - function verbose_rrdtool { echo "$RRDTOOL_V" "$@" "$RRDTOOL_V" "$@" } -if [ -n "$VERBOSE" ] ; then - RRDTOOL_V="$RRDTOOL" - RRDTOOL=verbose_rrdtool -fi - - -DIFF="diff -u" - function fail { RC=$? echo >&2 "FAILED: (rc=$RC)" "$@" @@ -120,3 +95,77 @@ function report { fail "$@" fi } + +function run_cached { + local D="$1" + local CACHED="${D:-$RRDCACHED}" + + stop_cached + + local ADDR + ADDR="unix:$BASEDIR/$(basename $0)-rrdcached.sock" + CACHED_PID_FILE="$BASEDIR/$(basename $0)-rrdcached.pid" + + $CACHED -p "$CACHED_PID_FILE" -l "$ADDR" -b "$(realpath $BASEDIR)" -F + + RRDCACHED_ADDRESS=$ADDR + export RRDCACHED_ADDRESS + + sleep 1 + trap 'stop_cached' EXIT +} + +function stop_cached { + if [ -n "$CACHED_PID_FILE" ] ; then + kill $(cat "$CACHED_PID_FILE") + rm -f -- "$CACHED_PID_FILE" + CACHED_PID_FILE="" + RRDCACHED_ADDRESS="" + fi +} + +function exit_if_cached_running { + local E="$1" + local MSG="$2" + if [ -n "$RRDCACHED_ADDRESS" ] ; then + echo >&2 "$MSG" + exit ${E:-1} + fi +} + +if [ -n "$VERBOSE" ] ; then + RRDTOOL_V="$RRDTOOL" + RRDTOOL=verbose_rrdtool +fi + +if [ -z "$RRDTOOL" ] ; then + RRDTOOL=$TOP_BUILDDIR/src/rrdtool + RRDCACHED=$TOP_BUILDDIR/src/rrdcached + + NEED_CACHED= + for ST in $TESTS_STYLE ; do + case "$ST" in + rrdcached) + NEED_CACHED=1 + STANDARD_RRDCACHED="$RRDCACHED" + ;; + valgrind) + echo >&2 "# Note: exit code 111 indicates a valgrind detected memory problem" + RRDTOOL="valgrind $TOP_BUILDDIR/src/rrdtool" + RRDCACHED="valgrind $TOP_BUILDDIR/src/rrdcached" + ;; + valgrind-logfile) + echo >&2 "# Note: exit code 111 indicates a valgrind detected memory problem" + RRDTOOL="valgrind $TOP_BUILDDIR/src/rrdtool" + RRDCACHED="valgrind $TOP_BUILDDIR/src/rrdcached" + VALGRIND_LOGFILE="${BASEDIR}/$(basename $0)"-valgrind.log + rm -f "$VALGRIND_LOGFILE" + ;; + *) + ;; + esac + done + if [ -n "$NEED_CACHED" ] ; then + run_cached "$STANDARD_RRDCACHED" + fi +fi