From 1518fa0fad67101416c2def6b1c88ec767e8b5eb Mon Sep 17 00:00:00 2001 From: Pierre-Marc Fournier Date: Tue, 2 Mar 2010 00:50:05 -0500 Subject: [PATCH] tests: add testsuite scripts --- tests/Makefile.am | 2 ++ tests/runtests | 66 ++++++++++++++++++++++++++++++++++++++++++++ tests/test_loop | 12 ++++++++ tests/trace_matches | 67 +++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 147 insertions(+) create mode 100755 tests/runtests create mode 100755 tests/test_loop create mode 100755 tests/trace_matches diff --git a/tests/Makefile.am b/tests/Makefile.am index 061f5e2..eca4e20 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -1 +1,3 @@ SUBDIRS = hello hello2 basic basic_long fork simple_include snprintf test-nevents + +noinst_SCRIPTS = test_loop runtests trace_matches diff --git a/tests/runtests b/tests/runtests new file mode 100755 index 0000000..92d362e --- /dev/null +++ b/tests/runtests @@ -0,0 +1,66 @@ +#!/bin/bash + +function check_no_fail() { + if [ "$?" -ne "0" ]; then + echo "$0: Stopping because of error" + exit 1; + fi +} + +function NOFAIL() { + "$@" + if [ "$?" -ne "0" ]; then + echo "!!!!!!!!!!!!!!!!!!!!!!!!" + echo "$0: Stopping because of error" + echo "!!!!!!!!!!!!!!!!!!!!!!!!" + exit 1; + fi +} + +TESTDIR=$(dirname $0) +MATCHES="$TESTDIR/trace_matches" + +NOFAIL usttrace $TESTDIR/test-nevents/prog +NOFAIL $MATCHES -N "an_event (100000)" -n 100000 "^ust.an_event:" $(usttrace -W) +NOFAIL $MATCHES -N "another_event (100000)" -n 100000 "^ust.another_event:" $(usttrace -W) + +NOFAIL usttrace -f $TESTDIR/fork/.libs/fork $TESTDIR/fork/.libs/fork2 +NOFAIL $MATCHES -N "fork - before_fork" "^ust.before_fork:" $(usttrace -W) +NOFAIL $MATCHES -N "fork - after_fork_parent" "^ust.after_fork_parent:" $(usttrace -W) +NOFAIL $MATCHES -N "fork - after_fork_child" "^ust.after_fork_child:" $(usttrace -W) +NOFAIL $MATCHES -N "fork - before_exec" "^ust.before_exec:" $(usttrace -W) +NOFAIL $MATCHES -N "fork - potential_exec" "^ust.potential_exec:" $(usttrace -W) +NOFAIL $MATCHES -N "fork - after_exec" "^ust.after_exec:" $(usttrace -W) + +NOFAIL usttrace -lm $TESTDIR/test-libmallocwrap/prog +NOFAIL $MATCHES -N "mallocwrap - malloc" -n 1000 "^ust.malloc:.*{ size = 1[0-9][0-9][0-9]," $(usttrace -W) + +### Manual mode test +TRACE_DIR="/tmp/ust-testsuite-manual-trace" +rm -rf "$TRACE_DIR" +mkdir "$TRACE_DIR" + +NOFAIL ustd -o "$TRACE_DIR" >/dev/null 2>&1 & +USTD_PID=$! + +LD_PRELOAD=/usr/local/lib/libust.so.0.0.0:/usr/local/lib/libmallocwrap.so find / >/dev/null 2>&1 & +PID=$! +sleep 0.1 +NOFAIL ustctl --list-markers "$PID" >/dev/null +NOFAIL ustctl --enable-marker ust/malloc $PID +NOFAIL ustctl --enable-marker ust/free $PID +NOFAIL ustctl --create-trace $PID +NOFAIL ustctl --alloc-trace $PID +NOFAIL ustctl --start-trace $PID +sleep 0.5 +NOFAIL ustctl --stop-trace $PID +NOFAIL ustctl --destroy-trace $PID +kill $PID +kill $USTD_PID + +NOFAIL $MATCHES -N "manual - find - ust.malloc" "^ust.malloc:" "$TRACE_DIR" + +echo "************************************" +echo "$0: All passed" +echo "************************************" +exit 0 diff --git a/tests/test_loop b/tests/test_loop new file mode 100755 index 0000000..619b1e3 --- /dev/null +++ b/tests/test_loop @@ -0,0 +1,12 @@ +#!/bin/bash + +DIR=$(dirname $0) + +while [ 0 ]; do + $DIR/runtests + if [ "$?" != "0" ]; then + break; + fi +done + +echo "$0: ********* STOPPED BECAUSE OF ERROR *********" diff --git a/tests/trace_matches b/tests/trace_matches new file mode 100755 index 0000000..c2135c1 --- /dev/null +++ b/tests/trace_matches @@ -0,0 +1,67 @@ +#!/bin/bash + +RUNLTTV=~/devel/lttv/runlttv + +function error() { + echo "$0: $@" >/dev/stderr +} + +function usage() { + echo "Usage: $0 [ -N pattern_name ] [ -n pattern_count ] PATTERN TRACE_PARENT_DIR" +} + +if [ ! -x "$RUNLTTV" ]; then + echo "$0: $RUNLTTV not executable. Edit \$RUNLTTV to point to your lttv source directory." >/dev/stderr + exit 1; +fi + +while getopts ":n:N:" options; do + case "$options" in + n) expected_count=$OPTARG;; + N) name=$OPTARG;; + h) usage; + exit 0;; + \?) usage + exit 1;; + *) usage + exit 1;; + esac +done +shift $(($OPTIND - 1)) + +pattern=$1 +if [ -z "$pattern" ]; then + error "no pattern specified" + usage + exit 1 +fi + +if [ -z "$2" ]; then + error "no trace directory specified" + usage + exit 1 +fi +traces=$(find "$2" -mindepth 1 -maxdepth 1 -type d) + +echo -n "Analyzing trace ($name): " + +cnt=$($RUNLTTV -m text "$traces" | grep "$pattern" | wc -l) +if [ -z "$expected_count" ]; then + if [ "$cnt" -eq "0" ]; then + echo "ERROR" + echo "Did not find at least one instance of this event ($cnt)" + else + echo "Success" + exit 0 + fi +else + if [ "$cnt" -ne "$expected_count" ]; then + echo "ERROR" + echo "Expected: $expected_count" + echo "In trace: $cnt" + exit 1 + else + echo "Success" + exit 0 + fi +fi -- 2.34.1