test(openai): expand native Responses vLLM integration coverage - #1129
Conversation
Add native-path Responses API integration cases to the vLLM SDK suite: structured-output schema shapes, logprobs (streaming and non-streaming), guided-choice extra_body, prompt_cache_key, top_p, truncation, parallel tool-call toggles, stream_options usage, and an error matrix for invalid model/max_tool_calls/temperature/tool_choice and conflicting previous_response_id + conversation. Six cases are strict xfails marking real parity gaps. Signed-off-by: Sébastien Han <seb@redhat.com>
Signed-off-by: Sébastien Han <seb@redhat.com>
Signed-off-by: Sébastien Han <seb@redhat.com>
Signed-off-by: Sébastien Han <seb@redhat.com>
Signed-off-by: Sébastien Han <seb@redhat.com>
franciscojavierarceo
left a comment
There was a problem hiding this comment.
the new selector-conflict test is still marked xfail(strict=True), but both vllm-responses jobs now show it as an XPASS, so the PR fails its required checks. the implementation already satisfies the assertion; we should remove this stale xfail marker and its outdated reason so the test is treated as a passing regression.
The conflicting previous_response_id + conversation validation already returns 400 before the previous-response lookup, so the case XPASSes under strict xfail and fails required checks. Remove the marker so it is treated as a passing regression test. Signed-off-by: Sébastien Han <seb@redhat.com>
test_conflicting_history_selectors_error_shape already covers the mutually exclusive previous_response_id + conversation conflict for both buffered and streaming requests and asserts the exact error body, so the standalone buffered-only test_conflicting_previous_response_and_conversation_raises_bad_request is duplicate coverage. Remove it. Signed-off-by: Sébastien Han <seb@redhat.com>
fixed in 9fa06ae |
franciscojavierarceo
left a comment
There was a problem hiding this comment.
the earlier selector-conflict failure is fixed and both vLLM jobs are green. one remaining expected-failure marker can hide a structured-output regression.
praxis-bot
left a comment
There was a problem hiding this comment.
PR Review: test(openai): expand native Responses vLLM integration coverage
Solid expansion of SDK integration coverage. The tenant isolation test adapter is well-designed: deterministic credentials, clean separation of concerns, and thorough cross-tenant boundary verification. The structured-output schema validation utility and parametrized cases are comprehensive.
Two findings below.
| # | Severity | File | Finding |
|---|---|---|---|
| 1 | Medium | test_openai_responses_vllm.py |
stream_options tests use non-standard field include_obfuscation instead of include_usage |
| 2 | Medium | conversations_tenant_proxy.rs |
Doc comment on test function violates project convention |
Run deterministic gateway and protocol coverage against llm-d-inference-sim in the SQLite and PostgreSQL jobs. Keep a focused CPU vLLM smoke suite on relevant changes, including critical OGX file resolution and file search scenarios. Leave the remaining live inference and compatibility cases available through workflow dispatch until GPU runners are available. Add test-only simulator adapters for deterministic Chat tool turns and hosted file search. Signed-off-by: Sébastien Han <seb@redhat.com>
Signed-off-by: Sébastien Han <seb@redhat.com>
Keep deterministic stream-options and max-tool-calls coverage in the simulator jobs. Route schema generation and vLLM-specific behavior to the live lanes, without adding critical PR cases.\n\nMake simulator assertions independent of exact generated wording while preserving lifecycle, usage, response-shape, and continuation checks. Signed-off-by: Sébastien Han <seb@redhat.com>
Keep the eight-test critical live lane on pull requests. Run all 85 Responses SDK cases once against real CPU vLLM on the nightly schedule or an explicit run_live_vllm dispatch. Skip both simulator jobs in full-live mode so scheduled and requested runs exercise only the real vLLM backend. Signed-off-by: Sébastien Han <seb@redhat.com>
Signed-off-by: Sébastien Han <seb@redhat.com>
Signed-off-by: Sébastien Han <seb@redhat.com>
Keep agentic-loop read_timeout_ms single-declaration while adopting main's translate_to_chat backend_endpoint wiring from praxis-proxy#1129. Signed-off-by: mkoushni <mkoushni@redhat.com>
Summary
Expands OpenAI SDK integration coverage for native Responses and Conversations, and splits deterministic protocol coverage from tests that require real model inference or vLLM-specific behavior.
Pull request coverage
conversations_tenant_proxyis built only in these two simulator jobs.critical_vllmcases.Full live coverage
The complete 85-test Responses SDK suite runs exclusively against real CPU vLLM:
run_live_vllm=true.vllm-full-suitelabel.A label-triggered run posts one PR comment with its Actions run ID when it starts and a second comment with the final result. The tests execute in the unprivileged
pull_requestcontext; a separate trustedworkflow_runlistener that never checks out PR code posts both comments with thepraxis-bot-apptoken. The simulator jobs are skipped in every full-live mode; an unlabeled pull request continues to run only the eight critical live tests.The added Responses scenarios are classified as follows:
real_inference: the nine-case structured-output schema matrix.vllm_compat: finite and streaming logprobs, guided choice, response-field echoing, and invalid model, temperature, and tool-choice behavior.max_tool_callsvalidation xfail.Simulator-compatible cases assert SDK lifecycle, persistence, usage, and response shapes without depending on exact generated text.
Conversations
The expanded Conversations suite covers:
Validation
actionlint .github/workflows/vllm-integration.yamluv run python -m py_compile tests/integration/sdk/openai/conftest.py tests/integration/sdk/openai/test_openai_conversations.py tests/integration/sdk/openai/test_openai_responses_vllm.pycargo build -p praxis-ai-proxycargo build -p praxis-test-utils --example conversations_tenant_proxycargo test -p praxis-test-utils --example conversations_tenant_proxy— 1 passedPRAXIS_TENANT_TEST_BIN=target/debug/examples/conversations_tenant_proxy uv run tests/integration/sdk/openai/test_openai_conversations.py -q— 51 passedNotes