Luigit
repositories / bugabinga.net

bugabinga.net

personal infrastructure for bugabinga!

owned by admin

scripts/local/verify.sh

Raw
#!/usr/bin/env bash
set -euo pipefail

export GOTOOLCHAIN=local

repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
cd "${repo_root}"

usage() {
  echo "usage: verify.sh infra [tofu-route|quadlets] | ipv6 | sites [OUTPUT] | luci-e2e | luci-mutation [OUTPUT] | go [PATH...] | go-race [PATH...] | go-staticcheck [PATH...] | go-vuln [PATH...] | luci-bench COUNT OUTPUT | luci-benchstat BASELINE CANDIDATE" >&2
  exit 2
}

repository_path() {
  local path
  path="$(realpath -m "$1")"
  [[ "${path}" == "${repo_root}"/* ]] || {
    echo "path outside repository: $1" >&2
    exit 2
  }
  printf '%s\n' "${path}"
}

existing_repository_file() {
  local path
  path="$(realpath "$1")"
  [[ -f "${path}" ]] || {
    echo "file not found: $1" >&2
    exit 2
  }
  [[ "${path}" == "${repo_root}"/* ]] || {
    echo "path outside repository: $1" >&2
    exit 2
  }
  printf '%s\n' "${path}"
}

untracked_repository_output() {
  local path relative
  path="$(repository_path "$1")"
  relative="${path#"${repo_root}"/}"
  git -C "${repo_root}" ls-files --error-unmatch -- "${relative}" >/dev/null 2>&1 && {
    echo "output is tracked: $1" >&2
    exit 2
  }
  printf '%s\n' "${path}"
}

benchmark_file() {
  local path line pattern found=false
  path="$(existing_repository_file "$1")"
  pattern='^Benchmark(BuildDashboard|BuildRun)(/[^[:space:]]+)?-[0-9]+[[:space:]]+[1-9][0-9]*[[:space:]]+([0-9]+|[0-9]*\.[0-9]+)[[:space:]]+ns/op([[:space:]].*)?$'
  while IFS= read -r line || [[ -n "${line}" ]]; do
    [[ "${line}" == Benchmark* ]] || continue
    [[ "${line}" =~ ${pattern} ]] || {
      echo "malformed Luci benchmark result in: $1" >&2
      exit 2
    }
    found=true
  done <"${path}"
  ${found} || {
    echo "no Luci benchmark results in: $1" >&2
    exit 2
  }
  printf '%s\n' "${path}"
}

target="${1:-}"
[[ -n "${target}" ]] || usage
shift

case "${target}" in
  infra)
    [[ "$#" -le 1 ]] || usage
    exec "${repo_root}/scripts/local/verify-infra.sh" "$@"
    ;;
  ipv6)
    [[ "$#" -eq 0 ]] || usage
    exec "${repo_root}/scripts/local/verify-ipv6.sh"
    ;;
  sites)
    [[ "$#" -le 1 ]] || usage
    exec "${repo_root}/scripts/local/verify-sites-chrome.mjs" "${1:-/tmp/nugu-real-chrome-current}"
    ;;
  luci-e2e)
    [[ "$#" -eq 0 ]] || usage
    exec "${repo_root}/scripts/local/luci-manual-e2e.sh"
    ;;
  luci-mutation)
    [[ "$#" -le 1 ]] || usage
    output="$(untracked_repository_output "${1:-${repo_root}/services/luci/target/luci-gremlins.json}")"
    mkdir -p "$(dirname "${output}")"
    cd "${repo_root}/services/luci"
    exec go tool gremlins unleash . --workers 8 --exclude-files '(^|/)(target|generated|vendor)/' --threshold-efficacy 80 --threshold-mcover 100 --output "${output}"
    ;;
  go)
    "${repo_root}/scripts/local/go.sh" race "$@"
    "${repo_root}/scripts/local/go.sh" staticcheck "$@"
    exec "${repo_root}/scripts/local/go.sh" vuln "$@"
    ;;
  go-race)
    exec "${repo_root}/scripts/local/go.sh" race "$@"
    ;;
  go-staticcheck)
    exec "${repo_root}/scripts/local/go.sh" staticcheck "$@"
    ;;
  go-vuln)
    exec "${repo_root}/scripts/local/go.sh" vuln "$@"
    ;;
  luci-bench)
    [[ "$#" -eq 2 ]] || usage
    [[ "$1" =~ ^[1-9][0-9]*$ ]] || {
      echo "benchmark count must be a positive integer" >&2
      exit 2
    }
    output="$(untracked_repository_output "$2")"
    mkdir -p "$(dirname "${output}")"
    cd "${repo_root}/services/luci"
    GOMAXPROCS=1 go test ./internal/web -run '^$' -bench '^(BenchmarkBuildDashboard|BenchmarkBuildRun)$' -benchtime=3s -count="$1" | tee "${output}"
    grep -q '^Benchmark\(BuildDashboard\|BuildRun\)' "${output}" || {
      echo "no benchmark results written: ${output}" >&2
      exit 1
    }
    ;;
  luci-benchstat)
    [[ "$#" -eq 2 ]] || usage
    baseline="$(benchmark_file "$1")"
    candidate="$(benchmark_file "$2")"
    cd "${repo_root}/services/luci"
    exec go tool benchstat "${baseline}" "${candidate}"
    ;;
  *)
    echo "unknown verification target: ${target}" >&2
    usage
    ;;
esac