Skip to content

test(py): quarantine the TCP close test and plan its fix - #8359

Merged
kixelated merged 1 commit into
mainfrom
test/quarantine-tcp-rst-close
Nov 9, 2026
Merged

kixelated merged 1 commit into
mainfrom
test/quarantine-tcp-rst-close

Conversation

@kixelated

Copy link
Copy Markdown
Collaborator

Summary

Quarantines py/moq-rs/tests/test_socket.py's test_tcp_rst_and_endpoint_close_are_errors under the repository's flaky-test rule and plans its fix as a child of quest/m0/test-flakes-2.

It failed once in moq-dev/moq#8293's loaded just check. After a.close(), the reader got Unroutable, but the test accepts only Cancelled or Closed. Run alone, it then passed 30 of 30 times. The test uses an in-process origin with no lite-07 session, so the change in #8293 can't reach it.

  • pytest.mark.skip on the test, with a comment that points to the quest.
  • New quest quest/m0/test-flakes-2/tcp-close-unroutable.md [S]: decide whether Unroutable is a promised error after an endpoint close, or fix the cause so Cancelled or Closed wins.

Impact

Test and quest only. No change to the public API or the wire format.

Review

Not reviewed: this change only skips a test and adds a quest.

🤖 Generated with Claude Code

(Written by Claude Opus 5.5 with high effort)

Under load the reader got Unroutable after the endpoint closed, which the
test's accepted shutdown errors leave out. Skip it and plan the fix under
the test-flakes-2 epic.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@kixelated
kixelated enabled auto-merge November 9, 2026 09:44
@coderabbitai

coderabbitai Bot commented Nov 9, 2026

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 11 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used all 4 included reviews currently available.

Learn how review limits work.

Review configuration:

Run configuration

  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 354ba1ce-eced-4564-a221-d1f6cdaa351a
Commits

Reviewing files that changed from the base of the PR and between 2311ef4 and 135249b.

Files selected for processing: 3

  • py/moq-rs/tests/test_socket.py
  • quest/m0/test-flakes-2/README.md
  • quest/m0/test-flakes-2/tcp-close-unroutable.md
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

@kixelated
kixelated added this pull request to the merge queue Nov 9, 2026

@pullfrog pullfrog Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ℹ️ No critical issues — one minor suggestion inline.

Reviewed changes

  • pytest.mark.skip quarantine: py/moq-rs/tests/test_socket.py's test_tcp_rst_and_endpoint_close_are_errors is skipped, with a comment and reason naming its follow-up quest; the rest of the module is untouched.
  • Follow-up quest: quest/m0/test-flakes-2/tcp-close-unroutable.md is a new [S] child that records the observed Unroutable after a.close() and asks whether the socket contract should promise it, or the cause should be fixed so Cancelled/Closed wins.
  • Epic update: quest/m0/test-flakes-2/README.md logs the quarantine under the 2026-11-09 entries and lists the child in ## Required, matching the quest's title and path.

Pullfrog  | Fix all ➔ | Fix 👍s ➔ | View workflow run | Using deepseek-v4.1-flash-1017 (free via Pullfrog for OSS) | 𝕏


# Quarantined: under load the reader once got `Unroutable` after `a.close()`, which the
# accepted shutdown errors leave out. See quest/m0/test-flakes-2/tcp-close-unroutable.md.
@pytest.mark.skip(reason="flaky under load: quest/m0/test-flakes-2/tcp-close-unroutable.md")

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Only the endpoint-close half of this test flakes. The reset assertions just below (abort(17) reaching the reader as Protocol with code 64 + 17) are deterministic, and no other Python test asserts the app code after a stream reset. Splitting that half into its own test would keep it in the gate while the close half stays quarantined.

@kixelated kixelated left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Automated review by review (OpenAI)

Reviewed 135249b. No actionable findings in this quarantine-only change. The skip targets the reported combined TCP reset/endpoint-close test, and both the skip reason and epic link point to the new follow-up. That follow-up preserves the required reset application-code and non-clean-EOF assertions rather than accepting arbitrary errors. The underlying shutdown error remains unresolved, and this test's coverage is disabled until the follow-up restores it.

Verification limits: GitHub-only static diff review; no Python tests or shutdown-race reproduction performed.

Merged via the queue into main with commit 7c4b311 Nov 9, 2026
6 checks passed
@kixelated
kixelated deleted the test/quarantine-tcp-rst-close branch November 9, 2026 10:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant