[gRPC] Expose native pause status (#37488)
Co-authored-by: ishandhanani <82981111+ishandhanani@users.noreply.github.com>
This commit is contained in:
co-authored by
ishandhanani
parent
35b7589e1a
commit
f45aad44bd
@@ -43,6 +43,18 @@ def _make_runtime_handle(responses):
|
||||
return handle
|
||||
|
||||
|
||||
class TestNativeGrpcReadiness(CustomTestCase):
|
||||
def test_readiness_comes_from_tokenizer_manager(self):
|
||||
tokenizer_manager = SimpleNamespace(is_ready=lambda: True)
|
||||
handle = RuntimeHandle.__new__(RuntimeHandle)
|
||||
handle.tokenizer_manager = tokenizer_manager
|
||||
|
||||
self.assertTrue(handle.get_is_ready())
|
||||
|
||||
tokenizer_manager.is_ready = lambda: False
|
||||
self.assertFalse(handle.get_is_ready())
|
||||
|
||||
|
||||
class TestNativeGrpcParallelResponses(CustomTestCase):
|
||||
def test_non_streaming_returns_every_choice_before_finishing(self):
|
||||
callback = _RecordingCallback()
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
import asyncio
|
||||
import unittest
|
||||
from types import SimpleNamespace
|
||||
|
||||
from sglang.srt.entrypoints import http_server
|
||||
from sglang.srt.managers.tokenizer_manager import ServerStatus, TokenizerManager
|
||||
from sglang.test.ci.ci_register import register_cpu_ci
|
||||
from sglang.test.test_utils import CustomTestCase
|
||||
|
||||
register_cpu_ci(est_time=1, suite="base-a-test-cpu")
|
||||
|
||||
|
||||
class TestReadyEndpoint(CustomTestCase):
|
||||
def call_ready(
|
||||
self,
|
||||
*,
|
||||
is_pause: bool = False,
|
||||
gracefully_exit: bool = False,
|
||||
server_status: ServerStatus = ServerStatus.Up,
|
||||
):
|
||||
tokenizer_manager = TokenizerManager.__new__(TokenizerManager)
|
||||
tokenizer_manager.is_pause = is_pause
|
||||
tokenizer_manager.gracefully_exit = gracefully_exit
|
||||
tokenizer_manager.server_status = server_status
|
||||
|
||||
prior_state = http_server.get_global_state()
|
||||
http_server.set_global_state(
|
||||
SimpleNamespace(tokenizer_manager=tokenizer_manager)
|
||||
)
|
||||
try:
|
||||
return asyncio.run(http_server.ready())
|
||||
finally:
|
||||
http_server._global_state = prior_state
|
||||
|
||||
def test_ready_while_accepting_requests(self):
|
||||
self.assertEqual(self.call_ready().status_code, 200)
|
||||
|
||||
def test_not_ready_while_paused(self):
|
||||
self.assertEqual(self.call_ready(is_pause=True).status_code, 503)
|
||||
|
||||
def test_not_ready_while_starting(self):
|
||||
self.assertEqual(
|
||||
self.call_ready(server_status=ServerStatus.Starting).status_code, 503
|
||||
)
|
||||
|
||||
def test_not_ready_while_unhealthy(self):
|
||||
self.assertEqual(
|
||||
self.call_ready(server_status=ServerStatus.UnHealthy).status_code, 503
|
||||
)
|
||||
|
||||
def test_not_ready_while_gracefully_exiting(self):
|
||||
self.assertEqual(self.call_ready(gracefully_exit=True).status_code, 503)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main(verbosity=2)
|
||||
Reference in New Issue
Block a user