mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-08-15 19:52:50 +03:00
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
80 lines
2.3 KiB
TypeScript
80 lines
2.3 KiB
TypeScript
import assert from "node:assert/strict";
|
|
import test from "node:test";
|
|
|
|
const { isLocalQueueCapacityErrorBody, isRequestScopedUpstreamFailure, shouldSkipConnDisable } =
|
|
await import("../../open-sse/services/combo/comboPredicates.ts");
|
|
const { handleComboChat } = await import("../../open-sse/services/combo.ts");
|
|
|
|
function localQueueResponse() {
|
|
return new Response(
|
|
JSON.stringify({
|
|
error: {
|
|
message: "Local rate-limit queue wait exceeded",
|
|
code: "RATE_LIMIT_QUEUE_TIMEOUT",
|
|
type: "local_queue_capacity",
|
|
},
|
|
}),
|
|
{ status: 429, headers: { "content-type": "application/json" } }
|
|
);
|
|
}
|
|
|
|
function createLog() {
|
|
return { info: () => {}, warn: () => {}, error: () => {}, debug: () => {} };
|
|
}
|
|
|
|
test("local queue capacity is request-scoped and never disables a healthy connection", () => {
|
|
assert.equal(
|
|
isRequestScopedUpstreamFailure({
|
|
code: "RATE_LIMIT_QUEUE_TIMEOUT",
|
|
type: "local_queue_capacity",
|
|
}),
|
|
true
|
|
);
|
|
assert.equal(
|
|
shouldSkipConnDisable(
|
|
{
|
|
status: 429,
|
|
errorCode: "RATE_LIMIT_QUEUE_TIMEOUT",
|
|
errorType: "local_queue_capacity",
|
|
},
|
|
false,
|
|
false,
|
|
"nvidia"
|
|
),
|
|
true
|
|
);
|
|
assert.equal(
|
|
isLocalQueueCapacityErrorBody({
|
|
error: { code: "RATE_LIMIT_QUEUE_TIMEOUT", type: "local_queue_capacity" },
|
|
}),
|
|
true
|
|
);
|
|
});
|
|
|
|
test("combo returns a local queue capacity response without retrying or rotating targets", async () => {
|
|
let calls = 0;
|
|
const response = await handleComboChat({
|
|
body: { model: "openai/gpt-4" },
|
|
combo: {
|
|
name: `local-queue-capacity-${Math.random().toString(16).slice(2)}`,
|
|
strategy: "priority",
|
|
models: ["openai/gpt-4", "openai/gpt-4o-mini"],
|
|
config: { maxRetries: 2, maxSetRetries: 1, retryDelayMs: 0, fallbackDelayMs: 0 },
|
|
},
|
|
handleSingleModel: async () => {
|
|
calls += 1;
|
|
return localQueueResponse();
|
|
},
|
|
isModelAvailable: async () => true,
|
|
log: createLog() as never,
|
|
settings: {},
|
|
allCombos: null,
|
|
});
|
|
|
|
assert.equal(response.status, 429);
|
|
assert.equal(calls, 1, "a local queue limit must not amplify into retries or fallback calls");
|
|
const body = await response.json();
|
|
assert.equal(body.error.code, "RATE_LIMIT_QUEUE_TIMEOUT");
|
|
assert.equal(body.error.type, "local_queue_capacity");
|
|
});
|