Skip to content

[PD] Add is_dummy truth-table wire tests for mooncake and nixl - #34977

Merged
ShangmingCai merged 2 commits into
sgl-project:mainfrom
rishabhsinha17:test/pd-is-dummy-wire-truth-table
Sep 11, 2026
Merged

ShangmingCai merged 2 commits into
sgl-project:mainfrom
rishabhsinha17:test/pd-is-dummy-wire-truth-table

Conversation

@rishabhsinha17

@rishabhsinha17 rishabhsinha17 commented Aug 15, 2026 •

Copy link
Copy Markdown
Contributor

Motivation

Item 1 from the open-question-3 review on #33861 (#33861 (comment)): the is_dummy truth table for mooncake and nixl has no coverage of the frames the senders actually write. The two existing nixl cases omit msg[9], so the explicit is_dummy frame the sender writes is never parsed in any test, and mooncake's payload inference (kv and aux frames both empty) has no coverage at all. Additive and independent of the hoisting work; part of the Step 0/1 test surface for #34510.

Modifications

  • test_nixl_backend_basic.py: five TransferInfo cases with sender-faithful frames covering the explicit-frame branch — dummy, dummy with a decode-side prefix hit (the case payload inference cannot see, since decode_prefix_len is sent unconditionally), full prefix hit, real transfer — plus one fallback case documenting that without msg[9] a prefix-hit dummy parses as real, which is the case the explicit frame exists for.
  • test_disaggregation_wire.py: TestMooncakeTransferInfoIsDummy, four cases with frames built as mooncake's KVSender writes them (kv and aux empty iff dummy, state indices gated on dummy, decode_prefix_len and required_dst_info_num unconditional): real, full prefix hit, dummy, dummy with prefix hit. Also asserts the dummy branch clears dst_kv_indices/dst_aux_index/dst_state_indices.

Both files are already registered in CPU CI (base-a-test-cpu); no new files and no new registrations.

Accuracy Tests

Not applicable (CPU wire-format unit tests only; no model or kernel changes).

Speed Tests and Profiling

Not applicable.

Checklist


CI States

Latest PR Test (Base): ❌ Run #34564801848
Latest PR Test (Extra): ❌ Run #34564801775
Latest PR Test (AMD ROCm 10): ❌ Run #34564801893

@rishabhsinha17

Copy link
Copy Markdown
Contributor Author

Local macOS CPU run at eeb5e65: pytest test/registered/unit/disaggregation/test_disaggregation_wire.py test/registered/unit/disaggregation/test_nixl_backend_basic.py passes 74/74 (4 subtests), including all 9 new is_dummy cases. Both files are already registered in CPU CI. @hnyls2002 could you add run-ci? #34486 is also awaiting run-ci.

@rishabhsinha17

Copy link
Copy Markdown
Contributor Author

@jambow0320 these truth-table tests pin the mooncake and nixl TransferInfo parsing your Step 1 aligns around, and they land independently of #35281 in either order (parsing is untouched there, per my review). They have been blocked on the run-ci label for a week with 74/74 passing locally. If you have the permissions or can route the request, could you get run-ci applied here? #34486 is waiting on the same label.

Item 1 from the open-question-3 review on sgl-project#33861: the is_dummy truth
table had no coverage of the frames the senders actually write. The two
existing nixl cases omit msg[9], so the explicit is_dummy frame the
sender writes is never parsed in any test, and mooncake's payload
inference (kv and aux frames both empty) had no coverage at all.

nixl: five TransferInfo cases with sender-faithful frames covering the
explicit-frame branch (dummy, dummy with a decode-side prefix hit, full
prefix hit, real transfer) plus one fallback case documenting that
without msg[9] a prefix-hit dummy parses as real, which is the case the
explicit frame exists for.

mooncake: a truth-table class with frames built as KVSender writes them
(kv and aux empty iff dummy, state gated on dummy, decode_prefix_len
unconditional): real, full prefix hit, dummy, dummy with prefix hit.

Both files are already registered in CPU CI; no new files and no new
registrations. Part of the Step 0/1 test surface for sgl-project#34510.
@ShangmingCai

Copy link
Copy Markdown
Collaborator

/rerun-test test/registered/unit/disaggregation/test_nixl_backend_basic.py
test/registered/unit/disaggregation/test_disaggregation_wire.py

@github-actions

Copy link
Copy Markdown
Contributor

⚠️ Rebase Required Before Re-run

A major update has landed on main. Your PR is diverged relative to required base commit 3700c4ee26a1.

Re-run was not dispatched. What to do:

  • Rebase your branch onto the latest main and push again
  • Follow issue #21065 for context
  • CI-fix PRs may request the bypass-maintenance label to skip this check

@ShangmingCai

Copy link
Copy Markdown
Collaborator

/rerun-test test/registered/unit/disaggregation/test_nixl_backend_basic.py
test/registered/unit/disaggregation/test_disaggregation_wire.py

@github-actions

github-actions Bot commented Sep 11, 2026 •

Copy link
Copy Markdown
Contributor

Results for /rerun-test test/registered/unit/disaggregation/test_nixl_backend_basic.py:

🚀 ubuntu-latest (1 test): ✅ View workflow run

cd test/ && python3 registered/unit/disaggregation/test_nixl_backend_basic.py

@ShangmingCai
ShangmingCai merged commit 2018c64 into sgl-project:main Sep 11, 2026
107 of 119 checks passed
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.

2 participants