blob: 865de3d975f80f14c630e1fa152ac01a584680b2 [file] [log] [blame]
#!/bin/bash
# Runs a perf instance against the given spanner database.
# Prerequisite:
# gcloud auth application-default login
# Example Command:
# ./run_with_spanner.sh p=skia-infra-corp i=tfgen-spanid-20241205020733610
# d=v8_int config=configs/spanner/v8-internal.json repo=v8/v8
# First delete any existing docker containers to start clean.
sudo docker ps -q | xargs -r sudo docker rm -vf
# Now let's get all the arguments passed in.
for arg in "$@"
do
argKey=$(echo $arg | cut -f1 -d=)
keyLen=${#argKey}
val="${arg:$keyLen+1}"
export "$argKey"="$val"
done
# Check if domain or repo are set via params, if not set them to default values.
if [[ -z "${domain}" ]]; then
domain="chromium.googlesource.com"
fi
if [[ -z "${repo}" ]]; then
repo="chromium/src"
fi
echo "Using the following params: -p=$p -i=$i -d=$d -config=$config -domain=$domain -repo=$repo"
# Now let's run pgadapter connected to the supplied spanner database.
sudo docker run -d -p 127.0.0.1:5432:5432 \
-v $HOME/.config/gcloud/application_default_credentials.json:/acct_credentials.json \
gcr.io/cloud-spanner-pg-adapter/pgadapter:latest \
-p $p -i $i -d $d -c /acct_credentials.json -x
# Now that pgadapter is connected to the spanner instance, let's run the local frontend
# pointed to pgadapter using the supplied config file. First, build the perfserver.
bazelisk build --config=mayberemote -c dbg //perf/... || {
echo "Build failed, exiting (not trying to run outdated perfserver)."
exit 1
}
../_bazel_bin/perf/go/perfserver/perfserver_/perfserver frontend \
--dev_mode \
--localToProd \
--do_clustering=false \
--port=:8002 \
--prom_port=:20001 \
--config_filename=$config \
--display_group_by=false \
--disable_metrics_update=true \
--resources_dir=../_bazel_bin/perf/pages/development/ \
--connection_string=postgresql://root@127.0.0.1:5432/${d}?sslmode=disable \
--commit_range_url=https://${domain}/${repo}/+log/{begin}..{end}