From a26b1064f7449b7e5efa7588a12bc2765656ae73 Mon Sep 17 00:00:00 2001 From: e11sy <130844513+e11sy@users.noreply.github.com> Date: Tue, 4 Nov 2025 19:10:59 +0300 Subject: [PATCH] chore(tests): fix test speed (#468) --- jest.config.js | 2 ++ jest.global-teardown.js | 9 +++++++++ jest.setup.mongo-repl-set.js | 6 +++--- workers/archiver/src/index.ts | 16 +++++++++------- 4 files changed, 23 insertions(+), 10 deletions(-) create mode 100644 jest.global-teardown.js diff --git a/jest.config.js b/jest.config.js index f805cf642..6887a5b2e 100644 --- a/jest.config.js +++ b/jest.config.js @@ -28,4 +28,6 @@ module.exports = { setupFiles: [ './jest.setup.js' ], setupFilesAfterEnv: ['./jest.setup.redis-mock.js', './jest.setup.mongo-repl-set.js'], + + globalTeardown: './jest.global-teardown.js', }; diff --git a/jest.global-teardown.js b/jest.global-teardown.js new file mode 100644 index 000000000..4ee0b59aa --- /dev/null +++ b/jest.global-teardown.js @@ -0,0 +1,9 @@ +const process = require('process'); + +module.exports = () => { + if (process.env.CI) { + setTimeout(() => { + process.exit(0); + }, 1000); + } +} \ No newline at end of file diff --git a/jest.setup.mongo-repl-set.js b/jest.setup.mongo-repl-set.js index 2cb302f81..14b15095d 100644 --- a/jest.setup.mongo-repl-set.js +++ b/jest.setup.mongo-repl-set.js @@ -28,15 +28,15 @@ beforeAll(async () => { * Wait for the replica set to initialize all nodes */ do { - await new Promise(resolve => setTimeout(resolve, 1000)); status = await admin.command({ replSetGetStatus: 1 }); const primary = status.members.find(member => member.stateStr === 'PRIMARY'); - const secondary = status.members.find(member => member.stateStr === 'SECONDARY'); - if (primary && secondary) { + if (primary) { break; } + + await new Promise(resolve => setTimeout(resolve, 1000)); } while (Date.now() - startTime < timeout); console.log('✅ Replica set is stable'); diff --git a/workers/archiver/src/index.ts b/workers/archiver/src/index.ts index d45c863f2..18d39de4d 100644 --- a/workers/archiver/src/index.ts +++ b/workers/archiver/src/index.ts @@ -1,7 +1,6 @@ import { DatabaseController } from '../../../lib/db/controller'; import { Worker } from '../../../lib/worker'; import * as pkg from '../package.json'; -import asyncForEach from '../../../lib/utils/asyncForEach'; import { Collection, Db, GridFSBucket, ObjectId, ObjectID } from 'mongodb'; import axios from 'axios'; import { ReleaseFileData, ReleaseRecord, ReportData, ReportDataByProject } from './types'; @@ -85,10 +84,13 @@ export default class ArchiverWorker extends Worker { this.logger.info(`Start archiving at ${startDate}`); - const projects = await this.projectCollection.find({}).toArray(); + const projects = await this.projectCollection.find({}).project({ + _id: 1, + name: 1 + }); const projectsData: ReportDataByProject[] = []; - await asyncForEach(projects, async (project) => { + for await (const project of projects) { const archivedEventsCount = await this.archiveProjectEvents(project); const removedReleasesCount = await this.removeOldReleases(project); @@ -98,7 +100,7 @@ export default class ArchiverWorker extends Worker { archivedEventsCount, removedReleasesCount, }); - }); + } const finishDate = new Date(); const dbSizeOnFinish = (await this.eventsDbConnection.stats()).dataSize; @@ -347,9 +349,9 @@ export default class ArchiverWorker extends Worker { }); this.logger.info('Report notification response:', { - status: response.status, - statusText: response.statusText, - data: response.data + status: response?.status, + statusText: response?.statusText, + data: response?.data }); }