65 lines
1.9 KiB
TypeScript
65 lines
1.9 KiB
TypeScript
import { describe, it, expect, vi } from "vitest";
|
|
|
|
// Mock std-env before importing env.ts so the module-level `Env.parse(stdEnv)`
|
|
// doesn't fail in a test environment that lacks required vars.
|
|
vi.mock("std-env", () => ({
|
|
env: {
|
|
TRIGGER_API_URL: "http://localhost:3030",
|
|
TRIGGER_WORKER_TOKEN: "test-token",
|
|
MANAGED_WORKER_SECRET: "test-secret",
|
|
OTEL_EXPORTER_OTLP_ENDPOINT: "http://localhost:4318",
|
|
},
|
|
}));
|
|
|
|
const { Env } = await import("./env.js");
|
|
|
|
// Minimal env that satisfies all required fields; everything else has defaults.
|
|
const base = {
|
|
TRIGGER_API_URL: "http://localhost:3030",
|
|
TRIGGER_WORKER_TOKEN: "test-token",
|
|
MANAGED_WORKER_SECRET: "test-secret",
|
|
OTEL_EXPORTER_OTLP_ENDPOINT: "http://localhost:4318",
|
|
};
|
|
|
|
describe("Env superRefine - backpressure source awareness", () => {
|
|
it("pod-count source can be enabled without a Redis host", () => {
|
|
expect(() =>
|
|
Env.parse({
|
|
...base,
|
|
TRIGGER_DEQUEUE_BACKPRESSURE_POD_COUNT_ENABLED: "true",
|
|
})
|
|
).not.toThrow();
|
|
});
|
|
|
|
it("redis source requires a Redis host", () => {
|
|
expect(() =>
|
|
Env.parse({
|
|
...base,
|
|
TRIGGER_DEQUEUE_BACKPRESSURE_ENABLED: "true",
|
|
})
|
|
).toThrow();
|
|
});
|
|
|
|
it("both sources can be enabled together (with a Redis host)", () => {
|
|
expect(() =>
|
|
Env.parse({
|
|
...base,
|
|
TRIGGER_DEQUEUE_BACKPRESSURE_ENABLED: "true",
|
|
TRIGGER_DEQUEUE_BACKPRESSURE_REDIS_HOST: "localhost",
|
|
TRIGGER_DEQUEUE_BACKPRESSURE_POD_COUNT_ENABLED: "true",
|
|
})
|
|
).not.toThrow();
|
|
});
|
|
|
|
it("rejects pod-count release >= engage when the source is enabled", () => {
|
|
expect(() =>
|
|
Env.parse({
|
|
...base,
|
|
TRIGGER_DEQUEUE_BACKPRESSURE_POD_COUNT_ENABLED: "true",
|
|
TRIGGER_DEQUEUE_BACKPRESSURE_POD_COUNT_ENGAGE: "100",
|
|
TRIGGER_DEQUEUE_BACKPRESSURE_POD_COUNT_RELEASE: "100",
|
|
})
|
|
).toThrow();
|
|
});
|
|
});
|