| package app |
|
|
| import ( |
| "net/http" |
| "testing" |
| "time" |
| ) |
|
|
| func TestHandleActiveRequests(t *testing.T) { |
| t.Parallel() |
|
|
| m := newActiveRequestManager() |
| id := m.Register(time.Now(), "m1", "1.2.3.4", true) |
| m.Update(id, 10, "ch", "openai", "sk-test", 7, 1.5) |
| m.AddBytes(id, 123) |
| m.SetClientFirstByteTime(id, 50*time.Millisecond) |
|
|
| s := &Server{activeRequests: m} |
|
|
| c, w := newTestContext(t, newRequest(http.MethodGet, "/admin/active_requests", nil)) |
|
|
| s.HandleActiveRequests(c) |
|
|
| if w.Code != http.StatusOK { |
| t.Fatalf("status=%d, want %d", w.Code, http.StatusOK) |
| } |
|
|
| var resp struct { |
| Success bool `json:"success"` |
| Data []ActiveRequest `json:"data"` |
| Count int `json:"count"` |
| } |
| mustUnmarshalJSON(t, w.Body.Bytes(), &resp) |
| if !resp.Success || resp.Count != 1 || len(resp.Data) != 1 { |
| t.Fatalf("unexpected resp: %+v", resp) |
| } |
| if resp.Data[0].BytesReceived != 123 { |
| t.Fatalf("bytes_received=%d, want 123", resp.Data[0].BytesReceived) |
| } |
| if resp.Data[0].ClientFirstByteTime <= 0 { |
| t.Fatalf("client_first_byte_time=%v, want >0", resp.Data[0].ClientFirstByteTime) |
| } |
| if resp.Data[0].CostMultiplier != 1.5 { |
| t.Fatalf("cost_multiplier=%v, want 1.5", resp.Data[0].CostMultiplier) |
| } |
| } |
|
|
| func TestHandleActiveRequests_PreservesZeroCostMultiplier(t *testing.T) { |
| t.Parallel() |
|
|
| m := newActiveRequestManager() |
| id := m.Register(time.Now(), "m1", "1.2.3.4", true) |
| m.Update(id, 10, "free-channel", "openai", "sk-test", 7, 0) |
|
|
| s := &Server{activeRequests: m} |
|
|
| c, w := newTestContext(t, newRequest(http.MethodGet, "/admin/active_requests", nil)) |
|
|
| s.HandleActiveRequests(c) |
|
|
| if w.Code != http.StatusOK { |
| t.Fatalf("status=%d, want %d", w.Code, http.StatusOK) |
| } |
|
|
| var resp struct { |
| Success bool `json:"success"` |
| Data []map[string]any `json:"data"` |
| Count int `json:"count"` |
| } |
| mustUnmarshalJSON(t, w.Body.Bytes(), &resp) |
| if !resp.Success || resp.Count != 1 || len(resp.Data) != 1 { |
| t.Fatalf("unexpected resp: %+v", resp) |
| } |
|
|
| value, ok := resp.Data[0]["cost_multiplier"] |
| if !ok { |
| t.Fatalf("cost_multiplier missing in response: %+v", resp.Data[0]) |
| } |
| if got, ok := value.(float64); !ok || got != 0 { |
| t.Fatalf("cost_multiplier=%v, want 0", value) |
| } |
| } |
|
|