43 lines
1.3 KiB
JavaScript
43 lines
1.3 KiB
JavaScript
import assert from 'node:assert/strict';
|
|
import net from 'node:net';
|
|
import test from 'node:test';
|
|
|
|
import { checkLocalRedis } from './run-test-api.mjs';
|
|
|
|
function listenOnLoopback() {
|
|
const server = net.createServer();
|
|
return new Promise((resolve, reject) => {
|
|
server.once('error', reject);
|
|
server.listen(0, '127.0.0.1', () => resolve(server));
|
|
});
|
|
}
|
|
|
|
function closeServer(server) {
|
|
return new Promise((resolve, reject) => {
|
|
server.close((error) => (error ? reject(error) : resolve()));
|
|
});
|
|
}
|
|
|
|
test('Redis 不可达时给出外部服务提示并拒绝启动', async () => {
|
|
const server = await listenOnLoopback();
|
|
const address = server.address();
|
|
assert.ok(address && typeof address !== 'string');
|
|
await closeServer(server);
|
|
|
|
await assert.rejects(
|
|
checkLocalRedis({ host: '127.0.0.1', port: address.port, timeoutMs: 100 }),
|
|
/本机 Redis.*127\.0\.0\.1:6379.*启动后重试/,
|
|
);
|
|
});
|
|
|
|
test('Redis TCP 可达时预检通过', async (context) => {
|
|
const server = await listenOnLoopback();
|
|
context.after(() => closeServer(server));
|
|
const address = server.address();
|
|
assert.ok(address && typeof address !== 'string');
|
|
|
|
await assert.doesNotReject(() =>
|
|
checkLocalRedis({ host: '127.0.0.1', port: address.port, timeoutMs: 100 }),
|
|
);
|
|
});
|