@@ -7,11 +7,12 @@ set -eo pipefail
7
7
# command-line parsing
8
8
#
9
9
10
- usage () { echo " usage: $( basename " $0 " ) [--cli <path>] [--baseline-cli <path>] [--output-style <style>] [--json <path>] [--profile] [--flamegraph <path>]" ; }
10
+ usage () { echo " usage: $( basename " $0 " ) [--cli <path>] [--baseline-cli <path>] [--admin] [-- output-style <style>] [--json <path>] [--show-output] [--output-style <style >] [--profile] [--flamegraph <path>]" ; }
11
11
12
12
NEXT=
13
13
BASELINE_CLI=
14
14
TEST_CLI=" git"
15
+ ADMIN=
15
16
SHOW_OUTPUT=
16
17
JSON=
17
18
PROFILE=
@@ -69,6 +70,8 @@ for a in "$@"; do
69
70
JSON=" ${a/ -j/ } "
70
71
elif [ " ${a} " = " -p" ] || [ " ${a} " = " --profile" ]; then
71
72
PROFILE=1
73
+ elif [ " ${a} " = " --admin" ]; then
74
+ ADMIN=1
72
75
elif [ " ${a} " = " -F" ] || [ " ${a} " = " --flamegraph" ]; then
73
76
NEXT=" flamegraph"
74
77
elif [[ " ${a} " == " -F" * ]]; then
@@ -335,6 +338,9 @@ parse_arguments() {
335
338
# this test should run `n` warmups
336
339
WARMUP=0
337
340
341
+ # this test requires administrative privileges
342
+ REQUIRES_ADMIN=0
343
+
338
344
if [ " $* " = " " ]; then
339
345
gitbench_usage 1>&2
340
346
exit 1
@@ -356,6 +362,8 @@ parse_arguments() {
356
362
NEXT=" prepare"
357
363
elif [ " ${a} " = " --chdir" ]; then
358
364
NEXT=" chdir"
365
+ elif [ " ${a} " = " --requires-admin" ]; then
366
+ REQUIRES_ADMIN=1
359
367
elif [[ " ${a} " == " --" ]]; then
360
368
shift
361
369
break
@@ -379,6 +387,7 @@ parse_arguments() {
379
387
echo " PREPARE=\" ${PREPARE} \" "
380
388
echo " CHDIR=\" ${CHDIR} \" "
381
389
echo " WARMUP=\" ${WARMUP} \" "
390
+ echo " REQUIRES_ADMIN=\" ${REQUIRES_ADMIN} \" "
382
391
383
392
echo -n " GIT_ARGUMENTS=("
384
393
@@ -388,7 +397,7 @@ parse_arguments() {
388
397
echo " )"
389
398
}
390
399
391
- gitbench_usage () { echo " usage: gitbench command..." ; }
400
+ gitbench_usage () { echo " usage: gitbench [--requires-admin] [--warmup <count>] [--prepare <command>] [--chdir <directory>] command..." ; }
392
401
393
402
exec_profiler () {
394
403
if [ " ${BASELINE_CLI} " != " " ]; then
@@ -490,7 +499,8 @@ exec_hyperfine() {
490
499
# invocation of hyperfine.
491
500
#
492
501
gitbench () {
493
- eval $( parse_arguments " $@ " )
502
+ argument_data=$( parse_arguments " $@ " )
503
+ eval ${argument_data}
494
504
495
505
# sanity check
496
506
@@ -515,6 +525,17 @@ gitbench() {
515
525
# rm -rf "${SANDBOX_DIR:?}"
516
526
}
517
527
528
+ # helper script to ensure that --admin is specified
529
+ needs_admin () {
530
+ if [ " ${ADMIN} " != " 1" ]; then
531
+ echo " $0 : skipping administrator test" 1>&2
532
+ echo " " 1>&2
533
+ echo " This benchmark needs administrative (root) privileges. To run it," 1>&2
534
+ echo " specify '--admin' to the benchmark." 1>&2
535
+ exit 2
536
+ fi
537
+ }
538
+
518
539
# helper script to give useful error messages about configuration
519
540
needs_repo () {
520
541
REPO=" ${1} "
0 commit comments