Run at most 4 tests of a package at once in the test phase (closes #224)
check / check (push) Waiting to run
check / check (push) Waiting to run
On a busy host, TestService_Get_ReturnsByItsDeadline failed because its request returned over a second after its 200 ms deadline. The request does not ignore its deadline: with as many tests running at once in the package's test process as the host has CPUs, it waited to be scheduled, or for SQLite calls queued on a lock inside the SQLite library that every database in the process shares. The test phase now passes -parallel 4 to go test. -p is unchanged: capping it also caps compiling, which made the step much slower. Model: opus-5-5
This commit is contained in:
+7
-3
@@ -32,10 +32,14 @@ RUN script/bootstrap --cgo
|
||||
COPY . .
|
||||
|
||||
# Without -v first; on a failure, again with -v for the details, and
|
||||
# the step fails even if the second run passes.
|
||||
RUN go test -count=1 -timeout 90s -race -cover ./... || \
|
||||
# the step fails even if the second run passes. -parallel 4: by default
|
||||
# a package runs as many of its tests at once as the host has CPUs. On
|
||||
# a busy host they then wait to be scheduled, and their SQLite calls
|
||||
# queue on one lock that every database in the test process shares, so
|
||||
# a test that times a request can see it return a second late.
|
||||
RUN go test -count=1 -timeout 90s -race -parallel 4 -cover ./... || \
|
||||
{ echo "--- Rerunning with -v for details ---"; \
|
||||
go test -count=1 -timeout 90s -race -v ./...; exit 1; }
|
||||
go test -count=1 -timeout 90s -race -parallel 4 -v ./...; exit 1; }
|
||||
|
||||
# Build stage. Nothing is wanted from the two phases above: these copies
|
||||
# make BuildKit build them first, so this stage runs only when lint and
|
||||
|
||||
Reference in New Issue
Block a user