Files
wehub-resource-sync 05fcd08057
Deploy GitBook to 9router.github.io / build-deploy (push) Failing after 2s
chore: import upstream snapshot with attribution
2026-07-13 12:21:01 +08:00

59 lines
2.0 KiB
JavaScript

import { describe, it, expect, beforeEach } from "vitest";
import { getRotatedModels, resetComboRotation } from "../../open-sse/services/combo.js";
describe("combo round-robin routing", () => {
beforeEach(() => {
resetComboRotation();
});
it("keeps existing one-request round-robin behavior by default", () => {
const models = ["provider/model-a", "provider/model-b"];
const firstChoices = Array.from({ length: 4 }, () => (
getRotatedModels(models, "code-xhigh", "round-robin")[0]
));
expect(firstChoices).toEqual([
"provider/model-a",
"provider/model-b",
"provider/model-a",
"provider/model-b",
]);
});
it("sticks to each combo model for the configured number of requests", () => {
const models = ["provider/model-a", "provider/model-b"];
const firstChoices = Array.from({ length: 6 }, () => (
getRotatedModels(models, "code-xhigh", "round-robin", 2)[0]
));
expect(firstChoices).toEqual([
"provider/model-a",
"provider/model-a",
"provider/model-b",
"provider/model-b",
"provider/model-a",
"provider/model-a",
]);
});
it("tracks sticky rotation independently per combo", () => {
const models = ["provider/model-a", "provider/model-b"];
expect(getRotatedModels(models, "code-high", "round-robin", 2)[0]).toBe("provider/model-a");
expect(getRotatedModels(models, "code-xhigh", "round-robin", 2)[0]).toBe("provider/model-a");
expect(getRotatedModels(models, "code-high", "round-robin", 2)[0]).toBe("provider/model-a");
expect(getRotatedModels(models, "code-high", "round-robin", 2)[0]).toBe("provider/model-b");
expect(getRotatedModels(models, "code-xhigh", "round-robin", 2)[0]).toBe("provider/model-a");
});
it("does not rotate fallback combos", () => {
const models = ["provider/model-a", "provider/model-b"];
expect(getRotatedModels(models, "code-xhigh", "fallback", 2)).toEqual(models);
expect(getRotatedModels(models, "code-xhigh", "fallback", 2)).toEqual(models);
});
});