Skip to content

Commit 91ea120

Browse files
committed
Use http-terminator for complete server termination.
1 parent c1de6fc commit 91ea120

File tree

3 files changed

+89
-20
lines changed

3 files changed

+89
-20
lines changed

packages/node-integration-tests/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
"cors": "^2.8.5",
3232
"express": "^4.17.3",
3333
"graphql": "^16.3.0",
34+
"http-terminator": "^3.2.0",
3435
"mongodb": "^3.7.3",
3536
"mongodb-memory-server-global": "^7.6.3",
3637
"mysql": "^2.18.1",

packages/node-integration-tests/utils/index.ts

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import type { AxiosRequestConfig } from 'axios';
66
import axios from 'axios';
77
import type { Express } from 'express';
88
import type * as http from 'http';
9+
import { createHttpTerminator } from 'http-terminator';
910
import type { AddressInfo } from 'net';
1011
import nock from 'nock';
1112
import * as path from 'path';
@@ -318,22 +319,6 @@ export class TestEnv {
318319
}
319320

320321
private _closeServer(): Promise<void> {
321-
return new Promise<void>(resolve => {
322-
this.server.close(() => {
323-
// @ts-ignore closeAllConnections() is only available from Node v18.2.0
324-
if (NODE_VERSION >= 18 && this.server.closeAllConnections) {
325-
// @ts-ignore (Only available in Node 18+)
326-
this.server.closeAllConnections();
327-
}
328-
329-
if (this.server.listening) {
330-
this.server.unref();
331-
}
332-
333-
resolve();
334-
});
335-
336-
setImmediate(() => this.server.emit('close'));
337-
});
322+
return createHttpTerminator({ server: this.server }).terminate();
338323
}
339324
}

yarn.lock

Lines changed: 86 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6104,7 +6104,7 @@ [email protected]:
61046104
require-from-string "^2.0.2"
61056105
uri-js "^4.2.2"
61066106

6107-
ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5:
6107+
ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.11.0, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5:
61086108
version "6.12.6"
61096109
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
61106110
integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
@@ -7853,6 +7853,11 @@ boolbase@^1.0.0, boolbase@~1.0.0:
78537853
resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
78547854
integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24=
78557855

7856+
boolean@^3.1.4:
7857+
version "3.2.0"
7858+
resolved "https://registry.yarnpkg.com/boolean/-/boolean-3.2.0.tgz#9e5294af4e98314494cbb17979fa54ca159f116b"
7859+
integrity sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==
7860+
78567861
bower-config@^1.4.3:
78577862
version "1.4.3"
78587863
resolved "https://registry.yarnpkg.com/bower-config/-/bower-config-1.4.3.tgz#3454fecdc5f08e7aa9cc6d556e492be0669689ae"
@@ -10798,6 +10803,11 @@ del@^4.1.1:
1079810803
pify "^4.0.1"
1079910804
rimraf "^2.6.3"
1080010805

10806+
delay@^5.0.0:
10807+
version "5.0.0"
10808+
resolved "https://registry.yarnpkg.com/delay/-/delay-5.0.0.tgz#137045ef1b96e5071060dd5be60bf9334436bd1d"
10809+
integrity sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==
10810+
1080110811
delayed-stream@~1.0.0:
1080210812
version "1.0.0"
1080310813
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
@@ -13129,6 +13139,16 @@ [email protected], [email protected], fast-json-stab
1312913139
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
1313013140
integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
1313113141

13142+
fast-json-stringify@^2.7.10:
13143+
version "2.7.13"
13144+
resolved "https://registry.yarnpkg.com/fast-json-stringify/-/fast-json-stringify-2.7.13.tgz#277aa86c2acba4d9851bd6108ed657aa327ed8c0"
13145+
integrity sha512-ar+hQ4+OIurUGjSJD1anvYSDcUflywhKjfxnsW4TBTD7+u0tJufv6DKRWoQk3vI6YBOWMoz0TQtfbe7dxbQmvA==
13146+
dependencies:
13147+
ajv "^6.11.0"
13148+
deepmerge "^4.2.2"
13149+
rfdc "^1.2.0"
13150+
string-similarity "^4.0.1"
13151+
1313213152
fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6:
1313313153
version "2.0.6"
1313413154
resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
@@ -13141,6 +13161,13 @@ fast-ordered-set@^1.0.0:
1314113161
dependencies:
1314213162
blank-object "^1.0.1"
1314313163

