FN-6325: speed up core stability tests

Classify the archive FTS churn and merge-queue hook timeouts as deterministic test-cost fixes instead of quarantines.

- Reduce the archive FTS churn fixture while preserving rebuild shrinkage and search coverage.
- Use in-memory TaskStore setup for merge-queue cases that do not require disk persistence.
- Keep disk-backed coverage for legacy migration and competing-store lease arbitration.
- Verification: targeted archive FTS + merge-queue run passed in 7.47s versus 27.69s before the fix.

Files changed:
 .../core/src/__tests__/archive-db-fts-maintenance.test.ts |  6 +++---
 packages/core/src/__tests__/store-merge-queue.test.ts     | 15 ++++++++++-----
 2 files changed, 13 insertions(+), 8 deletions(-)

Fusion-Task-Id: FN-6325

Fusion-Task-Lineage: a6191c99-f7f1-4766-9e01-ccc3f0673bcd
This commit is contained in:
gsxdsm
2026-06-13 01:23:15 -07:00
parent e00aac8672
commit ae1a889d48
2 changed files with 13 additions and 8 deletions

View File

@@ -60,8 +60,8 @@ describe("ArchiveDatabase FTS maintenance", () => {
return;
}
const payload = "alpha ".repeat(1200);
for (let i = 0; i < 180; i++) {
const payload = "alpha ".repeat(400);
for (let i = 0; i < 72; i++) {
archive.upsert(makeEntry("FN-ARCHIVE-1", {
archivedAt: new Date(1717372800000 + i * 1000).toISOString(),
updatedAt: new Date(1717372800000 + i * 1000).toISOString(),
@@ -81,7 +81,7 @@ describe("ArchiveDatabase FTS maintenance", () => {
expect(rebuiltBytes).not.toBeNull();
expect(rebuiltBytes!).toBeLessThan(grownBytes!);
expect(rebuiltBytes!).toBeLessThan(1 * 1024 * 1024);
expect(archive.search("release-note-179", 10).map((entry) => entry.id)).toContain("FN-ARCHIVE-1");
expect(archive.search("release-note-71", 10).map((entry) => entry.id)).toContain("FN-ARCHIVE-1");
} finally {
archive.close();
await rm(dir, { recursive: true, force: true });

View File

@@ -18,7 +18,7 @@ describe("TaskStore merge queue", () => {
beforeEach(async () => {
rootDir = makeTmpDir();
globalDir = join(rootDir, ".fusion-global");
store = new TaskStore(rootDir, globalDir);
store = new TaskStore(rootDir, globalDir, { inMemoryDb: true });
await store.init();
});
@@ -64,6 +64,10 @@ describe("TaskStore merge queue", () => {
});
it("migrates a legacy v88 database and preserves task rows", async () => {
store.close();
store = new TaskStore(rootDir, globalDir);
await store.init();
const existingTask = await store.createTask({ description: "legacy row survives", priority: "high" });
const db = store.getDatabase();
db.exec("DROP INDEX IF EXISTS idx_mergeQueue_lease_ready");
@@ -404,10 +408,11 @@ describe("TaskStore merge queue", () => {
});
it("allows exactly one worker to lease a single queued task across competing stores", async () => {
const storeA = new TaskStore(rootDir, globalDir);
store.close();
store = new TaskStore(rootDir, globalDir);
const storeB = new TaskStore(rootDir, globalDir);
extraStores.push(storeA, storeB);
await storeA.init();
extraStores.push(storeB);
await store.init();
await storeB.init();
const taskId = await createInReviewTask();
@@ -415,7 +420,7 @@ describe("TaskStore merge queue", () => {
for (let index = 0; index < 20; index += 1) {
store.enqueueMergeQueue(taskId, { now: `2026-05-19T00:00:${String(index).padStart(2, "0")}.000Z` });
const [leaseA, leaseB] = await Promise.all([
Promise.resolve().then(() => storeA.acquireMergeQueueLease("worker-a", { leaseDurationMs: 60_000, now: `2026-05-19T00:10:${String(index).padStart(2, "0")}.000Z` })),
Promise.resolve().then(() => store.acquireMergeQueueLease("worker-a", { leaseDurationMs: 60_000, now: `2026-05-19T00:10:${String(index).padStart(2, "0")}.000Z` })),
Promise.resolve().then(() => storeB.acquireMergeQueueLease("worker-b", { leaseDurationMs: 60_000, now: `2026-05-19T00:10:${String(index).padStart(2, "0")}.000Z` })),
]);