76 lines
2.7 KiB
TypeScript
76 lines
2.7 KiB
TypeScript
/**
|
|
* Adaptive keepalive threshold — Unit Tests (PR5 of issue #3368)
|
|
*
|
|
* Run: node --import tsx/esm --test tests/unit/keepalive-threshold.test.ts
|
|
*/
|
|
|
|
import { describe, it } from "node:test";
|
|
import assert from "node:assert/strict";
|
|
import {
|
|
resolveKeepaliveThreshold,
|
|
SLOW_KEEPALIVE_PROVIDERS,
|
|
} from "../../open-sse/utils/keepaliveThreshold.ts";
|
|
|
|
describe("resolveKeepaliveThreshold", () => {
|
|
it("returns 2000ms default for undefined model", () => {
|
|
assert.equal(resolveKeepaliveThreshold(undefined), 2000);
|
|
});
|
|
|
|
it("returns 2000ms default for null model", () => {
|
|
assert.equal(resolveKeepaliveThreshold(null), 2000);
|
|
});
|
|
|
|
it("returns 2000ms default for empty string", () => {
|
|
assert.equal(resolveKeepaliveThreshold(""), 2000);
|
|
});
|
|
|
|
it("returns 2000ms default for model without prefix", () => {
|
|
assert.equal(resolveKeepaliveThreshold("gpt-4"), 2000);
|
|
});
|
|
|
|
it("returns 2000ms default for normal API-key provider", () => {
|
|
assert.equal(resolveKeepaliveThreshold("openai/gpt-4"), 2000);
|
|
assert.equal(resolveKeepaliveThreshold("anthropic/claude-sonnet-4"), 2000);
|
|
assert.equal(resolveKeepaliveThreshold("deepseek/deepseek-chat"), 2000);
|
|
});
|
|
|
|
it("returns 15000ms for anonymous fallback provider (pollinations)", () => {
|
|
assert.equal(resolveKeepaliveThreshold("pollinations/gpt-5"), 15000);
|
|
});
|
|
|
|
it("returns 15000ms for anonymous fallback provider alias (pol)", () => {
|
|
assert.equal(resolveKeepaliveThreshold("pol/gpt-5"), 15000);
|
|
});
|
|
|
|
it("returns 15000ms for anonymous fallback provider (opencode-zen)", () => {
|
|
assert.equal(resolveKeepaliveThreshold("opencode-zen/gpt-4"), 15000);
|
|
});
|
|
|
|
it("returns 15000ms for web-session provider (chatgpt-web)", () => {
|
|
assert.equal(resolveKeepaliveThreshold("chatgpt-web/gpt-5"), 15000);
|
|
});
|
|
|
|
it("returns 15000ms for web-session provider (grok-web)", () => {
|
|
assert.equal(resolveKeepaliveThreshold("grok-web/grok-4"), 15000);
|
|
});
|
|
|
|
it("returns 15000ms for web-session provider (claude-web)", () => {
|
|
assert.equal(resolveKeepaliveThreshold("claude-web/claude-sonnet-4"), 15000);
|
|
});
|
|
|
|
it("SLOW_KEEPALIVE_PROVIDERS set contains expected providers", () => {
|
|
assert.ok(SLOW_KEEPALIVE_PROVIDERS.has("pollinations"));
|
|
assert.ok(SLOW_KEEPALIVE_PROVIDERS.has("pol"));
|
|
assert.ok(SLOW_KEEPALIVE_PROVIDERS.has("opencode-zen"));
|
|
assert.ok(SLOW_KEEPALIVE_PROVIDERS.has("chatgpt-web"));
|
|
assert.ok(SLOW_KEEPALIVE_PROVIDERS.has("grok-web"));
|
|
assert.ok(SLOW_KEEPALIVE_PROVIDERS.has("claude-web"));
|
|
});
|
|
|
|
it("SLOW_KEEPALIVE_PROVIDERS does not contain normal providers", () => {
|
|
assert.ok(!SLOW_KEEPALIVE_PROVIDERS.has("openai"));
|
|
assert.ok(!SLOW_KEEPALIVE_PROVIDERS.has("anthropic"));
|
|
assert.ok(!SLOW_KEEPALIVE_PROVIDERS.has("deepseek"));
|
|
});
|
|
});
|