refactor(openai): remove websocket body log truncation limit
This commit is contained in:
@@ -33,8 +33,6 @@ const (
|
|||||||
wsDoneMarker = "[DONE]"
|
wsDoneMarker = "[DONE]"
|
||||||
wsTurnStateHeader = "x-codex-turn-state"
|
wsTurnStateHeader = "x-codex-turn-state"
|
||||||
wsRequestBodyKey = "REQUEST_BODY_OVERRIDE"
|
wsRequestBodyKey = "REQUEST_BODY_OVERRIDE"
|
||||||
wsBodyLogMaxSize = 32 * 1024
|
|
||||||
wsBodyLogTruncated = "\n...[truncated]\n"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var responsesWebsocketUpgrader = websocket.Upgrader{
|
var responsesWebsocketUpgrader = websocket.Upgrader{
|
||||||
@@ -945,53 +943,18 @@ func appendWebsocketEvent(builder *strings.Builder, eventType string, payload []
|
|||||||
if builder == nil {
|
if builder == nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if builder.Len() >= wsBodyLogMaxSize {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
trimmedPayload := bytes.TrimSpace(payload)
|
trimmedPayload := bytes.TrimSpace(payload)
|
||||||
if len(trimmedPayload) == 0 {
|
if len(trimmedPayload) == 0 {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
separator := []byte{}
|
|
||||||
if builder.Len() > 0 {
|
if builder.Len() > 0 {
|
||||||
separator = []byte("\n")
|
builder.WriteString("\n")
|
||||||
}
|
}
|
||||||
header := []byte("websocket." + eventType + "\n")
|
builder.WriteString("websocket.")
|
||||||
footer := []byte("\n")
|
builder.WriteString(eventType)
|
||||||
entryLen := len(separator) + len(header) + len(trimmedPayload) + len(footer)
|
builder.WriteString("\n")
|
||||||
remaining := wsBodyLogMaxSize - builder.Len()
|
builder.Write(trimmedPayload)
|
||||||
|
builder.WriteString("\n")
|
||||||
if entryLen <= remaining {
|
|
||||||
builder.Write(separator)
|
|
||||||
builder.Write(header)
|
|
||||||
builder.Write(trimmedPayload)
|
|
||||||
builder.Write(footer)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
marker := []byte(wsBodyLogTruncated)
|
|
||||||
if len(marker) > remaining {
|
|
||||||
builder.Write(marker[:remaining])
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
allowed := remaining - len(marker)
|
|
||||||
parts := [][]byte{separator, header, trimmedPayload, footer}
|
|
||||||
for _, part := range parts {
|
|
||||||
if allowed <= 0 {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
if len(part) <= allowed {
|
|
||||||
builder.Write(part)
|
|
||||||
allowed -= len(part)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
builder.Write(part[:allowed])
|
|
||||||
allowed = 0
|
|
||||||
break
|
|
||||||
}
|
|
||||||
builder.Write(marker)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func websocketPayloadEventType(payload []byte) string {
|
func websocketPayloadEventType(payload []byte) string {
|
||||||
|
|||||||
@@ -392,33 +392,6 @@ func TestAppendWebsocketEvent(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestAppendWebsocketEventTruncatesAtLimit(t *testing.T) {
|
|
||||||
var builder strings.Builder
|
|
||||||
payload := bytes.Repeat([]byte("x"), wsBodyLogMaxSize)
|
|
||||||
|
|
||||||
appendWebsocketEvent(&builder, "request", payload)
|
|
||||||
|
|
||||||
got := builder.String()
|
|
||||||
if len(got) > wsBodyLogMaxSize {
|
|
||||||
t.Fatalf("body log len = %d, want <= %d", len(got), wsBodyLogMaxSize)
|
|
||||||
}
|
|
||||||
if !strings.Contains(got, wsBodyLogTruncated) {
|
|
||||||
t.Fatalf("expected truncation marker in body log")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestAppendWebsocketEventNoGrowthAfterLimit(t *testing.T) {
|
|
||||||
var builder strings.Builder
|
|
||||||
appendWebsocketEvent(&builder, "request", bytes.Repeat([]byte("x"), wsBodyLogMaxSize))
|
|
||||||
initial := builder.String()
|
|
||||||
|
|
||||||
appendWebsocketEvent(&builder, "response", []byte(`{"type":"response.completed"}`))
|
|
||||||
|
|
||||||
if builder.String() != initial {
|
|
||||||
t.Fatalf("builder grew after reaching limit")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestSetWebsocketRequestBody(t *testing.T) {
|
func TestSetWebsocketRequestBody(t *testing.T) {
|
||||||
gin.SetMode(gin.TestMode)
|
gin.SetMode(gin.TestMode)
|
||||||
recorder := httptest.NewRecorder()
|
recorder := httptest.NewRecorder()
|
||||||
|
|||||||
Reference in New Issue
Block a user