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:
@@ -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 });
|
||||
|
||||
@@ -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` })),
|
||||
]);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user