test(gateway): reuse deferred helper in lane tests

This commit is contained in:
Vincent Koc
2026-06-02 09:21:17 +02:00
parent 5912b9e738
commit 4d3411349b
3 changed files with 10 additions and 34 deletions

View File

@@ -4,19 +4,7 @@ import type { OpenClawConfig } from "../config/types.openclaw.js";
import { enqueueCommandInLane, resetCommandQueueStateForTest } from "../process/command-queue.js";
import { CommandLane } from "../process/lanes.js";
import { applyGatewayLaneConcurrency } from "./server-lanes.js";
function createDeferred<T>() {
let resolve: ((value: T | PromiseLike<T>) => void) | undefined;
let reject: ((reason?: unknown) => void) | undefined;
const promise = new Promise<T>((res, rej) => {
resolve = res;
reject = rej;
});
if (!resolve || !reject) {
throw new Error("Expected deferred callbacks to be initialized");
}
return { promise, resolve, reject };
}
import { createDeferred } from "./test-helpers.deferred.js";
describe("applyGatewayLaneConcurrency", () => {
afterEach(() => {
@@ -28,8 +16,8 @@ describe("applyGatewayLaneConcurrency", () => {
let activeRuns = 0;
let peakActiveRuns = 0;
const allRunsStarted = createDeferred<void>();
const releaseRuns = createDeferred<void>();
const allRunsStarted = createDeferred();
const releaseRuns = createDeferred();
const run = async () => {
activeRuns += 1;
@@ -66,8 +54,8 @@ describe("applyGatewayLaneConcurrency", () => {
let activeRuns = 0;
let peakActiveRuns = 0;
const bothRunsStarted = createDeferred<void>();
const releaseRuns = createDeferred<void>();
const bothRunsStarted = createDeferred();
const releaseRuns = createDeferred();
const run = async () => {
activeRuns += 1;
@@ -104,7 +92,7 @@ describe("applyGatewayLaneConcurrency", () => {
applyGatewayLaneConcurrency({ cron: { maxConcurrentRuns: 2 } } as OpenClawConfig);
let startedRuns = 0;
const releaseRuns = createDeferred<void>();
const releaseRuns = createDeferred();
const run = async () => {
startedRuns += 1;
await releaseRuns.promise;

View File

@@ -5,6 +5,7 @@ import {
} from "../auto-reply/reply/dispatcher-registry.js";
import { createReplyDispatcher } from "../auto-reply/reply/reply-dispatcher.js";
import { getTotalQueueSize, resetCommandQueueStateForTest } from "../process/command-queue.js";
import { createDeferred } from "./test-helpers.deferred.js";
async function flushMicrotasks(count = 10): Promise<void> {
for (let i = 0; i < count; i += 1) {
@@ -12,19 +13,6 @@ async function flushMicrotasks(count = 10): Promise<void> {
}
}
function createDeferred<T = void>() {
let resolve: ((value: T | PromiseLike<T>) => void) | undefined;
let reject: ((reason?: unknown) => void) | undefined;
const promise = new Promise<T>((res, rej) => {
resolve = res;
reject = rej;
});
if (!resolve || !reject) {
throw new Error("Expected deferred callbacks to be initialized");
}
return { promise, resolve, reject };
}
describe("gateway restart deferral", () => {
let replyErrors: string[] = [];

View File

@@ -1,6 +1,6 @@
export function createDeferred<T>() {
let resolve: ((value: T) => void) | undefined;
let reject: ((error: unknown) => void) | undefined;
export function createDeferred<T = void>() {
let resolve: ((value: T | PromiseLike<T>) => void) | undefined;
let reject: ((reason?: unknown) => void) | undefined;
const promise = new Promise<T>((resolvePromise, rejectPromise) => {
resolve = resolvePromise;
reject = rejectPromise;