diff --git a/test/srt/test_gpt_oss_common.py b/python/sglang/test/gpt_oss_common.py similarity index 100% rename from test/srt/test_gpt_oss_common.py rename to python/sglang/test/gpt_oss_common.py diff --git a/test/srt/test_deterministic.py b/test/registered/core/test_deterministic.py similarity index 92% rename from test/srt/test_deterministic.py rename to test/registered/core/test_deterministic.py index 4d6c8e608..3bbe9f965 100644 --- a/test/srt/test_deterministic.py +++ b/test/registered/core/test_deterministic.py @@ -9,11 +9,14 @@ test into unit tests so that's easily reproducible in CI. import unittest +from sglang.test.ci.ci_register import register_cuda_ci from sglang.test.test_deterministic_utils import ( COMMON_SERVER_ARGS, TestDeterministicBase, ) +register_cuda_ci(est_time=228, suite="stage-b-test-small-1-gpu") + class TestFlashinferDeterministic(TestDeterministicBase): # Test with flashinfer attention backend diff --git a/test/srt/test_gpt_oss_1gpu.py b/test/registered/core/test_gpt_oss_1gpu.py similarity index 73% rename from test/srt/test_gpt_oss_1gpu.py rename to test/registered/core/test_gpt_oss_1gpu.py index d3fc06931..503257652 100644 --- a/test/srt/test_gpt_oss_1gpu.py +++ b/test/registered/core/test_gpt_oss_1gpu.py @@ -1,6 +1,10 @@ import unittest -from test_gpt_oss_common import BaseTestGptOss +from sglang.test.ci.ci_register import register_amd_ci, register_cuda_ci +from sglang.test.gpt_oss_common import BaseTestGptOss + +register_cuda_ci(est_time=402, suite="stage-b-test-small-1-gpu") +register_amd_ci(est_time=750, suite="stage-b-test-small-1-gpu-amd") class TestGptOss1Gpu(BaseTestGptOss): diff --git a/test/srt/test_hidden_states.py b/test/registered/core/test_hidden_states.py similarity index 97% rename from test/srt/test_hidden_states.py rename to test/registered/core/test_hidden_states.py index 2046ce529..0933df815 100644 --- a/test/srt/test_hidden_states.py +++ b/test/registered/core/test_hidden_states.py @@ -4,8 +4,11 @@ import torch from transformers import AutoModelForCausalLM, AutoTokenizer import sglang as sgl +from sglang.test.ci.ci_register import register_cuda_ci from sglang.test.test_utils import DEFAULT_SMALL_MODEL_NAME_FOR_TEST, CustomTestCase +register_cuda_ci(est_time=55, suite="stage-b-test-small-1-gpu") + class TestHiddenState(CustomTestCase): def test_return_hidden_states(self): diff --git a/test/srt/test_input_embeddings.py b/test/registered/core/test_input_embeddings.py similarity index 96% rename from test/srt/test_input_embeddings.py rename to test/registered/core/test_input_embeddings.py index 7efd66565..bf80328f8 100644 --- a/test/srt/test_input_embeddings.py +++ b/test/registered/core/test_input_embeddings.py @@ -7,6 +7,7 @@ import requests from transformers import AutoModelForCausalLM, AutoTokenizer from sglang.srt.utils import kill_process_tree +from sglang.test.ci.ci_register import register_amd_ci, register_cuda_ci from sglang.test.test_utils import ( DEFAULT_SMALL_MODEL_NAME_FOR_TEST, DEFAULT_TIMEOUT_FOR_SERVER_LAUNCH, @@ -15,6 +16,9 @@ from sglang.test.test_utils import ( popen_launch_server, ) +register_cuda_ci(est_time=38, suite="stage-b-test-small-1-gpu") +register_amd_ci(est_time=38, suite="stage-b-test-small-1-gpu-amd") + class TestInputEmbeds(CustomTestCase): @classmethod diff --git a/test/srt/test_io_struct.py b/test/registered/core/test_io_struct.py similarity index 99% rename from test/srt/test_io_struct.py rename to test/registered/core/test_io_struct.py index a8efebb23..ac7b8c990 100644 --- a/test/srt/test_io_struct.py +++ b/test/registered/core/test_io_struct.py @@ -2,12 +2,16 @@ import copy import unittest from sglang.srt.managers.io_struct import GenerateReqInput +from sglang.test.ci.ci_register import register_amd_ci, register_cuda_ci from sglang.test.test_utils import ( DEFAULT_SMALL_MODEL_NAME_FOR_TEST, DEFAULT_URL_FOR_TEST, CustomTestCase, ) +register_cuda_ci(est_time=8, suite="stage-b-test-small-1-gpu") +register_amd_ci(est_time=8, suite="stage-b-test-small-1-gpu-amd") + class TestGenerateReqInputNormalization(CustomTestCase): """Test the normalization of GenerateReqInput for batch processing and different input formats.""" diff --git a/test/srt/test_model_hooks.py b/test/registered/core/test_model_hooks.py similarity index 95% rename from test/srt/test_model_hooks.py rename to test/registered/core/test_model_hooks.py index 473aafb3e..ae14a2abd 100644 --- a/test/srt/test_model_hooks.py +++ b/test/registered/core/test_model_hooks.py @@ -6,8 +6,12 @@ import torch.nn as nn from sglang.srt.model_executor.hook_manager import register_forward_hooks from sglang.srt.server_args import ServerArgs +from sglang.test.ci.ci_register import register_amd_ci, register_cuda_ci from sglang.test.test_utils import CustomTestCase +register_cuda_ci(est_time=6, suite="stage-b-test-small-1-gpu") +register_amd_ci(est_time=10, suite="stage-b-test-small-1-gpu-amd") + HOOK_CALLS = [] diff --git a/test/srt/test_page_size.py b/test/registered/core/test_page_size.py similarity index 85% rename from test/srt/test_page_size.py rename to test/registered/core/test_page_size.py index f56e1ed6b..b28bd3c7d 100644 --- a/test/srt/test_page_size.py +++ b/test/registered/core/test_page_size.py @@ -3,6 +3,7 @@ import unittest from types import SimpleNamespace from sglang.srt.utils import kill_process_tree +from sglang.test.ci.ci_register import register_amd_ci, register_cuda_ci from sglang.test.run_eval import run_eval from sglang.test.test_utils import ( DEFAULT_MODEL_NAME_FOR_TEST, @@ -12,6 +13,9 @@ from sglang.test.test_utils import ( popen_launch_server, ) +register_cuda_ci(est_time=60, suite="stage-b-test-small-1-gpu") +register_amd_ci(est_time=60, suite="stage-b-test-small-1-gpu-amd") + class TestPageSize(CustomTestCase): @classmethod diff --git a/test/srt/test_request_queue_validation.py b/test/registered/core/test_request_queue_validation.py similarity index 93% rename from test/srt/test_request_queue_validation.py rename to test/registered/core/test_request_queue_validation.py index 3dd41b0d4..c76e006ca 100644 --- a/test/srt/test_request_queue_validation.py +++ b/test/registered/core/test_request_queue_validation.py @@ -4,6 +4,7 @@ import re import unittest from sglang.srt.utils import kill_process_tree +from sglang.test.ci.ci_register import register_amd_ci, register_cuda_ci from sglang.test.test_utils import ( DEFAULT_SMALL_MODEL_NAME_FOR_TEST, DEFAULT_TIMEOUT_FOR_SERVER_LAUNCH, @@ -16,6 +17,9 @@ from sglang.test.test_utils import ( send_generate_requests, ) +register_cuda_ci(est_time=47, suite="stage-b-test-small-1-gpu") +register_amd_ci(est_time=70, suite="stage-b-test-small-1-gpu-amd") + class TestMaxQueuedRequests(CustomTestCase): @classmethod diff --git a/test/srt/test_score_api.py b/test/registered/core/test_score_api.py similarity index 99% rename from test/srt/test_score_api.py rename to test/registered/core/test_score_api.py index 757af86de..6bf3c034c 100644 --- a/test/srt/test_score_api.py +++ b/test/registered/core/test_score_api.py @@ -4,8 +4,11 @@ import torch from transformers import AutoModelForCausalLM, AutoTokenizer from sglang.srt.entrypoints.engine import Engine +from sglang.test.ci.ci_register import register_cuda_ci from sglang.test.test_utils import DEFAULT_SMALL_MODEL_NAME_FOR_TEST, CustomTestCase +register_cuda_ci(est_time=260, suite="stage-b-test-small-1-gpu") + TEST_MODEL_NAME = DEFAULT_SMALL_MODEL_NAME_FOR_TEST diff --git a/test/srt/test_server_args.py b/test/registered/core/test_server_args.py similarity index 98% rename from test/srt/test_server_args.py rename to test/registered/core/test_server_args.py index 04c6ce22e..91e90a3e4 100644 --- a/test/srt/test_server_args.py +++ b/test/registered/core/test_server_args.py @@ -3,8 +3,12 @@ import unittest from unittest.mock import patch from sglang.srt.server_args import PortArgs, ServerArgs, prepare_server_args +from sglang.test.ci.ci_register import register_amd_ci, register_cuda_ci from sglang.test.test_utils import CustomTestCase +register_cuda_ci(est_time=9, suite="stage-b-test-small-1-gpu") +register_amd_ci(est_time=1, suite="stage-b-test-small-1-gpu-amd") + class TestPrepareServerArgs(CustomTestCase): def test_prepare_server_args(self): diff --git a/test/srt/test_srt_endpoint.py b/test/registered/core/test_srt_endpoint.py similarity index 99% rename from test/srt/test_srt_endpoint.py rename to test/registered/core/test_srt_endpoint.py index 59a8c3c46..92aeff84c 100644 --- a/test/srt/test_srt_endpoint.py +++ b/test/registered/core/test_srt_endpoint.py @@ -17,6 +17,7 @@ import requests from sglang.srt.sampling.custom_logit_processor import CustomLogitProcessor from sglang.srt.utils import kill_process_tree +from sglang.test.ci.ci_register import register_amd_ci, register_cuda_ci from sglang.test.test_utils import ( DEFAULT_SMALL_MODEL_NAME_FOR_TEST, DEFAULT_TIMEOUT_FOR_SERVER_LAUNCH, @@ -26,6 +27,9 @@ from sglang.test.test_utils import ( run_logprob_check, ) +register_cuda_ci(est_time=127, suite="stage-b-test-small-1-gpu") +register_amd_ci(est_time=130, suite="stage-b-test-small-1-gpu-amd") + class TestSRTEndpoint(CustomTestCase): @classmethod diff --git a/test/srt/test_srt_engine.py b/test/registered/core/test_srt_engine.py similarity index 97% rename from test/srt/test_srt_engine.py rename to test/registered/core/test_srt_engine.py index d370f6290..e4227669a 100644 --- a/test/srt/test_srt_engine.py +++ b/test/registered/core/test_srt_engine.py @@ -14,6 +14,7 @@ import sglang as sgl from sglang.bench_offline_throughput import BenchArgs, throughput_test from sglang.srt.server_args import ServerArgs from sglang.srt.utils.hf_transformers_utils import get_tokenizer +from sglang.test.ci.ci_register import register_amd_ci, register_cuda_ci from sglang.test.few_shot_gsm8k_engine import run_eval from sglang.test.test_utils import ( DEFAULT_SMALL_EMBEDDING_MODEL_NAME_FOR_TEST, @@ -21,6 +22,9 @@ from sglang.test.test_utils import ( CustomTestCase, ) +register_cuda_ci(est_time=252, suite="stage-b-test-small-1-gpu") +register_amd_ci(est_time=261, suite="stage-b-test-small-1-gpu-amd") + class TestSRTEngine(CustomTestCase): diff --git a/test/srt/run_suite.py b/test/srt/run_suite.py index e091abb96..d8d8fb70a 100644 --- a/test/srt/run_suite.py +++ b/test/srt/run_suite.py @@ -9,24 +9,12 @@ from sglang.test.ci.ci_utils import TestFile, run_unittest_files # NOTE: please sort the test cases alphabetically by the test file name suites = { "per-commit-1-gpu": [ - TestFile("test_deterministic.py", 228), TestFile("test_evs.py", 20), TestFile("test_external_models.py", 30), - TestFile("test_gpt_oss_1gpu.py", 402), - TestFile("test_hidden_states.py", 55), - TestFile("test_input_embeddings.py", 38), - TestFile("test_io_struct.py", 8), TestFile("test_jinja_template_utils.py", 7), - TestFile("test_model_hooks.py", 6), TestFile("test_modelopt_loader.py", 11), TestFile("test_multi_tokenizer.py", 230), - TestFile("test_page_size.py", 60), - TestFile("test_request_queue_validation.py", 47), - TestFile("test_score_api.py", 260), - TestFile("test_server_args.py", 9), TestFile("test_skip_tokenizer_init.py", 77), - TestFile("test_srt_endpoint.py", 127), - TestFile("test_srt_engine.py", 252), TestFile("test_utils_update_weights.py", 29), TestFile("test_video_utils.py", 5), TestFile("test_modelopt_export.py", 9), @@ -98,7 +86,6 @@ suites = { TestFile("test_bench_one_batch.py"), TestFile("test_bench_serving.py"), TestFile("test_eval_accuracy_large.py"), - TestFile("test_gpt_oss_common.py"), TestFile("test_moe_eval_accuracy_large.py"), TestFile("test_profile_v2.py"), TestFile("models/test_ministral3_models.py"), @@ -120,18 +107,10 @@ suite_amd = { # TestFile("lora/test_lora_qwen3.py", 97), # Disabled temporarily, see https://github.com/sgl-project/sglang/issues/13107 TestFile("test_bench_typebaseddispatcher.py", 10), TestFile("test_external_models.py", 45), - TestFile("test_input_embeddings.py", 38), - TestFile("test_io_struct.py", 8), TestFile("test_jinja_template_utils.py", 1), - TestFile("test_model_hooks.py", 10), TestFile("test_multi_tokenizer.py", 345), - TestFile("test_page_size.py", 60), - TestFile("test_request_queue_validation.py", 70), TestFile("test_rope_rocm.py", 3), - TestFile("test_server_args.py", 1), TestFile("test_skip_tokenizer_init.py", 117), - TestFile("test_srt_endpoint.py", 130), - TestFile("test_srt_engine.py", 261), # TestFile("test_torch_compile_moe.py", 210), # Disabled temporarily, see https://github.com/sgl-project/sglang/issues/13107 TestFile("test_type_based_dispatcher.py", 10), TestFile("test_video_utils.py", 8), @@ -143,9 +122,7 @@ suite_amd = { # TestFile("test_vision_chunked_prefill.py", 175), # Disabled temporarily and track in #7701 # TestFile("test_wave_attention_backend.py", 150), # Disabled temporarily, see https://github.com/sgl-project/sglang/issues/11127 ], - "per-commit-amd-mi35x": [ - TestFile("test_gpt_oss_1gpu.py", 750), - ], + "per-commit-amd-mi35x": [], "per-commit-2-gpu-amd": [ TestFile("test_data_parallelism.py", 73), TestFile("test_load_weights_from_remote_instance.py", 72), diff --git a/test/srt/test_gpt_oss_4gpu.py b/test/srt/test_gpt_oss_4gpu.py index da787c6fb..f2e212994 100644 --- a/test/srt/test_gpt_oss_4gpu.py +++ b/test/srt/test_gpt_oss_4gpu.py @@ -1,6 +1,6 @@ import unittest -from test_gpt_oss_common import BaseTestGptOss +from sglang.test.gpt_oss_common import BaseTestGptOss class TestGptOss4Gpu(BaseTestGptOss):