diff options
author | Joyee Cheung <joyeec9h3@gmail.com> | 2022-09-14 15:08:26 +0800 |
---|---|---|
committer | Joyee Cheung <joyeec9h3@gmail.com> | 2022-09-29 01:58:21 +0800 |
commit | 8821860f11a94e69ba642d874d3226480a68fc1b (patch) | |
tree | fe58fbf1bbaa791753d1a0076c24a2c1b63d3ba5 /test/internet | |
parent | 7b368552743a713268a5a1b5c9d72eb82c1c8895 (diff) | |
download | node-new-8821860f11a94e69ba642d874d3226480a68fc1b.tar.gz |
dns: support dns module in the snapshot
For the initial iteration, only the default resolver can be
serialized/deserialized. If `dns.setServers()` has been
called, we'll preserve the configured DNS servers in the snapshot.
We can consider exposing the serialization method if it becomes
necessary for user-land snapshots.
PR-URL: https://github.com/nodejs/node/pull/44633
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Diffstat (limited to 'test/internet')
-rw-r--r-- | test/internet/test-snapshot-dns-lookup.js | 34 | ||||
-rw-r--r-- | test/internet/test-snapshot-dns-resolve.js | 36 |
2 files changed, 70 insertions, 0 deletions
diff --git a/test/internet/test-snapshot-dns-lookup.js b/test/internet/test-snapshot-dns-lookup.js new file mode 100644 index 0000000000..842e73e056 --- /dev/null +++ b/test/internet/test-snapshot-dns-lookup.js @@ -0,0 +1,34 @@ +'use strict'; + +// This tests support for the dns module in snapshot. + +require('../common'); +const assert = require('assert'); +const tmpdir = require('../common/tmpdir'); +const fixtures = require('../common/fixtures'); +const { buildSnapshot, runWithSnapshot } = require('../common/snapshot'); +const { + addresses: { INET4_HOST }, +} = require('../common/internet'); + +const entry = fixtures.path('snapshot', 'dns-lookup.js'); +const env = { + NODE_TEST_HOST: INET4_HOST, + NODE_TEST_PROMISE: 'false', +}; + +tmpdir.refresh(); +function checkOutput(stderr, stdout) { + assert(stdout.match(stdout, /address: "\d+\.\d+\.\d+\.\d+"/)); + assert(stdout.match(stdout, /family: 4/)); + assert.strictEqual(stdout.trim().split('\n').length, 2); +} +{ + const { stderr, stdout } = buildSnapshot(entry, env); + checkOutput(stderr, stdout); +} + +{ + const { stderr, stdout } = runWithSnapshot(entry, env); + checkOutput(stderr, stdout); +} diff --git a/test/internet/test-snapshot-dns-resolve.js b/test/internet/test-snapshot-dns-resolve.js new file mode 100644 index 0000000000..6efea9b4f7 --- /dev/null +++ b/test/internet/test-snapshot-dns-resolve.js @@ -0,0 +1,36 @@ +'use strict'; + +// This tests support for the dns module in snapshot. + +require('../common'); +const assert = require('assert'); +const tmpdir = require('../common/tmpdir'); +const fixtures = require('../common/fixtures'); +const { buildSnapshot, runWithSnapshot } = require('../common/snapshot'); +const { + addresses: { DNS4_SERVER, INET4_IP, INET4_HOST }, +} = require('../common/internet'); + +const entry = fixtures.path('snapshot', 'dns-resolve.js'); +const env = { + NODE_TEST_IP: INET4_IP, + NODE_TEST_HOST: INET4_HOST, + NODE_TEST_DNS: DNS4_SERVER, + NODE_TEST_PROMISE: 'false', +}; + +tmpdir.refresh(); +function checkOutput(stderr, stdout) { + assert(stdout.includes('hostnames: [')); + assert(stdout.includes('addresses: [')); + assert.strictEqual(stdout.trim().split('\n').length, 2); +} +{ + const { stderr, stdout } = buildSnapshot(entry, env); + checkOutput(stderr, stdout); +} + +{ + const { stderr, stdout } = runWithSnapshot(entry, env); + checkOutput(stderr, stdout); +} |