fix: bound chat latency and clarify blackjack flow

This commit is contained in:
JWeBot Contributors
2026-10-15 13:37:57 +08:00
parent f7fedc54e4
commit 0731e5cebb
25 changed files with 364 additions and 53 deletions
+50 -1
View File
@@ -1736,7 +1736,7 @@ class DirectClientTests(unittest.TestCase):
)
)
response = mock.MagicMock()
response.read.return_value = (
response.read1.return_value = (
'data: {"choices":[{"delta":{"content":"正"}}]}\n\n'
'data: {"choices":[{"delta":{"content":"常"}}]}\n\n'
"data: [DONE]\n\n"
@@ -1782,6 +1782,55 @@ class DirectClientTests(unittest.TestCase):
finally:
temporary.cleanup()
def test_stream_reader_stops_at_done_without_waiting_for_eof(self):
response = mock.MagicMock()
response.read1.side_effect = [
b'data: {"choices":[{"delta":{"content":"ok"}}]}\n'
b"data: [DO",
b"NE]\n\n",
AssertionError("reader continued after the stream completed"),
]
raw = MODULE.read_direct_api_response(response)
self.assertEqual(
raw,
b'data: {"choices":[{"delta":{"content":"ok"}}]}\n'
b"data: [DONE]\n\n",
)
self.assertEqual(response.read1.call_count, 2)
def test_stream_reader_does_not_treat_content_as_done_marker(self):
response = mock.MagicMock()
response.read1.side_effect = [
b'data: {"choices":[{"delta":{"content":"data: [DONE]"}}]}\n\n',
b"data: [DONE]\n\n",
AssertionError("reader continued after the stream completed"),
]
raw = MODULE.read_direct_api_response(response)
self.assertIn(b'"content":"data: [DONE]"', raw)
self.assertTrue(raw.endswith(b"data: [DONE]\n\n"))
self.assertEqual(response.read1.call_count, 2)
def test_stream_reader_enforces_total_wall_time(self):
response = mock.MagicMock()
response.read1.return_value = b": keep-alive\n\n"
with mock.patch.object(
MODULE.time,
"monotonic",
side_effect=[0.0, 0.0, 31.0],
):
with self.assertRaisesRegex(
MODULE.DeepSeekUnavailable,
"exceeded total timeout",
):
MODULE.read_direct_api_response(response)
response.fp.raw._sock.settimeout.assert_called_once_with(18.0)
response.read1.assert_called_once()
def test_stream_parser_accepts_a_non_streaming_compatibility_payload(self):
self.assertEqual(
MODULE.deepseek_response_content(