xref: /xnu-11417.121.6/tools/tests/execperf/test.sh (revision a1e26a70f38d1d7daa7b49b258e2f8538ad81650)
1*a1e26a70SApple OSS Distributions#!/bin/sh
2*a1e26a70SApple OSS Distributions
3*a1e26a70SApple OSS DistributionsEXECUTABLES="exit.nodyld \
4*a1e26a70SApple OSS Distributions        exit.nopie.dyld-but-no-Libsystem exit.pie.dyld-but-no-Libsystem \
5*a1e26a70SApple OSS Distributions        exit.nopie.dyld-and-Libsystem exit.pie.dyld-and-Libsystem \
6*a1e26a70SApple OSS Distributions        exit.nopie exit.pie"
7*a1e26a70SApple OSS Distributions
8*a1e26a70SApple OSS DistributionsRUN=run
9*a1e26a70SApple OSS DistributionsPRODUCT=`sw_vers -productName`
10*a1e26a70SApple OSS DistributionsCOUNT=
11*a1e26a70SApple OSS Distributions
12*a1e26a70SApple OSS Distributions# params are: record_perf_data(metric, unit, value, description)
13*a1e26a70SApple OSS Distributionsrecord_perf_data() {
14*a1e26a70SApple OSS Distributions    local METRIC=$1
15*a1e26a70SApple OSS Distributions    local UNIT=$2
16*a1e26a70SApple OSS Distributions    local DATA=$3
17*a1e26a70SApple OSS Distributions    local DESCRIPTION=$4
18*a1e26a70SApple OSS Distributions	echo "{ \"version\" : \"1.0\", \"measurements\" : {\"$METRIC\": {\"description\" : \"$DESCRIPTION\", \"names\":[\"$METRIC\"],  \"units\" : [\"$UNIT\"], \"data\" : [$DATA] }}}"
19*a1e26a70SApple OSS Distributions}
20*a1e26a70SApple OSS Distributions
21*a1e26a70SApple OSS DistributionsPERFDATA_DIR=$BATS_TMP_DIR
22*a1e26a70SApple OSS Distributionsif [ "${PERFDATA_DIR}" = "" ]; then
23*a1e26a70SApple OSS Distributions	PERFDATA_DIR=/tmp/
24*a1e26a70SApple OSS Distributionsfi
25*a1e26a70SApple OSS Distributions
26*a1e26a70SApple OSS Distributionscase "$PRODUCT" in
27*a1e26a70SApple OSS Distributions    "Watch OS")
28*a1e26a70SApple OSS Distributions    COUNT=500
29*a1e26a70SApple OSS Distributions    ;;
30*a1e26a70SApple OSS Distributions    "iPhone OS")
31*a1e26a70SApple OSS Distributions	COUNT=1000
32*a1e26a70SApple OSS Distributions	;;
33*a1e26a70SApple OSS Distributions    "Mac OS X")
34*a1e26a70SApple OSS Distributions    COUNT=6000
35*a1e26a70SApple OSS Distributions    ;;
36*a1e26a70SApple OSS Distributions    *)
37*a1e26a70SApple OSS Distributions	COUNT=1000
38*a1e26a70SApple OSS Distributions	;;
39*a1e26a70SApple OSS Distributionsesac
40*a1e26a70SApple OSS Distributions
41*a1e26a70SApple OSS Distributionsfor i in ${EXECUTABLES}; do
42*a1e26a70SApple OSS Distributions    echo "Running $i"
43*a1e26a70SApple OSS Distributions    for j in `jot $(sysctl -n hw.ncpu) 1`; do
44*a1e26a70SApple OSS Distributions	printf "\t%dx\t" $j
45*a1e26a70SApple OSS Distributions    METRIC_NAME="${i}_${j}x"
46*a1e26a70SApple OSS Distributions    TIMEOUT=` /usr/bin/time ./${RUN} $j $((${COUNT}/$j)) ./$i 2>&1`
47*a1e26a70SApple OSS Distributions    echo ${TIMEOUT}
48*a1e26a70SApple OSS Distributions    REALTIME=`echo ${TIMEOUT} | awk '{ print $1 }'`
49*a1e26a70SApple OSS Distributions    TOTALTIME=`echo ${TIMEOUT} | awk '{ print $3 + $5 }'`
50*a1e26a70SApple OSS Distributions    record_perf_data "${METRIC_NAME}_real" "s" $REALTIME "Real time in seconds. Lower is better. This may have variance based on load on system" > ${PERFDATA_DIR}/${METRIC_NAME}_real.perfdata
51*a1e26a70SApple OSS Distributions    record_perf_data "${METRIC_NAME}_sys" "s" $TOTALTIME "User + Sys time in seconds. Lower is better." > /tmp/${METRIC_NAME}_sys.perfdata
52*a1e26a70SApple OSS Distributions	if [ $? -ne 0 ]; then
53*a1e26a70SApple OSS Distributions	    echo "Failed $i, exit status $?"
54*a1e26a70SApple OSS Distributions	    exit 1
55*a1e26a70SApple OSS Distributions	fi
56*a1e26a70SApple OSS Distributions    done
57*a1e26a70SApple OSS Distributionsdone
58