X-Git-Url: https://git.lttng.org/?p=ust.git;a=blobdiff_plain;f=tests%2Fruntests;h=602fc1e49210021f93864c8eda783332c9fc2e57;hp=676ab119ef267087be2a9cab3a98199e32456d05;hb=dd7a064c5953d06fbd6010f0a0f4a6f94df01a9f;hpb=72d022d60207b479177401cfdeddeb685d5aa85f diff --git a/tests/runtests b/tests/runtests index 676ab11..602fc1e 100755 --- a/tests/runtests +++ b/tests/runtests @@ -1,130 +1,53 @@ #!/bin/bash - -function NOFAIL() { - "$@" - if [ "$?" -ne "0" ]; then - echo "!!!!!!!!!!!!!!!!!!!!!!!!" - echo "$0: Stopping because of error" - echo "!!!!!!!!!!!!!!!!!!!!!!!!" - exit 1; - 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; -} +# +# Copyright 2010 Ericsson AB +# +# This file is part of LTTng-UST. +# +# LTTng-UST is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# LTTng-UST is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with LTTng-UST. If not, see . + + +tests_failed=0 TESTDIR=$(dirname $0) -MATCHES="$TESTDIR/trace_matches" - -starttest "Test-nevents" -NOFAIL usttrace $TESTDIR/test-nevents/prog -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 -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" - -starttest "libustinstr-malloc" -NOFAIL usttrace -lm $TESTDIR/test-libustinstr-malloc/.libs/prog -trace_loc=$(usttrace -W) -NOFAIL $MATCHES -N "libustinstr-malloc - 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" - -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/libustinstr-malloc.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 -SIGTERM $USTD_PID -wait $USTD_PID - -NOFAIL $MATCHES -N "manual - find - ust.malloc" "^ust.malloc:" "$TRACE_DIR" +function simple_harness_run() { + if ! "$TESTDIR/$@"; then + let tests_failed=$tests_failed+1 + fi +} -### Valgrind ustd ### -starttest "ustd valgrind check" -TRACE_DIR="/tmp/ust-testsuite-ustdvalgrind-trace" -rm -rf "$TRACE_DIR" -mkdir "$TRACE_DIR" -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 -VALG_OUT=/tmp/ust-testsuite-valg.txt -valgrind -q ustd --pidfile "$pidfilepath" -o "$TRACE_DIR" >/dev/null 2>"$VALG_OUT" & -VALG_PID=$! -USTD_PID="$(<$pidfilepath)" +simple_harness_run test-nevents/test-nevents.sh -usttrace -s $TESTDIR/basic/.libs/basic +simple_harness_run fork/fork.sh -kill -SIGTERM $USTD_PID -wait $! +simple_harness_run test-libustinstr-malloc/test-libustinstr-malloc.sh -echo "Valgrind output is in $VALG_OUT" -NOFAIL [ -z "$(<$VALG_OUT)" ] +simple_harness_run ./manual_mode_tracing.sh -### dlopen ### -starttest "dlopen" -LD_LIBRARY_PATH=$TESTDIR/dlopen/.libs NOFAIL usttrace $TESTDIR/dlopen/dlopen -trace_loc=$(usttrace -W) -NOFAIL $MATCHES -N "from_library" -n 1 "^ust.from_library:" $trace_loc -NOFAIL $MATCHES -N "from_main_before_lib" -n 1 "^ust.from_main_before_lib:" $trace_loc -NOFAIL $MATCHES -N "from_main_after_lib" -n 1 "^ust.from_main_after_lib:" $trace_loc +simple_harness_run ./valgrind_ustd.sh -### same-line-marker ### -starttest "same_line_marker" -NOFAIL usttrace $TESTDIR/same_line_marker/same_line_marker -trace_loc=$(usttrace -W) -NOFAIL $MATCHES -N "same_line_event" -n 2 "^ust.same_line_event:" $trace_loc +simple_harness_run dlopen/dlopen.sh +simple_harness_run same_line_marker/same_line_marker.sh echo "************************************" -echo "$0: All passed" +if [[ $tests_failed -eq 0 ]]; then + echo "$0: All passed" +else + echo "$0: $tests_failed tests failed" +fi echo "************************************" exit 0