1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
|
#!/bin/sh -eu
SCRIPT_DIR=$(dirname "$0")
EXPECT_TIMEOUT=${EXPECT_TIMEOUT:-5}
TARGET="${1:-}"
STAGE="${2:-}"
if [ -n "$STAGE" ]; then
STAGE="-$STAGE"
fi
export TARGET
export STAGE
export CAPTURED_OUTPUT="$TMP_DIR/$TARGET$STAGE.out"
export EXPECTED_OUTPUT="$EXPECTED_PATH/$TARGET$STAGE.out"
MATCHED=false
cleanup() {
if $MATCHED; then
if [ -z "$STAGE" ]; then
tmux send-keys -t "$TARGET" "q"
fi
exit 0
fi
tmux send-keys -t "$TARGET" "q"
echo 'Incorrect output:'
cat "$CAPTURED_OUTPUT"
echo 'Expected output:'
cat "$EXPECTED_OUTPUT"
echo "${CMP} $CAPTURED_OUTPUT $EXPECTED_OUTPUT"
${CMP} "$CAPTURED_OUTPUT" "$EXPECTED_OUTPUT"
exit 1
}
trap cleanup INT TERM QUIT
printf "\n%s, %s" "$TARGET" "$STAGE" >>"$TIMINGS_CSV"
set +e
MATCHED_TIME=$(/usr/bin/time -p timeout -k $((EXPECT_TIMEOUT + 1)) "$EXPECT_TIMEOUT" "$SCRIPT_DIR"/test-retry-capture-cmp.sh 2>&1)
STATUS=$?
set -e
if [ $STATUS -eq 0 ]; then
MATCHED_TIME=$(echo "$MATCHED_TIME" | grep '^real' | cut -d' ' -f2)
if echo "$MATCHED_TIME" | grep -qE '^[0-9]*\.?[0-9]+$' >/dev/null 2>&1; then
MATCHED=true
echo "$TARGET$STAGE took $MATCHED_TIME"
printf ", %s" "$MATCHED_TIME" >>"$TIMINGS_CSV"
else
echo "Invalid timing value! [$MATCHED_TIME]"
printf ", error" >>"$TIMINGS_CSV"
fi
fi
cleanup
|