#!/bin/bash # This file is part of util-linux. # # This file 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 2 of the License, or # (at your option) any later version. # # This file 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. TS_TOPDIR="${0%/*}/../.." TS_DESC="replay" . "$TS_TOPDIR/functions.sh" ts_init "$*" ts_check_test_command "$TS_CMD_SCRIPT" ts_check_test_command "$TS_CMD_SCRIPTREPLAY" ts_check_test_command "$TS_CMD_SCRIPTLIVE" LOG_OUT_FILE="${TS_OUTDIR}/${TS_TESTNAME}-logfile-out" LOG_IN_FILE="${TS_OUTDIR}/${TS_TESTNAME}-logfile-in" LOG_IO_FILE="${TS_OUTDIR}/${TS_TESTNAME}-logfile-io" TIMING_FILE="${TS_OUTDIR}/${TS_TESTNAME}-logfile-tm" rm -f $TIMING_FILE $LOG_IN_FILE $LOG_OUT_FILE $LOG_IO_FILE # # Old command line format # ts_init_subtest "basic" echo "===recording" >"$TS_OUTPUT" $TS_CMD_SCRIPT \ --command "echo hello world; sleep 0.5; echo all done" \ --timing="$TIMING_FILE" \ "$LOG_OUT_FILE" >> $TS_OUTPUT 2>> $TS_ERRLOG echo "===replaying" >>"$TS_OUTPUT" $TS_CMD_SCRIPTREPLAY "$TIMING_FILE" "$LOG_OUT_FILE" 1.5 >> $TS_OUTPUT 2>> $TS_ERRLOG sed -i "s|$TIMING_FILE|timingfile|g; s|$LOG_OUT_FILE|outlog|g" $TS_OUTPUT $TS_ERRLOG ts_finalize_subtest # # New command line format # ts_init_subtest "output" echo "===recording" >"$TS_OUTPUT" NUMBER=1 $TS_CMD_SCRIPT \ --command 'echo "result is $(($NUMBER + 1))"' \ --log-out "$LOG_OUT_FILE" \ --log-timing "$TIMING_FILE" >> $TS_OUTPUT 2>> $TS_ERRLOG echo "===replaying" >>"$TS_OUTPUT" $TS_CMD_SCRIPTREPLAY \ --log-out "$LOG_OUT_FILE" \ --log-timing "$TIMING_FILE" >> $TS_OUTPUT 2>> $TS_ERRLOG sed -i "s|$TIMING_FILE|timingfile|g; s|$LOG_OUT_FILE|outlog|g" $TS_OUTPUT $TS_ERRLOG ts_finalize_subtest # # Log input # ts_init_subtest "input" echo "===recording" >"$TS_OUTPUT" echo 'echo "result is $(($NUMBER + 1))"' | $TS_CMD_SCRIPT \ --command 'sh' \ --log-in "$LOG_IN_FILE" \ --log-timing "$TIMING_FILE" >> /dev/null 2>> $TS_ERRLOG echo "===replaying" >>"$TS_OUTPUT" $TS_CMD_SCRIPTREPLAY \ --log-in "$LOG_IN_FILE" \ --log-timing "$TIMING_FILE" >> $TS_OUTPUT 2>> $TS_ERRLOG ts_finalize_subtest # # Live replay # ts_init_subtest "live" TS_KNOWN_FAIL="yes" NUMBER=123 $TS_CMD_SCRIPTLIVE \ --command 'sh' \ --log-in "$LOG_IN_FILE" \ --log-timing "$TIMING_FILE" >> $TS_OUTPUT 2>> $TS_ERRLOG sed -i 's/^[[:alnum:][:punct:][:blank:]]*[\$\#] /prompt> /g' $TS_OUTPUT ts_finalize_subtest ts_finalize