Skip to content

Commit 4d34113

Browse files
committed
test(gateway): reuse deferred helper in lane tests
1 parent 5912b9e commit 4d34113

3 files changed

Lines changed: 10 additions & 34 deletions

File tree

src/gateway/server-lanes.test.ts

Lines changed: 6 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,7 @@ import type { OpenClawConfig } from "../config/types.openclaw.js";
44
import { enqueueCommandInLane, resetCommandQueueStateForTest } from "../process/command-queue.js";
55
import { CommandLane } from "../process/lanes.js";
66
import { applyGatewayLaneConcurrency } from "./server-lanes.js";
7-
8-
function createDeferred<T>() {
9-
let resolve: ((value: T | PromiseLike<T>) => void) | undefined;
10-
let reject: ((reason?: unknown) => void) | undefined;
11-
const promise = new Promise<T>((res, rej) => {
12-
resolve = res;
13-
reject = rej;
14-
});
15-
if (!resolve || !reject) {
16-
throw new Error("Expected deferred callbacks to be initialized");
17-
}
18-
return { promise, resolve, reject };
19-
}
7+
import { createDeferred } from "./test-helpers.deferred.js";
208

219
describe("applyGatewayLaneConcurrency", () => {
2210
afterEach(() => {
@@ -28,8 +16,8 @@ describe("applyGatewayLaneConcurrency", () => {
2816

2917
let activeRuns = 0;
3018
let peakActiveRuns = 0;
31-
const allRunsStarted = createDeferred<void>();
32-
const releaseRuns = createDeferred<void>();
19+
const allRunsStarted = createDeferred();
20+
const releaseRuns = createDeferred();
3321

3422
const run = async () => {
3523
activeRuns += 1;
@@ -66,8 +54,8 @@ describe("applyGatewayLaneConcurrency", () => {
6654

6755
let activeRuns = 0;
6856
let peakActiveRuns = 0;
69-
const bothRunsStarted = createDeferred<void>();
70-
const releaseRuns = createDeferred<void>();
57+
const bothRunsStarted = createDeferred();
58+
const releaseRuns = createDeferred();
7159

7260
const run = async () => {
7361
activeRuns += 1;
@@ -104,7 +92,7 @@ describe("applyGatewayLaneConcurrency", () => {
10492
applyGatewayLaneConcurrency({ cron: { maxConcurrentRuns: 2 } } as OpenClawConfig);
10593

10694
let startedRuns = 0;
107-
const releaseRuns = createDeferred<void>();
95+
const releaseRuns = createDeferred();
10896
const run = async () => {
10997
startedRuns += 1;
11098
await releaseRuns.promise;

src/gateway/server-restart-deferral.test.ts

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,26 +5,14 @@ import {
55
} from "../auto-reply/reply/dispatcher-registry.js";
66
import { createReplyDispatcher } from "../auto-reply/reply/reply-dispatcher.js";
77
import { getTotalQueueSize, resetCommandQueueStateForTest } from "../process/command-queue.js";
8+
import { createDeferred } from "./test-helpers.deferred.js";
89

910
async function flushMicrotasks(count = 10): Promise<void> {
1011
for (let i = 0; i < count; i += 1) {
1112
await Promise.resolve();
1213
}
1314
}
1415

15-
function createDeferred<T = void>() {
16-
let resolve: ((value: T | PromiseLike<T>) => void) | undefined;
17-
let reject: ((reason?: unknown) => void) | undefined;
18-
const promise = new Promise<T>((res, rej) => {
19-
resolve = res;
20-
reject = rej;
21-
});
22-
if (!resolve || !reject) {
23-
throw new Error("Expected deferred callbacks to be initialized");
24-
}
25-
return { promise, resolve, reject };
26-
}
27-
2816
describe("gateway restart deferral", () => {
2917
let replyErrors: string[] = [];
3018

src/gateway/test-helpers.deferred.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
export function createDeferred<T>() {
2-
let resolve: ((value: T) => void) | undefined;
3-
let reject: ((error: unknown) => void) | undefined;
1+
export function createDeferred<T = void>() {
2+
let resolve: ((value: T | PromiseLike<T>) => void) | undefined;
3+
let reject: ((reason?: unknown) => void) | undefined;
44
const promise = new Promise<T>((resolvePromise, rejectPromise) => {
55
resolve = resolvePromise;
66
reject = rejectPromise;

0 commit comments

Comments
 (0)