@rotorsoft/act-tck 1.19.3 → 1.20.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo +1 -1
- package/dist/@types/store-tck.d.ts.map +1 -1
- package/dist/index.cjs +68 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +68 -0
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/dist/index.cjs
CHANGED
|
@@ -1650,6 +1650,74 @@ var runStoreTck = (options) => {
|
|
|
1650
1650
|
(0, import_vitest9.expect)(await store.defer([], Date.now())).toBe(0);
|
|
1651
1651
|
});
|
|
1652
1652
|
});
|
|
1653
|
+
(0, import_vitest9.describe)("ack finalize (due-marked leases)", () => {
|
|
1654
|
+
(0, import_vitest9.it)("defers a due-marked lease instead of acking it", async () => {
|
|
1655
|
+
const s = `ackdefer-${uid()}`;
|
|
1656
|
+
const ctl = `ackdefer-ctl-${uid()}`;
|
|
1657
|
+
await store.subscribe([{ stream: s }, { stream: ctl }]);
|
|
1658
|
+
await store.commit(
|
|
1659
|
+
s,
|
|
1660
|
+
[inc(1)],
|
|
1661
|
+
make_meta({ stream: s })
|
|
1662
|
+
);
|
|
1663
|
+
const [ctl_head] = await store.commit(
|
|
1664
|
+
ctl,
|
|
1665
|
+
[inc(1)],
|
|
1666
|
+
make_meta({ stream: ctl })
|
|
1667
|
+
);
|
|
1668
|
+
const leased = await store.claim(100, 100, `w-${uid()}`, 1e5);
|
|
1669
|
+
const s_lease = leased.find((l) => l.stream === s);
|
|
1670
|
+
const ctl_lease = leased.find((l) => l.stream === ctl);
|
|
1671
|
+
const acked = await store.ack([
|
|
1672
|
+
{ ...ctl_lease, at: ctl_head.id },
|
|
1673
|
+
{ ...s_lease, due: Date.now() + 36e5 }
|
|
1674
|
+
]);
|
|
1675
|
+
(0, import_vitest9.expect)(acked.find((l) => l.stream === ctl)).toBeDefined();
|
|
1676
|
+
(0, import_vitest9.expect)(acked.find((l) => l.stream === s)).toBeUndefined();
|
|
1677
|
+
await store.commit(
|
|
1678
|
+
ctl,
|
|
1679
|
+
[inc(2)],
|
|
1680
|
+
make_meta({ stream: ctl })
|
|
1681
|
+
);
|
|
1682
|
+
const again = await store.claim(100, 100, `w-${uid()}`, 1e5);
|
|
1683
|
+
(0, import_vitest9.expect)(again.find((l) => l.stream === ctl)).toBeDefined();
|
|
1684
|
+
(0, import_vitest9.expect)(again.find((l) => l.stream === s)).toBeUndefined();
|
|
1685
|
+
});
|
|
1686
|
+
(0, import_vitest9.it)("holds the watermark and resets retry on a due-marked lease", async () => {
|
|
1687
|
+
const s = `ackdefer-past-${uid()}`;
|
|
1688
|
+
await store.subscribe([{ stream: s }]);
|
|
1689
|
+
await store.commit(
|
|
1690
|
+
s,
|
|
1691
|
+
[inc(1)],
|
|
1692
|
+
make_meta({ stream: s })
|
|
1693
|
+
);
|
|
1694
|
+
const leased = await store.claim(100, 100, `w-${uid()}`, 1e5);
|
|
1695
|
+
const mine = leased.find((l) => l.stream === s);
|
|
1696
|
+
await store.ack([{ ...mine, due: Date.now() - 1e3 }]);
|
|
1697
|
+
const again = await store.claim(100, 100, `w-${uid()}`, 1e5);
|
|
1698
|
+
const re = again.find((l) => l.stream === s);
|
|
1699
|
+
(0, import_vitest9.expect)(re).toBeDefined();
|
|
1700
|
+
(0, import_vitest9.expect)(re.at).toBe(mine.at);
|
|
1701
|
+
(0, import_vitest9.expect)(re.retry).toBe(0);
|
|
1702
|
+
await store.ack([{ ...re, at: 1e6 }]);
|
|
1703
|
+
});
|
|
1704
|
+
(0, import_vitest9.it)("ignores due-marked entries from a non-holder", async () => {
|
|
1705
|
+
const s = `ackdefer-owner-${uid()}`;
|
|
1706
|
+
await store.subscribe([{ stream: s }]);
|
|
1707
|
+
await store.commit(
|
|
1708
|
+
s,
|
|
1709
|
+
[inc(1)],
|
|
1710
|
+
make_meta({ stream: s })
|
|
1711
|
+
);
|
|
1712
|
+
const leased = await store.claim(100, 100, `w-${uid()}`, 1e5);
|
|
1713
|
+
const mine = leased.find((l) => l.stream === s);
|
|
1714
|
+
await store.ack([
|
|
1715
|
+
{ ...mine, by: `stale-${uid()}`, due: Date.now() + 36e5 }
|
|
1716
|
+
]);
|
|
1717
|
+
const acked = await store.ack([{ ...mine, at: 1e6 }]);
|
|
1718
|
+
(0, import_vitest9.expect)(acked.find((l) => l.stream === s)).toBeDefined();
|
|
1719
|
+
});
|
|
1720
|
+
});
|
|
1653
1721
|
(0, import_vitest9.describe)("reset", () => {
|
|
1654
1722
|
(0, import_vitest9.it)("rewinds a stream watermark to -1", async () => {
|
|
1655
1723
|
const s = `reset-${uid()}`;
|