Re: [PATCH 4/4] selftests: ftrace: Output only to console with "--logdir -"
From: Steven Rostedt
Date: Wed Jul 05 2017 - 12:25:13 EST
On Tue, 4 Jul 2017 15:38:55 +0900
Masami Hiramatsu <mhiramat@xxxxxxxxxx> wrote:
> Output logs only to console if "-" is given to --logdir
> option. In this case, ftracetest doesn't record any log
> on the disk, and all logs immediately shown (including
> all command logs.) Since there is no "tee" in the middle
> of command and console, it outputs the log really soon.
>
> This option is useful only when the console is logged.
>
> Signed-off-by: Masami Hiramatsu <mhiramat@xxxxxxxxxx>
> ---
> tools/testing/selftests/ftrace/ftracetest | 29 +++++++++++++++++++++--------
> 1 file changed, 21 insertions(+), 8 deletions(-)
>
> diff --git a/tools/testing/selftests/ftrace/ftracetest b/tools/testing/selftests/ftrace/ftracetest
> index 892ca4e..25792ee 100755
> --- a/tools/testing/selftests/ftrace/ftracetest
> +++ b/tools/testing/selftests/ftrace/ftracetest
> @@ -19,6 +19,7 @@ echo " -vvv Alias of -v -v -v (Show all commands immediately)"
> echo " --fail-unsupported Treat UNSUPPORTED as a failure"
> echo " -d|--debug Debug mode (trace all shell commands)"
> echo " -l|--logdir <dir> Save logs on the <dir>"
> +echo " If <dir> is -, all logs output in console only"
> exit $1
> }
>
> @@ -127,14 +128,20 @@ if [ -z "$TRACING_DIR" -o ! -d "$TRACING_DIR" ]; then
> fi
>
> # Preparing logs
> -LOG_FILE=$LOG_DIR/ftracetest.log
> -mkdir -p $LOG_DIR || errexit "Failed to make a log directory: $LOG_DIR"
> -date > $LOG_FILE
> +if [ "x$LOG_DIR" = "x-" ]; then
> + LOG_FILE=
> + date
> +else
> + LOG_FILE=$LOG_DIR/ftracetest.log
> + mkdir -p $LOG_DIR || errexit "Failed to make a log directory: $LOG_DIR"
> + date > $LOG_FILE
> +fi
> +
> prlog() { # messages
> - echo "$@" | tee -a $LOG_FILE
> + [ -z "$LOG_FILE" ] && echo "$@" || echo "$@" | tee -a $LOG_FILE
> }
> catlog() { #file
> - cat $1 | tee -a $LOG_FILE
> + [ -z "$LOG_FILE" ] && cat $1 || cat $1 | tee -a $LOG_FILE
> }
> prlog "=== Ftrace unit tests ==="
>
> @@ -255,12 +262,18 @@ __run_test() { # testfile
> # Run one test case
> run_test() { # testfile
> local testname=`basename $1`
> - local testlog=`mktemp $LOG_DIR/${testname}-log.XXXXXX`
> + if [ "$LOG_FILE" ] ; then
Shouldn't this be
if [ ! -z "$LOG_FILE" ]; then
?
> + local testlog=`mktemp $LOG_DIR/${testname}-log.XXXXXX`
> + else
> + local testlog=`/proc/self/fd/1`
cute trick.
> + fi
> export TMPDIR=`mktemp -d /tmp/ftracetest-dir.XXXXXX`
> testcase $1
> echo "execute$INSTANCE: "$1 > $testlog
> SIG_RESULT=0
> - if [ $VERBOSE -ge 3 ]; then
> + if [ -z "$LOG_FILE" ]; then
> + __run_test $1 2>&1
> + elif [ $VERBOSE -ge 3 ]; then
> __run_test $1 | tee -a $testlog 2>&1
> elif [ $VERBOSE -eq 2 ]; then
> __run_test $1 2>> $testlog | tee -a $testlog
> @@ -270,7 +283,7 @@ run_test() { # testfile
> eval_result $SIG_RESULT
> if [ $? -eq 0 ]; then
> # Remove test log if the test was done as it was expected.
> - [ $KEEP_LOG -eq 0 ] && rm $testlog
> + [ $KEEP_LOG -eq 0 -a "$LOG_FILE" ] && rm $testlog
again, don't we need to test "$LOG_FILE"?
-- Steve
> else
> [ $VERBOSE -eq 1 -o $VERBOSE -eq 2 ] && catlog $testlog
> TOTAL_RESULT=1