tinyrelayfile
tinyrelay/scripts/bench-linux.sh/

scripts/bench-linux.sh raw
1#!/usr/bin/env bash
2set -euo pipefail
3
4remote_host="${LINUX_HOST:?set LINUX_HOST to the SSH name of the Linux Docker host}"
5name="${LINUX_NAME:-tinyrelay-bench-${USER:-user}-$$}"
6safe_name="$(printf '%s' "$name" | tr -cs 'A-Za-z0-9_.-' '-' | sed 's/^-*//;s/-*$//')"
7remote_root="tinyrelay-tests/${safe_name}"
8image="tinyrelay-bench-${safe_name}"
9packages="${BENCH_PACKAGES:-./internal/storage ./internal/relay}"
10benchtime="${BENCHTIME:-5s}"
11stamp="$(date -u +%Y%m%dT%H%M%SZ)"
12local_artifacts="${BENCH_ARTIFACTS:-artifacts/bench/${safe_name}/${stamp}}"
13mkdir -p "$local_artifacts"
14packages_b64="$(printf '%s' "$packages" | base64 | tr -d '\n')"
15
16COPYFILE_DISABLE=1 tar --no-xattrs \
17 --exclude=.git --exclude=.DS_Store --exclude=.playwright-cli \
18 --exclude=output --exclude=artifacts --exclude=node_modules \
19 -cf - . | ssh "$remote_host" "mkdir -p '$remote_root' && tar -xf - -C '$remote_root'"
20
21set +e
22ssh "$remote_host" "LINUX_PACKAGES_B64='$packages_b64' sh -s -- '$remote_root' '$image' '$stamp' '$benchtime'" <<'REMOTE'
23set -eu
24remote_root=$1
25image=$2
26stamp=$3
27benchtime=$4
28packages=$(printf '%s' "$LINUX_PACKAGES_B64" | base64 -d)
29artifact_dir="$remote_root/artifacts/$stamp"
30mkdir -p "$artifact_dir"
31{
32 date -u +%Y-%m-%dT%H:%M:%SZ
33 printf 'host='; hostname
34 printf 'kernel='; uname -a
35 printf 'cpu='; nproc
36 printf 'docker='; docker version --format '{{.Server.Version}}'
37} > "$artifact_dir/metadata.txt"
38set +e
39docker build --target bench --build-arg BENCH_PACKAGES="$packages" --build-arg BENCHTIME="$benchtime" -t "$image" "$remote_root" > "$artifact_dir/bench.log" 2>&1
40status=$?
41cat "$artifact_dir/bench.log"
42printf '%s\n' "$status" > "$artifact_dir/status"
43exit "$status"
44REMOTE
45status=$?
46set -e
47
48scp -q "$remote_host:$remote_root/artifacts/$stamp/metadata.txt" "$local_artifacts/metadata.txt" || true
49scp -q "$remote_host:$remote_root/artifacts/$stamp/status" "$local_artifacts/status" || true
50scp -q "$remote_host:$remote_root/artifacts/$stamp/bench.log" "$local_artifacts/bench.log" || true
51printf 'artifacts: %s\n' "$local_artifacts"
52exit "$status"

About

ownerc01503e8035f
visibilitypublic
headd730679639bf

Maintainers

  • c01503e8035f owner
  • ba1b5beed5b5 agent hermes

Clone

  • https://012.run/npub1cq2s86qrtadf36eqq3epm38wmhdynrrcwxf84eldk3f94dkv7ttsrulrz5/tinyrelay.git

Refs