Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
58 commits
Select commit Hold shift + click to select a range
54e14b6
Create perf_test_trigger.yml
inaniloquentee Apr 5, 2026
42f41ea
Update perf_test_trigger.yml
inaniloquentee Apr 5, 2026
aa6c576
Update perf_test_trigger.yml
inaniloquentee Apr 5, 2026
5079b98
Update perf_test_trigger.yml
inaniloquentee Apr 5, 2026
4fcd542
Fix alignment of the center paragraph tag in README
inaniloquentee Apr 5, 2026
3a9fbf9
Update perf_test_trigger.yml
inaniloquentee Apr 5, 2026
d305196
Update perf_test_trigger.yml
inaniloquentee Apr 5, 2026
f83bbf1
Update perf_test_trigger.yml
inaniloquentee Apr 5, 2026
93ce7fa
Update README with latest news on version 0.18.0
inaniloquentee Apr 5, 2026
0177193
Update README.md
inaniloquentee Apr 5, 2026
ffe2d57
Merge branch 'main' into test-trigger
inaniloquentee Apr 5, 2026
877a665
Merge pull request #1 from inaniloquentee/test-trigger
inaniloquentee Apr 5, 2026
1c37290
Update perf_test_trigger.yml
inaniloquentee Apr 5, 2026
6248b96
Security Fix & Runner Fix
inaniloquentee Apr 5, 2026
88041a4
Merge branch 'main' into patch-2
inaniloquentee Apr 7, 2026
eb59eeb
Merge branch 'main' into patch-2
inaniloquentee Apr 8, 2026
a132ac8
Create test-perf.yml
inaniloquentee Apr 9, 2026
523f463
Update pipeline.yml
inaniloquentee Apr 9, 2026
704d073
Update test-perf.yml
inaniloquentee Apr 9, 2026
e154499
Update test-perf.yml
inaniloquentee Apr 9, 2026
f2dccd9
Update test-perf.yml
inaniloquentee Apr 9, 2026
752dcca
Update pipeline.yml
inaniloquentee Apr 9, 2026
0cd9391
Delete .github/workflows/perf_test_trigger.yml
inaniloquentee Apr 9, 2026
293c4c0
Update pipeline.yml
inaniloquentee Apr 9, 2026
a28d374
Update README.md
inaniloquentee Apr 9, 2026
0b4b6e6
Merge pull request #3 from inaniloquentee/main
inaniloquentee Apr 9, 2026
1da6c0a
Delete .github/workflows/perf_test_trigger.yml
inaniloquentee Apr 9, 2026
25d4691
Update pipeline.yml
inaniloquentee Apr 9, 2026
9cc5aad
Merge pull request #4 from inaniloquentee/main
inaniloquentee Apr 9, 2026
1630687
Update pipeline.yml
inaniloquentee Apr 9, 2026
5f0a8a5
Update test-perf.yml
inaniloquentee Apr 9, 2026
1b0a6a1
Update pipeline.yml
inaniloquentee Apr 9, 2026
368c334
Delete .buildkite/test-perf.yml
inaniloquentee Apr 10, 2026
151c323
Update pipeline.yml
inaniloquentee Apr 10, 2026
2f63294
Update test-nightly.yml
inaniloquentee Apr 10, 2026
a27e49d
Update pipeline.yml
inaniloquentee Apr 10, 2026
10799f0
Update test-nightly.yml
inaniloquentee Apr 10, 2026
66c6142
Merge branch 'main' into patch-2
inaniloquentee Apr 10, 2026
413e37b
Update test-nightly.yml
inaniloquentee Apr 10, 2026
2e7cec1
Update pipeline.yml
inaniloquentee Apr 10, 2026
77dd767
Update test-nightly.yml
inaniloquentee Apr 10, 2026
6e956d6
Merge branch 'main' into patch-2
inaniloquentee Apr 10, 2026
7f715f0
Update test-nightly.yml
inaniloquentee Apr 10, 2026
bed1587
Update test-nightly.yml
inaniloquentee Apr 10, 2026
2fad334
Update pipeline.yml
inaniloquentee Apr 10, 2026
ce3f849
Update test-nightly.yml
inaniloquentee Apr 10, 2026
8c6efb9
Remove redundant conditions from nightly tests
yenuo26 Apr 14, 2026
e3096ca
Update conditions for nightly model tests
yenuo26 Apr 14, 2026
47a7e94
Add new test labels for nightly builds
yenuo26 Apr 15, 2026
30e9326
Delete .buildkite/test-nightly-diffusion.yml
yenuo26 Apr 15, 2026
f695e88
Refactor nightly test configurations and commands
yenuo26 Apr 15, 2026
3fb5a0c
Implement command line config file option
yenuo26 Apr 15, 2026
1de6a10
Update performance testing configuration in CI documentation
yenuo26 Apr 15, 2026
0dd8209
Fix performance test command paths in test guide
yenuo26 Apr 15, 2026
c68c7c6
Clarify test case addition format for L4 performance tests
yenuo26 Apr 15, 2026
759d06a
Delete 'test_qwen3_tts' test case from test_omni.json
yenuo26 Apr 15, 2026
6507c2d
Add test configuration for Qwen3 TTS
yenuo26 Apr 15, 2026
713f05d
Rename Diffusion X2I performance test step
yenuo26 Apr 15, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 10 additions & 2 deletions .buildkite/pipeline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,11 +44,19 @@ steps:
agents:
queue: "cpu_queue_premerge"

# L4 Test — main+NIGHTLY=1 (scheduled), or PR with label nightly-test (e.g. add label then Rebuild)
# L4 Test — main+NIGHTLY=1 (scheduled), or PR with specific label (e.g. add label then Rebuild)
- label: "Upload Nightly Pipeline"
depends_on: image-build
key: upload-nightly-pipeline
if: '(build.branch == "main" && build.env("NIGHTLY") == "1") || (build.branch != "main" && build.pull_request.labels includes "nightly-test")'
if: >-
(build.branch == "main" && build.env("NIGHTLY") == "1") ||
(build.branch != "main" && (
Comment thread
Gaohan123 marked this conversation as resolved.
build.pull_request.labels includes "nightly-test" ||
build.pull_request.labels includes "omni-test" ||
build.pull_request.labels includes "tts-test" ||
build.pull_request.labels includes "diffusion-x2iat-test" ||
build.pull_request.labels includes "diffusion-x2v-test"
))
commands:
- buildkite-agent pipeline upload .buildkite/test-nightly.yml
agents:
Expand Down
364 changes: 0 additions & 364 deletions .buildkite/test-nightly-diffusion.yml

This file was deleted.

424 changes: 382 additions & 42 deletions .buildkite/test-nightly.yml

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions docs/contributing/ci/CI_5levels.md
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ Through five levels (L1-L5) and common (Common) specifications, the system clari
/tests/e2e/online_serving/test_{model_name}_expansion.py<br>
/tests/e2e/offline_inference/test_{model_name}_expansion.py<br>
<strong>Performance:</strong><br>
/tests/dfx/perf/tests/test.json<br>
/tests/dfx/perf/tests/test_omni.json (Omni) and test_tts.json (TTS)<br>
<strong>Doc Test:</strong><br>
tests/example/online_serving/test_{model_name}.py<br>
tests/example/offline_inference/test_{model_name}.py
Expand Down Expand Up @@ -530,13 +530,13 @@ L4 level testing is a comprehensive quality audit before a version release. It e
### 3.2 Testing Content and Scope

- ***Full Functionality Testing***: Executes all test cases defined in `test_{model_name}_expansion.py`, covering all implemented features, positive flows, boundary conditions, and exception handling.
- ***Performance Testing***: Uses the `tests/dfx/perf/tests/test.json` configuration file to drive performance testing tools for stress, load, and endurance tests, collecting metrics like throughput, response time, and resource utilization.
- ***Performance Testing***: Uses `tests/dfx/perf/tests/test_omni.json` and `test_tts.json` (passed to `run_benchmark.py` via `--config-file`) to drive performance testing tools for stress, load, and endurance tests, collecting metrics like throughput, response time, and resource utilization.
- ***Documentation Testing***: Verifies whether the example code provided to users is runnable and its results match the description.

### 3.3 Test Directory and Execution Files

- ***Functional Testing***: Same directories as L3.
- ***Performance Test Configuration***: `tests/dfx/perf/tests/test.json`
- ***Performance Test Configuration***: `tests/dfx/perf/tests/test_omni.json`, `tests/dfx/perf/tests/test_tts.json`
- ***Documentation Example Tests***:
- - `tests/example/online_serving/test_{model_name}.py`
- `tests/example/offline_inference/test_{model_name}.py`
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
When you want to add L4-level ***performance test*** cases, you can refer to the following format for case addition in tests/dfx/perf/tests/test.json:
When you want to add L4-level ***performance test*** cases, you can refer to the following format for case addition in `tests/dfx/perf/tests/test_omni.json` or `tests/dfx/perf/tests/test_tts.json` (selected via `pytest ... run_benchmark.py --config-file <path>`):

```JSON
{
Expand Down
5 changes: 2 additions & 3 deletions docs/contributing/ci/test_guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,6 @@ Our test scripts use the pytest framework. First, please use `git clone https://
=== "L3 level & L4 level"

