mirror of
https://github.com/Wei-Shaw/sub2api.git
synced 2026-10-14 12:02:27 +08:00
test(gateway): 校准 error 帧边界 flush 期望至 pre-output failover 新契约
可重试类 error 帧按设计不再算客户端输出(保留在 attempt 缓冲中, 为随后的 response.failed 保住 pre-output failover),因此不在自身 边界单独 flush,而是与终止帧一起出站(1 次 flush)。原用例按旧行为 断言 2 次 flush 导致 CI 失败。 同时补充不可重试类(invalid_request)error 帧仍在边界 flush 的对照 用例,锁住两类错误帧的行为区分。
This commit is contained in:
@@ -387,13 +387,30 @@ func TestOpenAIResponseFlush_FailedAndErrorEventsFlushAtBoundaries(t *testing.T)
|
||||
require.Contains(t, flushes[1], "response.failed")
|
||||
})
|
||||
|
||||
t.Run("error event", func(t *testing.T) {
|
||||
t.Run("retryable error event buffered until terminal", func(t *testing.T) {
|
||||
// 可重试类 error 帧不算客户端输出:保持在 attempt 缓冲中不单独 flush,
|
||||
// 为随后可能到达的 response.failed 保留 pre-output failover 能力,
|
||||
// 与终止帧一起出站。
|
||||
body := "data: {\"type\":\"error\",\"error\":{\"message\":\"failed\"}}\n\n" +
|
||||
"data: [DONE]\n\n"
|
||||
recorder := newOpenAIResponseFlushRecorder()
|
||||
|
||||
result, err := runOpenAIResponseFlushTest(recorder, io.NopCloser(strings.NewReader(body)), config.GatewayConfig{})
|
||||
|
||||
require.NoError(t, err)
|
||||
require.NotNil(t, result)
|
||||
gotBody, flushes := recorder.snapshot()
|
||||
require.Equal(t, body, gotBody)
|
||||
require.Len(t, flushes, 1)
|
||||
})
|
||||
|
||||
t.Run("non-retryable error event flushes at boundary", func(t *testing.T) {
|
||||
body := "data: {\"type\":\"error\",\"error\":{\"code\":\"invalid_request\",\"message\":\"bad request\"}}\n\n" +
|
||||
"data: [DONE]\n\n"
|
||||
recorder := newOpenAIResponseFlushRecorder()
|
||||
|
||||
result, err := runOpenAIResponseFlushTest(recorder, io.NopCloser(strings.NewReader(body)), config.GatewayConfig{})
|
||||
|
||||
require.NoError(t, err)
|
||||
require.NotNil(t, result)
|
||||
gotBody, flushes := recorder.snapshot()
|
||||
|
||||
Reference in New Issue
Block a user