Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [2.0.0] - Unreleased

### Fixed

- `Logging` is now declared in the test target. `test/test_worker_lifecycle.jl` does `using Logging`, so `Pkg.test()` always ended in `ArgumentError: Package Logging not found in current path` — meaning the test item covering the slow-activation warning had never actually run.

### Added

- A test item timeout is now logged with the evidence for *which* channel failed: how long it has been since the test process last sent a JSON-RPC message, how long since it last produced output, whether the process's own hang watchdog left a diagnostics dump, and — on a JSONRPC that can report it — how far behind the connection's outbound queue is. A test process talks to the controller over two independent channels, and a timeout only ever proves that the *result* never arrived. Output still arriving while the socket has gone quiet means the connection died, not the test; before this the two were indistinguishable without reconstructing the run from its artifacts afterwards.
Expand Down
3 changes: 2 additions & 1 deletion Project.toml
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,11 @@ Pkg = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f"
TestItemRunner = "f8b46487-2199-4994-9208-9a1283c18c0a"
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
JuliaWorkspaces = "e554591c-7f10-434f-9f27-2097f62a04fd"
Logging = "56ddb016-857b-54e1-b83d-db4d58db5568"

[compat]
julia = "1.12"
PrecompileTools = "1.3.4"

[targets]
test = ["JuliaWorkspaces", "Test", "TestItemRunner", "Pkg"]
test = ["JuliaWorkspaces", "Test", "TestItemRunner", "Pkg", "Logging"]
5 changes: 3 additions & 2 deletions src/testitemcontroller.jl
Original file line number Diff line number Diff line change
Expand Up @@ -1530,8 +1530,9 @@ end

# The outbound half of a process's JSON-RPC connection, when the JSONRPC in use can report
# it. That queue is unbounded, so a peer that has stopped reading never makes a send fail —
# the messages simply accumulate, undelivered. Guarded by `isdefined` because the compat
# bound still allows a JSONRPC without the accessor.
# the messages simply accumulate, undelivered. Guarded by `isdefined` rather than assumed:
# JSONRPC is vendored here, not a dependency with a compat bound, so what decides whether the
# accessor exists is when `packages/JSONRPC` was last re-vendored.
function _outbound_backlog(ps::TestProcessState)
ps.endpoint === nothing && return nothing
isdefined(JSONRPC, :outbound_backlog) || return nothing
Expand Down
Loading