runtime_context: record the publishing process role (#33012)

This commit is contained in:
Cheng Wan
2026-07-31 15:06:22 -07:00
committed by GitHub
parent ab2553284a
commit 4862edc85f
12 changed files with 166 additions and 45 deletions
@@ -31,7 +31,7 @@ _RATCHETS = [
(
"set_global_server_args_for_*",
r"\bset_global_server_args_for_(?:scheduler|tokenizer)\s*\(",
5,
4,
),
]
+4 -2
View File
@@ -215,8 +215,10 @@ class TestServerArgsOwnership(_IsolatedServerArgs):
self.assertIs(get_server_args(), sentinel)
self.assertIs(get_context().server_args, sentinel)
def test_tokenizer_alias_is_same_function(self):
self.assertIs(
def test_tokenizer_alias_is_distinct_role_shim(self):
# Deliberately NOT an alias: the two legacy setters publish with
# different process roles (scheduler vs tokenizer).
self.assertIsNot(
server_args_module.set_global_server_args_for_tokenizer,
server_args_module.set_global_server_args_for_scheduler,
)
@@ -164,6 +164,34 @@ class TestContextOverride(CustomTestCase):
self.assertIs(rc.get_context().server_args, target)
self.assertEqual(rc.get_schedule().page_size, 16)
def test_publish_records_role(self):
rc.publish(ServerArgs(model_path="dummy"), role="scheduler")
self.assertEqual(rc.publish_role(), "scheduler")
def test_legacy_shims_record_roles(self):
# Unit 2a: the legacy setters publish with their process role.
from sglang.srt.server_args import (
set_global_server_args_for_scheduler,
set_global_server_args_for_tokenizer,
)
set_global_server_args_for_scheduler(ServerArgs(model_path="dummy"))
self.assertEqual(rc.publish_role(), "scheduler")
set_global_server_args_for_tokenizer(ServerArgs(model_path="dummy"))
self.assertEqual(rc.publish_role(), "tokenizer")
def test_reset_clears_role(self):
rc.publish(ServerArgs(model_path="dummy"), role="test")
rc.reset_context()
self.assertIsNone(rc.publish_role())
def test_direct_install_clears_role(self):
# A role-less set_server_args (test overrides, draft-worker builds)
# must not inherit the previous lifecycle's role.
rc.publish(ServerArgs(model_path="dummy"), role="scheduler")
rc.get_context().set_server_args(ServerArgs(model_path="dummy"))
self.assertIsNone(rc.publish_role())
if __name__ == "__main__":
unittest.main()