#!/usr/bin/env bash
set -euo pipefail
export TZ=UTC
out=${1:-out}
mkdir -p "$out"
{ go version; go env GOOS GOARCH; grep -m1 'model name' /proc/cpuinfo; } > "$out/environment.txt"
go test -count=2 -v . > "$out/test.txt"
go test -race -count=2 . > "$out/race.txt"
go vet . > "$out/vet.txt"
go build -o "$out/lab" .
for mode in fgprof cpu trace; do
 timeout 5s "$out/lab" "$mode" "$out/$mode.out" > "$out/$mode-run.txt"
done
for mode in fgprof cpu; do
 go tool pprof -top "$out/lab" "$out/$mode.out" > "$out/$mode-top.txt"
done
go tool trace -pprof=sched "$out/trace.out" > "$out/sched.pprof"
go tool pprof -top "$out/sched.pprof" > "$out/sched-top.txt"
go test -run='^$' -bench='^BenchmarkAdd$' -benchmem -benchtime=100ms -count=10 -cpu=1 > "$out/bench.txt"
go version -m "$out/lab" > "$out/modules.txt"