13164+
fast-printf@^1.6.9:
13165+
version "1.6.9"
13166+
resolved "https://registry.yarnpkg.com/fast-printf/-/fast-printf-1.6.9.tgz#212f56570d2dc8ccdd057ee93d50dd414d07d676"
13167+
integrity sha512-FChq8hbz65WMj4rstcQsFB0O7Cy++nmbNfLYnD9cYv2cRn8EG6k/MGn9kO/tjO66t09DLDugj3yL+V2o6Qftrg==
13168+
dependencies:
13169+
boolean "^3.1.4"
13170+
1314413171
fast-sourcemap-concat@^2.1.0:
1314513172
version "2.1.0"
1314613173
resolved "https://registry.yarnpkg.com/fast-sourcemap-concat/-/fast-sourcemap-concat-2.1.0.tgz#12dd36bfc38c804093e4bd1de61dd6216f574211"
@@ -14323,6 +14350,13 @@ globals@^9.18.0:
1432314350
resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a"
1432414351
integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==
1432514352

14353+
globalthis@^1.0.2:
14354+
version "1.0.3"
14355+
resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf"
14356+
integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==
14357+
dependencies:
14358+
define-properties "^1.1.3"
14359+
1432614360
1432714361
version "0.1.0"
1432814362
resolved "https://registry.yarnpkg.com/globalyzer/-/globalyzer-0.1.0.tgz#cb76da79555669a1519d5a8edf093afaa0bf1465"
@@ -15104,6 +15138,16 @@ http-signature@~1.2.0:
1510415138
jsprim "^1.2.2"
1510515139
sshpk "^1.7.0"
1510615140

15141+
http-terminator@^3.2.0:
15142+
version "3.2.0"
15143+
resolved "https://registry.yarnpkg.com/http-terminator/-/http-terminator-3.2.0.tgz#bc158d2694b733ca4fbf22a35065a81a609fb3e9"
15144+
integrity sha512-JLjck1EzPaWjsmIf8bziM3p9fgR1Y3JoUKAkyYEbZmFrIvJM6I8vVJfBGWlEtV9IWOvzNnaTtjuwZeBY2kwB4g==
15145+
dependencies:
15146+
delay "^5.0.0"
15147+
p-wait-for "^3.2.0"
15148+
roarr "^7.0.4"
15149+
type-fest "^2.3.3"
15150+
1510715151
[email protected], https-browserify@^1.0.0:
1510815152
version "1.0.0"
1510915153
resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73"
@@ -20607,7 +20651,7 @@ p-timeout@^2.0.1:
2060720651
dependencies:
2060820652
p-finally "^1.0.0"
2060920653

20610-
p-timeout@^3.1.0, p-timeout@^3.2.0:
20654+
p-timeout@^3.0.0, p-timeout@^3.1.0, p-timeout@^3.2.0:
2061120655
version "3.2.0"
2061220656
resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe"
2061320657
integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==
@@ -20629,6 +20673,13 @@ p-try@^2.0.0:
2062920673
resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
2063020674
integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
2063120675

20676+
p-wait-for@^3.2.0:
20677+
version "3.2.0"
20678+
resolved "https://registry.yarnpkg.com/p-wait-for/-/p-wait-for-3.2.0.tgz#640429bcabf3b0dd9f492c31539c5718cb6a3f1f"
20679+
integrity sha512-wpgERjNkLrBiFmkMEjuZJEWKKDrNfHCKA1OhyN1wg1FrLkULbviEy6py1AyJUgZ72YWFbZ38FIpnqvVqAlDUwA==
20680+
dependencies:
20681+
p-timeout "^3.0.0"
20682+
2063220683
2063320684
version "2.1.1"
2063420685
resolved "https://registry.npmjs.org/p-waterfall/-/p-waterfall-2.1.1.tgz#63153a774f472ccdc4eb281cdb2967fcf158b2ee"
@@ -23753,7 +23804,7 @@ [email protected]:
2375323804
convert-source-map "^0.3.3"
2375423805
css "^2.0.0"
2375523806

