Skip to content

Commit b2c9714

Browse files
committed
FIX tests err + ADD cluster mode
1 parent c5099ee commit b2c9714

File tree

7 files changed

+43
-128
lines changed

7 files changed

+43
-128
lines changed

service/src/app.cluster.service.ts

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import cluster from 'node:cluster'
2+
import * as os from 'node:os'
3+
import { Injectable, Logger } from '@nestjs/common'
4+
import process from 'node:process'
5+
6+
const CLUSTER_DEFAULT_FORKS = os.cpus().length
7+
8+
@Injectable()
9+
export class AppClusterService {
10+
public static async clusterize(callback: () => Promise<void>): Promise<void> {
11+
if (!process.env.TK_SERVICE_CLUSTERIZE) {
12+
await callback()
13+
return
14+
}
15+
if (cluster.isPrimary) {
16+
const numCPUs = process.env.TK_SERVICE_CLUSTERIZE_FORKS || CLUSTER_DEFAULT_FORKS
17+
Logger.log(`Master server started on <${process.pid}> with pid <${numCPUs}> forks 🏁`, AppClusterService.name)
18+
for (let i = 0; i < numCPUs; i++) {
19+
cluster.fork()
20+
}
21+
cluster.on('online', (worker) => {
22+
Logger.log(`Worker ${worker.process['pid']} starting... 🟠`, AppClusterService.name)
23+
})
24+
cluster.on('exit', (worker, code, signal) => {
25+
Logger.error(`Worker ${worker.process['pid']} died. Restarting`, AppClusterService.name)
26+
cluster.fork()
27+
})
28+
} else {
29+
Logger.log(`Worker server started on pid <${process.pid}> 🟢`, AppClusterService.name)
30+
await callback()
31+
}
32+
}
33+
}

service/src/config.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import * as process from 'process'
88
import { StorageManagerConfig } from '@streamkits/nestjs_module_factorydrive'
99
import { AmazonWebServicesS3StorageConfig } from '@streamkits/nestjs_module_factorydrive-s3'
1010
import { Settings } from '~/core/settings/settings.interface'
11-
import { MailsSettingsInterface } from '~/tickets/mails/_interfaces/mails-settings.interface'
1211

1312
export interface MongoosePlugin {
1413
package: string

service/src/extensions/extensions.service.setup.d.ts

Lines changed: 0 additions & 7 deletions
This file was deleted.

service/src/extensions/extensions.service.setup.js

Lines changed: 0 additions & 113 deletions
This file was deleted.

service/src/main.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// noinspection JSUnresolvedReference
1+
// noinspection JSUnresolvedReference,JSIgnoredPromiseFromCall
22

33
import { Logger } from '@nestjs/common'
44
import { NestFactory } from '@nestjs/core'
@@ -12,16 +12,19 @@ import { ShutdownService } from '~/shutdown.service'
1212
import process from 'process'
1313
import { rawBodyBuffer } from '~/_common/middlewares/raw-body-buffer.middleware'
1414
import config from '~/config'
15+
import { AppClusterService } from '~/app.cluster.service'
1516

1617
// eslint-disable-next-line
1718
declare const module: any
18-
;(async (): Promise<void> => {
19+
;AppClusterService.clusterize(async (): Promise<void> => {
1920
const cfg = config()
2021
const app = await NestFactory.create<NestExpressApplication>(AppModule, {
2122
cors: true,
23+
// logger: false,
2224
bodyParser: false,
2325
rawBody: true,
2426
})
27+
// app.useLogger(['error', 'warn', 'log', 'debug', 'verbose'])
2528
app.get(ShutdownService).subscribeToShutdown(async () => {
2629
await app.close()
2730
process.exit(0)
@@ -47,4 +50,4 @@ declare const module: any
4750
module.hot.accept()
4851
module.hot.dispose((): Promise<void> => app.close())
4952
}
50-
})()
53+
})

service/src/tickets/source-request/source-request.controller.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { DeleteResult } from 'mongodb'
22
import { Test, TestingModule } from '@nestjs/testing'
33
import { SourceRequestController } from './source-request.controller'
44
import { SourceRequestService } from './source-request.service'
5-
import { SourceRequestDto } from '~/tickets/source-request/_dto/source-request._dto'
5+
import { SourceRequestDto } from '~/tickets/source-request/_dto/source-request.dto'
66
import { SourceRequest } from '~/tickets/source-request/_schemas/source-request.schema'
77
import { HttpException, HttpStatus } from '@nestjs/common'
88
import { Types } from 'mongoose'

service/src/tickets/source-request/source-request.service.spec.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -84,11 +84,11 @@ describe('SourceRequestService', () => {
8484

8585
describe('update', () => {
8686
it('should update a SourceRequest record by ID with metadata', async () => {
87-
const source-requestDto = { info: { key: 'updated value' } }
87+
const sourcerequestDto = { info: { key: 'updated value' } }
8888
const newObject = { ...mockSourceRequest }
89-
const expected = newObject.info.push(source-requestDto.info)
89+
const expected = newObject.info.push(sourcerequestDto.info)
9090
jest.spyOn(model, 'findByIdAndUpdate').mockResolvedValueOnce(expected)
91-
const result = await service.update(_id.toString(), source-requestDto)
91+
const result = await service.update(_id.toString(), sourcerequestDto)
9292
expect(result).toEqual(expected)
9393
})
9494
})

0 commit comments

Comments
 (0)