| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- 'use strict';
- const assert = require('node:assert/strict');
- const net = require('node:net');
- const path = require('node:path');
- const ROOT = path.resolve(__dirname, '..');
- function listenEphemeral() {
- return new Promise((resolve, reject) => {
- const server = net.createServer();
- server.once('error', reject);
- server.listen(0, '127.0.0.1', () => resolve(server));
- });
- }
- async function main() {
- const previousFlowPort = process.env.QIWEI_FLOW_PORT;
- const blocker = await listenEphemeral();
- try {
- const occupiedPort = blocker.address().port;
- process.env.QIWEI_FLOW_PORT = String(occupiedPort);
- const { canListen, defaultFlowPort, selectFlowPort } = require(path.join(ROOT, 'bin', 'qiwei-training.js'));
- const selectedPort = await selectFlowPort(4320);
- assert.equal(defaultFlowPort(4320), 4310);
- assert.notEqual(selectedPort, occupiedPort);
- assert.equal(await canListen(selectedPort), true);
- process.stdout.write(`${JSON.stringify({
- status: 'ok',
- checks: 3,
- coverage: [
- 'default_dashboard_flow_port_pair',
- 'occupied_flow_port_selects_next_available_port',
- 'selected_flow_port_is_listenable',
- ],
- }, null, 2)}\n`);
- } finally {
- await new Promise(resolve => blocker.close(resolve));
- if (previousFlowPort === undefined) delete process.env.QIWEI_FLOW_PORT;
- else process.env.QIWEI_FLOW_PORT = previousFlowPort;
- }
- }
- main().catch(error => {
- process.stderr.write(`${error.stack || error.message}\n`);
- process.exitCode = 1;
- });
|