X-Git-Url: http://git.lttng.org/?a=blobdiff_plain;f=tests%2Fregression%2Ftools%2Fcrash%2Ftest_crash;h=ad03bf404863a1d603f709ff1567de725737854a;hb=3be453c9ec6469235f0dc6cdaec9d55f0a6ee517;hp=ff5d0e3261d83c149ee3d1573ba4e5fe9c879849;hpb=4c80129b997f0fde87c1355ebf2c44fda8fdb13c;p=lttng-tools.git diff --git a/tests/regression/tools/crash/test_crash b/tests/regression/tools/crash/test_crash index ff5d0e326..ad03bf404 100755 --- a/tests/regression/tools/crash/test_crash +++ b/tests/regression/tools/crash/test_crash @@ -31,7 +31,9 @@ NR_ITER=-1 # Temp file output OUTPUT_DIR=$(mktemp -d) -NUM_TESTS=70 +LAST_APP_PID= + +NUM_TESTS=77 source $TESTDIR/utils/utils.sh @@ -50,6 +52,7 @@ function start_test_app() # Start application with a temporary file. $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT $tmp_file & ret=$? + LAST_APP_PID="${!}" APPS_PID="${APPS_PID} ${!}" ok $ret "Start application to trace" @@ -81,25 +84,18 @@ function stop_test_app() diag "Stopping $p" kill ${p} 2>/dev/null wait ${p} 2>/dev/null + diag "Stopped $p" done } function verify_path_dont_exists() { local path=$1 - local timeout_try_limit=100 - local timeout_try_count=0 - local timeout_flag=0 while find $path -mindepth 1 -maxdepth 1 &>/dev/null ; do - if [[ $timeout_try_count -gt $timeout_try_limit ]]; then - timeout_flag=1 - break - fi - timeout_try_count=$((timeout_try_count+1)) - sleep 0.1 + sleep 2 done - return $timeout_flag + return 0 } function test_shm_path_per_pid() @@ -114,6 +110,8 @@ function test_shm_path_per_pid() create_lttng_session_ok $session_name $OUTPUT_DIR "--shm-path $shm_path" enable_ust_lttng_channel_ok $session_name $channel_name "--buffers-pid" + start_lttng_tracing_ok $session_name + diag "Shm: clean state" file_count=$(find $shm_path -mindepth 1 -maxdepth 1 | wc -l) test $file_count -eq "0" @@ -124,7 +122,7 @@ function test_shm_path_per_pid() diag "Shm: check folder creation and structure" start_test_app - first_app_pid=$APPS_PID + first_app_pid=$LAST_APP_PID shm_session_path=$(find $shm_path -mindepth 1 -maxdepth 1) file_count=$(echo "$shm_session_path"| wc -l) @@ -147,6 +145,7 @@ function test_shm_path_per_pid() diag "Shm: check basic creation of second ust application" start_test_app + second_app_pid=$LAST_APP_PID second_pid_path=$(find $shm_session_path/ust/pid -mindepth 1 -maxdepth 1) ok $? "Pid path exist found $second_pid_path" @@ -156,6 +155,7 @@ function test_shm_path_per_pid() # Stop first test application and check for cleanup stop_test_app "$first_app_pid" + APPS_PID="$second_app_pid" verify_path_dont_exists "$first_pid_path" ok $? "First pid cleanup" @@ -182,6 +182,8 @@ function test_shm_path_per_uid() create_lttng_session_ok $session_name $OUTPUT_DIR "--shm-path $shm_path" enable_ust_lttng_channel_ok $session_name $channel_name "--buffers-uid" + start_lttng_tracing_ok $session_name + diag "Shm: test clean state" file_count=$(find $shm_path -mindepth 1 -maxdepth 1 | wc -l) test $file_count -eq "0" @@ -225,6 +227,7 @@ function test_lttng_crash() local session_name=crash_test local channel_name=channel_crash local shm_path=$(mktemp -d) + local shm_path_symlink=$(mktemp -d) local event_name="tp:tptest" # Create a session in snapshot mode to deactivate any use of consumerd @@ -236,16 +239,23 @@ function test_lttng_crash() # Generate 10 events $TESTAPP_BIN 10 0 - stop_lttng_tracing + stop_lttng_tracing_ok crash_recup_count=$($LTTNG_CRASH $shm_path | wc -l) test $crash_recup_count -eq "10" ok $? "Expect 10 recup event from buffers got $crash_recup_count" + # Test with symlink + cp -rs $shm_path/. $shm_path_symlink + crash_recup_count=$($LTTNG_CRASH $shm_path_symlink | wc -l) + test $crash_recup_count -eq "10" + ok $? "Expect 10 recup event from symlink buffers got $crash_recup_count" + # Tear down destroy_lttng_session_ok $session_name stop_lttng_sessiond rm -rf $shm_path + rm -rf $shm_path_symlink } function test_lttng_crash_extraction() @@ -267,7 +277,7 @@ function test_lttng_crash_extraction() start_lttng_tracing_ok $session_name # Generate 10 events $TESTAPP_BIN 10 0 - stop_lttng_tracing + stop_lttng_tracing_ok $LTTNG_CRASH -x $extraction_path $shm_path ok $? "Extraction of crashed buffers to path" @@ -295,6 +305,8 @@ function test_shm_path_per_pid_sigint() create_lttng_session_ok $session_name $OUTPUT_DIR "--shm-path $shm_path" enable_ust_lttng_channel_ok $session_name $channel_name "--buffers-pid" + start_lttng_tracing_ok $session_name + start_test_app start_test_app shm_session_path=$(find $shm_path -mindepth 1 -maxdepth 1) @@ -324,6 +336,8 @@ function test_shm_path_per_uid_sigint() create_lttng_session_ok $session_name $OUTPUT_DIR "--shm-path $shm_path" enable_ust_lttng_channel_ok $session_name $channel_name "--buffers-uid" + start_lttng_tracing_ok $session_name + start_test_app start_test_app shm_session_path=$(find $shm_path -mindepth 1 -maxdepth 1) @@ -360,6 +374,9 @@ function test_lttng_crash_extraction_sigkill() # Generate 10 events $TESTAPP_BIN 10 0 + sigstop_lttng_sessiond + sigstop_lttng_consumerd + # Kill the consumers then sessiond with sigkill stop_lttng_consumerd SIGKILL stop_lttng_sessiond SIGKILL @@ -377,16 +394,24 @@ function test_lttng_crash_extraction_sigkill() rm -rf $extraction_dir_path } +function interrupt_cleanup() +{ + diag "*** Cleaning-up test ***" + stop_test_apps + full_cleanup +} + TESTS=( test_shm_path_per_uid test_shm_path_per_pid - test_lttng_crash - test_lttng_crash_extraction test_shm_path_per_pid_sigint test_shm_path_per_uid_sigint + test_lttng_crash + test_lttng_crash_extraction test_lttng_crash_extraction_sigkill ) +trap interrupt_cleanup SIGTERM SIGINT for fct_test in ${TESTS[@]}; do