summaryrefslogtreecommitdiff
path: root/test/internet
diff options
context:
space:
mode:
authorJoyee Cheung <joyeec9h3@gmail.com>2022-09-14 15:08:26 +0800
committerJoyee Cheung <joyeec9h3@gmail.com>2022-09-29 01:58:21 +0800
commit8821860f11a94e69ba642d874d3226480a68fc1b (patch)
treefe58fbf1bbaa791753d1a0076c24a2c1b63d3ba5 /test/internet
parent7b368552743a713268a5a1b5c9d72eb82c1c8895 (diff)
downloadnode-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.js34
-rw-r--r--test/internet/test-snapshot-dns-resolve.js36
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);
+}