node-os-utils 2.0.2 → 2.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/README-zh.md +1291 -0
  3. package/README.md +28 -2
  4. package/dist/package.json +4 -2
  5. package/dist/src/adapters/linux-adapter.d.ts +17 -4
  6. package/dist/src/adapters/linux-adapter.d.ts.map +1 -1
  7. package/dist/src/adapters/linux-adapter.js +37 -12
  8. package/dist/src/adapters/linux-adapter.js.map +1 -1
  9. package/dist/src/adapters/macos-adapter.d.ts +17 -4
  10. package/dist/src/adapters/macos-adapter.d.ts.map +1 -1
  11. package/dist/src/adapters/macos-adapter.js +28 -11
  12. package/dist/src/adapters/macos-adapter.js.map +1 -1
  13. package/dist/src/adapters/windows-adapter.d.ts +13 -2
  14. package/dist/src/adapters/windows-adapter.d.ts.map +1 -1
  15. package/dist/src/adapters/windows-adapter.js +26 -3
  16. package/dist/src/adapters/windows-adapter.js.map +1 -1
  17. package/dist/src/monitors/cpu-monitor.d.ts.map +1 -1
  18. package/dist/src/monitors/cpu-monitor.js +7 -2
  19. package/dist/src/monitors/cpu-monitor.js.map +1 -1
  20. package/dist/src/monitors/process-monitor.d.ts +17 -4
  21. package/dist/src/monitors/process-monitor.d.ts.map +1 -1
  22. package/dist/src/monitors/process-monitor.js +30 -4
  23. package/dist/src/monitors/process-monitor.js.map +1 -1
  24. package/dist/src/types/config.d.ts +7 -0
  25. package/dist/src/types/config.d.ts.map +1 -1
  26. package/dist/src/utils/process-killer.d.ts +38 -0
  27. package/dist/src/utils/process-killer.d.ts.map +1 -0
  28. package/dist/src/utils/process-killer.js +96 -0
  29. package/dist/src/utils/process-killer.js.map +1 -0
  30. package/package.json +4 -2
  31. package/dist/.tsbuildinfo +0 -1
  32. package/dist/test/config/test-config.d.ts +0 -301
  33. package/dist/test/config/test-config.d.ts.map +0 -1
  34. package/dist/test/config/test-config.js +0 -235
  35. package/dist/test/config/test-config.js.map +0 -1
  36. package/dist/test/platform/linux.test.d.ts +0 -6
  37. package/dist/test/platform/linux.test.d.ts.map +0 -1
  38. package/dist/test/platform/linux.test.js +0 -307
  39. package/dist/test/platform/linux.test.js.map +0 -1
  40. package/dist/test/platform/macos.test.d.ts +0 -6
  41. package/dist/test/platform/macos.test.d.ts.map +0 -1
  42. package/dist/test/platform/macos.test.js +0 -276
  43. package/dist/test/platform/macos.test.js.map +0 -1
  44. package/dist/test/platform/windows.test.d.ts +0 -6
  45. package/dist/test/platform/windows.test.d.ts.map +0 -1
  46. package/dist/test/platform/windows.test.js +0 -320
  47. package/dist/test/platform/windows.test.js.map +0 -1
  48. package/dist/test/unit/adapters/adapter-factory.test.d.ts +0 -2
  49. package/dist/test/unit/adapters/adapter-factory.test.d.ts.map +0 -1
  50. package/dist/test/unit/adapters/adapter-factory.test.js +0 -147
  51. package/dist/test/unit/adapters/adapter-factory.test.js.map +0 -1
  52. package/dist/test/unit/adapters/linux-adapter.test.d.ts +0 -2
  53. package/dist/test/unit/adapters/linux-adapter.test.d.ts.map +0 -1
  54. package/dist/test/unit/adapters/linux-adapter.test.js +0 -204
  55. package/dist/test/unit/adapters/linux-adapter.test.js.map +0 -1
  56. package/dist/test/unit/adapters/macos-adapter.test.d.ts +0 -2
  57. package/dist/test/unit/adapters/macos-adapter.test.d.ts.map +0 -1
  58. package/dist/test/unit/adapters/macos-adapter.test.js +0 -237
  59. package/dist/test/unit/adapters/macos-adapter.test.js.map +0 -1
  60. package/dist/test/unit/adapters/windows-adapter.test.d.ts +0 -2
  61. package/dist/test/unit/adapters/windows-adapter.test.d.ts.map +0 -1
  62. package/dist/test/unit/adapters/windows-adapter.test.js +0 -111
  63. package/dist/test/unit/adapters/windows-adapter.test.js.map +0 -1
  64. package/dist/test/unit/core/base-monitor.test.d.ts +0 -2
  65. package/dist/test/unit/core/base-monitor.test.d.ts.map +0 -1
  66. package/dist/test/unit/core/base-monitor.test.js +0 -188
  67. package/dist/test/unit/core/base-monitor.test.js.map +0 -1
  68. package/dist/test/unit/core/cache-manager.test.d.ts +0 -6
  69. package/dist/test/unit/core/cache-manager.test.d.ts.map +0 -1
  70. package/dist/test/unit/core/cache-manager.test.js +0 -127
  71. package/dist/test/unit/core/cache-manager.test.js.map +0 -1
  72. package/dist/test/unit/core/platform-adapter.test.d.ts +0 -2
  73. package/dist/test/unit/core/platform-adapter.test.d.ts.map +0 -1
  74. package/dist/test/unit/core/platform-adapter.test.js +0 -186
  75. package/dist/test/unit/core/platform-adapter.test.js.map +0 -1
  76. package/dist/test/unit/index.test.d.ts +0 -2
  77. package/dist/test/unit/index.test.d.ts.map +0 -1
  78. package/dist/test/unit/index.test.js +0 -183
  79. package/dist/test/unit/index.test.js.map +0 -1
  80. package/dist/test/unit/monitors/cpu-monitor.test.d.ts +0 -2
  81. package/dist/test/unit/monitors/cpu-monitor.test.d.ts.map +0 -1
  82. package/dist/test/unit/monitors/cpu-monitor.test.js +0 -245
  83. package/dist/test/unit/monitors/cpu-monitor.test.js.map +0 -1
  84. package/dist/test/unit/monitors/disk-monitor.test.d.ts +0 -2
  85. package/dist/test/unit/monitors/disk-monitor.test.d.ts.map +0 -1
  86. package/dist/test/unit/monitors/disk-monitor.test.js +0 -46
  87. package/dist/test/unit/monitors/disk-monitor.test.js.map +0 -1
  88. package/dist/test/unit/monitors/memory-monitor.test.d.ts +0 -2
  89. package/dist/test/unit/monitors/memory-monitor.test.d.ts.map +0 -1
  90. package/dist/test/unit/monitors/memory-monitor.test.js +0 -142
  91. package/dist/test/unit/monitors/memory-monitor.test.js.map +0 -1
  92. package/dist/test/unit/monitors/network-monitor.test.d.ts +0 -2
  93. package/dist/test/unit/monitors/network-monitor.test.d.ts.map +0 -1
  94. package/dist/test/unit/monitors/network-monitor.test.js +0 -22
  95. package/dist/test/unit/monitors/network-monitor.test.js.map +0 -1
  96. package/dist/test/unit/monitors/process-monitor.test.d.ts +0 -2
  97. package/dist/test/unit/monitors/process-monitor.test.d.ts.map +0 -1
  98. package/dist/test/unit/monitors/process-monitor.test.js +0 -165
  99. package/dist/test/unit/monitors/process-monitor.test.js.map +0 -1
  100. package/dist/test/unit/monitors/system-monitor-macos.test.d.ts +0 -2
  101. package/dist/test/unit/monitors/system-monitor-macos.test.d.ts.map +0 -1
  102. package/dist/test/unit/monitors/system-monitor-macos.test.js +0 -115
  103. package/dist/test/unit/monitors/system-monitor-macos.test.js.map +0 -1
  104. package/dist/test/unit/monitors/system-monitor.test.d.ts +0 -2
  105. package/dist/test/unit/monitors/system-monitor.test.d.ts.map +0 -1
  106. package/dist/test/unit/monitors/system-monitor.test.js +0 -70
  107. package/dist/test/unit/monitors/system-monitor.test.js.map +0 -1
  108. package/dist/test/unit/types/common.test.d.ts +0 -6
  109. package/dist/test/unit/types/common.test.d.ts.map +0 -1
  110. package/dist/test/unit/types/common.test.js +0 -139
  111. package/dist/test/unit/types/common.test.js.map +0 -1
  112. package/dist/test/unit/types/config.test.d.ts +0 -2
  113. package/dist/test/unit/types/config.test.d.ts.map +0 -1
  114. package/dist/test/unit/types/config.test.js +0 -9
  115. package/dist/test/unit/types/config.test.js.map +0 -1
  116. package/dist/test/unit/types/errors.test.d.ts +0 -6
  117. package/dist/test/unit/types/errors.test.d.ts.map +0 -1
  118. package/dist/test/unit/types/errors.test.js +0 -184
  119. package/dist/test/unit/types/errors.test.js.map +0 -1
  120. package/dist/test/unit/types/index.test.d.ts +0 -2
  121. package/dist/test/unit/types/index.test.d.ts.map +0 -1
  122. package/dist/test/unit/types/index.test.js +0 -39
  123. package/dist/test/unit/types/index.test.js.map +0 -1
  124. package/dist/test/unit/types/monitors.test.d.ts +0 -2
  125. package/dist/test/unit/types/monitors.test.d.ts.map +0 -1
  126. package/dist/test/unit/types/monitors.test.js +0 -9
  127. package/dist/test/unit/types/monitors.test.js.map +0 -1
  128. package/dist/test/unit/types/platform.test.d.ts +0 -2
  129. package/dist/test/unit/types/platform.test.d.ts.map +0 -1
  130. package/dist/test/unit/types/platform.test.js +0 -9
  131. package/dist/test/unit/types/platform.test.js.map +0 -1
  132. package/dist/test/unit/utils/command-executor.test.d.ts +0 -6
  133. package/dist/test/unit/utils/command-executor.test.d.ts.map +0 -1
  134. package/dist/test/unit/utils/command-executor.test.js +0 -190
  135. package/dist/test/unit/utils/command-executor.test.js.map +0 -1
  136. package/dist/test/unit/utils/platform-specific.test.d.ts +0 -2
  137. package/dist/test/unit/utils/platform-specific.test.d.ts.map +0 -1
  138. package/dist/test/unit/utils/platform-specific.test.js +0 -32
  139. package/dist/test/unit/utils/platform-specific.test.js.map +0 -1
  140. package/dist/test/utils/platform-specific.d.ts +0 -139
  141. package/dist/test/utils/platform-specific.d.ts.map +0 -1
  142. package/dist/test/utils/platform-specific.js +0 -306
  143. package/dist/test/utils/platform-specific.js.map +0 -1
  144. package/dist/test/utils/test-base.d.ts +0 -157
  145. package/dist/test/utils/test-base.d.ts.map +0 -1
  146. package/dist/test/utils/test-base.js +0 -316
  147. package/dist/test/utils/test-base.js.map +0 -1
@@ -1,190 +0,0 @@
1
- "use strict";
2
- /**
3
- * CommandExecutor单元测试
4
- * 测试命令执行器的核心功能和错误处理
5
- */
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- const chai_1 = require("chai");
8
- const command_executor_1 = require("../../../src/utils/command-executor");
9
- const errors_1 = require("../../../src/types/errors");
10
- describe('CommandExecutor Unit Tests', function () {
11
- let executor;
12
- beforeEach(function () {
13
- executor = new command_executor_1.CommandExecutor('test-platform', {
14
- timeout: 5000,
15
- encoding: 'utf8'
16
- });
17
- });
18
- describe('基本命令执行', function () {
19
- it('应该能够执行简单的系统命令', async function () {
20
- // 使用跨平台兼容的命令
21
- const command = process.platform === 'win32' ? 'echo hello' : 'echo "hello"';
22
- const result = await executor.execute(command);
23
- (0, chai_1.expect)(result.stdout.trim()).to.equal('hello');
24
- (0, chai_1.expect)(result.stderr).to.equal('');
25
- (0, chai_1.expect)(result.exitCode).to.equal(0);
26
- (0, chai_1.expect)(result.platform).to.equal('test-platform');
27
- (0, chai_1.expect)(result.command).to.equal(command);
28
- (0, chai_1.expect)(result.executionTime).to.be.a('number');
29
- });
30
- it('应该正确处理命令执行失败', async function () {
31
- try {
32
- await executor.execute('nonexistent-command-12345');
33
- // 如果没有抛出错误,则测试失败
34
- chai_1.expect.fail('应该抛出错误');
35
- }
36
- catch (error) {
37
- (0, chai_1.expect)(error).to.be.an('error');
38
- // 检查是否是MonitorError
39
- if (error.code) {
40
- (0, chai_1.expect)(error.code).to.be.oneOf(['COMMAND_FAILED', 'FILE_NOT_FOUND']);
41
- }
42
- }
43
- });
44
- it('应该正确处理有stderr输出但成功的命令', async function () {
45
- // 某些命令会向stderr输出信息但仍然成功
46
- const command = process.platform === 'win32'
47
- ? 'echo error>&2 & echo success'
48
- : 'echo "error" >&2; echo "success"';
49
- const result = await executor.execute(command);
50
- (0, chai_1.expect)(result.stdout.trim()).to.include('success');
51
- (0, chai_1.expect)(result.exitCode).to.equal(0);
52
- });
53
- });
54
- describe('超时处理', function () {
55
- it('应该在超时后终止命令', async function () {
56
- this.timeout(3000); // 设置测试超时
57
- const shortTimeout = new command_executor_1.CommandExecutor('test-platform', { timeout: 100 });
58
- // 创建一个会运行较长时间的命令
59
- const command = process.platform === 'win32'
60
- ? 'ping -n 10 127.0.0.1'
61
- : 'sleep 5';
62
- try {
63
- await shortTimeout.execute(command);
64
- chai_1.expect.fail('应该抛出超时错误');
65
- }
66
- catch (error) {
67
- (0, chai_1.expect)(error).to.be.an('error');
68
- if (error.code) {
69
- (0, chai_1.expect)(error.code).to.equal('TIMEOUT');
70
- }
71
- }
72
- });
73
- });
74
- describe('输出处理', function () {
75
- it('应该正确处理大量输出', async function () {
76
- // 生成大量输出的命令
77
- const command = process.platform === 'win32'
78
- ? 'for /L %i in (1,1,10) do @echo Line %i'
79
- : 'for i in {1..10}; do echo "Line $i"; done';
80
- const result = await executor.execute(command);
81
- const lines = result.stdout.trim().split('\n');
82
- (0, chai_1.expect)(lines.length).to.be.at.least(5); // 至少有一些行
83
- (0, chai_1.expect)(result.exitCode).to.equal(0);
84
- });
85
- it('应该正确处理空输出', async function () {
86
- const command = process.platform === 'win32' ? 'echo.' : 'true';
87
- const result = await executor.execute(command);
88
- (0, chai_1.expect)(result.exitCode).to.equal(0);
89
- });
90
- });
91
- describe('平台特定命令', function () {
92
- it('应该能够执行平台特定的系统信息命令', async function () {
93
- let command;
94
- switch (process.platform) {
95
- case 'darwin':
96
- command = 'uname -s';
97
- break;
98
- case 'linux':
99
- command = 'uname -s';
100
- break;
101
- case 'win32':
102
- command = 'ver';
103
- break;
104
- default:
105
- this.skip();
106
- return;
107
- }
108
- const result = await executor.execute(command);
109
- (0, chai_1.expect)(result.stdout).to.be.a('string');
110
- (0, chai_1.expect)(result.stdout.length).to.be.greaterThan(0);
111
- (0, chai_1.expect)(result.exitCode).to.equal(0);
112
- });
113
- });
114
- describe('配置选项', function () {
115
- it('应该使用自定义配置', async function () {
116
- const customExecutor = new command_executor_1.CommandExecutor('custom-platform', {
117
- timeout: 1000,
118
- encoding: 'utf8'
119
- });
120
- const command = process.platform === 'win32' ? 'echo test' : 'echo "test"';
121
- const result = await customExecutor.execute(command);
122
- (0, chai_1.expect)(result.stdout.trim()).to.equal('test');
123
- (0, chai_1.expect)(result.platform).to.equal('custom-platform');
124
- });
125
- });
126
- describe('并发执行', function () {
127
- it('应该能够并发执行多个命令', async function () {
128
- const commands = [
129
- process.platform === 'win32' ? 'echo 1' : 'echo "1"',
130
- process.platform === 'win32' ? 'echo 2' : 'echo "2"',
131
- process.platform === 'win32' ? 'echo 3' : 'echo "3"'
132
- ];
133
- const promises = commands.map(cmd => executor.execute(cmd));
134
- const results = await Promise.all(promises);
135
- results.forEach((result, index) => {
136
- (0, chai_1.expect)(result.stdout.trim()).to.equal((index + 1).toString());
137
- (0, chai_1.expect)(result.exitCode).to.equal(0);
138
- });
139
- });
140
- });
141
- describe('流式执行', function () {
142
- it('应该在禁用 shell 时正确处理包含空格的命令', async function () {
143
- const script = 'console.log("stream output")';
144
- const command = executor.buildCommand(process.execPath, ['-e', script]);
145
- const chunks = [];
146
- const result = await executor.executeStream(command, (data) => {
147
- chunks.push(data);
148
- }, { shell: false });
149
- (0, chai_1.expect)(result.exitCode).to.equal(0);
150
- (0, chai_1.expect)(chunks.join('')).to.contain('stream output');
151
- });
152
- });
153
- });
154
- describe('CommandExecutor — Deno 兼容性:非标准异常处理', function () {
155
- it('T023: 应将字符串类型的非标准异常统一捕获为 MonitorError(COMMAND_FAILED)', async function () {
156
- const executor = new command_executor_1.CommandExecutor('test-platform');
157
- const internal = executor;
158
- // 模拟 Deno 兼容层抛出非 Error 实例(字符串)
159
- internal.executeWithTimeout = async () => {
160
- // eslint-disable-next-line @typescript-eslint/no-throw-literal
161
- throw 'Deno compat layer: exec failed unexpectedly';
162
- };
163
- try {
164
- await executor.execute('echo test');
165
- chai_1.expect.fail('应该抛出错误');
166
- }
167
- catch (error) {
168
- (0, chai_1.expect)(error).to.be.instanceOf(errors_1.MonitorError);
169
- (0, chai_1.expect)(error.code).to.equal(errors_1.ErrorCode.COMMAND_FAILED);
170
- }
171
- });
172
- it('T023: 应将自定义对象类型的非标准异常统一捕获为 MonitorError(COMMAND_FAILED)', async function () {
173
- const executor = new command_executor_1.CommandExecutor('test-platform');
174
- const internal = executor;
175
- // 模拟 Deno 兼容层抛出普通对象(非 Error 实例)
176
- internal.executeWithTimeout = async () => {
177
- // eslint-disable-next-line @typescript-eslint/no-throw-literal
178
- throw { message: 'DENO_EXEC_ERROR', code: 'ERR_DENO_COMPAT' };
179
- };
180
- try {
181
- await executor.execute('echo test');
182
- chai_1.expect.fail('应该抛出错误');
183
- }
184
- catch (error) {
185
- (0, chai_1.expect)(error).to.be.instanceOf(errors_1.MonitorError);
186
- (0, chai_1.expect)(error.code).to.equal(errors_1.ErrorCode.COMMAND_FAILED);
187
- }
188
- });
189
- });
190
- //# sourceMappingURL=command-executor.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"command-executor.test.js","sourceRoot":"","sources":["../../../../test/unit/utils/command-executor.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=platform-specific.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"platform-specific.test.d.ts","sourceRoot":"","sources":["../../../../test/unit/utils/platform-specific.test.ts"],"names":[],"mappings":""}
@@ -1,32 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const chai_1 = require("chai");
4
- const platform_specific_1 = require("../../utils/platform-specific");
5
- describe('CrossPlatformValidator.validateSystemInfo', () => {
6
- it('应该验证包含核心字段的macOS系统信息', () => {
7
- const info = {
8
- hostname: 'MacBook-Pro',
9
- platform: 'darwin',
10
- release: '23.4.0',
11
- version: 'macOS 14.4',
12
- arch: 'arm64',
13
- uptime: 3600000,
14
- uptimeSeconds: 3600,
15
- bootTime: Date.now() - 3600000,
16
- loadAverage: {
17
- load1: 1.2,
18
- load5: 0.8,
19
- load15: 0.5
20
- }
21
- };
22
- (0, chai_1.expect)(platform_specific_1.CrossPlatformValidator.validateSystemInfo(info)).to.be.true;
23
- });
24
- it('缺少必要字段时应该验证失败', () => {
25
- const invalidInfo = {
26
- platform: 'darwin',
27
- release: '23.4.0'
28
- };
29
- (0, chai_1.expect)(platform_specific_1.CrossPlatformValidator.validateSystemInfo(invalidInfo)).to.be.false;
30
- });
31
- });
32
- //# sourceMappingURL=platform-specific.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"platform-specific.test.js","sourceRoot":"","sources":["../../../../test/unit/utils/platform-specific.test.ts"],"names":[],"mappings":";;AAAA,+BAA6B;AAE7B,qEAAsE;AAEtE,QAAQ,CAAC,2CAA2C,EAAE,GAAG,EAAE;IACzD,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAC9B,MAAM,IAAI,GAAG;YACX,QAAQ,EAAE,aAAa;YACvB,QAAQ,EAAE,QAAQ;YAClB,OAAO,EAAE,QAAQ;YACjB,OAAO,EAAE,YAAY;YACrB,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,OAAQ;YAChB,aAAa,EAAE,IAAI;YACnB,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAQ;YAC/B,WAAW,EAAE;gBACX,KAAK,EAAE,GAAG;gBACV,KAAK,EAAE,GAAG;gBACV,MAAM,EAAE,GAAG;aACZ;SACF,CAAA;QAED,IAAA,aAAM,EAAC,0CAAsB,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAA;IACpE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,eAAe,EAAE,GAAG,EAAE;QACvB,MAAM,WAAW,GAAG;YAClB,QAAQ,EAAE,QAAQ;YAClB,OAAO,EAAE,QAAQ;SAClB,CAAA;QAED,IAAA,aAAM,EAAC,0CAAsB,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAA;IAC5E,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -1,139 +0,0 @@
1
- /**
2
- * 平台特定的测试工具和配置
3
- * 为不同操作系统提供专门的测试支持
4
- */
5
- /**
6
- * Linux特定的测试工具
7
- */
8
- export declare class LinuxTestUtils {
9
- /**
10
- * Linux特定的系统文件路径
11
- */
12
- static readonly PROC_MEMINFO = "/proc/meminfo";
13
- static readonly PROC_CPUINFO = "/proc/cpuinfo";
14
- static readonly PROC_STAT = "/proc/stat";
15
- static readonly PROC_LOADAVG = "/proc/loadavg";
16
- /**
17
- * 检查是否可以访问/proc文件系统
18
- */
19
- static canAccessProc(): boolean;
20
- /**
21
- * 验证Linux的负载平均值
22
- */
23
- static validateLoadAverage(loads: number[]): boolean;
24
- /**
25
- * 获取预期的Linux命令列表
26
- */
27
- static getExpectedCommands(): string[];
28
- /**
29
- * 验证Linux内存信息的结构
30
- */
31
- static validateMemoryInfo(info: any): boolean;
32
- }
33
- /**
34
- * macOS特定的测试工具
35
- */
36
- export declare class MacOSTestUtils {
37
- /**
38
- * macOS特定的系统命令
39
- */
40
- static readonly VM_STAT_CMD = "vm_stat";
41
- static readonly TOP_CMD = "top";
42
- static readonly DF_CMD = "df";
43
- static readonly NETSTAT_CMD = "netstat";
44
- /**
45
- * 验证macOS的vm_stat输出格式
46
- */
47
- static validateVmStatOutput(output: string): boolean;
48
- /**
49
- * 验证macOS的负载平均值(应该正常工作)
50
- */
51
- static validateLoadAverage(loads: number[]): boolean;
52
- /**
53
- * 获取预期的macOS系统命令列表
54
- */
55
- static getExpectedCommands(): string[];
56
- /**
57
- * 验证macOS磁盘信息格式
58
- */
59
- static validateDiskInfo(info: any): boolean;
60
- }
61
- /**
62
- * Windows特定的测试工具
63
- */
64
- export declare class WindowsTestUtils {
65
- /**
66
- * Windows特定的系统命令
67
- */
68
- static readonly WMIC_CMD = "wmic";
69
- static readonly TASKLIST_CMD = "tasklist";
70
- static readonly SYSTEMINFO_CMD = "systeminfo";
71
- /**
72
- * Windows上某些功能可能不支持
73
- */
74
- static readonly UNSUPPORTED_FEATURES: string[];
75
- /**
76
- * 验证Windows的负载平均值(通常返回[0,0,0]或不支持)
77
- */
78
- static validateLoadAverage(loads: number[]): boolean;
79
- /**
80
- * 检查功能是否在Windows上不被支持
81
- */
82
- static isFeatureUnsupported(feature: string): boolean;
83
- /**
84
- * 获取预期的Windows系统命令列表
85
- */
86
- static getExpectedCommands(): string[];
87
- /**
88
- * 验证Windows内存信息的结构
89
- */
90
- static validateMemoryInfo(info: any): boolean;
91
- /**
92
- * 验证Windows磁盘信息(可能使用不同的单位)
93
- */
94
- static validateDiskInfo(info: any): boolean;
95
- }
96
- /**
97
- * 跨平台功能验证工具
98
- */
99
- export declare class CrossPlatformValidator {
100
- /**
101
- * 根据当前平台选择合适的验证器
102
- */
103
- static validateSystemInfo(info: any): boolean;
104
- /**
105
- * 验证负载平均值(考虑平台差异)
106
- */
107
- static validateLoadAverage(loads: number[]): boolean;
108
- /**
109
- * 获取当前平台的预期命令列表
110
- */
111
- static getExpectedCommands(): string[];
112
- /**
113
- * 检查功能是否在当前平台上被支持
114
- */
115
- static isFeatureSupported(feature: string): boolean;
116
- }
117
- /**
118
- * 平台特定的测试数据生成器
119
- */
120
- export declare class PlatformTestDataGenerator {
121
- /**
122
- * 生成平台特定的测试用例
123
- */
124
- static generatePlatformTestCases(): {
125
- platform: string;
126
- platformName: string;
127
- expectedCommands: string[];
128
- supportedFeatures: {
129
- loadavg: boolean;
130
- uptime: boolean;
131
- };
132
- testConfig: {
133
- memoryTestTimeout: number;
134
- diskTestTimeout: number;
135
- networkTestTimeout: number;
136
- };
137
- };
138
- }
139
- //# sourceMappingURL=platform-specific.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"platform-specific.d.ts","sourceRoot":"","sources":["../../../test/utils/platform-specific.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;GAEG;AACH,qBAAa,cAAc;IACzB;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,YAAY,mBAAkB;IAC9C,MAAM,CAAC,QAAQ,CAAC,YAAY,mBAAkB;IAC9C,MAAM,CAAC,QAAQ,CAAC,SAAS,gBAAe;IACxC,MAAM,CAAC,QAAQ,CAAC,YAAY,mBAAkB;IAE9C;;OAEG;IACH,MAAM,CAAC,aAAa,IAAI,OAAO;IAS/B;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO;IAKpD;;OAEG;IACH,MAAM,CAAC,mBAAmB,IAAI,MAAM,EAAE;IAatC;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO;CAM9C;AAED;;GAEG;AACH,qBAAa,cAAc;IACzB;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,WAAW,aAAY;IACvC,MAAM,CAAC,QAAQ,CAAC,OAAO,SAAQ;IAC/B,MAAM,CAAC,QAAQ,CAAC,MAAM,QAAO;IAC7B,MAAM,CAAC,QAAQ,CAAC,WAAW,aAAY;IAEvC;;OAEG;IACH,MAAM,CAAC,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAMpD;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO;IAKpD;;OAEG;IACH,MAAM,CAAC,mBAAmB,IAAI,MAAM,EAAE;IAYtC;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO;CAM5C;AAED;;GAEG;AACH,qBAAa,gBAAgB;IAC3B;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,QAAQ,UAAS;IACjC,MAAM,CAAC,QAAQ,CAAC,YAAY,cAAa;IACzC,MAAM,CAAC,QAAQ,CAAC,cAAc,gBAAe;IAE7C;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,oBAAoB,WAGnC;IAED;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO;IAQpD;;OAEG;IACH,MAAM,CAAC,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIrD;;OAEG;IACH,MAAM,CAAC,mBAAmB,IAAI,MAAM,EAAE;IAUtC;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO;IAO7C;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO;CAM5C;AAED;;GAEG;AACH,qBAAa,sBAAsB;IACjC;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO;IA8D7C;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO;IAWpD;;OAEG;IACH,MAAM,CAAC,mBAAmB,IAAI,MAAM,EAAE;IAWtC;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;CAOpD;AAED;;GAEG;AACH,qBAAa,yBAAyB;IACpC;;OAEG;IACH,MAAM,CAAC,yBAAyB;;;;;;;;;;;;;;CAmBjC"}