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 -- To unsubscribe from this list: send the line "unsubscribe linux-kselftest" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html