end-to-end/upgrade/test-pprof-upload.sh
Earl Warren 149c6a545c
lib: source build replace the matching release
Instead of having an explicit vX.Y-dev version to be referenced
explicitly, a binary built from source replaces the matching
version. For instance, if forgejo/build-from-sources contains v9.0,

* the development branch is compiled from source
* the v9.0 artifact is uploaded
* prior to running any test, the artificat is downloaded and used
* the v9.0 binary is not downloaded from
  forgejo/experimental/integration because it is already present

The vX.Y release is built daily and the end-to-end tests run on it. If
a regression is introduced, it will be spotted within 24h.

Compiling from source is used when the Forgejo runs the end-to-end
suite on a specific pull request.
2024-08-08 17:46:04 +02:00

43 lines
1.2 KiB
Bash

# SPDX-License-Identifier: MIT
function test_upload_profiles() {
FORGEJO_URL="http://localhost:6060"
PROFILECLI_URL="http://0.0.0.0:4040"
endpoints=("/debug/pprof/allocs" "/debug/pprof/block" "/debug/pprof/goroutine" "/debug/pprof/mutex" "/debug/pprof/profile?seconds=5")
curl -fL https://github.com/grafana/pyroscope/releases/download/v1.1.5/profilecli_1.1.5_linux_amd64.tar.gz -o profilecli.tar.gz
tar xzf profilecli.tar.gz
for endpoint in "${endpoints[@]}"; do
output=$(basename "$endpoint")
if [[ $endpoint == *"/profile"* ]]; then
output="profile"
fi
output="${output}.pprof"
# Download the content and save it to a file
curl -s "${FORGEJO_URL}${endpoint}" -o "${output}"
./profilecli upload ${output} --url=${PROFILECLI_URL}
rm ${output}
done
}
function test_forgejo_pprof() {
stop
docker rm -f test_pyroscope
docker run --name test_pyroscope --rm -d -p 4040:4040 docker.io/grafana/pyroscope
reset_forgejo $UPGRADE_DIR/default-app.ini
log_info "run 7.0"
start 7.0
test_upload_profiles
stop
log_info "run 9.0"
start 9.0
test_upload_profiles
stop
docker stop test_pyroscope
}