Skip to content

Commit

Permalink
test: introduce test/common/internet.addresses
Browse files Browse the repository at this point in the history
This commit introduces test/common/internet.address, which
includes a set of addresses for doing internet tests.
These addresses can be overriden using NODE_TEST_* environment
variables.

PR-URL: nodejs#16390
Reviewed-By: Anna Henningsen <[email protected]>
Reviewed-By: Refael Ackermann <[email protected]>
Reviewed-By: Gibson Fahnestock <[email protected]>
Reviewed-By: Colin Ihrig <[email protected]>
Reviewed-By: James M Snell <[email protected]>
  • Loading branch information
joyeecheung committed Mar 30, 2018
1 parent 16bf5fe commit 239c02d
Show file tree
Hide file tree
Showing 3 changed files with 92 additions and 1 deletion.
35 changes: 35 additions & 0 deletions test/common/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ This directory contains modules used to test the Node.js implementation.
* [DNS module](#dns-module)
* [Duplex pair helper](#duplex-pair-helper)
* [Fixtures module](#fixtures-module)
* [Internet module](#internet-module)
* [tmpdir module](#tmpdir-module)
* [WPT module](#wpt-module)

Expand Down Expand Up @@ -483,6 +484,40 @@ Returns the result of
Returns the result of
`fs.readFileSync(path.join(fixtures.fixturesDir, 'keys', arg), 'enc')`.

## Internet Module

The `common/internet` module provides utilities for working with
internet-related tests.

### internet.addresses

* [&lt;Object>]
* `INET_HOST` [&lt;String>] A generic host that has registered common
DNS records, supports both IPv4 and IPv6, and provides basic HTTP/HTTPS
services
* `INET4_HOST` [&lt;String>] A host that provides IPv4 services
* `INET6_HOST` [&lt;String>] A host that provides IPv6 services
* `INET4_IP` [&lt;String>] An accessible IPv4 IP, defaults to the
Google Public DNS IPv4 address
* `INET6_IP` [&lt;String>] An accessible IPv6 IP, defaults to the
Google Public DNS IPv6 address
* `INVALID_HOST` [&lt;String>] An invalid host that cannot be resolved
* `MX_HOST` [&lt;String>] A host with MX records registered
* `SRV_HOST` [&lt;String>] A host with SRV records registered
* `PTR_HOST` [&lt;String>] A host with PTR records registered
* `NAPTR_HOST` [&lt;String>] A host with NAPTR records registered
* `SOA_HOST` [&lt;String>] A host with SOA records registered
* `CNAME_HOST` [&lt;String>] A host with CNAME records registered
* `NS_HOST` [&lt;String>] A host with NS records registered
* `TXT_HOST` [&lt;String>] A host with TXT records registered
* `DNS4_SERVER` [&lt;String>] An accessible IPv4 DNS server
* `DNS6_SERVER` [&lt;String>] An accessible IPv6 DNS server

A set of addresses for internet-related tests. All properties are configurable
via `NODE_TEST_*` environment variables. For example, to configure
`internet.addresses.INET_HOST`, set the environment
vairable `NODE_TEST_INET_HOST` to a specified host.

## tmpdir Module

The `tmpdir` module supports the use of a temporary directory for testing.
Expand Down
4 changes: 3 additions & 1 deletion test/common/dns.js
Original file line number Diff line number Diff line change
Expand Up @@ -287,4 +287,6 @@ function writeDNSPacket(parsed) {
}));
}

module.exports = { types, classes, writeDNSPacket, parseDNSPacket };
module.exports = {
types, classes, writeDNSPacket, parseDNSPacket
};
54 changes: 54 additions & 0 deletions test/common/internet.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
/* eslint-disable required-modules */
'use strict';

// Utilities for internet-related tests

const addresses = {
// A generic host that has registered common DNS records,
// supports both IPv4 and IPv6, and provides basic HTTP/HTTPS services
INET_HOST: 'nodejs.org',
// A host that provides IPv4 services
INET4_HOST: 'nodejs.org',
// A host that provides IPv6 services
INET6_HOST: 'nodejs.org',
// An accessible IPv4 IP,
// defaults to the Google Public DNS IPv4 address
INET4_IP: '8.8.8.8',
// An accessible IPv6 IP,
// defaults to the Google Public DNS IPv6 address
INET6_IP: '2001:4860:4860::8888',
// An invalid host that cannot be resolved
// See https://tools.ietf.org/html/rfc2606#section-2
INVALID_HOST: 'something.invalid',
// A host with MX records registered
MX_HOST: 'nodejs.org',
// A host with SRV records registered
SRV_HOST: '_jabber._tcp.google.com',
// A host with PTR records registered
PTR_HOST: '8.8.8.8.in-addr.arpa',
// A host with NAPTR records registered
NAPTR_HOST: 'sip2sip.info',
// A host with SOA records registered
SOA_HOST: 'nodejs.org',
// A host with CNAME records registered
CNAME_HOST: 'blog.nodejs.org',
// A host with NS records registered
NS_HOST: 'nodejs.org',
// A host with TXT records registered
TXT_HOST: 'nodejs.org',
// An accessible IPv4 DNS server
DNS4_SERVER: '8.8.8.8',
// An accessible IPv4 DNS server
DNS6_SERVER: '2001:4860:4860::8888'
};

for (const key of Object.keys(addresses)) {
const envName = `NODE_TEST_${key}`;
if (process.env[envName]) {
addresses[key] = process.env[envName];
}
}

module.exports = {
addresses
};

0 comments on commit 239c02d

Please sign in to comment.