#! /usr/bin/env bash
#
# This script imitates the behavior of the Linux "perf" command.  Useful
# for testing purposes because this script produces consistent and
# predictable results.
#
# NOTE: if this script is in PATH, then it should not be named "perf", because
# we want to use the real perf command for some tests.

# Only "perf stat" is supported.
if [ "$1" != "stat" ]; then
    exit 1
fi
shift

# Ignore all options except "-o".
while getopts "o:x:e:" arg; do
    case $arg in
        o)
            fname=$OPTARG
            ;;
        *) ;;

    esac
done

shift $((OPTIND - 1))

# Use a hard-coded message so that we get predictable results
msg="1000  instructions"

# Write the message to a file (if specified), or stderr
if [ -n "$fname" ]; then
    echo "$msg" >"$fname"
else
    echo "$msg" >&2
fi

# Run the specified command
"$@"
