Skip to content

Commit b79d7dd

Browse files
committed
fix: resolve streaming test failure in CI (exit code 18)
Signed-off-by: Xin Liu <[email protected]>
1 parent 55a5ae4 commit b79d7dd

File tree

2 files changed

+23
-8
lines changed

2 files changed

+23
-8
lines changed

test_streaming.sh

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -195,14 +195,24 @@ echo -e "${YELLOW} 接收流式响应...${NC}"
195195
TEMP_FILE=$(mktemp)
196196
START_TIME=$(date +%s)
197197

198-
curl -s -X POST http://localhost:$PROXY_PORT/$SESSION_ID/v1/chat/completions \
198+
# 执行流式请求并捕获 HTTP 状态码
199+
HTTP_CODE=$(curl -s -w "%{http_code}" -o "$TEMP_FILE" \
200+
-X POST http://localhost:$PROXY_PORT/$SESSION_ID/v1/chat/completions \
199201
-H "Content-Type: application/json" \
200-
-d '{"stream": true, "messages": [{"role": "user", "content": "Hello"}]}' \
201-
-o "$TEMP_FILE"
202+
-d '{"stream": true, "messages": [{"role": "user", "content": "Hello"}]}')
202203

203204
END_TIME=$(date +%s)
204205
DURATION=$((END_TIME - START_TIME))
205206

207+
# 检查 HTTP 状态码
208+
if [ "$HTTP_CODE" != "200" ]; then
209+
echo -e "${RED}${NC} HTTP 请求失败,状态码: $HTTP_CODE"
210+
echo "响应内容:"
211+
cat "$TEMP_FILE"
212+
rm -f "$TEMP_FILE"
213+
exit 1
214+
fi
215+
206216
# 检查响应内容
207217
CHUNK_COUNT=$(grep -c "^data: " "$TEMP_FILE" || true)
208218
HAS_DONE=$(grep -q "\[DONE\]" "$TEMP_FILE" && echo "yes" || echo "no")
@@ -213,17 +223,23 @@ if [ "$CHUNK_COUNT" -gt 0 ] && [ "$HAS_DONE" = "yes" ]; then
213223
echo " 传输时间: ${DURATION}"
214224
echo " 已接收完整标记: ✓"
215225

216-
# 提取并显示部分内容
226+
# 提取并显示部分内容(使用更安全的方式)
217227
echo ""
218228
echo " 📄 响应示例(前3行):"
219-
head -n 3 "$TEMP_FILE" | while read line; do
229+
# 临时禁用 set -e 以避免 jq 错误导致脚本退出
230+
set +e
231+
head -n 3 "$TEMP_FILE" | while IFS= read -r line; do
220232
if [[ "$line" == data:* ]]; then
221-
CONTENT=$(echo "$line" | sed 's/^data: //' | jq -r '.choices[0].delta.content // empty' 2>/dev/null || echo "")
222-
if [ ! -z "$CONTENT" ]; then
233+
# 移除 "data: " 前缀并尝试解析 JSON
234+
json_content="${line#data: }"
235+
CONTENT=$(echo "$json_content" | jq -r '.choices[0].delta.content // empty' 2>/dev/null)
236+
# 只在成功解析且非空时输出
237+
if [ $? -eq 0 ] && [ -n "$CONTENT" ] && [ "$CONTENT" != "null" ]; then
223238
echo " $CONTENT"
224239
fi
225240
fi
226241
done
242+
set -e
227243
else
228244
echo -e "${RED}${NC} 流式请求转发失败"
229245
echo " 数据块数量: $CHUNK_COUNT (期望 > 0)"

tests/mock-data/mock-openai-stream.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,4 +149,3 @@ def run_server(port=10086):
149149
if __name__ == '__main__':
150150
port = int(sys.argv[1]) if len(sys.argv) > 1 else 10086
151151
run_server(port)
152-
run_server(port)

0 commit comments

Comments
 (0)