```bash
cd tests
pytest -s -v -m "advanced_model" --run-level=advanced_model
```
If you only want to run L3 test case, you can use:
Expand All @@ -60,9 +59,9 @@ Our test scripts use the pytest framework. First, please use `git clone https://
```bash
pytest -s -v -m "core_model and distributed_cuda and L4" --run-level=core_model
```
Note: To run performance tests, use:
Note: To run performance tests (defaults to ``test_omni.json``; use ``--config-file tests/dfx/perf/tests/test_tts.json`` for TTS):
```bash
pytest -s -v perf/scripts/run_benchmark.py
pytest -s -v tests/dfx/perf/scripts/run_benchmark.py
```

The latest L3 test commands for various test suites can be found in the [pipeline](https://github.com/vllm-project/vllm-omni/blob/main/.buildkite/test-merge.yml).
Expand Down
40 changes: 38 additions & 2 deletions tests/dfx/perf/scripts/run_benchmark.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import json
import os
import subprocess
import sys
import threading
from datetime import datetime
from pathlib import Path
Expand All @@ -21,9 +22,32 @@
os.environ["VLLM_TEST_CLEAN_GPU_MEMORY"] = "0"


CONFIG_FILE_PATH = str(Path(__file__).parent.parent / "tests" / "test.json")
BENCHMARK_CONFIGS = load_configs(CONFIG_FILE_PATH)
def _get_config_file_from_argv() -> str | None:
"""Read ``--config-file`` from ``sys.argv`` at import time so parametrization can use it.

Supports ``--config-file path`` and ``--config-file=path`` (same pattern as
``run_diffusion_benchmark.py``).
"""
for i, arg in enumerate(sys.argv):
if arg == "--config-file" and i + 1 < len(sys.argv):
return sys.argv[i + 1]
if arg.startswith("--config-file="):
return arg.split("=", 1)[1]
return None


_PERF_TESTS_DIR = Path(__file__).resolve().parent.parent / "tests"
_DEFAULT_CONFIG_FILE = str(_PERF_TESTS_DIR / "test_omni.json")

CONFIG_FILE_PATH = _get_config_file_from_argv()
if CONFIG_FILE_PATH is None:
print(
"No --config-file in argv, using default: tests/dfx/perf/tests/test_omni.json "
"(override with e.g. --config-file tests/dfx/perf/tests/test_tts.json)"
)
CONFIG_FILE_PATH = _DEFAULT_CONFIG_FILE

BENCHMARK_CONFIGS = load_configs(CONFIG_FILE_PATH)

STAGE_CONFIGS_DIR = Path(__file__).parent.parent / "stage_configs"
test_params = create_unique_server_params(BENCHMARK_CONFIGS, STAGE_CONFIGS_DIR)
Expand All @@ -32,6 +56,18 @@
_omni_server_lock = threading.Lock()


def pytest_addoption(parser: pytest.Parser) -> None:
parser.addoption(
"--config-file",
action="store",
default=None,
help=(
"Path to Omni/TTS serve benchmark JSON (default: tests/dfx/perf/tests/test_omni.json). "
"Example: --config-file tests/dfx/perf/tests/test_tts.json"
),
)


@pytest.fixture(scope="module")
def omni_server(request):
"""Start vLLM-Omni server as a subprocess with actual model weights.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -200,37 +200,5 @@
}
}
]
},
{
"test_name": "test_qwen3_tts",
"server_params": {
"model": "Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice"
},
"benchmark_params": [
{
"dataset_name": "random",
"backend": "openai-audio-speech",
"endpoint": "/v1/audio/speech",
"num_prompts": [
10,
40
],
"max_concurrency": [
1,
4
],
"random_input_len": 100,
"random_output_len": 100,
"extra_body": {
"voice": "Vivian",
"language": "English"
},
"percentile-metrics": "ttft,e2el,audio_rtf,audio_ttfp,audio_duration",
"baseline": {
"mean_audio_ttfp_ms": [6000, 6000],
"mean_audio_rtf": [0.3, 0.3]
}
}
]
}
]
34 changes: 34 additions & 0 deletions tests/dfx/perf/tests/test_tts.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
[
{
"test_name": "test_qwen3_tts",
"server_params": {
"model": "Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice"
},
"benchmark_params": [
{
"dataset_name": "random",
"backend": "openai-audio-speech",
"endpoint": "/v1/audio/speech",
"num_prompts": [
10,
40
],
"max_concurrency": [
1,
4
],
"random_input_len": 100,
"random_output_len": 100,
"extra_body": {
"voice": "Vivian",
"language": "English"
},
"percentile-metrics": "ttft,e2el,audio_rtf,audio_ttfp,audio_duration",
"baseline": {
"mean_audio_ttfp_ms": [6000, 6000],
"mean_audio_rtf": [0.3, 0.3]
}
}
]
}
]