File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 88 "@nestjs/core" : " 6.5.2" ,
99 "@nestjs/platform-express" : " 6.5.2" ,
1010 "@types/jasmine" : " ^3.5.0" ,
11+ "@types/superagent" : " ^4.1.4" ,
1112 "@types/supertest" : " ^2.0.8" ,
1213 "minimist" : " 1.2.0" ,
1314 "reflect-metadata" : " 0.1.13" ,
Original file line number Diff line number Diff line change @@ -40,8 +40,10 @@ ts_library(
4040 ":app" ,
4141 "@npm//@nestjs/common" ,
4242 "@npm//@types/jasmine" ,
43+ "@npm//@types/superagent" ,
4344 "@npm//@types/supertest" ,
4445 "@npm//jasmine" ,
46+ "@npm//superagent" ,
4547 "@npm//supertest" ,
4648 ],
4749)
@@ -56,7 +58,8 @@ nodejs_binary(
5658 "@npm//@nestjs/core" ,
5759 "@npm//minimist" ,
5860 ],
59- entry_point = ":main.ts" ,
61+ entry_point = ":main" ,
62+ templated_args = ["--nobazel_patch_module_resolver" ],
6063)
6164
6265jasmine_node_test (
Original file line number Diff line number Diff line change 1- import { INestApplication } from '@nestjs/common' ;
21import * as request from 'supertest' ;
32
4- import { bootstrap } from './main' ;
3+ import { bootstrap , bootstrapCluster } from './main' ;
54
65describe ( 'App' , ( ) => {
7- let server : INestApplication ;
8-
9- beforeAll ( async ( ) => {
10- server = await bootstrap ( 3000 ) ;
11- } ) ;
12- afterAll ( async ( ) => {
13- await server . close ( ) ;
14- } )
15-
16- it ( `GET /` , ( ) => {
17- return request ( server . getHttpServer ( ) ) . get ( '/hello' ) . expect ( 200 ) . expect ( {
6+ it ( `GET /` , async ( ) => {
7+ const server = await bootstrap ( 3000 ) ;
8+ await request ( server . getHttpServer ( ) ) . get ( '/hello' ) . expect ( 200 ) . expect ( {
189 message : 'Hello world!'
1910 } ) ;
11+ await server . close ( ) ;
2012 } ) ;
2113} ) ;
Original file line number Diff line number Diff line change 11import { INestApplication , Logger } from '@nestjs/common' ;
22import { NestFactory } from '@nestjs/core' ;
33import { ExpressAdapter } from '@nestjs/platform-express' ;
4+ import * as cluster from 'cluster' ;
5+ import * as os from 'os' ;
46
57import { AppModule } from './app.module' ;
68
@@ -11,7 +13,34 @@ export async function bootstrap(port: number): Promise<INestApplication> {
1113 return app ;
1214}
1315
16+ export async function bootstrapCluster ( port : number ) : Promise < cluster . Worker [ ] | void > {
17+ return new Promise ( ( resolve , reject ) => {
18+ if ( cluster . isMaster ) {
19+ const cpuCount = os . cpus ( ) . length ;
20+
21+ for ( let i = 0 ; i < cpuCount ; i += 1 ) {
22+ cluster . fork ( ) ;
23+ }
24+
25+ let workers = [ ] ;
26+ cluster . on ( 'online' , worker => {
27+ Logger . log ( 'Worker ' + worker . process . pid + ' is online.' ) ;
28+ workers . push ( worker ) ;
29+ if ( workers . length === cpuCount ) {
30+ resolve ( workers ) ;
31+ }
32+ } ) ;
33+ cluster . on ( 'exit' , ( { process} , code , signal ) => {
34+ Logger . log ( 'worker ' + process . pid + ' died.' ) ;
35+ } ) ;
36+ } else {
37+ bootstrap ( port ) ;
38+ resolve ( ) ;
39+ }
40+ } )
41+ }
42+
1443if ( require . main === module ) {
1544 const argv = require ( 'minimist' ) ( process . argv . slice ( 2 ) ) ;
16- bootstrap ( argv . port || 3000 ) ;
45+ bootstrapCluster ( argv . port || 3000 ) ;
1746}
Original file line number Diff line number Diff line change 180180 resolved "https://registry.yarnpkg.com/@types/node/-/node-10.14.21.tgz#4a9db7ef1d1671c0015e632c5fa3d46c86c58c1e"
181181 integrity sha512-nuFlRdBiqbF+PJIEVxm2jLFcQWN7q7iWEJGsBV4n7v1dbI9qXB8im2pMMKMCUZe092sQb5SQft2DHfuQGK5hqQ==
182182
183- " @types/superagent@* " :
183+ " @types/superagent@*" , "@types/superagent@^4.1.4" :
184184 version "4.1.4"
185185 resolved "https://registry.yarnpkg.com/@types/superagent/-/superagent-4.1.4.tgz#63f74955a28073870cfd9c100bcacb26d72b3764"
186186 integrity sha512-SRH2q6/5/nhOkAuLXm3azRGjBYpoKCZWh138Rt1AxSIyE6/1b9uClIH2V+JfyDtjIvgr5yQqYgNUmdpbneJoZQ==
@@ -1388,7 +1388,7 @@ readable-stream@1.1.x:
13881388 isarray "0.0.1"
13891389 string_decoder "~0.10.x"
13901390
1391- readable-stream@^2.2.2, readable-stream@^2.3.5 :
1391+ readable-stream@^2.2.2 :
13921392 version "2.3.6"
13931393 resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf"
13941394 integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==
@@ -1401,6 +1401,19 @@ readable-stream@^2.2.2, readable-stream@^2.3.5:
14011401 string_decoder "~1.1.1"
14021402 util-deprecate "~1.0.1"
14031403
1404+ readable-stream@^2.3.5 :
1405+ version "2.3.7"
1406+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
1407+ integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
1408+ dependencies :
1409+ core-util-is "~1.0.0"
1410+ inherits "~2.0.3"
1411+ isarray "~1.0.0"
1412+ process-nextick-args "~2.0.0"
1413+ safe-buffer "~5.1.1"
1414+ string_decoder "~1.1.1"
1415+ util-deprecate "~1.0.1"
1416+
14041417reflect-metadata@0.1.13 :
14051418 version "0.1.13"
14061419 resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.13.tgz#67ae3ca57c972a2aa1642b10fe363fe32d49dc08"
You can’t perform that action at this time.
0 commit comments