X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=tests%2Fruntests;h=5fb836a0a6cf51b152fa44cb3afdf088544ebb1d;hb=3ee8b5be2ebc65807c90d91c89cde186fe465bb4;hp=92d362e8a76b223a05ac0b2578032e4de616cd52;hpb=1518fa0fad67101416c2def6b1c88ec767e8b5eb;p=ust.git diff --git a/tests/runtests b/tests/runtests index 92d362e..5fb836a 100755 --- a/tests/runtests +++ b/tests/runtests @@ -1,12 +1,5 @@ #!/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 @@ -17,31 +10,63 @@ function NOFAIL() { fi } +function starttest() { + echo "------------------------------------" + echo "Starting test: $1" + echo "------------------------------------" +} + +function check_trace_logs() { + TRACE=$1 + + for f in $(ls $1/*.log); do + NLINES=$(egrep "Warning|Error" $f | wc -l) + if [ "$NLINES" -ne "0" ]; then + echo "Errors/warnings found in $f" + return 1; + fi + done + return 0; +} + TESTDIR=$(dirname $0) MATCHES="$TESTDIR/trace_matches" +starttest "Test-nevents" 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) +trace_loc=$(usttrace -W) +NOFAIL $MATCHES -N "an_event (100000)" -n 100000 "^ust.an_event:" $trace_loc +NOFAIL $MATCHES -N "another_event (100000)" -n 100000 "^ust.another_event:" $trace_loc +NOFAIL check_trace_logs "$trace_loc" +starttest "fork()/exec() test" 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) +trace_loc=$(usttrace -W) +NOFAIL $MATCHES -N "fork - before_fork" "^ust.before_fork:" $trace_loc +NOFAIL $MATCHES -N "fork - after_fork_parent" "^ust.after_fork_parent:" $trace_loc +NOFAIL $MATCHES -N "fork - after_fork_child" "^ust.after_fork_child:" $trace_loc +NOFAIL $MATCHES -N "fork - before_exec" "^ust.before_exec:" $trace_loc +NOFAIL $MATCHES -N "fork - potential_exec" "^ust.potential_exec:" $trace_loc +NOFAIL $MATCHES -N "fork - after_exec" "^ust.after_exec:" $trace_loc +NOFAIL check_trace_logs "$trace_loc" -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) +starttest "libmallocwrap" +NOFAIL usttrace -lm $TESTDIR/test-libmallocwrap/.libs/prog +trace_loc=$(usttrace -W) +NOFAIL $MATCHES -N "mallocwrap - malloc" -n 1000 "^ust.malloc:.*{ size = 1[0-9][0-9][0-9]," $trace_loc +NOFAIL check_trace_logs "$trace_loc" ### Manual mode test +starttest "Manual mode tracing" 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=$! +pidfilepath="/tmp/ust-testsuite-$USER-$(date +%Y%m%d%H%M%S%N)-ustd-pid" +mkfifo -m 0600 "$pidfilepath" +# It's not useful to run ustd in NOFAIL because it's running in the background +ustd --pidfile "$pidfilepath" -o "$TRACE_DIR" >/dev/null 2>&1 & +USTD_PID="$(<$pidfilepath)" LD_PRELOAD=/usr/local/lib/libust.so.0.0.0:/usr/local/lib/libmallocwrap.so find / >/dev/null 2>&1 & PID=$! @@ -53,10 +78,12 @@ 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 +kill -SIGTERM $USTD_PID +wait $USTD_PID NOFAIL $MATCHES -N "manual - find - ust.malloc" "^ust.malloc:" "$TRACE_DIR"