check / check (push) Successful in 3m21s
The `main` side of #414: the two changes that make `next` green, and nothing else from `next`. Each is its own commit, so it can be compared with its `next` counterpart. - #404, as merged to `next`: a test binary hashes passwords at a 1 MB Argon2id cost instead of 64 MB, `TestHashPassword_ShippedParameters` keeps the shipped cost covered, and `script/test` runs at most four packages and eight parallel tests at once. Every test that starts a database hashed the admin password at 64 MB, which on a busy host made `internal/handlers` overrun its application start and its 90-second timeout. That is what turned `main` red. - #415: `script/test` runs without `-v`, so the build log, which the Docker build cuts off at 2 MiB, carries one result line per package and, for a package that fails, everything its tests wrote, application log lines included, instead of only passing packages. What the diff does not show: `script/test` differs from `next` by one line. `main` has no `script/assets` yet, so it is not called. Several packages failing at once can still reach the 2 MiB limit. - Judgement call: both commits keep their subjects from `next`, including their `closes` references. - Deviation and not fixed here: the same two as on #415 (no `-v` rerun on failure, #315; remaining sensitivity to extreme CPU load, #225). Model: opus-5-5 Co-authored-by: sneak <sneak@sneak.berlin> Reviewed-on: #416 Co-authored-by: clawbot <35+clawbot@noreply.example.org>
45 lines
2.0 KiB
Bash
Executable File
45 lines
2.0 KiB
Bash
Executable File
#!/bin/sh
|
|
# script/test: run the test suite.
|
|
#
|
|
# -timeout is applied by `go test` per package, not to the run as a whole, so
|
|
# it only has to clear the slowest single package. That is internal/handlers,
|
|
# measured in a cache-defeated builder stage on the 48-core shared build host
|
|
# (2026-08-18); load- and host-dependent, not invariants:
|
|
#
|
|
# 16.9s host load 5-20, GOMAXPROCS 48
|
|
# 45.9s / 47.3s / 49.0s three runs at deliberate host load 31-73
|
|
# 30.6s / 39.7s host load 5-20, GOMAXPROCS 6 / 4
|
|
# 67.3s / 97.5s host load 5-20, GOMAXPROCS 2 / 1
|
|
# 67.3s GOMAXPROCS 4 at deliberate host load 52-68
|
|
#
|
|
# The old 30s budget was breached by every loaded run and by every GOMAXPROCS
|
|
# at or below 6; at GOMAXPROCS 4 it failed outright ("panic: test timed out
|
|
# after 30s"), reproduced on 33e4fa4 with no other change.
|
|
#
|
|
# 90s matches the org-wide backstop in REPO_POLICIES.md and is sized here
|
|
# against the figures above: the worst case under native parallelism is 49.0s,
|
|
# and the compound GOMAXPROCS-4-under-load case at 67.3s sits at 75% of it.
|
|
# The one figure above 90s is GOMAXPROCS 1, a synthetic core floor rather than
|
|
# a condition CI runs under. If a CPU-limited runner ever puts a real run near
|
|
# 67s, that is the datum to revisit the org figure with.
|
|
#
|
|
# -p 4 -parallel 8 keep the run under 2 GB of memory: at most four test
|
|
# binaries build or run at once, each with at most eight parallel tests. Under
|
|
# -race every test binary and every link costs a few hundred MB, so the
|
|
# defaults (one per core) add up to several GB on a many-core host.
|
|
#
|
|
# No -v: the Docker build cuts each step's log off at 2 MiB, and verbose output
|
|
# from the whole suite passes that before a failure is printed. Without it, go
|
|
# test prints one result line per package and, for a package that fails,
|
|
# everything its tests wrote, application log lines included.
|
|
set -eu
|
|
|
|
ROOT="$(cd "$(dirname "$0")/.." && pwd -P)"
|
|
|
|
main() {
|
|
cd "$ROOT"
|
|
go test -race -p 4 -parallel 8 -timeout 90s ./...
|
|
}
|
|
|
|
main "$@"
|