Skip to content

Commit 04558a9

Browse files
committed
Use http-terminator for complete server termination.
1 parent b893024 commit 04558a9

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
@@ -6049,7 +6049,7 @@ [email protected]:
60496049
require-from-string "^2.0.2"
60506050
uri-js "^4.2.2"
60516051

6052-
ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5:
6052+
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:
60536053
version "6.12.6"
60546054
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
60556055
integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
@@ -7798,6 +7798,11 @@ boolbase@^1.0.0, boolbase@~1.0.0:
77987798
resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
77997799
integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24=
78007800

7801+
boolean@^3.1.4:
7802+
version "3.2.0"
7803+
resolved "https://registry.yarnpkg.com/boolean/-/boolean-3.2.0.tgz#9e5294af4e98314494cbb17979fa54ca159f116b"
7804+
integrity sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==
7805+
78017806
bower-config@^1.4.3:
78027807
version "1.4.3"
78037808
resolved "https://registry.yarnpkg.com/bower-config/-/bower-config-1.4.3.tgz#3454fecdc5f08e7aa9cc6d556e492be0669689ae"
@@ -10743,6 +10748,11 @@ del@^4.1.1:
1074310748
pify "^4.0.1"
1074410749
rimraf "^2.6.3"
1074510750

10751+
delay@^5.0.0:
10752+
version "5.0.0"
10753+
resolved "https://registry.yarnpkg.com/delay/-/delay-5.0.0.tgz#137045ef1b96e5071060dd5be60bf9334436bd1d"
10754+
integrity sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==
10755+
1074610756
delayed-stream@~1.0.0:
1074710757
version "1.0.0"
1074810758
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
@@ -13067,6 +13077,16 @@ [email protected], [email protected], fast-json-stab
1306713077
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
1306813078
integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
1306913079

13080+
fast-json-stringify@^2.7.10:
13081+
version "2.7.13"
13082+
resolved "https://registry.yarnpkg.com/fast-json-stringify/-/fast-json-stringify-2.7.13.tgz#277aa86c2acba4d9851bd6108ed657aa327ed8c0"
13083+
integrity sha512-ar+hQ4+OIurUGjSJD1anvYSDcUflywhKjfxnsW4TBTD7+u0tJufv6DKRWoQk3vI6YBOWMoz0TQtfbe7dxbQmvA==
13084+
dependencies:
13085+
ajv "^6.11.0"
13086+
deepmerge "^4.2.2"
13087+
rfdc "^1.2.0"
13088+
string-similarity "^4.0.1"
13089+
1307013090
fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6:
1307113091
version "2.0.6"
1307213092
resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
@@ -13079,6 +13099,13 @@ fast-ordered-set@^1.0.0:
1307913099
dependencies:
1308013100
blank-object "^1.0.1"
1308113101

13102+
fast-printf@^1.6.9:
13103+
version "1.6.9"
13104+
resolved "https://registry.yarnpkg.com/fast-printf/-/fast-printf-1.6.9.tgz#212f56570d2dc8ccdd057ee93d50dd414d07d676"
13105+
integrity sha512-FChq8hbz65WMj4rstcQsFB0O7Cy++nmbNfLYnD9cYv2cRn8EG6k/MGn9kO/tjO66t09DLDugj3yL+V2o6Qftrg==
13106+
dependencies:
13107+
boolean "^3.1.4"
13108+
1308213109
fast-sourcemap-concat@^2.1.0:
1308313110
version "2.1.0"
1308413111
resolved "https://registry.yarnpkg.com/fast-sourcemap-concat/-/fast-sourcemap-concat-2.1.0.tgz#12dd36bfc38c804093e4bd1de61dd6216f574211"
@@ -14261,6 +14288,13 @@ globals@^9.18.0:
1426114288
resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a"
1426214289
integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==
1426314290

14291+
globalthis@^1.0.2:
14292+
version "1.0.3"
14293+
resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf"
14294+
integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==
14295+
dependencies:
14296+
define-properties "^1.1.3"
14297+
1426414298
1426514299
version "0.1.0"
1426614300
resolved "https://registry.yarnpkg.com/globalyzer/-/globalyzer-0.1.0.tgz#cb76da79555669a1519d5a8edf093afaa0bf1465"
@@ -15042,6 +15076,16 @@ http-signature@~1.2.0:
1504215076
jsprim "^1.2.2"
1504315077
sshpk "^1.7.0"
1504415078

15079+
http-terminator@^3.2.0:
15080+
version "3.2.0"
15081+
resolved "https://registry.yarnpkg.com/http-terminator/-/http-terminator-3.2.0.tgz#bc158d2694b733ca4fbf22a35065a81a609fb3e9"
15082+
integrity sha512-JLjck1EzPaWjsmIf8bziM3p9fgR1Y3JoUKAkyYEbZmFrIvJM6I8vVJfBGWlEtV9IWOvzNnaTtjuwZeBY2kwB4g==
15083+
dependencies:
15084+
delay "^5.0.0"
15085+
p-wait-for "^3.2.0"
15086+
roarr "^7.0.4"
15087+
type-fest "^2.3.3"
15088+
1504515089
[email protected], https-browserify@^1.0.0:
1504615090
version "1.0.0"
1504715091
resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73"
@@ -20545,7 +20589,7 @@ p-timeout@^2.0.1:
2054520589
dependencies:
2054620590
p-finally "^1.0.0"
2054720591

