Skip to content

Commit 97cb3e5

Browse files
committed
Harden benchmark ref checkout and clarify JMH settings
1 parent 817f43a commit 97cb3e5

2 files changed

Lines changed: 30 additions & 19 deletions

File tree

.github/workflows/benchmarks.yml

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@ on:
1919
required: false
2020
default: "JRTCompare2Benchmark"
2121
jmhArgs:
22-
description: "Extra JMH arguments"
22+
description: "Extra JMH arguments; when provided, CLI options override benchmark annotations"
2323
required: false
24-
default: "-wi 5 -i 10 -f 3"
24+
default: ""
2525
publish:
2626
description: "Publish results to GitHub Pages"
2727
required: false
@@ -34,7 +34,6 @@ concurrency:
3434

3535
env:
3636
DEFAULT_JMH_PATTERN: JRTCompare2Benchmark
37-
DEFAULT_JMH_ARGS: -wi 5 -i 10 -f 3
3837
BENCHMARK_SITE_URL: https://jawk.io/
3938

4039
jobs:
@@ -62,19 +61,25 @@ jobs:
6261
- name: Select benchmark ref
6362
id: select
6463
shell: bash
64+
env:
65+
INPUT_REF: ${{ inputs.ref }}
66+
INPUT_VERSION: ${{ inputs.version }}
67+
INPUT_PATTERN: ${{ inputs.pattern }}
68+
INPUT_JMH_ARGS: ${{ inputs.jmhArgs }}
69+
INPUT_PUBLISH: ${{ inputs.publish }}
6570
run: |
6671
if [ "${{ github.event_name }}" = "push" ]; then
6772
ref="${GITHUB_REF_NAME}"
6873
version="${GITHUB_REF_NAME}"
6974
pattern="${DEFAULT_JMH_PATTERN}"
70-
jmh_args="${DEFAULT_JMH_ARGS}"
75+
jmh_args=""
7176
publish="true"
7277
else
73-
ref="${{ inputs.ref }}"
74-
version="${{ inputs.version }}"
75-
pattern="${{ inputs.pattern }}"
76-
jmh_args="${{ inputs.jmhArgs }}"
77-
publish="${{ inputs.publish }}"
78+
ref="${INPUT_REF}"
79+
version="${INPUT_VERSION}"
80+
pattern="${INPUT_PATTERN}"
81+
jmh_args="${INPUT_JMH_ARGS}"
82+
publish="${INPUT_PUBLISH}"
7883
fi
7984
8085
if [ -z "${ref}" ]; then
@@ -86,16 +91,18 @@ jobs:
8691
if [ -z "${pattern}" ]; then
8792
pattern="${DEFAULT_JMH_PATTERN}"
8893
fi
89-
if [ -z "${jmh_args}" ]; then
90-
jmh_args="${DEFAULT_JMH_ARGS}"
94+
if [[ "${ref}" == -* ]]; then
95+
echo "Benchmark ref must not start with '-'." >&2
96+
exit 1
9197
fi
9298
9399
git fetch --tags --force origin
94-
if git rev-parse --verify --quiet "${ref}^{commit}" > /dev/null; then
95-
git checkout "${ref}"
100+
if commit="$(git rev-parse --verify --quiet -- "${ref}^{commit}")"; then
101+
git checkout --detach "${commit}"
96102
else
97-
git fetch origin "${ref}"
98-
git checkout FETCH_HEAD
103+
git fetch origin -- "${ref}"
104+
commit="$(git rev-parse --verify --quiet -- "FETCH_HEAD^{commit}")"
105+
git checkout --detach "${commit}"
99106
fi
100107
101108
safe_version="$(printf '%s' "${version}" | tr '/\\ ' '---' | tr -cd 'A-Za-z0-9._-')"

src/site/resources/js/benchmarks.js

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,13 +41,17 @@
4141
};
4242

4343
$ctrl.shortBenchmarkName = function(benchmark) {
44-
var marker = 'JRTCompare2Benchmark.';
45-
var index;
44+
var lastSeparatorIndex;
45+
var classSeparatorIndex;
4646
if (!benchmark) {
4747
return '';
4848
}
49-
index = benchmark.indexOf(marker);
50-
return index >= 0 ? benchmark.substring(index + marker.length) : benchmark;
49+
lastSeparatorIndex = benchmark.lastIndexOf('.');
50+
if (lastSeparatorIndex < 0) {
51+
return benchmark;
52+
}
53+
classSeparatorIndex = benchmark.lastIndexOf('.', lastSeparatorIndex - 1);
54+
return benchmark.substring(classSeparatorIndex + 1);
5155
};
5256

5357
$ctrl.forkCount = function(result) {

0 commit comments

Comments
 (0)