Skip to content

Commit

Permalink
net: improved test
Browse files Browse the repository at this point in the history
  • Loading branch information
ShogunPanda committed Dec 5, 2023
1 parent 7546326 commit aa8f6f8
Show file tree
Hide file tree
Showing 2 changed files with 69 additions and 74 deletions.
71 changes: 69 additions & 2 deletions test/internet/test-net-autoselectfamily-events.js
Original file line number Diff line number Diff line change
@@ -1,19 +1,86 @@
'use strict';

const common = require('../common');
const { addresses: { INET4_IP } } = require('../common/internet');
const { addresses: { INET6_IP, INET4_IP } } = require('../common/internet');
const { createMockedLookup } = require('../common/dns');

const assert = require('assert');
const { createConnection } = require('net');

// Test that all events are emitted when trying a single IP (which means autoselectfamily is bypassed)
{
const connection = createConnection({
host: 'example.org',
port: 10,
lookup: createMockedLookup(INET4_IP),
autoSelectFamily: true,
autoSelectFamilyAttemptTimeout: 10,
});

connection.on('connectionAttempt', common.mustCall((address, port, family) => {
assert.strictEqual(address, INET4_IP);
assert.strictEqual(port, 10);
assert.strictEqual(family, 4);
}));

connection.on('connectionAttemptFailed', common.mustCall((address, port, family, error) => {
assert.strictEqual(address, INET4_IP);
assert.strictEqual(port, 10);
assert.strictEqual(family, 4);

assert.ok(error.code.match(/ECONNREFUSED|EHOSTUNREACH|ETIMEDOUT/));
}));

connection.on('ready', common.mustNotCall());
connection.on('error', common.mustCall());
}

// Test that all events are emitted when trying multiple IPs
{
const connection = createConnection({
host: 'example.org',
port: 10,
lookup: createMockedLookup(INET6_IP, INET4_IP),
autoSelectFamily: true,
autoSelectFamilyAttemptTimeout: 10,
});

const addresses = [
{ address: INET6_IP, port: 10, family: 6 },
{ address: INET6_IP, port: 10, family: 6 },
{ address: INET4_IP, port: 10, family: 4 },
{ address: INET4_IP, port: 10, family: 4 },
];

connection.on('connectionAttempt', common.mustCall((address, port, family) => {
const expected = addresses.shift();

assert.strictEqual(address, expected.address);
assert.strictEqual(port, expected.port);
assert.strictEqual(family, expected.family);
}, 2));

connection.on('connectionAttemptFailed', common.mustCall((address, port, family, error) => {
const expected = addresses.shift();

assert.strictEqual(address, expected.address);
assert.strictEqual(port, expected.port);
assert.strictEqual(family, expected.family);

assert.ok(error.code.match(/ECONNREFUSED|EHOSTUNREACH|ETIMEDOUT/));
}, 2));

connection.on('ready', common.mustNotCall());
connection.on('error', common.mustCall());
}

// Test that if a connection attempt times out and the socket is destroyed before the
// next attempt starts then the process does not crash
{
const connection = createConnection({
host: 'example.org',
port: 443,
lookup: createMockedLookup(INET4_IP, '127.0.0.1'),
lookup: createMockedLookup(INET4_IP, INET6_IP),
autoSelectFamily: true,
autoSelectFamilyAttemptTimeout: 10,
});
Expand Down
72 changes: 0 additions & 72 deletions test/parallel/test-net-autoselectfamily-events.js

This file was deleted.

0 comments on commit aa8f6f8

Please sign in to comment.