89 lines
2.7 KiB
JavaScript
89 lines
2.7 KiB
JavaScript
"use strict";
|
|
|
|
var _ava = _interopRequireDefault(require("ava"));
|
|
var _net = _interopRequireDefault(require("net"));
|
|
var _index = require("./index");
|
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
const PORT_COUNT = 1000;
|
|
function isUnique(array) {
|
|
const set = new Set();
|
|
for (const element of array) {
|
|
if (set.has(element)) {
|
|
return false;
|
|
}
|
|
set.add(element);
|
|
}
|
|
return true;
|
|
}
|
|
function listen(server, port) {
|
|
return new Promise((accept, reject) => {
|
|
server.once('error', reject);
|
|
server.listen(port, () => {
|
|
accept(server.address().port);
|
|
});
|
|
});
|
|
}
|
|
function closeServer(server) {
|
|
return new Promise((accept, reject) => {
|
|
server.close(err => {
|
|
if (err) {
|
|
reject(err);
|
|
} else {
|
|
accept();
|
|
}
|
|
});
|
|
});
|
|
}
|
|
(0, _ava.default)('findFreePorts() crashes properly when there are not enough free ports within the given range', async t => {
|
|
await t.throwsAsync(() => (0, _index.findFreePorts)(10, {
|
|
startPort: 65530
|
|
}));
|
|
await t.throwsAsync(() => (0, _index.findFreePorts)(3, {
|
|
startPort: 1024,
|
|
endPort: 1026
|
|
}));
|
|
});
|
|
(0, _ava.default)('searches for one port by default', async t => {
|
|
const ports = await (0, _index.findFreePorts)();
|
|
t.assert(ports.length === 1);
|
|
t.truthy(await (0, _index.isFreePort)(ports[0]));
|
|
});
|
|
(0, _ava.default)('can find a few ports when requested', async t => {
|
|
const ports = await (0, _index.findFreePorts)(3);
|
|
t.assert(ports.length === 3);
|
|
t.assert(isUnique(ports));
|
|
});
|
|
(0, _ava.default)('can find a large amount of unique free ports', async t => {
|
|
const ports = await (0, _index.findFreePorts)(PORT_COUNT);
|
|
t.assert(ports.length === PORT_COUNT);
|
|
t.truthy(isUnique(ports));
|
|
});
|
|
(0, _ava.default)('can run with only one job specified', async t => {
|
|
const ports = await (0, _index.findFreePorts)(PORT_COUNT, {
|
|
jobCount: 1
|
|
});
|
|
t.assert(ports.length === PORT_COUNT);
|
|
t.truthy(isUnique(ports));
|
|
});
|
|
(0, _ava.default)('can run with exactly two jobs', async t => {
|
|
const ports = await (0, _index.findFreePorts)(PORT_COUNT, {
|
|
jobCount: 2
|
|
});
|
|
t.assert(ports.length === PORT_COUNT);
|
|
t.truthy(isUnique(ports));
|
|
});
|
|
(0, _ava.default)('isFree() detects when a port is in use', async t => {
|
|
t.plan(1);
|
|
const server = _net.default.createServer();
|
|
const port = await listen(server, undefined);
|
|
t.falsy(await (0, _index.isFreePort)(port));
|
|
await closeServer(server);
|
|
});
|
|
(0, _ava.default)('isFree() detects when a port is free', async t => {
|
|
t.plan(1);
|
|
const server = _net.default.createServer();
|
|
const port = await listen(server);
|
|
await closeServer(server);
|
|
t.truthy(await (0, _index.isFreePort)(port));
|
|
});
|
|
//# sourceMappingURL=tests.js.map
|