Skip to content

CI: two test groups have never run — the epoll sendfile e2e tests (Workers: 1 fails validation, the helper skips) and the #592 settled-route io_uring subtests (skip at 8 MiB) #709

Description

@FumingPower3925

Two groups of tests pass CI without ever running. Each one skips on every runner, and the CI step that reaches it runs without -v, so the skip never shows up. Both were found by PR #674's skip census, on main 9f4d89b and on #674's branch alike. Neither comes from #674.

1. The four epoll sendfile end-to-end tests have never run

startFileEngine (engine/epoll/sendfile_e2e_linux_test.go:79-88 @9f4d89b) builds its engine with Resources: resource.Resources{Workers: 1}:

  • Config validation has required at least MinWorkers (2) since v0.1.0 (resource/config.go:147-148), so New returns config validation: workers must be >= 2 if set, got 1.
  • The helper turns every New error into t.Skipf("epoll engine unavailable: ...").

As a result, TestSendfileEndToEndLargeFile, TestSendfileHEADNoBody, TestSendfileRangeRequest and TestSendfileSubThresholdFallback skip on every host and at every memlock (10 of 10 full-package epoll runs in the census). The file came in with 7beebb9 (v1.5.0), so the sendfile end-to-end path has had no test since then.

Fix:

  • Use Workers: 2.
  • Make the helper tell a configuration error apart from an unavailable engine, so a config mistake can never become a skip again.

With Workers: 2, all four ran and passed once (main 9f4d89b, golang:1.27, -race, 8 MiB; n = 1).

2. The root package's #592 io_uring subtests skip in every CI step

TestAdaptiveSettledRouteRetime592/iouring/{settled,negctrl_async,negctrl_learning} (adaptive_settled_retime_linux_test.go:606/624/647) skip with RLIMIT_MEMLOCK allows 1 worker(s), this rig needs 2:

  • The root step runs at the runner's 8 MiB.
  • No other step runs the root package with memlock raised.

So the io_uring half of the #592 settled-route retime check never runs in CI.

Fix: a step that raises memlock and forbids the skip, the way the iouring job handles the #656 tests: -v, an exact top-level RUN/PASS tally for the three subtests' parent, and no --- SKIP line.

Found alongside, and not defects

  • TestWriteBufBackpressureClosesSlowConsumer (engine/epoll/backpressure_test.go:61-62) is opt-in (GOTEST_BACKPRESSURE=1). Its own comment calls it non-deterministic on CI, so no step runs it. It needs a decision: keep it opt-in and documented, or make it deterministic.
  • TestRouteAdaptive_SettleReopenCost is opt-in by design.
  • Three middleware/sse alloc-count tests skip under -race.

Related: #684 covers the same silent-skip shape for ./adaptive when io_uring is unavailable. It does not include these two groups.

Evidence (local): evidence/celeris-662/r6/gate2/census/CENSUS.txt, r6/fix/P4-ROOTSHAPE-CENSUS.txt, r6/fix/logs/p4b-sendfile-workers2-base-m8.log, r6/fix/patches/sendfile-workers2.diff.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/ciCI/CD pipelinetestingTesting infrastructure and helpers

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions