[CI] Mirror external test assets in vLLM S3 (#52064)

Signed-off-by: khluu <khluu000@gmail.com> Co-authored-by: OpenAI Codex <noreply@openai.com>

Kevin H. Luu committed Aug 12, 2026 at 19:08 UTC 8eb35c5217ef98ab06c88f42ef4e41737dd2d1f3
5 files changed +30 -41
tests/entrypoints/multimodal/openai/chat_completion/test_video.py
+4 -3
@@ -8,6 +8,7 @@ import pytest
8 import pytest_asyncio
9
10 from tests.utils import RemoteOpenAIServer
11 +from vllm.assets.base import VLLM_S3_BUCKET_URL
12 from vllm.multimodal.utils import encode_video_url, fetch_video
13 from vllm.platforms import current_platform
14
@@ -15,9 +16,9 @@ MODEL_NAME = "llava-hf/llava-onevision-qwen2-0.5b-ov-hf"
16 MAXIMUM_VIDEOS = 3
17
18 TEST_VIDEO_URLS = [
18 - "https://www.bogotobogo.com/python/OpenCV_Python/images/mean_shift_tracking/slow_traffic_small.mp4",
19 - "https://github.com/opencv/opencv/raw/refs/tags/4.12.0/samples/data/vtest.avi",
20 - "https://github.com/opencv/opencv/raw/refs/tags/4.12.0/samples/data/Megamind.avi",
19 + f"{VLLM_S3_BUCKET_URL}/multimodal_asset/slow_traffic_small.mp4",
20 + f"{VLLM_S3_BUCKET_URL}/multimodal_asset/vtest.avi",
21 + f"{VLLM_S3_BUCKET_URL}/multimodal_asset/Megamind.avi",
22 ]
23
24
tests/entrypoints/pooling/classify/test_online_vision.py
+3 -2
@@ -6,6 +6,7 @@ import pytest
6 import requests
7
8 from tests.utils import RemoteOpenAIServer
9 +from vllm.assets.base import VLLM_S3_BUCKET_URL
10 from vllm.entrypoints.pooling.classify.protocol import ClassificationResponse
11 from vllm.multimodal.utils import encode_image_url, fetch_image
12
@@ -14,9 +15,9 @@ MAXIMUM_VIDEOS = 1
15
16 HF_OVERRIDES = {"architectures": ["Qwen2_5_VLForSequenceClassification"]}
17 input_text = "This product was excellent and exceeded my expectations"
17 -image_url = "https://vllm-public-assets.s3.us-west-2.amazonaws.com/multimodal_asset/cat_snow.jpg"
18 +image_url = f"{VLLM_S3_BUCKET_URL}/multimodal_asset/cat_snow.jpg"
19 image_base64 = {"url": encode_image_url(fetch_image(image_url))}
19 -video_url = "https://www.bogotobogo.com/python/OpenCV_Python/images/mean_shift_tracking/slow_traffic_small.mp4"
20 +video_url = f"{VLLM_S3_BUCKET_URL}/multimodal_asset/slow_traffic_small.mp4"
21
22
23 @pytest.fixture(scope="module")
tests/evals/gsm8k/gsm8k_eval.py
+4 -2
@@ -20,6 +20,8 @@ import regex as re
20 import requests
21 from tqdm.asyncio import tqdm
22
23 +from vllm.assets.base import VLLM_S3_BUCKET_URL
24 +
25 INVALID = -9999999
26
27
@@ -44,8 +46,8 @@ def download_and_cache_file(url: str, filename: str | None = None) -> str:
46
47 def load_gsm8k_data() -> tuple[list[dict], list[dict]]:
48 """Load GSM8K train and test data"""
47 - train_url = "https://raw.githubusercontent.com/openai/grade-school-math/master/grade_school_math/data/train.jsonl"
48 - test_url = "https://raw.githubusercontent.com/openai/grade-school-math/master/grade_school_math/data/test.jsonl"
49 + train_url = f"{VLLM_S3_BUCKET_URL}/ci-datasets/gsm8k/train.jsonl"
50 + test_url = f"{VLLM_S3_BUCKET_URL}/ci-datasets/gsm8k/test.jsonl"
51
52 train_file = download_and_cache_file(train_url)
53 test_file = download_and_cache_file(test_url)
tests/models/multimodal/pooling/test_jinavl_reranker.py
+14 -28
@@ -6,6 +6,7 @@ import transformers
6 from packaging import version
7 from transformers import AutoModel
8
9 +from vllm.assets.base import VLLM_S3_BUCKET_URL
10 from vllm.entrypoints.chat_utils import (
11 ChatCompletionContentPartImageEmbedsParam,
12 ChatCompletionContentPartImageParam,
@@ -34,6 +35,11 @@ CHECKPOINT_TO_HF_MAPPER = {
35 "model.": "model.language_model.",
36 }
37
38 +HANDELSBLATT_IMAGE_URL = (
39 + f"{VLLM_S3_BUCKET_URL}/multimodal_asset/jinavl-handelsblatt-preview.png"
40 +)
41 +PAPER_IMAGE_URL = f"{VLLM_S3_BUCKET_URL}/multimodal_asset/jinavl-paper-11.png"
42 +
43 # Shared long text for test data
44 LONG_TEXT_DOC = """We present ReaderLM-v2, a compact 1.5 billion parameter language model designed for efficient
45 web content extraction. Our model processes documents up to 512K tokens, transforming messy HTML
@@ -50,12 +56,8 @@ lower computational requirements.""" # noqa: E501
56 TEXT_IMAGE_TEST_DATA = {
57 "query": [{"text": "slm markdown"}],
58 "documents": [
53 - {
54 - "image": "https://raw.githubusercontent.com/jina-ai/multimodal-reranker-test/main/handelsblatt-preview.png"
55 - },
56 - {
57 - "image": "https://raw.githubusercontent.com/jina-ai/multimodal-reranker-test/main/paper-11.png"
58 - },
59 + {"image": HANDELSBLATT_IMAGE_URL},
60 + {"image": PAPER_IMAGE_URL},
61 ],
62 }
63
@@ -68,11 +70,7 @@ TEXT_TEXT_TEST_DATA = {
70 }
71
72 IMAGE_TEXT_TEST_DATA = {
71 - "query": [
72 - {
73 - "image": "https://raw.githubusercontent.com/jina-ai/multimodal-reranker-test/main/paper-11.png"
74 - }
75 - ],
73 + "query": [{"image": PAPER_IMAGE_URL}],
74 "documents": [
75 {"text": LONG_TEXT_DOC},
76 {"text": "数据提取么?为什么不用正则啊,你用正则不就全解决了么?"},
@@ -80,18 +78,10 @@ IMAGE_TEXT_TEST_DATA = {
78 }
79
80 IMAGE_IMAGE_TEST_DATA = {
83 - "query": [
84 - {
85 - "image": "https://raw.githubusercontent.com/jina-ai/multimodal-reranker-test/main/paper-11.png"
86 - }
87 - ],
81 + "query": [{"image": PAPER_IMAGE_URL}],
82 "documents": [
89 - {
90 - "image": "https://raw.githubusercontent.com/jina-ai/multimodal-reranker-test/main/handelsblatt-preview.png"
91 - },
92 - {
93 - "image": "https://raw.githubusercontent.com/jina-ai/multimodal-reranker-test/main/paper-11.png"
94 - },
83 + {"image": HANDELSBLATT_IMAGE_URL},
84 + {"image": PAPER_IMAGE_URL},
85 ],
86 }
87
@@ -99,13 +89,9 @@ TEXT_MIXED_DOCS_TEST_DATA = {
89 "query": [{"text": "slm markdown"}],
90 "documents": [
91 {"text": LONG_TEXT_DOC},
102 - {
103 - "image": "https://raw.githubusercontent.com/jina-ai/multimodal-reranker-test/main/paper-11.png"
104 - },
92 + {"image": PAPER_IMAGE_URL},
93 {"text": "数据提取么?为什么不用正则啊,你用正则不就全解决了么?"},
106 - {
107 - "image": "https://raw.githubusercontent.com/jina-ai/multimodal-reranker-test/main/handelsblatt-preview.png"
108 - },
94 + {"image": HANDELSBLATT_IMAGE_URL},
95 ],
96 }
97
tests/multimodal/media/test_connector.py
+5 -6
@@ -17,6 +17,7 @@ import requests
17 import torch
18 from PIL import Image, ImageChops
19
20 +from vllm.assets.base import VLLM_S3_BUCKET_URL
21 from vllm.multimodal.image import convert_image_mode
22 from vllm.multimodal.inputs import PlaceholderRange
23 from vllm.multimodal.media import MediaConnector
@@ -30,8 +31,8 @@ TEST_IMAGE_ASSETS = [
31 ]
32
33 TEST_VIDEO_URLS = [
33 - "https://www.bogotobogo.com/python/OpenCV_Python/images/mean_shift_tracking/slow_traffic_small.mp4",
34 - "https://github.com/opencv/opencv/raw/refs/tags/4.12.0/samples/data/vtest.avi",
34 + f"{VLLM_S3_BUCKET_URL}/multimodal_asset/slow_traffic_small.mp4",
35 + f"{VLLM_S3_BUCKET_URL}/multimodal_asset/vtest.avi",
36 ]
37
38
@@ -76,8 +77,7 @@ async def test_fetch_image_base64(
77 connector = MediaConnector(
78 # Domain restriction should not apply to data URLs.
79 allowed_media_domains=[
79 - "www.bogotobogo.com",
80 - "github.com",
80 + VLLM_S3_BUCKET_URL.removeprefix("https://"),
81 ]
82 )
83 url_image = url_images[raw_image_url]
@@ -390,8 +390,7 @@ async def test_allowed_media_domains(video_url: str, num_frames: int):
390 }
391 },
392 allowed_media_domains=[
393 - "www.bogotobogo.com",
394 - "github.com",
393 + VLLM_S3_BUCKET_URL.removeprefix("https://"),
394 ],
395 )
396