aboutsummaryrefslogtreecommitdiffstats
path: root/packages/plugins/queue-restate/src/tests/queue.test.ts
diff options
context:
space:
mode:
authorMohamed Bassem <me@mbassem.com>2025-11-30 00:19:28 +0000
committerGitHub <noreply@github.com>2025-11-30 00:19:28 +0000
commita71b9505ea76596659c98eb6180a09a895399741 (patch)
treeceabe80e36d36f594e92c7b3823147abe6e6b474 /packages/plugins/queue-restate/src/tests/queue.test.ts
parentb12c1c3a82941f2767ade8f497db56933415b94d (diff)
downloadkarakeep-a71b9505ea76596659c98eb6180a09a895399741.tar.zst
fix: Add restate queued idempotency (#2169)
* fix: Add restate queued idempotency * return on failed to acquire
Diffstat (limited to '')
-rw-r--r--packages/plugins/queue-restate/src/tests/queue.test.ts21
1 files changed, 21 insertions, 0 deletions
diff --git a/packages/plugins/queue-restate/src/tests/queue.test.ts b/packages/plugins/queue-restate/src/tests/queue.test.ts
index 28e32394..2085d57b 100644
--- a/packages/plugins/queue-restate/src/tests/queue.test.ts
+++ b/packages/plugins/queue-restate/src/tests/queue.test.ts
@@ -209,9 +209,30 @@ describe("Restate Queue Provider", () => {
it("should use idempotency key", async () => {
const idempotencyKey = `test-${Date.now()}`;
+ // hog the queue
+ await Promise.all([
+ queue.enqueue(
+ { type: "semaphore-acquire" },
+ { groupId: "init", priority: -10 },
+ ),
+ queue.enqueue(
+ { type: "semaphore-acquire" },
+ { groupId: "init", priority: -10 },
+ ),
+ queue.enqueue(
+ { type: "semaphore-acquire" },
+ { groupId: "init", priority: -10 },
+ ),
+ ]);
+ await testState.baton.waitUntilCountWaiting(3);
+
await queue.enqueue({ type: "val", val: 200 }, { idempotencyKey });
await queue.enqueue({ type: "val", val: 200 }, { idempotencyKey });
+ await new Promise((resolve) => setTimeout(resolve, 1000));
+
+ testState.baton.release();
+
await waitUntilQueueEmpty();
expect(testState.results).toEqual([200]);