Tests: Preemptively fail infinite blocking tests when low on disk space
[lttng-tools.git] / tests / regression / ust / blocking / test_blocking
index a19de08d868c5eee809fba43e98f2692c36337f2..0bbc02ddc3c61dec86768c5d14fd27b6353ecc6b 100755 (executable)
@@ -1,20 +1,10 @@
 #!/bin/bash
 #
-# Copyright (C) 2015 Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
-# Copyright (C) 2016 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
+# Copyright (C) 2015 Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
+# Copyright (C) 2016 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
 #
-# This library is free software; you can redistribute it and/or modify it under
-# the terms of the GNU Lesser General Public License as published by the Free
-# Software Foundation; version 2.1 of the License.
-#
-# This library 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 Lesser General Public License for more
-# details.
-#
-# You should have received a copy of the GNU Lesser General Public License
-# along with this library; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA
+# SPDX-License-Identifier: LGPL-2.1-only
+
 TEST_DESC="UST - Blocking mode"
 
 CURDIR=$(dirname $0)/
@@ -29,16 +19,30 @@ EVENT_NAME="tp:tptest"
 
 NUM_TESTS=49
 
-source $TESTDIR/utils/utils.sh
+# shellcheck source=../utils/utils.sh
+source "$TESTDIR/utils/utils.sh"
 
 # MUST set TESTDIR before calling those functions
-# Run app on CPU 0 to ensure we only write in a single ring buffer.
+# Run app on a single CPU to ensure we only write in a single ring buffer.
 function run_app()
 {
-       taskset 0x00000001 $TESTAPP_BIN -i $NUM_EVENT
+       taskset --cpu-list "$(get_any_available_cpu)" $TESTAPP_BIN -i $NUM_EVENT
        ok $? "Application done"
 }
 
+function check_disk_space()
+{
+       local path
+
+       path="${1:?}"
+       kb_free=$(df -k -P "${path}" | tail -n 1 | awk '{ print $4 }')
+       if [ "${kb_free}" -lt "1048576" ] ; then
+               return 1
+       fi
+
+       return 0
+}
+
 function test_ust_implicit_no_blocking()
 {
        NUM_EVENT=5000000
@@ -133,7 +137,7 @@ function test_ust_blocking_no_discard()
        destroy_lttng_session_ok $SESSION_NAME
        stop_lttng_sessiond
 
-       nr_events=$(babeltrace $TRACE_PATH 2>/dev/null | wc -l)
+       nr_events=$("$BABELTRACE_BIN" $TRACE_PATH 2>/dev/null | wc -l)
 
        test $nr_events -eq $NUM_EVENT
        ok $? "No event lost with UST blocking mode: found $nr_events expect $NUM_EVENT"
@@ -143,6 +147,12 @@ plan_tests $NUM_TESTS
 
 print_test_banner "$TEST_DESC"
 
+bail_out_if_no_babeltrace
+
+if ! check_disk_space "${TMPDIR:-/tmp}"; then
+       BAIL_OUT "Not enough free space to run blocking tests"
+fi
+
 TESTS=(
        "test_ust_implicit_no_blocking"
        "test_ust_implicit_no_blocking_with_channel_blocking"
@@ -156,7 +166,7 @@ i=0
 
 while [ "$i" -lt "$TEST_COUNT" ]; do
 
-       TRACE_PATH=$(mktemp -d)
+       TRACE_PATH=$(mktemp -d -t tmp.test_blocking_ust_trace_path.XXXXXX)
 
        # Execute test
        ${TESTS[$i]}
This page took 0.024456 seconds and 4 git commands to generate.