fix: bound chat latency and clarify blackjack flow
This commit is contained in:
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user