mirror of
https://github.com/hasura/graphql-engine.git
synced 2024-12-14 17:02:49 +03:00
fbaa0f75de
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/3159 GitOrigin-RevId: d615bf8d1f8a78c4c157b613f0d17cbcb8aef538
78 lines
2.3 KiB
Bash
Executable File
78 lines
2.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
shopt -s globstar
|
|
set -o errtrace
|
|
|
|
function usage {
|
|
echo "Show performance of the current branch over the last N commits. Note that only commits"
|
|
echo "that touch server/ are benchmarked, so this may display fewer than N results."
|
|
echo "This opens your default browser."
|
|
echo
|
|
echo " Usage:"
|
|
echo " $ $0 <num_commits> <benchmark_set> [<extra_mono_pr_number>]"
|
|
echo
|
|
echo "e.g. to look at how performance of the 'chinook' benchmarks have changed over the last"
|
|
echo "ten commits, alongside the PR #1337 that you have opened:"
|
|
echo " $ $0 10 chinook 1337"
|
|
}
|
|
trap usage ERR
|
|
[ -z ${1:+x} ] && false
|
|
[ -z ${2:+x} ] && false
|
|
|
|
LIM=$1
|
|
BENCH_SET=$2
|
|
|
|
# NOTE: These two utilities copied from the lux repo:
|
|
open_webpage_cmd() {
|
|
if [[ "$(uname)" == "Darwin" ]]; then
|
|
open $1
|
|
elif [[ "$(expr substr $(uname -s) 1 5)" == "Linux" ]]; then
|
|
xdg-open $1
|
|
elif [[ "$(expr substr $(uname -s) 1 10)" == "MINGW32_NT" ]]; then
|
|
start $1
|
|
elif [[ "$(expr substr $(uname -s) 1 10)" == "MINGW64_NT" ]]; then
|
|
start $1
|
|
fi
|
|
}
|
|
|
|
open_webpage() {
|
|
if ! open_webpage_cmd $1 >/dev/null; then
|
|
echo "failed to open browser"
|
|
echo "navigate to: $1"
|
|
fi
|
|
}
|
|
|
|
# see also server/benchmarks/utils/pr-merge-bases.sh
|
|
pr_nums=$(git log \
|
|
--grep='https://github.com/hasura/graphql-engine-mono/pull/[0-9]*$' \
|
|
-"$LIM" \
|
|
| grep -oP '^ PR-URL: https://github.com/hasura/graphql-engine-mono/pull/\K[0-9]*$' \
|
|
# ^ TODO we'd also like to make this a multi-line regex so we can be sure
|
|
# these are just the kodiak-added lines
|
|
)
|
|
|
|
# Add the optional additional PR number to the charts:
|
|
if [ ! -z ${3+x} ]; then
|
|
pr_nums="$3 $pr_nums"
|
|
fi
|
|
|
|
echo -n "Collecting merged PRs with associated benchmarks: " # progress printed below
|
|
fragment=""
|
|
for num in $pr_nums; do
|
|
# See also `server/benchmarks/fabfile.py` and https://github.com/hasura/graphql-bench
|
|
RESULTS_S3_BUCKET="hasura-benchmark-results"
|
|
json_url="https://$RESULTS_S3_BUCKET.s3.us-east-2.amazonaws.com/mono-pr-$num/$BENCH_SET.json"
|
|
if curl --output /dev/null --silent --head --fail "$json_url"; then
|
|
echo -n .
|
|
else
|
|
echo -n x
|
|
continue
|
|
fi
|
|
fragment="$fragment,mono-pr-$num/$BENCH_SET"
|
|
done
|
|
echo
|
|
|
|
url="https://hasura.github.io/graphql-bench/app/web-app/#${fragment:1}"
|
|
|
|
open_webpage_cmd $url
|