#!/usr/bin/env bash
set -euo pipefail
export TZ=UTC
out=${1:-out}
mkdir -p "$out"
{ go version; go env GOOS GOARCH; } > "$out/environment.txt"
go test -count=2 -v . > "$out/test.txt"
go test -count=2 -race . > "$out/race.txt"
go vet . > "$out/vet.txt"
go build -o "$out/lab" .
for mode in pool memory goroutine fd; do timeout 5s "$out/lab" "$mode" > "$out/$mode.txt"; done
set +e
timeout 5s "$out/lab" deadlock > "$out/deadlock.txt" 2>&1
status=$?
set -e
[ "$status" -eq 2 ] || { echo "unexpected deadlock status=$status"; exit 1; }
timeout 5s "$out/lab" cpu "$out/cpu.pb.gz"
go tool pprof -top "$out/lab" "$out/cpu.pb.gz" > "$out/cpu-top.txt"
