Skip to content

test(e2e): run the responses suite on vllm and tokenspeed - #2044

Open
slin1237 wants to merge 1 commit into
mainfrom
test/responses-vllm-tokenspeed
Open

test(e2e): run the responses suite on vllm and tokenspeed#2044
slin1237 wants to merge 1 commit into
mainfrom
test/responses-vllm-tokenspeed

Conversation

@slin1237

@slin1237 slin1237 commented Aug 4, 2026

Copy link
Copy Markdown
Member

Description

Problem

The e2e-1gpu-responses lane launched sglang only. But many of the
responses (OpenAI Responses API) tests are already marked
@pytest.mark.engine("sglang", "vllm", "trtllm", "tokenspeed") — they were
written to run cross-engine, yet they never executed on vllm or tokenspeed
because no such lane existed. One test (image_generation) is marked
@pytest.mark.engine("vllm") and never ran anywhere.

Solution

Turn the responses lane into an engine matrix — sglang, vllm,
tokenspeed — over the same e2e_test/responses suite. No test files change;
the existing engine marker filter selects the right subset per lane:

  • vllm — the 5 shared gpt-oss-20b tests (tools call, streaming events,
    structured output, state management, sampling params) plus the
    vllm-only Llama-3.1-8B image-generation test (previously dead coverage).
  • tokenspeed — the same 5 shared gpt-oss-20b tests.
  • sglang — unchanged; the sglang-only Qwen2.5-14B cases still run here
    and deselect on the other lanes automatically.

Changes

  • .github/workflows/pr-test-rust.ymle2e-1gpu-responses becomes a
    strategy.matrix over {sglang, vllm, tokenspeed}. tokenspeed keeps a
    generous job timeout (~50m) for its from-source build, matching the chat
    lane. Both new engines run gpt-oss-20b (tp=1), already proven on
    1-gpu-h100 by the existing sglang responses and chat lanes.

Test Plan

Workflow-only change; validated by the responses lanes running green in this
PR's own CI (sglang / vllm / tokenspeed).

  • python3 -c "import yaml; yaml.safe_load(open('.github/workflows/pr-test-rust.yml'))" passes
  • Job id e2e-1gpu-responses is unchanged, so the aggregate summary gate still
    covers all three matrix legs.
Checklist
  • (Optional) Documentation updated
  • (Optional) Please join us on Slack #sig-smg to discuss, review, and merge PRs

The responses (OpenAI Responses API) lane only launched sglang, so the
cross-engine responses tests already marked
`engine("sglang", "vllm", "trtllm", "tokenspeed")` never actually ran on
vllm or tokenspeed, and the `engine("vllm")` image-generation test never ran
at all.

Turn the lane into an engine matrix (sglang, vllm, tokenspeed) over the same
`e2e_test/responses` suite. The engine marker filter selects only the tests
each engine supports: vllm and tokenspeed pick up the shared gpt-oss-20b
tests (tools, streaming, structured output, state, sampling), vllm
additionally runs the Llama-3.1-8B image-generation test, and the sglang-only
Qwen2.5-14B cases deselect automatically. tokenspeed keeps a generous job
timeout for its from-source build.

Signed-off-by: Simo Lin <25425177+slin1237@users.noreply.github.com>
@github-actions github-actions Bot added the ci CI/CD configuration changes label Aug 4, 2026
@coderabbitai

coderabbitai Bot commented Aug 4, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Summary by CodeRabbit

  • Tests
    • Expanded one-GPU responses end-to-end testing to cover SGLang, vLLM, and TokenSpeed engines.
    • Added engine-specific job and test timeouts to improve reliability for each test environment.
    • Continued support for agentic dependency testing across all supported engines.

Walkthrough

The one-GPU responses E2E workflow now runs as a fail-fast-disabled matrix for SGLang, vLLM, and TokenSpeed. Each engine supplies its own job and test timeout.

Changes

Responses E2E matrix

Layer / File(s) Summary
Configure engine matrix and timeouts
.github/workflows/pr-test-rust.yml
The job display name includes the selected engine. The matrix runs SGLang, vLLM, and TokenSpeed with engine-specific job and test timeouts.

Estimated code review effort: 2 (Simple) | ~10 minutes

Possibly related PRs

  • smg-project/smg#633: This PR also restructures the e2e-1gpu-responses workflow for matrix execution.

Suggested labels: tests

Suggested reviewers: catherinesue, key4ng

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the main change: running the responses suite on vLLM and TokenSpeed in addition to the existing engine.
Description check ✅ Passed The description directly explains the workflow matrix, engine coverage, timeout changes, and validation results.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch test/responses-vllm-tokenspeed

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

Comment @coderabbitai help to get the list of available commands.

Comment on lines +671 to +683
include:
- engine: sglang
timeout: 28
test_timeout: 20
- engine: vllm
timeout: 28
test_timeout: 20
# tokenspeed builds from source (~30m cold), so keep the job
# timeout generous even though the test step is short. Only the
# cross-engine gpt-oss-20b responses tests select onto this lane;
# the engine marker filter deselects the sglang-only cases.
- engine: tokenspeed
timeout: 50

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🟡 Nit: Five response tests are marked @pytest.mark.engine("sglang", "vllm", "trtllm", "tokenspeed") but the matrix only adds vllm and tokenspeedtrtllm is still missing. The chat lane already runs trtllm on the same 1-gpu-h100 runner, so adding it here would close the remaining coverage gap. Intentional omission or follow-up?

@claude claude Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Clean change that follows the established matrix pattern from the chat lane. YAML structure is correct, aggregate gate covers all legs, and timeouts are reasonable (tokenspeed's 50m matches the chat lane's from-source build budget).

One 🟡 nit posted: trtllm is marked in 5 response tests but wasn't added to the matrix — worth a follow-up if not intentionally deferred.

Summary: 0 🔴 Important · 1 🟡 Nit · 0 🟣 Pre-existing

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🧹 Nitpick comments (1)
.github/workflows/pr-test-rust.yml (1)

685-691: 🔒 Security & Privacy | 🔵 Trivial | ⚡ Quick win

Remove unused secret inheritance.

.github/workflows/e2e-gpu-job.yml does not declare or reference secrets. Remove secrets: inherit from this call. If cloud response tests require OPENAI_API_KEY, map that secret explicitly to the test environment.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/pr-test-rust.yml around lines 685 - 691, Remove the unused
secrets inheritance from the workflow call to e2e-gpu-job.yml. If the cloud
response tests need OPENAI_API_KEY, pass that secret explicitly through the test
environment instead of inheriting all secrets.

Source: Linters/SAST tools

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In @.github/workflows/pr-test-rust.yml:
- Around line 685-691: Remove the unused secrets inheritance from the workflow
call to e2e-gpu-job.yml. If the cloud response tests need OPENAI_API_KEY, pass
that secret explicitly through the test environment instead of inheriting all
secrets.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 7c91fa73-0390-45bf-8c6e-02a551e0d401

📥 Commits

Reviewing files that changed from the base of the PR and between 3f701a3 and c76191b.

📒 Files selected for processing (1)
  • .github/workflows/pr-test-rust.yml

@github-actions

Copy link
Copy Markdown

This pull request has been automatically marked as stale because it has not had any activity within 14 days. It will be automatically closed if no further activity occurs within 16 days. Leave a comment if you feel this pull request should remain open. Thank you!

@github-actions github-actions Bot added the stale PR has been inactive for 14+ days label Aug 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci CI/CD configuration changes stale PR has been inactive for 14+ days

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant