82 lines
1.9 KiB
JavaScript
82 lines
1.9 KiB
JavaScript
/**
|
|
* Smoke test · HLI 接口健康检查
|
|
*
|
|
* 测试 GET /health 端点可达性
|
|
* 版权:国作登字-2026-A-00037559
|
|
*/
|
|
'use strict';
|
|
|
|
const http = require('http');
|
|
|
|
const BASE = process.env.TEST_BASE || 'http://localhost:3001';
|
|
|
|
function get(urlPath) {
|
|
return new Promise((resolve, reject) => {
|
|
const url = new URL(BASE + urlPath);
|
|
const options = {
|
|
hostname: url.hostname,
|
|
port: url.port,
|
|
path: url.pathname,
|
|
method: 'GET',
|
|
timeout: 10000
|
|
};
|
|
|
|
const req = http.request(options, (res) => {
|
|
let chunks = '';
|
|
res.on('data', (c) => { chunks += c; });
|
|
res.on('end', () => {
|
|
try {
|
|
resolve({ status: res.statusCode, body: JSON.parse(chunks) });
|
|
} catch (e) {
|
|
resolve({ status: res.statusCode, body: chunks });
|
|
}
|
|
});
|
|
});
|
|
|
|
req.on('error', reject);
|
|
req.on('timeout', () => { req.destroy(); reject(new Error('timeout')); });
|
|
req.end();
|
|
});
|
|
}
|
|
|
|
let passed = 0;
|
|
let failed = 0;
|
|
|
|
function assert(condition, message) {
|
|
if (condition) {
|
|
passed++;
|
|
console.log(` ✅ ${message}`);
|
|
} else {
|
|
failed++;
|
|
console.error(` ❌ ${message}`);
|
|
}
|
|
}
|
|
|
|
async function run() {
|
|
console.log('🚀 HLI 接口冒烟测试\n');
|
|
|
|
// Test 1: Health endpoint
|
|
console.log('── 测试 1: 健康检查端点 ──');
|
|
try {
|
|
const res = await get('/health');
|
|
assert(res.status === 200, '/health 返回 200');
|
|
assert(res.body.status === 'ok', '/health 状态 ok');
|
|
} catch (e) {
|
|
failed++;
|
|
console.error(` ❌ /health 请求失败: ${e.message}`);
|
|
}
|
|
|
|
console.log(`\n📊 冒烟测试: ${passed} 通过, ${failed} 失败`);
|
|
if (failed > 0) {
|
|
console.error('❌ HLI Smoke Test FAILED');
|
|
process.exit(1);
|
|
} else {
|
|
console.log('✅ HLI Smoke Test PASSED');
|
|
}
|
|
}
|
|
|
|
run().catch((e) => {
|
|
console.error('❌ 冒烟测试执行异常:', e.message);
|
|
process.exit(1);
|
|
});
|