@rotorsoft/act-tck 1.34.0 → 1.34.2
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-differential-tck.d.ts.map +1 -1
- package/dist/@types/store-property-tck.d.ts.map +1 -1
- package/dist/@types/store-tck.d.ts +3 -3
- package/dist/@types/store-tck.d.ts.map +1 -1
- package/dist/index.cjs +154 -119
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +154 -119
- package/dist/index.js.map +1 -1
- package/package.json +5 -5
package/dist/index.cjs
CHANGED
|
@@ -438,6 +438,24 @@ ${content}`;
|
|
|
438
438
|
// src/store-differential-tck.ts
|
|
439
439
|
var import_act = require("@rotorsoft/act");
|
|
440
440
|
var import_vitest6 = require("vitest");
|
|
441
|
+
var mark_all = async (store) => {
|
|
442
|
+
const rows = [];
|
|
443
|
+
const { maxEventId } = await store.query_streams(
|
|
444
|
+
(p) => rows.push({
|
|
445
|
+
stream: p.stream,
|
|
446
|
+
at: p.at,
|
|
447
|
+
priority: p.priority,
|
|
448
|
+
lane: p.lane
|
|
449
|
+
})
|
|
450
|
+
);
|
|
451
|
+
const marks = rows.filter((r) => r.at < maxEventId).map((r) => ({
|
|
452
|
+
stream: r.stream,
|
|
453
|
+
priority: r.priority,
|
|
454
|
+
lane: r.lane,
|
|
455
|
+
correlated_at: maxEventId
|
|
456
|
+
}));
|
|
457
|
+
await store.subscribe(marks);
|
|
458
|
+
};
|
|
441
459
|
var mulberry322 = (seed) => {
|
|
442
460
|
let a = seed >>> 0;
|
|
443
461
|
return () => {
|
|
@@ -654,6 +672,7 @@ var apply_plan = async (store, plan, pii_isolation) => {
|
|
|
654
672
|
]);
|
|
655
673
|
} else if (op.t === "claim") {
|
|
656
674
|
const by = uid();
|
|
675
|
+
await mark_all(store);
|
|
657
676
|
const leased = await store.claim(1e5, 1e5, by, op.millis);
|
|
658
677
|
for (const l of leased) if (owned.has(l.stream)) held.set(l.stream, by);
|
|
659
678
|
} else if (op.t === "ack") {
|
|
@@ -910,6 +929,24 @@ var runStoreDifferentialTck = (options) => {
|
|
|
910
929
|
// src/store-property-tck.ts
|
|
911
930
|
var import_vitest7 = require("@fast-check/vitest");
|
|
912
931
|
var import_vitest8 = require("vitest");
|
|
932
|
+
var mark_all2 = async (store) => {
|
|
933
|
+
const rows = [];
|
|
934
|
+
const { maxEventId } = await store.query_streams(
|
|
935
|
+
(p) => rows.push({
|
|
936
|
+
stream: p.stream,
|
|
937
|
+
at: p.at,
|
|
938
|
+
priority: p.priority,
|
|
939
|
+
lane: p.lane
|
|
940
|
+
})
|
|
941
|
+
);
|
|
942
|
+
const marks = rows.filter((r) => r.at < maxEventId).map((r) => ({
|
|
943
|
+
stream: r.stream,
|
|
944
|
+
priority: r.priority,
|
|
945
|
+
lane: r.lane,
|
|
946
|
+
correlated_at: maxEventId
|
|
947
|
+
}));
|
|
948
|
+
await store.subscribe(marks);
|
|
949
|
+
};
|
|
913
950
|
var streamArb = import_vitest7.fc.constantFrom("s1", "s2", "s3");
|
|
914
951
|
var commitArb = import_vitest7.fc.record({
|
|
915
952
|
stream: streamArb,
|
|
@@ -1017,6 +1054,7 @@ var runStorePropertyTck = (options) => {
|
|
|
1017
1054
|
make_meta({ stream: op.stream })
|
|
1018
1055
|
);
|
|
1019
1056
|
} else if (op.kind === "claim") {
|
|
1057
|
+
await mark_all2(store);
|
|
1020
1058
|
const claimed = await store.claim(5, 5, "worker", 6e4);
|
|
1021
1059
|
totalClaims += claimed.length;
|
|
1022
1060
|
pending = [...pending, ...claimed];
|
|
@@ -1058,6 +1096,7 @@ var runStorePropertyTck = (options) => {
|
|
|
1058
1096
|
make_meta({ stream })
|
|
1059
1097
|
);
|
|
1060
1098
|
}
|
|
1099
|
+
await mark_all2(store);
|
|
1061
1100
|
const acked1 = await store.ack(
|
|
1062
1101
|
await store.claim(10, 10, "worker", 6e4)
|
|
1063
1102
|
);
|
|
@@ -1070,6 +1109,7 @@ var runStorePropertyTck = (options) => {
|
|
|
1070
1109
|
make_meta({ stream })
|
|
1071
1110
|
);
|
|
1072
1111
|
}
|
|
1112
|
+
await mark_all2(store);
|
|
1073
1113
|
const acked2 = await store.ack(
|
|
1074
1114
|
await store.claim(10, 10, "worker", 6e4)
|
|
1075
1115
|
);
|
|
@@ -1093,6 +1133,7 @@ var runStorePropertyTck = (options) => {
|
|
|
1093
1133
|
make_meta({ stream })
|
|
1094
1134
|
);
|
|
1095
1135
|
}
|
|
1136
|
+
await mark_all2(store);
|
|
1096
1137
|
const claimed = await store.claim(10, 10, "worker", 6e4);
|
|
1097
1138
|
await store.block(claimed.map((l) => ({ ...l, error: "test" })));
|
|
1098
1139
|
const blockedSet = new Set(claimed.map((l) => l.stream));
|
|
@@ -1102,6 +1143,7 @@ var runStorePropertyTck = (options) => {
|
|
|
1102
1143
|
[inc(1)],
|
|
1103
1144
|
make_meta({ stream: "ctrl" })
|
|
1104
1145
|
);
|
|
1146
|
+
await mark_all2(store);
|
|
1105
1147
|
const reclaim = await store.claim(10, 10, "worker2", 6e4);
|
|
1106
1148
|
for (const l of reclaim) (0, import_vitest8.expect)(blockedSet.has(l.stream)).toBe(false);
|
|
1107
1149
|
});
|
|
@@ -1116,6 +1158,38 @@ var runStoreTck = (options) => {
|
|
|
1116
1158
|
(0, import_vitest9.describe)(`TCK / Store / ${options.name}`, () => {
|
|
1117
1159
|
let store;
|
|
1118
1160
|
const caps = { ...options.capabilities };
|
|
1161
|
+
const is_literal = (source) => !/[\]^$.*+?()[{}|\\]/.test(source);
|
|
1162
|
+
const correlate = async (target = store) => {
|
|
1163
|
+
const rows = [];
|
|
1164
|
+
await target.query_streams(
|
|
1165
|
+
(p) => rows.push({
|
|
1166
|
+
stream: p.stream,
|
|
1167
|
+
source: p.source,
|
|
1168
|
+
at: p.at,
|
|
1169
|
+
priority: p.priority,
|
|
1170
|
+
lane: p.lane
|
|
1171
|
+
}),
|
|
1172
|
+
{ limit: 1e3 }
|
|
1173
|
+
);
|
|
1174
|
+
const marks = [];
|
|
1175
|
+
for (const row of rows) {
|
|
1176
|
+
let mark = -1;
|
|
1177
|
+
await target.query(
|
|
1178
|
+
(e) => {
|
|
1179
|
+
mark = Math.max(mark, e.id);
|
|
1180
|
+
},
|
|
1181
|
+
row.source !== void 0 ? { stream: row.source, stream_exact: is_literal(row.source) } : {}
|
|
1182
|
+
);
|
|
1183
|
+
if (mark > row.at)
|
|
1184
|
+
marks.push({
|
|
1185
|
+
stream: row.stream,
|
|
1186
|
+
priority: row.priority,
|
|
1187
|
+
lane: row.lane,
|
|
1188
|
+
correlated_at: mark
|
|
1189
|
+
});
|
|
1190
|
+
}
|
|
1191
|
+
if (marks.length) await target.subscribe(marks);
|
|
1192
|
+
};
|
|
1119
1193
|
(0, import_vitest9.beforeAll)(async () => {
|
|
1120
1194
|
store = await options.factory();
|
|
1121
1195
|
await store.drop();
|
|
@@ -1742,18 +1816,21 @@ var runStoreTck = (options) => {
|
|
|
1742
1816
|
const s = `fresh-empty-${uid()}`;
|
|
1743
1817
|
const src = `fresh-src-${uid()}`;
|
|
1744
1818
|
await store.subscribe([{ stream: s, source: src }]);
|
|
1819
|
+
await correlate();
|
|
1745
1820
|
const leases = await store.claim(5, 5, `w-${uid()}`, 5e3);
|
|
1746
1821
|
(0, import_vitest9.expect)(leases.filter((l) => l.stream === s)).toHaveLength(0);
|
|
1747
1822
|
});
|
|
1748
|
-
(0, import_vitest9.it)("claims a fresh subscription as soon as its first event
|
|
1823
|
+
(0, import_vitest9.it)("claims a fresh subscription as soon as its first event is marked", async () => {
|
|
1749
1824
|
const s = `fresh-first-${uid()}`;
|
|
1750
1825
|
const src = `fresh-first-src-${uid()}`;
|
|
1751
1826
|
await store.subscribe([{ stream: s, source: src }]);
|
|
1752
|
-
await store.commit(
|
|
1827
|
+
const [first] = await store.commit(
|
|
1753
1828
|
src,
|
|
1754
1829
|
[inc(1)],
|
|
1755
1830
|
make_meta({ stream: src })
|
|
1756
1831
|
);
|
|
1832
|
+
await store.subscribe([{ stream: s, correlated_at: first.id }]);
|
|
1833
|
+
await correlate();
|
|
1757
1834
|
const leases = await store.claim(5, 5, `w-${uid()}`, 5e3);
|
|
1758
1835
|
const mine = leases.filter((l) => l.stream === s);
|
|
1759
1836
|
(0, import_vitest9.expect)(mine).toHaveLength(1);
|
|
@@ -1846,7 +1923,7 @@ var runStoreTck = (options) => {
|
|
|
1846
1923
|
(0, import_vitest9.expect)(seen).not.toContain("correlated");
|
|
1847
1924
|
});
|
|
1848
1925
|
});
|
|
1849
|
-
import_vitest9.describe
|
|
1926
|
+
(0, import_vitest9.describe)("subscription work set", () => {
|
|
1850
1927
|
const claimable = async (stream) => {
|
|
1851
1928
|
const leased = await store.claim(100, 0, `w-${uid()}`, 1);
|
|
1852
1929
|
const mine = leased.find((l) => l.stream === stream);
|
|
@@ -1933,16 +2010,17 @@ var runStoreTck = (options) => {
|
|
|
1933
2010
|
await store.prioritize({ stream: s, stream_exact: true }, 5);
|
|
1934
2011
|
(0, import_vitest9.expect)(await claimable(s)).toBe(true);
|
|
1935
2012
|
});
|
|
1936
|
-
(0, import_vitest9.it)("
|
|
1937
|
-
const s = `ws-
|
|
1938
|
-
const src = `ws-
|
|
2013
|
+
(0, import_vitest9.it)("never claims an unmarked stream, however much work the log holds", async () => {
|
|
2014
|
+
const s = `ws-unmarked-${uid()}`;
|
|
2015
|
+
const src = `ws-unmarked-src-${uid()}`;
|
|
1939
2016
|
await store.subscribe([{ stream: s, source: src }]);
|
|
1940
|
-
|
|
1941
|
-
await store.commit(
|
|
2017
|
+
const [event] = await store.commit(
|
|
1942
2018
|
src,
|
|
1943
2019
|
[inc(1)],
|
|
1944
2020
|
make_meta({ stream: src })
|
|
1945
2021
|
);
|
|
2022
|
+
(0, import_vitest9.expect)(await claimable(s)).toBe(false);
|
|
2023
|
+
await store.subscribe([{ stream: s, correlated_at: event.id }]);
|
|
1946
2024
|
(0, import_vitest9.expect)(await claimable(s)).toBe(true);
|
|
1947
2025
|
});
|
|
1948
2026
|
(0, import_vitest9.it)("surfaces the mark on query_streams positions", async () => {
|
|
@@ -1975,6 +2053,7 @@ var runStoreTck = (options) => {
|
|
|
1975
2053
|
make_meta({ stream: s })
|
|
1976
2054
|
);
|
|
1977
2055
|
const by = `worker-${uid()}`;
|
|
2056
|
+
await correlate();
|
|
1978
2057
|
const leased = await store.claim(100, 0, by, 1e4);
|
|
1979
2058
|
const mine = leased.find((l) => l.stream === s);
|
|
1980
2059
|
(0, import_vitest9.expect)(mine).toBeDefined();
|
|
@@ -1997,6 +2076,7 @@ var runStoreTck = (options) => {
|
|
|
1997
2076
|
[inc(1)],
|
|
1998
2077
|
make_meta({ stream: s })
|
|
1999
2078
|
);
|
|
2079
|
+
await correlate();
|
|
2000
2080
|
const leasedA = await store.claim(100, 0, `wA-${uid()}`, 1e5);
|
|
2001
2081
|
const targetA = leasedA.find((l) => l.stream === s);
|
|
2002
2082
|
(0, import_vitest9.expect)(targetA).toBeDefined();
|
|
@@ -2006,6 +2086,7 @@ var runStoreTck = (options) => {
|
|
|
2006
2086
|
[inc(2)],
|
|
2007
2087
|
make_meta({ stream: other })
|
|
2008
2088
|
);
|
|
2089
|
+
await correlate();
|
|
2009
2090
|
const leasedB = await store.claim(100, 0, `wB-${uid()}`, 1e5);
|
|
2010
2091
|
(0, import_vitest9.expect)(leasedB.length).toBeGreaterThan(0);
|
|
2011
2092
|
(0, import_vitest9.expect)(leasedB.find((l) => l.stream === s)).toBeUndefined();
|
|
@@ -2019,11 +2100,13 @@ var runStoreTck = (options) => {
|
|
|
2019
2100
|
[inc(1), inc(2)],
|
|
2020
2101
|
make_meta({ stream: s })
|
|
2021
2102
|
);
|
|
2103
|
+
await correlate();
|
|
2022
2104
|
const leasedA = await store.claim(100, 0, `wA-${uid()}`, 1);
|
|
2023
2105
|
const a = leasedA.find((l) => l.stream === s);
|
|
2024
2106
|
(0, import_vitest9.expect)(a).toBeDefined();
|
|
2025
2107
|
(0, import_vitest9.expect)(a.retry).toBe(0);
|
|
2026
2108
|
await new Promise((r) => setTimeout(r, 50));
|
|
2109
|
+
await correlate();
|
|
2027
2110
|
const leasedB = await store.claim(100, 0, `wB-${uid()}`, 1e5);
|
|
2028
2111
|
const b = leasedB.find((l) => l.stream === s);
|
|
2029
2112
|
(0, import_vitest9.expect)(b).toBeDefined();
|
|
@@ -2044,10 +2127,12 @@ var runStoreTck = (options) => {
|
|
|
2044
2127
|
[inc(1), inc(2)],
|
|
2045
2128
|
make_meta({ stream: s })
|
|
2046
2129
|
);
|
|
2130
|
+
await correlate();
|
|
2047
2131
|
const first = await store.claim(100, 0, `w-${uid()}`, 1);
|
|
2048
2132
|
const mine = first.find((l) => l.stream === s);
|
|
2049
2133
|
(0, import_vitest9.expect)(mine).toBeDefined();
|
|
2050
2134
|
await store.ack([{ ...mine, at: mine.at + 1 }]);
|
|
2135
|
+
await correlate();
|
|
2051
2136
|
const second = await store.claim(0, 100, `w-${uid()}`, 1);
|
|
2052
2137
|
(0, import_vitest9.expect)(second.find((l) => l.stream === s)).toBeDefined();
|
|
2053
2138
|
});
|
|
@@ -2081,6 +2166,7 @@ var runStoreTck = (options) => {
|
|
|
2081
2166
|
let low_claimed = false;
|
|
2082
2167
|
const MAX_CYCLES = 20;
|
|
2083
2168
|
for (let cycle = 0; cycle < MAX_CYCLES && !low_claimed; cycle++) {
|
|
2169
|
+
await correlate(fresh);
|
|
2084
2170
|
const leases = await fresh.claim(4, 0, by, 1e3);
|
|
2085
2171
|
if (leases.some((l) => l.stream === low)) {
|
|
2086
2172
|
low_claimed = true;
|
|
@@ -2108,6 +2194,7 @@ var runStoreTck = (options) => {
|
|
|
2108
2194
|
[inc(1)],
|
|
2109
2195
|
make_meta({ stream: s })
|
|
2110
2196
|
);
|
|
2197
|
+
await correlate();
|
|
2111
2198
|
const claimed = await store.claim(100, 100, `w-${uid()}`, 1e5);
|
|
2112
2199
|
const matches = claimed.filter((l) => l.stream === s);
|
|
2113
2200
|
(0, import_vitest9.expect)(matches).toHaveLength(1);
|
|
@@ -2126,6 +2213,7 @@ var runStoreTck = (options) => {
|
|
|
2126
2213
|
[inc(2)],
|
|
2127
2214
|
make_meta({ stream: sibling })
|
|
2128
2215
|
);
|
|
2216
|
+
await correlate();
|
|
2129
2217
|
const leased = await store.claim(100, 0, `right-${uid()}`, 1e5);
|
|
2130
2218
|
const mine = leased.find((l) => l.stream === s);
|
|
2131
2219
|
const sibling_lease = leased.find((l) => l.stream === sibling);
|
|
@@ -2142,6 +2230,7 @@ var runStoreTck = (options) => {
|
|
|
2142
2230
|
const s = `ack-stale-${uid()}`;
|
|
2143
2231
|
await store.subscribe([{ stream: s }]);
|
|
2144
2232
|
const by = `w-${uid()}`;
|
|
2233
|
+
await correlate();
|
|
2145
2234
|
const leased = await store.claim(100, 0, by, 1e5);
|
|
2146
2235
|
const mine = leased.find((l) => l.stream === s);
|
|
2147
2236
|
(0, import_vitest9.expect)(mine).toBeDefined();
|
|
@@ -2154,6 +2243,7 @@ var runStoreTck = (options) => {
|
|
|
2154
2243
|
try {
|
|
2155
2244
|
await fresh.drop();
|
|
2156
2245
|
await fresh.seed();
|
|
2246
|
+
await correlate(fresh);
|
|
2157
2247
|
const claimed = await fresh.claim(1, 1, `w-${uid()}`, 1e3);
|
|
2158
2248
|
(0, import_vitest9.expect)(claimed).toEqual([]);
|
|
2159
2249
|
} finally {
|
|
@@ -2174,10 +2264,12 @@ var runStoreTck = (options) => {
|
|
|
2174
2264
|
[inc(1)],
|
|
2175
2265
|
make_meta({ stream: s })
|
|
2176
2266
|
);
|
|
2267
|
+
await correlate(fresh);
|
|
2177
2268
|
const first = await fresh.claim(1, 0, `w-${uid()}`, 0);
|
|
2178
2269
|
const f = first.find((l) => l.stream === s);
|
|
2179
2270
|
(0, import_vitest9.expect)(f).toBeDefined();
|
|
2180
2271
|
(0, import_vitest9.expect)(f.retry).toBe(0);
|
|
2272
|
+
await correlate(fresh);
|
|
2181
2273
|
const second = await fresh.claim(1, 0, `w-${uid()}`, 1e5);
|
|
2182
2274
|
const sec = second.find((l) => l.stream === s);
|
|
2183
2275
|
(0, import_vitest9.expect)(sec).toBeDefined();
|
|
@@ -2198,8 +2290,10 @@ var runStoreTck = (options) => {
|
|
|
2198
2290
|
[inc(1)],
|
|
2199
2291
|
make_meta({ stream: s })
|
|
2200
2292
|
);
|
|
2293
|
+
await correlate(fresh);
|
|
2201
2294
|
const lag = await fresh.claim(1, 0, `w-${uid()}`, 0);
|
|
2202
2295
|
(0, import_vitest9.expect)(lag.find((l) => l.stream === s)?.lagging).toBe(true);
|
|
2296
|
+
await correlate(fresh);
|
|
2203
2297
|
const lead = await fresh.claim(0, 1, `w-${uid()}`, 1e5);
|
|
2204
2298
|
(0, import_vitest9.expect)(lead.find((l) => l.stream === s)?.lagging).toBe(false);
|
|
2205
2299
|
} finally {
|
|
@@ -2214,14 +2308,17 @@ var runStoreTck = (options) => {
|
|
|
2214
2308
|
const s = `lease-timeout-${uid()}`;
|
|
2215
2309
|
await fresh.subscribe([{ stream: s }]);
|
|
2216
2310
|
const [e1] = await seed_stream(fresh, s, 1);
|
|
2311
|
+
await correlate(fresh);
|
|
2217
2312
|
const a = await fresh.claim(1, 0, `wA-${uid()}`, 0);
|
|
2218
2313
|
(0, import_vitest9.expect)(a.find((l) => l.stream === s)?.retry).toBe(0);
|
|
2314
|
+
await correlate(fresh);
|
|
2219
2315
|
const b = await fresh.claim(1, 0, `wB-${uid()}`, 3e4);
|
|
2220
2316
|
const b_lease = b.find((l) => l.stream === s);
|
|
2221
2317
|
(0, import_vitest9.expect)(b_lease).toBeDefined();
|
|
2222
2318
|
(0, import_vitest9.expect)(b_lease.retry).toBe(1);
|
|
2223
2319
|
await fresh.ack([{ ...b_lease, at: e1.id }]);
|
|
2224
2320
|
await seed_stream(fresh, s, 1);
|
|
2321
|
+
await correlate(fresh);
|
|
2225
2322
|
const c = await fresh.claim(1, 0, `wC-${uid()}`, 3e4);
|
|
2226
2323
|
(0, import_vitest9.expect)(c.find((l) => l.stream === s)?.retry).toBe(0);
|
|
2227
2324
|
} finally {
|
|
@@ -2229,42 +2326,7 @@ var runStoreTck = (options) => {
|
|
|
2229
2326
|
}
|
|
2230
2327
|
});
|
|
2231
2328
|
});
|
|
2232
|
-
(0, import_vitest9.describe)("
|
|
2233
|
-
(0, import_vitest9.it)("treats source as an exact stream name \u2014 no substring or pattern overmatch", async () => {
|
|
2234
|
-
const fresh = await options.factory();
|
|
2235
|
-
try {
|
|
2236
|
-
await fresh.drop();
|
|
2237
|
-
await fresh.seed();
|
|
2238
|
-
const base = `src-${uid()}`;
|
|
2239
|
-
const sibling = `${base}2`;
|
|
2240
|
-
const target = `agg-${uid()}`;
|
|
2241
|
-
const control = `ctl-${uid()}`;
|
|
2242
|
-
await fresh.subscribe([
|
|
2243
|
-
{ stream: target, source: base },
|
|
2244
|
-
// Control subscription sourced from the sibling — it DOES see
|
|
2245
|
-
// the sibling commit below, so the negative assertion runs
|
|
2246
|
-
// through a populated claim result.
|
|
2247
|
-
{ stream: control, source: sibling }
|
|
2248
|
-
]);
|
|
2249
|
-
const [seeded] = await seed_stream(fresh, base, 1);
|
|
2250
|
-
const [ctl_seeded] = await seed_stream(fresh, sibling, 1);
|
|
2251
|
-
const first = await fresh.claim(100, 0, `w-${uid()}`, 3e4);
|
|
2252
|
-
const mine = first.find((l) => l.stream === target);
|
|
2253
|
-
const ctl = first.find((l) => l.stream === control);
|
|
2254
|
-
(0, import_vitest9.expect)(mine).toBeDefined();
|
|
2255
|
-
(0, import_vitest9.expect)(ctl).toBeDefined();
|
|
2256
|
-
await fresh.ack([
|
|
2257
|
-
{ ...mine, at: seeded.id },
|
|
2258
|
-
{ ...ctl, at: ctl_seeded.id }
|
|
2259
|
-
]);
|
|
2260
|
-
await seed_stream(fresh, sibling, 1);
|
|
2261
|
-
const second = await fresh.claim(100, 0, `w-${uid()}`, 3e4);
|
|
2262
|
-
(0, import_vitest9.expect)(second.find((l) => l.stream === control)).toBeDefined();
|
|
2263
|
-
(0, import_vitest9.expect)(second.find((l) => l.stream === target)).toBeUndefined();
|
|
2264
|
-
} finally {
|
|
2265
|
-
await fresh.dispose();
|
|
2266
|
-
}
|
|
2267
|
-
});
|
|
2329
|
+
(0, import_vitest9.describe)("source windows and lease exclusivity", () => {
|
|
2268
2330
|
(0, import_vitest9.it)("receives exactly its source stream's events", async () => {
|
|
2269
2331
|
const fresh = await options.factory();
|
|
2270
2332
|
try {
|
|
@@ -2274,12 +2336,14 @@ var runStoreTck = (options) => {
|
|
|
2274
2336
|
const target = `agg-${uid()}`;
|
|
2275
2337
|
await fresh.subscribe([{ stream: target, source: base }]);
|
|
2276
2338
|
const [e1] = await seed_stream(fresh, base, 1);
|
|
2339
|
+
await correlate(fresh);
|
|
2277
2340
|
const first = await fresh.claim(100, 0, `w-${uid()}`, 3e4);
|
|
2278
2341
|
const f = first.find((l) => l.stream === target);
|
|
2279
2342
|
(0, import_vitest9.expect)(f).toBeDefined();
|
|
2280
2343
|
(0, import_vitest9.expect)(f.source).toBe(base);
|
|
2281
2344
|
await fresh.ack([{ ...f, at: e1.id }]);
|
|
2282
2345
|
const [e2] = await seed_stream(fresh, base, 1);
|
|
2346
|
+
await correlate(fresh);
|
|
2283
2347
|
const second = await fresh.claim(100, 0, `w-${uid()}`, 3e4);
|
|
2284
2348
|
const sec = second.find((l) => l.stream === target);
|
|
2285
2349
|
(0, import_vitest9.expect)(sec).toBeDefined();
|
|
@@ -2304,6 +2368,7 @@ var runStoreTck = (options) => {
|
|
|
2304
2368
|
await fresh.subscribe([{ stream: target, source: base }]);
|
|
2305
2369
|
const [b1] = await seed_stream(fresh, base, 1);
|
|
2306
2370
|
await seed_stream(fresh, sibling, 1);
|
|
2371
|
+
await correlate(fresh);
|
|
2307
2372
|
const claimed = await fresh.claim(100, 0, `w-${uid()}`, 3e4);
|
|
2308
2373
|
const lease = claimed.find((l) => l.stream === target);
|
|
2309
2374
|
(0, import_vitest9.expect)(lease).toBeDefined();
|
|
@@ -2319,64 +2384,6 @@ var runStoreTck = (options) => {
|
|
|
2319
2384
|
}
|
|
2320
2385
|
});
|
|
2321
2386
|
});
|
|
2322
|
-
import_vitest9.describe.skipIf(!caps.pattern_claim_source)(
|
|
2323
|
-
"claim pattern source matching (capability)",
|
|
2324
|
-
() => {
|
|
2325
|
-
(0, import_vitest9.it)("claims a pattern-source target when any matched stream has work (^(A|B)$)", async () => {
|
|
2326
|
-
const fresh = await options.factory();
|
|
2327
|
-
try {
|
|
2328
|
-
await fresh.drop();
|
|
2329
|
-
await fresh.seed();
|
|
2330
|
-
const a = `A-${uid()}`;
|
|
2331
|
-
const b = `B-${uid()}`;
|
|
2332
|
-
const target = `board-${uid()}`;
|
|
2333
|
-
const pattern = `^(${a}|${b})$`;
|
|
2334
|
-
await fresh.subscribe([{ stream: target, source: pattern }]);
|
|
2335
|
-
const [ea] = await seed_stream(fresh, a, 1);
|
|
2336
|
-
const first = await fresh.claim(100, 0, `w-${uid()}`, 3e4);
|
|
2337
|
-
const l1 = first.find((s) => s.stream === target);
|
|
2338
|
-
(0, import_vitest9.expect)(l1).toBeDefined();
|
|
2339
|
-
await fresh.ack([{ ...l1, at: ea.id }]);
|
|
2340
|
-
const [eb] = await seed_stream(fresh, b, 1);
|
|
2341
|
-
const second = await fresh.claim(100, 0, `w-${uid()}`, 3e4);
|
|
2342
|
-
(0, import_vitest9.expect)(second.find((s) => s.stream === target)).toBeDefined();
|
|
2343
|
-
(0, import_vitest9.expect)(eb.stream).toBe(b);
|
|
2344
|
-
} finally {
|
|
2345
|
-
await fresh.dispose();
|
|
2346
|
-
}
|
|
2347
|
-
});
|
|
2348
|
-
(0, import_vitest9.it)("does not claim a pattern-source target when no matched stream has work", async () => {
|
|
2349
|
-
const fresh = await options.factory();
|
|
2350
|
-
try {
|
|
2351
|
-
await fresh.drop();
|
|
2352
|
-
await fresh.seed();
|
|
2353
|
-
const a = `A-${uid()}`;
|
|
2354
|
-
const b = `B-${uid()}`;
|
|
2355
|
-
const other = `Z-${uid()}`;
|
|
2356
|
-
const target = `board-${uid()}`;
|
|
2357
|
-
const control = `ctl-${uid()}`;
|
|
2358
|
-
const pattern = `^(${a}|${b})$`;
|
|
2359
|
-
await fresh.subscribe([
|
|
2360
|
-
{ stream: target, source: pattern },
|
|
2361
|
-
{ stream: control, source: other }
|
|
2362
|
-
]);
|
|
2363
|
-
const [ea] = await seed_stream(fresh, a, 1);
|
|
2364
|
-
const first = await fresh.claim(100, 0, `w-${uid()}`, 3e4);
|
|
2365
|
-
const l1 = first.find((s) => s.stream === target);
|
|
2366
|
-
(0, import_vitest9.expect)(l1).toBeDefined();
|
|
2367
|
-
(0, import_vitest9.expect)(first.map((s) => s.stream)).not.toContain(control);
|
|
2368
|
-
await fresh.ack([{ ...l1, at: ea.id }]);
|
|
2369
|
-
await seed_stream(fresh, other, 1);
|
|
2370
|
-
const claimed = await fresh.claim(100, 0, `w-${uid()}`, 3e4);
|
|
2371
|
-
const streams = claimed.map((s) => s.stream);
|
|
2372
|
-
(0, import_vitest9.expect)(streams).toContain(control);
|
|
2373
|
-
(0, import_vitest9.expect)(streams).not.toContain(target);
|
|
2374
|
-
} finally {
|
|
2375
|
-
await fresh.dispose();
|
|
2376
|
-
}
|
|
2377
|
-
});
|
|
2378
|
-
}
|
|
2379
|
-
);
|
|
2380
2387
|
import_vitest9.describe.skipIf(!caps.rejects_nonportable_claim_source)(
|
|
2381
2388
|
"claim source registration (capability)",
|
|
2382
2389
|
() => {
|
|
@@ -2394,23 +2401,6 @@ var runStoreTck = (options) => {
|
|
|
2394
2401
|
await fresh.dispose();
|
|
2395
2402
|
}
|
|
2396
2403
|
});
|
|
2397
|
-
(0, import_vitest9.it)("accepts a portable-subset pattern claim source (^prefix.*) and claims on match", async () => {
|
|
2398
|
-
const fresh = await options.factory();
|
|
2399
|
-
try {
|
|
2400
|
-
await fresh.drop();
|
|
2401
|
-
await fresh.seed();
|
|
2402
|
-
const prefix = `pfx${uid()}`.replace(/-/g, "");
|
|
2403
|
-
const matched = `${prefix}child`;
|
|
2404
|
-
const target = `board-${uid()}`;
|
|
2405
|
-
await fresh.subscribe([{ stream: target, source: `^${prefix}.*` }]);
|
|
2406
|
-
const [e] = await seed_stream(fresh, matched, 1);
|
|
2407
|
-
const claimed = await fresh.claim(100, 0, `w-${uid()}`, 3e4);
|
|
2408
|
-
(0, import_vitest9.expect)(claimed.find((s) => s.stream === target)).toBeDefined();
|
|
2409
|
-
(0, import_vitest9.expect)(e.stream).toBe(matched);
|
|
2410
|
-
} finally {
|
|
2411
|
-
await fresh.dispose();
|
|
2412
|
-
}
|
|
2413
|
-
});
|
|
2414
2404
|
}
|
|
2415
2405
|
);
|
|
2416
2406
|
import_vitest9.describe.skipIf(!caps.concurrent_claim)("concurrency (capability)", () => {
|
|
@@ -2432,6 +2422,7 @@ var runStoreTck = (options) => {
|
|
|
2432
2422
|
);
|
|
2433
2423
|
}
|
|
2434
2424
|
const owned = new Set(streams);
|
|
2425
|
+
await correlate(fresh);
|
|
2435
2426
|
const [a, b] = await Promise.all([
|
|
2436
2427
|
fresh.claim(100, 100, `wA-${uid()}`, 6e4),
|
|
2437
2428
|
fresh.claim(100, 100, `wB-${uid()}`, 6e4)
|
|
@@ -2452,10 +2443,12 @@ var runStoreTck = (options) => {
|
|
|
2452
2443
|
const other = `unexpired-other-${uid()}`;
|
|
2453
2444
|
await fresh.subscribe([{ stream: s }]);
|
|
2454
2445
|
await seed_stream(fresh, s, 1);
|
|
2446
|
+
await correlate(fresh);
|
|
2455
2447
|
const a = await fresh.claim(100, 100, `wA-${uid()}`, 6e4);
|
|
2456
2448
|
(0, import_vitest9.expect)(a.find((l) => l.stream === s)).toBeDefined();
|
|
2457
2449
|
await fresh.subscribe([{ stream: other }]);
|
|
2458
2450
|
await seed_stream(fresh, other, 1);
|
|
2451
|
+
await correlate(fresh);
|
|
2459
2452
|
const b = await fresh.claim(100, 100, `wB-${uid()}`, 6e4);
|
|
2460
2453
|
(0, import_vitest9.expect)(b.find((l) => l.stream === other)).toBeDefined();
|
|
2461
2454
|
(0, import_vitest9.expect)(b.find((l) => l.stream === s)).toBeUndefined();
|
|
@@ -2471,6 +2464,7 @@ var runStoreTck = (options) => {
|
|
|
2471
2464
|
const s = `expired-${uid()}`;
|
|
2472
2465
|
await fresh.subscribe([{ stream: s }]);
|
|
2473
2466
|
const [e1] = await seed_stream(fresh, s, 1);
|
|
2467
|
+
await correlate(fresh);
|
|
2474
2468
|
const dead = await fresh.claim(100, 0, `wDead-${uid()}`, 0);
|
|
2475
2469
|
(0, import_vitest9.expect)(dead.find((l) => l.stream === s)?.retry).toBe(0);
|
|
2476
2470
|
const [b, c] = await Promise.all([
|
|
@@ -2482,6 +2476,7 @@ var runStoreTck = (options) => {
|
|
|
2482
2476
|
(0, import_vitest9.expect)(winners[0].retry).toBe(1);
|
|
2483
2477
|
await fresh.ack([{ ...winners[0], at: e1.id }]);
|
|
2484
2478
|
await seed_stream(fresh, s, 1);
|
|
2479
|
+
await correlate(fresh);
|
|
2485
2480
|
const again = await fresh.claim(100, 0, `wNext-${uid()}`, 6e4);
|
|
2486
2481
|
(0, import_vitest9.expect)(again.find((l) => l.stream === s)?.retry).toBe(0);
|
|
2487
2482
|
} finally {
|
|
@@ -2498,6 +2493,7 @@ var runStoreTck = (options) => {
|
|
|
2498
2493
|
[inc(1)],
|
|
2499
2494
|
make_meta({ stream: s })
|
|
2500
2495
|
);
|
|
2496
|
+
await correlate();
|
|
2501
2497
|
const leased = await store.claim(100, 0, `w-${uid()}`, 1e5);
|
|
2502
2498
|
const mine = leased.find((l) => l.stream === s);
|
|
2503
2499
|
(0, import_vitest9.expect)(mine).toBeDefined();
|
|
@@ -2508,6 +2504,7 @@ var runStoreTck = (options) => {
|
|
|
2508
2504
|
]);
|
|
2509
2505
|
(0, import_vitest9.expect)(blocked).toHaveLength(1);
|
|
2510
2506
|
(0, import_vitest9.expect)(blocked[0].error).toBe("boom");
|
|
2507
|
+
await correlate();
|
|
2511
2508
|
const again = await store.claim(100, 100, `w2-${uid()}`, 1e5);
|
|
2512
2509
|
(0, import_vitest9.expect)(again.find((l) => l.stream === s)).toBeUndefined();
|
|
2513
2510
|
});
|
|
@@ -2519,6 +2516,7 @@ var runStoreTck = (options) => {
|
|
|
2519
2516
|
[inc(1)],
|
|
2520
2517
|
make_meta({ stream: s })
|
|
2521
2518
|
);
|
|
2519
|
+
await correlate();
|
|
2522
2520
|
const leased = await store.claim(100, 0, `w-${uid()}`, 1e5);
|
|
2523
2521
|
const mine = leased.find((l) => l.stream === s);
|
|
2524
2522
|
(0, import_vitest9.expect)(mine).toBeDefined();
|
|
@@ -2544,6 +2542,7 @@ var runStoreTck = (options) => {
|
|
|
2544
2542
|
[inc(1)],
|
|
2545
2543
|
make_meta({ stream: s })
|
|
2546
2544
|
);
|
|
2545
|
+
await correlate();
|
|
2547
2546
|
const leased = await store.claim(100, 0, `right-${uid()}`, 1e5);
|
|
2548
2547
|
const mine = leased.find((l) => l.stream === s);
|
|
2549
2548
|
(0, import_vitest9.expect)(mine).toBeDefined();
|
|
@@ -2562,6 +2561,7 @@ var runStoreTck = (options) => {
|
|
|
2562
2561
|
[inc(1)],
|
|
2563
2562
|
make_meta({ stream: s })
|
|
2564
2563
|
);
|
|
2564
|
+
await correlate();
|
|
2565
2565
|
const leased = await store.claim(100, 0, `w-${uid()}`, 1e5);
|
|
2566
2566
|
const mine = leased.find((l) => l.stream === s);
|
|
2567
2567
|
(0, import_vitest9.expect)(mine).toBeDefined();
|
|
@@ -2588,6 +2588,7 @@ var runStoreTck = (options) => {
|
|
|
2588
2588
|
make_meta({ stream: st })
|
|
2589
2589
|
);
|
|
2590
2590
|
(0, import_vitest9.expect)(await store.defer([s], Date.now() + 36e5)).toBe(1);
|
|
2591
|
+
await correlate();
|
|
2591
2592
|
const leased = await store.claim(100, 100, `w-${uid()}`, 1e5);
|
|
2592
2593
|
(0, import_vitest9.expect)(leased.find((l) => l.stream === ctl)).toBeDefined();
|
|
2593
2594
|
(0, import_vitest9.expect)(leased.find((l) => l.stream === s)).toBeUndefined();
|
|
@@ -2601,6 +2602,7 @@ var runStoreTck = (options) => {
|
|
|
2601
2602
|
make_meta({ stream: s })
|
|
2602
2603
|
);
|
|
2603
2604
|
(0, import_vitest9.expect)(await store.defer([s], Date.now() - 1e3)).toBe(1);
|
|
2605
|
+
await correlate();
|
|
2604
2606
|
const leased = await store.claim(100, 100, `w-${uid()}`, 1e5);
|
|
2605
2607
|
const mine = leased.find((l) => l.stream === s);
|
|
2606
2608
|
(0, import_vitest9.expect)(mine).toBeDefined();
|
|
@@ -2617,9 +2619,12 @@ var runStoreTck = (options) => {
|
|
|
2617
2619
|
make_meta({ stream: s })
|
|
2618
2620
|
);
|
|
2619
2621
|
await store.defer([s], Date.now() + 36e5);
|
|
2622
|
+
await correlate();
|
|
2620
2623
|
await store.claim(100, 100, `w1-${uid()}`, 1e5);
|
|
2624
|
+
await correlate();
|
|
2621
2625
|
await store.claim(100, 100, `w2-${uid()}`, 1e5);
|
|
2622
2626
|
await store.defer([s], Date.now() - 1e3);
|
|
2627
|
+
await correlate();
|
|
2623
2628
|
const leased = await store.claim(100, 100, `w3-${uid()}`, 1e5);
|
|
2624
2629
|
const mine = leased.find((l) => l.stream === s);
|
|
2625
2630
|
(0, import_vitest9.expect)(mine).toBeDefined();
|
|
@@ -2638,6 +2643,7 @@ var runStoreTck = (options) => {
|
|
|
2638
2643
|
);
|
|
2639
2644
|
await store.defer([s], Date.now() + 36e5);
|
|
2640
2645
|
(0, import_vitest9.expect)(await store.reset([s])).toBe(1);
|
|
2646
|
+
await correlate();
|
|
2641
2647
|
const leased = await store.claim(100, 100, `w-${uid()}`, 1e5);
|
|
2642
2648
|
(0, import_vitest9.expect)(leased.find((l) => l.stream === s)).toBeDefined();
|
|
2643
2649
|
});
|
|
@@ -2686,6 +2692,7 @@ var runStoreTck = (options) => {
|
|
|
2686
2692
|
Date.now() + 36e5
|
|
2687
2693
|
);
|
|
2688
2694
|
(0, import_vitest9.expect)(n).toBe(2);
|
|
2695
|
+
await correlate();
|
|
2689
2696
|
const leased = await store.claim(100, 100, `w-${uid()}`, 1e5);
|
|
2690
2697
|
(0, import_vitest9.expect)(leased.find((l) => l.stream === ctl)).toBeDefined();
|
|
2691
2698
|
(0, import_vitest9.expect)(leased.find((l) => l.stream === a)).toBeUndefined();
|
|
@@ -2721,6 +2728,7 @@ var runStoreTck = (options) => {
|
|
|
2721
2728
|
[inc(1)],
|
|
2722
2729
|
make_meta({ stream: ctl })
|
|
2723
2730
|
);
|
|
2731
|
+
await correlate();
|
|
2724
2732
|
const leased = await store.claim(100, 100, `w-${uid()}`, 1e5);
|
|
2725
2733
|
const s_lease = leased.find((l) => l.stream === s);
|
|
2726
2734
|
const ctl_lease = leased.find((l) => l.stream === ctl);
|
|
@@ -2735,6 +2743,7 @@ var runStoreTck = (options) => {
|
|
|
2735
2743
|
[inc(2)],
|
|
2736
2744
|
make_meta({ stream: ctl })
|
|
2737
2745
|
);
|
|
2746
|
+
await correlate();
|
|
2738
2747
|
const again = await store.claim(100, 100, `w-${uid()}`, 1e5);
|
|
2739
2748
|
(0, import_vitest9.expect)(again.find((l) => l.stream === ctl)).toBeDefined();
|
|
2740
2749
|
(0, import_vitest9.expect)(again.find((l) => l.stream === s)).toBeUndefined();
|
|
@@ -2747,9 +2756,11 @@ var runStoreTck = (options) => {
|
|
|
2747
2756
|
[inc(1)],
|
|
2748
2757
|
make_meta({ stream: s })
|
|
2749
2758
|
);
|
|
2759
|
+
await correlate();
|
|
2750
2760
|
const leased = await store.claim(100, 100, `w-${uid()}`, 1e5);
|
|
2751
2761
|
const mine = leased.find((l) => l.stream === s);
|
|
2752
2762
|
await store.ack([{ ...mine, due: Date.now() - 1e3, retry: -1 }]);
|
|
2763
|
+
await correlate();
|
|
2753
2764
|
const again = await store.claim(100, 100, `w-${uid()}`, 1e5);
|
|
2754
2765
|
const re = again.find((l) => l.stream === s);
|
|
2755
2766
|
(0, import_vitest9.expect)(re).toBeDefined();
|
|
@@ -2765,9 +2776,11 @@ var runStoreTck = (options) => {
|
|
|
2765
2776
|
[inc(1)],
|
|
2766
2777
|
make_meta({ stream: s })
|
|
2767
2778
|
);
|
|
2779
|
+
await correlate();
|
|
2768
2780
|
const leased = await store.claim(100, 100, `w-${uid()}`, 1e5);
|
|
2769
2781
|
const mine = leased.find((l) => l.stream === s);
|
|
2770
2782
|
await store.ack([{ ...mine, due: Date.now() - 1e3, retry: 3 }]);
|
|
2783
|
+
await correlate();
|
|
2771
2784
|
const again = await store.claim(100, 100, `w-${uid()}`, 1e5);
|
|
2772
2785
|
const re = again.find((l) => l.stream === s);
|
|
2773
2786
|
(0, import_vitest9.expect)(re).toBeDefined();
|
|
@@ -2788,12 +2801,14 @@ var runStoreTck = (options) => {
|
|
|
2788
2801
|
[inc(1)],
|
|
2789
2802
|
make_meta({ stream: s })
|
|
2790
2803
|
);
|
|
2804
|
+
await correlate();
|
|
2791
2805
|
const leased = await store.claim(100, 100, `w-${uid()}`, 1e5);
|
|
2792
2806
|
const mine = leased.find((l) => l.stream === s);
|
|
2793
2807
|
(0, import_vitest9.expect)(mine.at).toBeLessThan(e1.id);
|
|
2794
2808
|
await store.ack([
|
|
2795
2809
|
{ ...mine, at: e1.id, due: Date.now() - 1e3, retry: 2 }
|
|
2796
2810
|
]);
|
|
2811
|
+
await correlate();
|
|
2797
2812
|
const again = await store.claim(100, 100, `w-${uid()}`, 1e5);
|
|
2798
2813
|
const re = again.find((l) => l.stream === s);
|
|
2799
2814
|
(0, import_vitest9.expect)(re).toBeDefined();
|
|
@@ -2809,6 +2824,7 @@ var runStoreTck = (options) => {
|
|
|
2809
2824
|
[inc(1)],
|
|
2810
2825
|
make_meta({ stream: s })
|
|
2811
2826
|
);
|
|
2827
|
+
await correlate();
|
|
2812
2828
|
const leased = await store.claim(100, 100, `w-${uid()}`, 1e5);
|
|
2813
2829
|
const mine = leased.find((l) => l.stream === s);
|
|
2814
2830
|
await store.ack([
|
|
@@ -2827,11 +2843,13 @@ var runStoreTck = (options) => {
|
|
|
2827
2843
|
[inc(1)],
|
|
2828
2844
|
make_meta({ stream: s })
|
|
2829
2845
|
);
|
|
2846
|
+
await correlate();
|
|
2830
2847
|
const leased = await store.claim(100, 0, `w-${uid()}`, 1e5);
|
|
2831
2848
|
const mine = leased.find((l) => l.stream === s);
|
|
2832
2849
|
(0, import_vitest9.expect)(mine).toBeDefined();
|
|
2833
2850
|
await store.ack([{ ...mine, at: 99 }]);
|
|
2834
2851
|
(0, import_vitest9.expect)(await store.reset([s])).toBe(1);
|
|
2852
|
+
await correlate();
|
|
2835
2853
|
const after = await store.claim(100, 0, `w2-${uid()}`, 1e5);
|
|
2836
2854
|
const back = after.find((l) => l.stream === s);
|
|
2837
2855
|
(0, import_vitest9.expect)(back).toBeDefined();
|
|
@@ -2845,12 +2863,14 @@ var runStoreTck = (options) => {
|
|
|
2845
2863
|
[inc(1)],
|
|
2846
2864
|
make_meta({ stream: s })
|
|
2847
2865
|
);
|
|
2866
|
+
await correlate();
|
|
2848
2867
|
const leased = await store.claim(100, 0, `w-${uid()}`, 1e5);
|
|
2849
2868
|
const mine = leased.find((l) => l.stream === s);
|
|
2850
2869
|
const others = leased.filter((l) => l.stream !== s);
|
|
2851
2870
|
await store.ack(others);
|
|
2852
2871
|
await store.block([{ ...mine, error: "boom" }]);
|
|
2853
2872
|
(0, import_vitest9.expect)(await store.reset([s])).toBe(1);
|
|
2873
|
+
await correlate();
|
|
2854
2874
|
const after = await store.claim(100, 0, `w2-${uid()}`, 1e5);
|
|
2855
2875
|
(0, import_vitest9.expect)(after.find((l) => l.stream === s)).toBeDefined();
|
|
2856
2876
|
});
|
|
@@ -2883,9 +2903,11 @@ var runStoreTck = (options) => {
|
|
|
2883
2903
|
[inc(2)],
|
|
2884
2904
|
make_meta({ stream: s })
|
|
2885
2905
|
);
|
|
2906
|
+
await correlate();
|
|
2886
2907
|
const first = await store.claim(100, 0, `w-${uid()}`, 1e5);
|
|
2887
2908
|
const m1 = first.find((l) => l.stream === s);
|
|
2888
2909
|
await store.ack([{ ...m1, at: m1.at }]);
|
|
2910
|
+
await correlate();
|
|
2889
2911
|
const before_block = await store.claim(100, 0, `w-${uid()}`, 1e5);
|
|
2890
2912
|
const m2 = before_block.find((l) => l.stream === s);
|
|
2891
2913
|
(0, import_vitest9.expect)(m2).toBeDefined();
|
|
@@ -2900,6 +2922,7 @@ var runStoreTck = (options) => {
|
|
|
2900
2922
|
);
|
|
2901
2923
|
(0, import_vitest9.expect)(blocked_flag).toBe(true);
|
|
2902
2924
|
(0, import_vitest9.expect)(await store.unblock([s])).toBe(1);
|
|
2925
|
+
await correlate();
|
|
2903
2926
|
const after = await store.claim(100, 0, `w-${uid()}`, 1e5);
|
|
2904
2927
|
const back = after.find((l) => l.stream === s);
|
|
2905
2928
|
(0, import_vitest9.expect)(back).toBeDefined();
|
|
@@ -2934,6 +2957,7 @@ var runStoreTck = (options) => {
|
|
|
2934
2957
|
[inc(1)],
|
|
2935
2958
|
make_meta({ stream: s2 })
|
|
2936
2959
|
);
|
|
2960
|
+
await correlate();
|
|
2937
2961
|
const leased = await store.claim(100, 0, `w-${uid()}`, 1e5);
|
|
2938
2962
|
const m1 = leased.find((l) => l.stream === s1);
|
|
2939
2963
|
const others = leased.filter((l) => l.stream !== s1);
|
|
@@ -2962,6 +2986,7 @@ var runStoreTck = (options) => {
|
|
|
2962
2986
|
[inc(1)],
|
|
2963
2987
|
make_meta({ stream: s3 })
|
|
2964
2988
|
);
|
|
2989
|
+
await correlate();
|
|
2965
2990
|
const leased = await store.claim(100, 0, `w-${uid()}`, 1e5);
|
|
2966
2991
|
const blockable = leased.filter((l) => l.stream === s1 || l.stream === s2 || l.stream === s3).map((l) => ({ ...l, error: "boom" }));
|
|
2967
2992
|
await store.ack(
|
|
@@ -2974,6 +2999,7 @@ var runStoreTck = (options) => {
|
|
|
2974
2999
|
stream: `^unblock-filter-${tag}-`
|
|
2975
3000
|
});
|
|
2976
3001
|
(0, import_vitest9.expect)(count).toBe(2);
|
|
3002
|
+
await correlate();
|
|
2977
3003
|
const after = await store.claim(100, 0, `w-${uid()}`, 1e5);
|
|
2978
3004
|
(0, import_vitest9.expect)(after.find((l) => l.stream === s3)).toBeUndefined();
|
|
2979
3005
|
(0, import_vitest9.expect)(after.find((l) => l.stream === s1)).toBeDefined();
|
|
@@ -2994,6 +3020,7 @@ var runStoreTck = (options) => {
|
|
|
2994
3020
|
[inc(1)],
|
|
2995
3021
|
make_meta({ stream: s2 })
|
|
2996
3022
|
);
|
|
3023
|
+
await correlate();
|
|
2997
3024
|
const leased = await store.claim(100, 0, `w-${uid()}`, 1e5);
|
|
2998
3025
|
const mine = leased.filter((l) => l.stream === s1 || l.stream === s2);
|
|
2999
3026
|
await store.ack(leased.filter((l) => !mine.includes(l)));
|
|
@@ -3048,6 +3075,7 @@ var runStoreTck = (options) => {
|
|
|
3048
3075
|
[inc(1)],
|
|
3049
3076
|
make_meta({ stream: other })
|
|
3050
3077
|
);
|
|
3078
|
+
await correlate();
|
|
3051
3079
|
const leased = await store.claim(100, 0, `w-${uid()}`, 1e5);
|
|
3052
3080
|
const mine = leased.filter(
|
|
3053
3081
|
(l) => l.stream === s1 || l.stream === s2 || l.stream === other
|
|
@@ -3084,6 +3112,7 @@ var runStoreTck = (options) => {
|
|
|
3084
3112
|
[inc(1)],
|
|
3085
3113
|
make_meta({ stream: s2 })
|
|
3086
3114
|
);
|
|
3115
|
+
await correlate();
|
|
3087
3116
|
const leased = await store.claim(100, 0, `w-${uid()}`, 1e5);
|
|
3088
3117
|
const m1 = leased.find((l) => l.stream === s1);
|
|
3089
3118
|
await store.ack(leased.filter((l) => l.stream !== s1));
|
|
@@ -3174,6 +3203,7 @@ var runStoreTck = (options) => {
|
|
|
3174
3203
|
{ stream: sub_default, source: src1 },
|
|
3175
3204
|
{ stream: sub_slow, source: src2, lane: "slow" }
|
|
3176
3205
|
]);
|
|
3206
|
+
await correlate();
|
|
3177
3207
|
const slow = await store.claim(50, 0, `w-slow-${tag}`, 1e3, "slow");
|
|
3178
3208
|
const slow_mine = slow.filter(
|
|
3179
3209
|
(l) => l.stream === sub_default || l.stream === sub_slow
|
|
@@ -3181,6 +3211,7 @@ var runStoreTck = (options) => {
|
|
|
3181
3211
|
(0, import_vitest9.expect)(slow_mine.map((l) => l.stream)).toEqual([sub_slow]);
|
|
3182
3212
|
(0, import_vitest9.expect)(slow_mine[0]?.lane).toBe("slow");
|
|
3183
3213
|
await store.ack(slow_mine.map((l) => ({ ...l, at: l.at + 1 })));
|
|
3214
|
+
await correlate();
|
|
3184
3215
|
const all = await store.claim(50, 0, `w-all-${tag}`, 1e3);
|
|
3185
3216
|
const all_mine = all.filter((l) => l.stream === sub_default || l.stream === sub_slow).map((l) => ({ stream: l.stream, lane: l.lane }));
|
|
3186
3217
|
(0, import_vitest9.expect)(all_mine).toEqual(
|
|
@@ -3240,6 +3271,7 @@ var runStoreTck = (options) => {
|
|
|
3240
3271
|
{ stream: a, source: src, lane: `rslow-${tag}` },
|
|
3241
3272
|
{ stream: b, source: src, lane: `rfast-${tag}` }
|
|
3242
3273
|
]);
|
|
3274
|
+
await correlate();
|
|
3243
3275
|
const leases = await store.claim(50, 0, `w-${tag}`, 5e3);
|
|
3244
3276
|
const mine = leases.filter((l) => l.stream === a || l.stream === b);
|
|
3245
3277
|
await store.ack(mine.map((l) => ({ ...l, at: l.at + 1 })));
|
|
@@ -3269,6 +3301,7 @@ var runStoreTck = (options) => {
|
|
|
3269
3301
|
{ stream: a, source: src, lane: `uslow-${tag}` },
|
|
3270
3302
|
{ stream: b, source: src, lane: `ufast-${tag}` }
|
|
3271
3303
|
]);
|
|
3304
|
+
await correlate();
|
|
3272
3305
|
const leases = await store.claim(50, 0, `w-${tag}`, 5e3);
|
|
3273
3306
|
const mine = leases.filter((l) => l.stream === a || l.stream === b);
|
|
3274
3307
|
await store.block(mine.map((l) => ({ ...l, error: "boom" })));
|
|
@@ -3659,6 +3692,7 @@ var runStoreTck = (options) => {
|
|
|
3659
3692
|
[inc(1)],
|
|
3660
3693
|
make_meta({ stream: s })
|
|
3661
3694
|
);
|
|
3695
|
+
await correlate();
|
|
3662
3696
|
const leased = await store.claim(100, 0, `w-${uid()}`, 1e5);
|
|
3663
3697
|
const mine = leased.find((l) => l.stream === s);
|
|
3664
3698
|
const others = leased.filter((l) => l.stream !== s);
|
|
@@ -3907,6 +3941,7 @@ var runStoreTck = (options) => {
|
|
|
3907
3941
|
[inc(2)],
|
|
3908
3942
|
make_meta({ stream: b })
|
|
3909
3943
|
);
|
|
3944
|
+
await correlate();
|
|
3910
3945
|
const leased = await store.claim(100, 0, `w-${uid()}`, 1e5);
|
|
3911
3946
|
const mine = leased.find((l) => l.stream === a);
|
|
3912
3947
|
(0, import_vitest9.expect)(mine).toBeDefined();
|