openclaw/src/infra/relay-lock.test.ts
2025-12-09 04:51:54 +01:00

35 lines
956 B
TypeScript

import fs from "node:fs";
import os from "node:os";
import path from "node:path";
import { describe, expect, it } from "vitest";
import { acquireRelayLock, RelayLockError } from "./relay-lock.js";
const newLockPath = () =>
path.join(
os.tmpdir(),
`clawdis-relay-lock-test-${process.pid}-${Math.random().toString(16).slice(2)}.sock`,
);
describe("relay-lock", () => {
it("prevents concurrent relay instances and releases cleanly", async () => {
const lockPath = newLockPath();
const release1 = await acquireRelayLock(lockPath);
expect(fs.existsSync(lockPath)).toBe(true);
await expect(acquireRelayLock(lockPath)).rejects.toBeInstanceOf(
RelayLockError,
);
await release1();
expect(fs.existsSync(lockPath)).toBe(false);
// After release, lock can be reacquired.
const release2 = await acquireRelayLock(lockPath);
await release2();
expect(fs.existsSync(lockPath)).toBe(false);
});
});