























@@ -1723,62 +1723,60 @@ describe("matrix live qa scenarios", () => {
1723172317241724const scenario = requireMatrixQaScenario("matrix-stale-sync-replay-dedupe");
172517251726-await expect(
1727-runMatrixQaScenario(scenario, {
1728- ...matrixQaScenarioContext(),
1729-gatewayStateDir: stateRoot,
1730-restartGatewayAfterStateMutation: async (mutateState) => {
1731-callOrder.push("hard-restart");
1732-await writeTestJsonFile(
1733-syncStorePath,
1734-matrixSyncStoreFixture("driver-sync-after-first"),
1735-);
1736-await mutateState({ stateDir: stateRoot });
1737-const persisted = JSON.parse(await readFile(syncStorePath, "utf8")) as {
1738-savedSync?: { nextBatch?: string };
1739-};
1740-expect(persisted.savedSync?.nextBatch).toBe("driver-sync-start");
1741-},
1742-roomId: "!room:matrix-qa.test",
1743-sutAccountId: "sut",
1744-topology: {
1745-defaultRoomId: "!room:matrix-qa.test",
1746-defaultRoomKey: "main",
1747-rooms: [
1748-{
1749-key: "stale-sync",
1750-kind: "group",
1751-memberRoles: ["driver", "observer", "sut"],
1752-memberUserIds: [
1753-"@driver:matrix-qa.test",
1754-"@observer:matrix-qa.test",
1755-"@sut:matrix-qa.test",
1756-],
1757-name: "Stale sync room",
1758-requireMention: true,
1759-roomId: staleSyncRoomId,
1760-},
1761-],
1762-},
1763-}),
1764-).resolves.toMatchObject({
1765-artifacts: {
1766-dedupeCommitObserved: true,
1767-duplicateWindowMs: 8000,
1768-firstDriverEventId: "$first-trigger",
1769-firstReply: {
1770-eventId: "$first-reply",
1771-tokenMatched: true,
1772-},
1773-freshDriverEventId: "$fresh-trigger",
1774-freshReply: {
1775-eventId: "$fresh-reply",
1776-tokenMatched: true,
1777-},
1778-restartSignal: "hard-restart",
1779-staleSyncCursor: "driver-sync-start",
1726+const result = await runMatrixQaScenario(scenario, {
1727+ ...matrixQaScenarioContext(),
1728+gatewayStateDir: stateRoot,
1729+restartGatewayAfterStateMutation: async (mutateState) => {
1730+callOrder.push("hard-restart");
1731+await writeTestJsonFile(syncStorePath, matrixSyncStoreFixture("driver-sync-after-first"));
1732+await mutateState({ stateDir: stateRoot });
1733+const persisted = JSON.parse(await readFile(syncStorePath, "utf8")) as {
1734+savedSync?: { nextBatch?: string };
1735+};
1736+expect(persisted.savedSync?.nextBatch).toBe("driver-sync-start");
1737+},
1738+roomId: "!room:matrix-qa.test",
1739+sutAccountId: "sut",
1740+topology: {
1741+defaultRoomId: "!room:matrix-qa.test",
1742+defaultRoomKey: "main",
1743+rooms: [
1744+{
1745+key: "stale-sync",
1746+kind: "group",
1747+memberRoles: ["driver", "observer", "sut"],
1748+memberUserIds: [
1749+"@driver:matrix-qa.test",
1750+"@observer:matrix-qa.test",
1751+"@sut:matrix-qa.test",
1752+],
1753+name: "Stale sync room",
1754+requireMention: true,
1755+roomId: staleSyncRoomId,
1756+},
1757+],
17801758},
17811759});
1760+const artifacts = result.artifacts as {
1761+dedupeCommitObserved?: unknown;
1762+duplicateWindowMs?: unknown;
1763+firstDriverEventId?: unknown;
1764+firstReply?: { eventId?: unknown; tokenMatched?: unknown };
1765+freshDriverEventId?: unknown;
1766+freshReply?: { eventId?: unknown; tokenMatched?: unknown };
1767+restartSignal?: unknown;
1768+staleSyncCursor?: unknown;
1769+};
1770+expect(artifacts.dedupeCommitObserved).toBe(true);
1771+expect(artifacts.duplicateWindowMs).toBe(8000);
1772+expect(artifacts.firstDriverEventId).toBe("$first-trigger");
1773+expect(artifacts.firstReply?.eventId).toBe("$first-reply");
1774+expect(artifacts.firstReply?.tokenMatched).toBe(true);
1775+expect(artifacts.freshDriverEventId).toBe("$fresh-trigger");
1776+expect(artifacts.freshReply?.eventId).toBe("$fresh-reply");
1777+expect(artifacts.freshReply?.tokenMatched).toBe(true);
1778+expect(artifacts.restartSignal).toBe("hard-restart");
1779+expect(artifacts.staleSyncCursor).toBe("driver-sync-start");
1782178017831781expect(callOrder).toEqual([
17841782"send:first",
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。