20548-
p-timeout@^3.1.0, p-timeout@^3.2.0:
20592+
p-timeout@^3.0.0, p-timeout@^3.1.0, p-timeout@^3.2.0:
2054920593
version "3.2.0"
2055020594
resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe"
2055120595
integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==
@@ -20567,6 +20611,13 @@ p-try@^2.0.0:
2056720611
resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
2056820612
integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
2056920613

20614+
p-wait-for@^3.2.0:
20615+
version "3.2.0"
20616+
resolved "https://registry.yarnpkg.com/p-wait-for/-/p-wait-for-3.2.0.tgz#640429bcabf3b0dd9f492c31539c5718cb6a3f1f"
20617+
integrity sha512-wpgERjNkLrBiFmkMEjuZJEWKKDrNfHCKA1OhyN1wg1FrLkULbviEy6py1AyJUgZ72YWFbZ38FIpnqvVqAlDUwA==
20618+
dependencies:
20619+
p-timeout "^3.0.0"
20620+
2057020621
2057120622
version "2.1.1"
2057220623
resolved "https://registry.npmjs.org/p-waterfall/-/p-waterfall-2.1.1.tgz#63153a774f472ccdc4eb281cdb2967fcf158b2ee"
@@ -23691,7 +23742,7 @@ [email protected]:
2369123742
convert-source-map "^0.3.3"
2369223743
css "^2.0.0"
2369323744

23694-
rfdc@^1.1.4, rfdc@^1.3.0:
23745+
rfdc@^1.1.4, rfdc@^1.2.0, rfdc@^1.3.0:
2369523746
version "1.3.0"
2369623747
resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b"
2369723748
integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==
@@ -23749,6 +23800,18 @@ ripemd160@^2.0.0, ripemd160@^2.0.1:
2374923800
hash-base "^3.0.0"
2375023801
inherits "^2.0.1"
2375123802

23803+
roarr@^7.0.4:
23804+
version "7.15.0"
23805+
resolved "https://registry.yarnpkg.com/roarr/-/roarr-7.15.0.tgz#09b792f0cd31b4a7f91030bb1c47550ceec98ee4"
23806+
integrity sha512-CV9WefQfUXTX6wr8CrEMhfNef3sjIt9wNhE/5PNu4tNWsaoDNDXqq+OGn/RW9A1UPb0qc7FQlswXRaJJJsqn8A==
23807+
dependencies:
23808+
boolean "^3.1.4"
23809+
fast-json-stringify "^2.7.10"
23810+
fast-printf "^1.6.9"
23811+
globalthis "^1.0.2"
23812+
safe-stable-stringify "^2.4.1"
23813+
semver-compare "^1.0.0"
23814+
2375223815
2375323816
version "3.2.1"
2375423817
resolved "https://registry.yarnpkg.com/rollup-plugin-cleanup/-/rollup-plugin-cleanup-3.2.1.tgz#8cbc92ecf58babd7c210051929797f137bbf777c"
@@ -23937,6 +24000,11 @@ safe-stable-stringify@^2.3.1:
2393724000
resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.4.1.tgz#34694bd8a30575b7f94792aa51527551bd733d61"
2393824001
integrity sha512-dVHE6bMtS/bnL2mwualjc6IxEv1F+OCUpA46pKUj6F8uDbUM0jCCulPqRNPSnWwGNKx5etqMjZYdXtrm5KJZGA==
2393924002

24003+
safe-stable-stringify@^2.4.1:
24004+
version "2.4.3"
24005+
resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz#138c84b6f6edb3db5f8ef3ef7115b8f55ccbf886"
24006+
integrity sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==
24007+
2394024008
"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:
2394124009
version "2.1.2"
2394224010
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
@@ -24120,6 +24188,11 @@ selfsigned@^1.10.7, selfsigned@^1.10.8:
2412024188
dependencies:
2412124189
node-forge "^0.10.0"
2412224190

24191+
semver-compare@^1.0.0:
24192+
version "1.0.0"
24193+
resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc"
24194+
integrity sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==
24195+
2412324196
semver-diff@^3.1.1:
2412424197
version "3.1.1"
2412524198
resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b"
@@ -25206,6 +25279,11 @@ string-length@^4.0.1:
2520625279
char-regex "^1.0.2"
2520725280
strip-ansi "^6.0.0"
2520825281

25282+
string-similarity@^4.0.1:
25283+
version "4.0.4"
25284+
resolved "https://registry.yarnpkg.com/string-similarity/-/string-similarity-4.0.4.tgz#42d01ab0b34660ea8a018da8f56a3309bb8b2a5b"
25285+
integrity sha512-/q/8Q4Bl4ZKAPjj8WerIBJWALKkaPRfrvhfF8k/B23i4nzrlRj2/go1m90In7nG/3XDSbOo0+pu6RvCTM9RGMQ==
25286+
2520925287
string-template@~0.2.1:
2521025288
version "0.2.1"
2521125289
resolved "https://registry.yarnpkg.com/string-template/-/string-template-0.2.1.tgz#42932e598a352d01fc22ec3367d9d84eec6c9add"
@@ -26536,6 +26614,11 @@ type-fest@^0.8.1:
2653626614
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d"
2653726615
integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==
2653826616

26617+
type-fest@^2.3.3:
26618+
version "2.19.0"
26619+
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b"
26620+
integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==
26621+
2653926622
type-is@~1.6.18:
2654026623
version "1.6.18"
2654126624
resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"

0 commit comments

Comments
 (0)