chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
// tests/unit/chatcore-failure-usage.test.ts
|
||||
// Characterization of buildFailureUsageRecord — the failed-request usage payload builder extracted
|
||||
// from handleChatCore's persistFailureUsage closure (chatCore god-file decomposition, #3501). Pure:
|
||||
// the handler keeps the fire-and-forget saveRequestUsage(...).catch() call and computes latencyMs;
|
||||
// this builds the record. Locks the unknown/undefined fallbacks, the zeroed token/timing fields,
|
||||
// the combo-strategy gate, and the ISO timestamp.
|
||||
import { test } from "node:test";
|
||||
import assert from "node:assert/strict";
|
||||
import { buildFailureUsageRecord } from "../../open-sse/handlers/chatCore/failureUsage.ts";
|
||||
|
||||
const ISO = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/;
|
||||
|
||||
test("maps a fully-populated failure into the usage record", () => {
|
||||
const r = buildFailureUsageRecord({
|
||||
provider: "openai",
|
||||
model: "gpt-4o",
|
||||
connectionId: "conn-1",
|
||||
apiKeyInfo: { id: "key-1", name: "My Key" },
|
||||
effectiveServiceTier: "priority",
|
||||
isCombo: true,
|
||||
comboStrategy: "weighted",
|
||||
statusCode: 429,
|
||||
errorCode: "rate_limited",
|
||||
latencyMs: 1234,
|
||||
});
|
||||
assert.equal(r.provider, "openai");
|
||||
assert.equal(r.model, "gpt-4o");
|
||||
assert.deepEqual(r.tokens, { input: 0, output: 0, cacheRead: 0, cacheCreation: 0, reasoning: 0 });
|
||||
assert.equal(r.status, "429");
|
||||
assert.equal(r.success, false);
|
||||
assert.equal(r.latencyMs, 1234);
|
||||
assert.equal(r.timeToFirstTokenMs, 0);
|
||||
assert.equal(r.errorCode, "rate_limited");
|
||||
assert.match(String(r.timestamp), ISO);
|
||||
assert.equal(r.connectionId, "conn-1");
|
||||
assert.equal(r.apiKeyId, "key-1");
|
||||
assert.equal(r.apiKeyName, "My Key");
|
||||
assert.equal(r.serviceTier, "priority");
|
||||
assert.equal(r.comboStrategy, "weighted");
|
||||
});
|
||||
|
||||
test("applies the unknown/undefined fallbacks", () => {
|
||||
const r = buildFailureUsageRecord({
|
||||
provider: null,
|
||||
model: undefined,
|
||||
connectionId: null,
|
||||
apiKeyInfo: null,
|
||||
effectiveServiceTier: "standard",
|
||||
isCombo: false,
|
||||
comboStrategy: "priority",
|
||||
statusCode: 502,
|
||||
errorCode: null,
|
||||
latencyMs: 7,
|
||||
});
|
||||
assert.equal(r.provider, "unknown");
|
||||
assert.equal(r.model, "unknown");
|
||||
assert.equal(r.errorCode, "502"); // falls back to String(statusCode)
|
||||
assert.equal(r.connectionId, undefined);
|
||||
assert.equal(r.apiKeyId, undefined);
|
||||
assert.equal(r.apiKeyName, undefined);
|
||||
// isCombo false → comboStrategy is dropped even when supplied
|
||||
assert.equal(r.comboStrategy, undefined);
|
||||
});
|
||||
|
||||
test("combo strategy is included only for combo requests", () => {
|
||||
const combo = buildFailureUsageRecord({
|
||||
provider: "x", model: "y", connectionId: null, apiKeyInfo: null,
|
||||
effectiveServiceTier: "standard", isCombo: true, comboStrategy: "round-robin",
|
||||
statusCode: 500, errorCode: "boom", latencyMs: 1,
|
||||
});
|
||||
assert.equal(combo.comboStrategy, "round-robin");
|
||||
|
||||
const comboNoStrategy = buildFailureUsageRecord({
|
||||
provider: "x", model: "y", connectionId: null, apiKeyInfo: null,
|
||||
effectiveServiceTier: "standard", isCombo: true, comboStrategy: null,
|
||||
statusCode: 500, errorCode: "boom", latencyMs: 1,
|
||||
});
|
||||
assert.equal(comboNoStrategy.comboStrategy, undefined);
|
||||
});
|
||||
Reference in New Issue
Block a user