From 771ec303d4fa6edb0ae2b108f2612adb89dedd02 Mon Sep 17 00:00:00 2001 From: Edward Thomson Date: Wed, 15 Jan 2025 00:02:14 +0000 Subject: [PATCH] benchmarks: introduce `--admin` flag for admin benchmarks Some benchmarks require administrative privileges, namely the ones that blow up the disk cache. Don't run them by default, to avoid obnoxious sudo password prompts, etc. Users can specify `--admin` to run them. --- tests/benchmarks/benchmark.sh | 13 +++++++-- tests/benchmarks/benchmark_helpers.sh | 27 ++++++++++++++++--- .../hash-object__text_nocache_100kb | 2 ++ .../benchmarks/hash-object__text_nocache_10mb | 2 ++ .../benchmarks/hash-object__text_nocache_1kb | 2 ++ .../hash-object__write_text_nocache_100kb | 2 ++ .../hash-object__write_text_nocache_10mb | 2 ++ .../hash-object__write_text_nocache_1kb | 2 ++ 8 files changed, 47 insertions(+), 5 deletions(-) diff --git a/tests/benchmarks/benchmark.sh b/tests/benchmarks/benchmark.sh index 471759186..4f39a0b14 100755 --- a/tests/benchmarks/benchmark.sh +++ b/tests/benchmarks/benchmark.sh @@ -6,7 +6,7 @@ set -eo pipefail # parse the command line # -usage() { echo "usage: $(basename "$0") [--cli ] [--name ] [--baseline-cli ] [--suite ] [--json ] [--flamegraph] [--zip ] [--verbose] [--debug]"; } +usage() { echo "usage: $(basename "$0") [--cli ] [--name ] [--baseline-cli ] [--suite ] [--admin] [--json ] [--flamegraph] [--zip ] [--verbose] [--debug]"; } TEST_CLI="git" TEST_CLI_NAME= @@ -16,6 +16,7 @@ JSON_RESULT= FLAMEGRAPH= ZIP_RESULT= OUTPUT_DIR= +ADMIN= VERBOSE= DEBUG= NEXT= @@ -58,6 +59,8 @@ for a in "$@"; do NEXT="suite" elif [[ "${a}" == "-s"* ]]; then SUITE="${a/-s/}" + elif [ "${a}" == "--admin" ]; then + ADMIN=1 elif [ "${a}" = "-v" ] || [ "${a}" == "--verbose" ]; then VERBOSE=1 elif [ "${a}" == "--debug" ]; then @@ -223,6 +226,10 @@ for TEST_PATH in "${BENCHMARK_DIR}"/*; do SHOW_OUTPUT="--show-output" fi + if [ "${ADMIN}" = "1" ]; then + ALLOW_ADMIN="--admin" + fi + OUTPUT_FILE="${OUTPUT_DIR}/${TEST_FILE}.out" ERROR_FILE="${OUTPUT_DIR}/${TEST_FILE}.err" JSON_FILE="${OUTPUT_DIR}/${TEST_FILE}.json" @@ -230,7 +237,7 @@ for TEST_PATH in "${BENCHMARK_DIR}"/*; do FAILED= { - ${TEST_PATH} --cli "${TEST_CLI}" --baseline-cli "${BASELINE_CLI}" --json "${JSON_FILE}" ${SHOW_OUTPUT} >"${OUTPUT_FILE}" 2>"${ERROR_FILE}"; + ${TEST_PATH} --cli "${TEST_CLI}" --baseline-cli "${BASELINE_CLI}" --json "${JSON_FILE}" ${ALLOW_ADMIN} ${SHOW_OUTPUT} >"${OUTPUT_FILE}" 2>"${ERROR_FILE}"; FAILED=$? } || true @@ -311,6 +318,8 @@ for TEST_PATH in "${BENCHMARK_DIR}"/*; do ANY_FAILED=1 fi fi + else + echo "" fi done diff --git a/tests/benchmarks/benchmark_helpers.sh b/tests/benchmarks/benchmark_helpers.sh index e5babf9c8..cf0cd5121 100644 --- a/tests/benchmarks/benchmark_helpers.sh +++ b/tests/benchmarks/benchmark_helpers.sh @@ -7,11 +7,12 @@ set -eo pipefail # command-line parsing # -usage() { echo "usage: $(basename "$0") [--cli ] [--baseline-cli ] [--output-style