23756-
rfdc@^1.1.4, rfdc@^1.3.0:
23807+
rfdc@^1.1.4, rfdc@^1.2.0, rfdc@^1.3.0:
2375723808
version "1.3.0"
2375823809
resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b"
2375923810
integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==
@@ -23811,6 +23862,18 @@ ripemd160@^2.0.0, ripemd160@^2.0.1:
2381123862
hash-base "^3.0.0"
2381223863
inherits "^2.0.1"
2381323864

23865+
roarr@^7.0.4:
23866+
version "7.15.0"
23867+
resolved "https://registry.yarnpkg.com/roarr/-/roarr-7.15.0.tgz#09b792f0cd31b4a7f91030bb1c47550ceec98ee4"
23868+
integrity sha512-CV9WefQfUXTX6wr8CrEMhfNef3sjIt9wNhE/5PNu4tNWsaoDNDXqq+OGn/RW9A1UPb0qc7FQlswXRaJJJsqn8A==
23869+
dependencies:
23870+
boolean "^3.1.4"
23871+
fast-json-stringify "^2.7.10"
23872+
fast-printf "^1.6.9"
23873+
globalthis "^1.0.2"
23874+
safe-stable-stringify "^2.4.1"
23875+
semver-compare "^1.0.0"
23876+
2381423877
2381523878
version "3.2.1"
2381623879
resolved "https://registry.yarnpkg.com/rollup-plugin-cleanup/-/rollup-plugin-cleanup-3.2.1.tgz#8cbc92ecf58babd7c210051929797f137bbf777c"
@@ -23999,6 +24062,11 @@ safe-stable-stringify@^2.3.1:
2399924062
resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.4.1.tgz#34694bd8a30575b7f94792aa51527551bd733d61"
2400024063
integrity sha512-dVHE6bMtS/bnL2mwualjc6IxEv1F+OCUpA46pKUj6F8uDbUM0jCCulPqRNPSnWwGNKx5etqMjZYdXtrm5KJZGA==
2400124064

24065+
safe-stable-stringify@^2.4.1:
24066+
version "2.4.3"
24067+
resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz#138c84b6f6edb3db5f8ef3ef7115b8f55ccbf886"
24068+
integrity sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==
24069+
2400224070
"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@^2.1.2, safer-buffer@~2.1.0:
2400324071
version "2.1.2"
2400424072
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
@@ -24182,6 +24250,11 @@ selfsigned@^1.10.7, selfsigned@^1.10.8:
2418224250
dependencies:
2418324251
node-forge "^0.10.0"
2418424252

24253+
semver-compare@^1.0.0:
24254+
version "1.0.0"
24255+
resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc"
24256+
integrity sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==
24257+
2418524258
semver-diff@^3.1.1:
2418624259
version "3.1.1"
2418724260
resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b"
@@ -25268,6 +25341,11 @@ string-length@^4.0.1:
2526825341
char-regex "^1.0.2"
2526925342
strip-ansi "^6.0.0"
2527025343

25344+
string-similarity@^4.0.1:
25345+
version "4.0.4"
25346+
resolved "https://registry.yarnpkg.com/string-similarity/-/string-similarity-4.0.4.tgz#42d01ab0b34660ea8a018da8f56a3309bb8b2a5b"
25347+
integrity sha512-/q/8Q4Bl4ZKAPjj8WerIBJWALKkaPRfrvhfF8k/B23i4nzrlRj2/go1m90In7nG/3XDSbOo0+pu6RvCTM9RGMQ==
25348+
2527125349
string-template@~0.2.1:
2527225350
version "0.2.1"
2527325351
resolved "https://registry.yarnpkg.com/string-template/-/string-template-0.2.1.tgz#42932e598a352d01fc22ec3367d9d84eec6c9add"
@@ -26598,6 +26676,11 @@ type-fest@^0.8.1:
2659826676
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d"
2659926677
integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==
2660026678

26679+
type-fest@^2.3.3:
26680+
version "2.19.0"
26681+
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b"
26682+
integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==
26683+
2660126684
type-is@~1.6.18:
2660226685
version "1.6.18"
2660326686
resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"

0 commit comments

Comments
 (0)