node-os-utils
Version:
Advanced cross-platform operating system monitoring utilities with TypeScript support
235 lines • 8.85 kB
JavaScript
;
/**
* 测试配置文件
* 统一管理所有测试相关的配置参数
*/
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getAdjustedConfig = exports.CIConfig = exports.getPlatformValidation = exports.isFeatureSupported = exports.getPlatformTimeout = exports.getCurrentPlatformConfig = exports.PlatformConfigs = exports.TestGlobalConfig = void 0;
const os = __importStar(require("os"));
/**
* 全局测试配置
*/
exports.TestGlobalConfig = {
// 基础超时设置
timeouts: {
default: 10000, // 默认测试超时 (10秒)
long: 30000, // 长时间测试超时 (30秒)
performance: 5000, // 性能测试最大执行时间 (5秒)
quick: 2000 // 快速测试超时 (2秒)
},
// 性能基准
performance: {
maxMemoryIncreaseMB: 10, // 最大内存增长 (10MB)
maxExecutionTimeMs: 5000, // 最大执行时间 (5秒)
maxSyncOperationMs: 100, // 同步操作最大时间 (100ms)
maxAsyncOperationMs: 10000, // 异步操作最大时间 (10秒)
iterationCount: {
quick: 10, // 快速迭代测试
standard: 50, // 标准迭代测试
stress: 100 // 压力测试迭代
}
},
// 数据验证阈值
validation: {
percentageRange: { min: 0, max: 100 }, // 百分比范围
memoryToleranceMB: 100, // 内存值容差 (100MB)
diskToleranceGB: 1, // 磁盘空间容差 (1GB)
percentageTolerance: 0.1, // 百分比容差 (0.1%)
networkStatsMinFields: ['interface', 'inputBytes', 'outputBytes']
},
// 重试配置
retry: {
maxAttempts: 3, // 最大重试次数
delayMs: 1000, // 重试延迟 (1秒)
backoffMultiplier: 2 // 延迟倍增因子
}
};
/**
* 平台特定配置
*/
exports.PlatformConfigs = {
linux: {
timeouts: {
memory: 8000, // Linux内存测试超时
disk: 6000, // Linux磁盘测试超时
network: 8000, // Linux网络测试超时
cpu: 5000 // Linux CPU测试超时
},
features: {
procFilesystem: true, // 支持/proc文件系统
loadavg: true, // 支持负载平均值
networkInterfaces: ['lo', 'eth0', 'wlan0', 'enp', 'wlp'],
expectedCommands: ['free', 'df', 'vmstat', 'netstat', 'ps', 'top', 'lscpu']
},
paths: {
procMeminfo: '/proc/meminfo',
procCpuinfo: '/proc/cpuinfo',
procStat: '/proc/stat',
procLoadavg: '/proc/loadavg',
procNetDev: '/proc/net/dev'
},
validation: {
memoryMinMB: 512, // 最小内存要求 (512MB)
diskMinGB: 1, // 最小磁盘空间 (1GB)
cpuMinCount: 1 // 最小CPU核心数
}
},
darwin: {
timeouts: {
memory: 10000, // macOS内存测试超时
disk: 12000, // macOS磁盘测试超时
network: 10000, // macOS网络测试超时
cpu: 6000 // macOS CPU测试超时
},
features: {
procFilesystem: false, // 不支持/proc文件系统
loadavg: true, // 支持负载平均值
networkInterfaces: ['lo0', 'en0', 'en1', 'wi0', 'awdl0', 'utun'],
expectedCommands: ['vm_stat', 'top', 'df', 'netstat', 'system_profiler', 'sysctl'],
applesilicon: process.arch === 'arm64' // Apple Silicon检测
},
paths: {
mountPoint: '/',
systemVolumesData: '/System/Volumes/Data',
privatePath: '/private'
},
validation: {
memoryMinMB: 4000, // 最小内存要求 (4GB,macOS典型配置)
diskMinGB: 10, // 最小磁盘空间 (10GB)
cpuMinCount: 2, // 最小CPU核心数
cpuModelPatterns: /(Apple|Intel|M[0-9]+|Core)/i
}
},
win32: {
timeouts: {
memory: 15000, // Windows内存测试超时
disk: 15000, // Windows磁盘测试超时
network: 12000, // Windows网络测试超时
cpu: 8000 // Windows CPU测试超时
},
features: {
procFilesystem: false, // 不支持/proc文件系统
loadavg: false, // 不完全支持负载平均值
networkInterfaces: ['Ethernet', 'Wi-Fi', 'Wireless', 'Local Area Connection', 'loopback'],
expectedCommands: ['wmic', 'tasklist', 'systeminfo', 'netstat', 'powershell'],
unsupportedFeatures: ['loadavg', 'uptime']
},
paths: {
systemDrive: 'C:',
commonDrives: ['C:', 'D:', 'E:', 'F:']
},
validation: {
memoryMinMB: 2000, // 最小内存要求 (2GB)
diskMinGB: 5, // 最小磁盘空间 (5GB)
cpuMinCount: 1, // 最小CPU核心数
cpuModelPatterns: /(Intel|AMD|Ryzen|Core)/i
}
}
};
/**
* 获取当前平台的配置
*/
function getCurrentPlatformConfig() {
const platform = os.platform();
return exports.PlatformConfigs[platform] || exports.PlatformConfigs.linux; // 默认使用Linux配置
}
exports.getCurrentPlatformConfig = getCurrentPlatformConfig;
/**
* 获取平台特定的超时时间
*/
function getPlatformTimeout(category) {
const config = getCurrentPlatformConfig();
const timeoutKey = category;
return config.timeouts[timeoutKey] || exports.TestGlobalConfig.timeouts.default;
}
exports.getPlatformTimeout = getPlatformTimeout;
/**
* 检查功能是否在当前平台上支持
*/
function isFeatureSupported(feature) {
const config = getCurrentPlatformConfig();
if ('unsupportedFeatures' in config && config.unsupportedFeatures && Array.isArray(config.unsupportedFeatures)) {
return !config.unsupportedFeatures.includes(feature);
}
// 默认支持所有功能
return true;
}
exports.isFeatureSupported = isFeatureSupported;
/**
* 获取平台特定的验证阈值
*/
function getPlatformValidation() {
const config = getCurrentPlatformConfig();
return {
...exports.TestGlobalConfig.validation,
...config.validation
};
}
exports.getPlatformValidation = getPlatformValidation;
/**
* CI/CD 环境检测和配置
*/
exports.CIConfig = {
isCI: !!(process.env.CI ||
process.env.CONTINUOUS_INTEGRATION ||
process.env.GITHUB_ACTIONS ||
process.env.TRAVIS ||
process.env.JENKINS_URL),
// CI环境下的特殊配置
adjustments: {
timeoutMultiplier: 2, // CI环境超时时间加倍
maxMemoryIncreaseMB: 20, // CI环境允许更大内存增长
retryAttempts: 5, // CI环境增加重试次数
skipPerformanceTests: true // CI环境可能跳过性能测试
}
};
/**
* 应用CI环境调整
*/
function getAdjustedConfig() {
if (!exports.CIConfig.isCI) {
return exports.TestGlobalConfig;
}
return {
...exports.TestGlobalConfig,
timeouts: {
...exports.TestGlobalConfig.timeouts,
default: exports.TestGlobalConfig.timeouts.default * exports.CIConfig.adjustments.timeoutMultiplier,
long: exports.TestGlobalConfig.timeouts.long * exports.CIConfig.adjustments.timeoutMultiplier,
performance: exports.TestGlobalConfig.timeouts.performance * exports.CIConfig.adjustments.timeoutMultiplier
},
performance: {
...exports.TestGlobalConfig.performance,
maxMemoryIncreaseMB: exports.CIConfig.adjustments.maxMemoryIncreaseMB
},
retry: {
...exports.TestGlobalConfig.retry,
maxAttempts: exports.CIConfig.adjustments.retryAttempts
}
};
}
exports.getAdjustedConfig = getAdjustedConfig;
//# sourceMappingURL=test-config.js.map