node-os-utils 2.0.3 → 2.0.5

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 (144) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/README-zh.md +1291 -0
  3. package/README.md +3 -1
  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 +33 -13
  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 +30 -12
  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/process-monitor.d.ts +17 -4
  18. package/dist/src/monitors/process-monitor.d.ts.map +1 -1
  19. package/dist/src/monitors/process-monitor.js +30 -4
  20. package/dist/src/monitors/process-monitor.js.map +1 -1
  21. package/dist/src/monitors/system-monitor.js +2 -2
  22. package/dist/src/monitors/system-monitor.js.map +1 -1
  23. package/dist/src/utils/process-killer.d.ts +38 -0
  24. package/dist/src/utils/process-killer.d.ts.map +1 -0
  25. package/dist/src/utils/process-killer.js +96 -0
  26. package/dist/src/utils/process-killer.js.map +1 -0
  27. package/package.json +4 -2
  28. package/dist/.tsbuildinfo +0 -1
  29. package/dist/test/config/test-config.d.ts +0 -301
  30. package/dist/test/config/test-config.d.ts.map +0 -1
  31. package/dist/test/config/test-config.js +0 -235
  32. package/dist/test/config/test-config.js.map +0 -1
  33. package/dist/test/platform/linux.test.d.ts +0 -6
  34. package/dist/test/platform/linux.test.d.ts.map +0 -1
  35. package/dist/test/platform/linux.test.js +0 -307
  36. package/dist/test/platform/linux.test.js.map +0 -1
  37. package/dist/test/platform/macos.test.d.ts +0 -6
  38. package/dist/test/platform/macos.test.d.ts.map +0 -1
  39. package/dist/test/platform/macos.test.js +0 -276
  40. package/dist/test/platform/macos.test.js.map +0 -1
  41. package/dist/test/platform/windows.test.d.ts +0 -6
  42. package/dist/test/platform/windows.test.d.ts.map +0 -1
  43. package/dist/test/platform/windows.test.js +0 -320
  44. package/dist/test/platform/windows.test.js.map +0 -1
  45. package/dist/test/unit/adapters/adapter-factory.test.d.ts +0 -2
  46. package/dist/test/unit/adapters/adapter-factory.test.d.ts.map +0 -1
  47. package/dist/test/unit/adapters/adapter-factory.test.js +0 -147
  48. package/dist/test/unit/adapters/adapter-factory.test.js.map +0 -1
  49. package/dist/test/unit/adapters/linux-adapter.test.d.ts +0 -2
  50. package/dist/test/unit/adapters/linux-adapter.test.d.ts.map +0 -1
  51. package/dist/test/unit/adapters/linux-adapter.test.js +0 -280
  52. package/dist/test/unit/adapters/linux-adapter.test.js.map +0 -1
  53. package/dist/test/unit/adapters/macos-adapter.test.d.ts +0 -2
  54. package/dist/test/unit/adapters/macos-adapter.test.d.ts.map +0 -1
  55. package/dist/test/unit/adapters/macos-adapter.test.js +0 -237
  56. package/dist/test/unit/adapters/macos-adapter.test.js.map +0 -1
  57. package/dist/test/unit/adapters/windows-adapter.test.d.ts +0 -2
  58. package/dist/test/unit/adapters/windows-adapter.test.d.ts.map +0 -1
  59. package/dist/test/unit/adapters/windows-adapter.test.js +0 -111
  60. package/dist/test/unit/adapters/windows-adapter.test.js.map +0 -1
  61. package/dist/test/unit/core/base-monitor.test.d.ts +0 -2
  62. package/dist/test/unit/core/base-monitor.test.d.ts.map +0 -1
  63. package/dist/test/unit/core/base-monitor.test.js +0 -188
  64. package/dist/test/unit/core/base-monitor.test.js.map +0 -1
  65. package/dist/test/unit/core/cache-manager.test.d.ts +0 -6
  66. package/dist/test/unit/core/cache-manager.test.d.ts.map +0 -1
  67. package/dist/test/unit/core/cache-manager.test.js +0 -127
  68. package/dist/test/unit/core/cache-manager.test.js.map +0 -1
  69. package/dist/test/unit/core/platform-adapter.test.d.ts +0 -2
  70. package/dist/test/unit/core/platform-adapter.test.d.ts.map +0 -1
  71. package/dist/test/unit/core/platform-adapter.test.js +0 -186
  72. package/dist/test/unit/core/platform-adapter.test.js.map +0 -1
  73. package/dist/test/unit/index.test.d.ts +0 -2
  74. package/dist/test/unit/index.test.d.ts.map +0 -1
  75. package/dist/test/unit/index.test.js +0 -183
  76. package/dist/test/unit/index.test.js.map +0 -1
  77. package/dist/test/unit/monitors/cpu-monitor.test.d.ts +0 -2
  78. package/dist/test/unit/monitors/cpu-monitor.test.d.ts.map +0 -1
  79. package/dist/test/unit/monitors/cpu-monitor.test.js +0 -337
  80. package/dist/test/unit/monitors/cpu-monitor.test.js.map +0 -1
  81. package/dist/test/unit/monitors/disk-monitor.test.d.ts +0 -2
  82. package/dist/test/unit/monitors/disk-monitor.test.d.ts.map +0 -1
  83. package/dist/test/unit/monitors/disk-monitor.test.js +0 -46
  84. package/dist/test/unit/monitors/disk-monitor.test.js.map +0 -1
  85. package/dist/test/unit/monitors/memory-monitor.test.d.ts +0 -2
  86. package/dist/test/unit/monitors/memory-monitor.test.d.ts.map +0 -1
  87. package/dist/test/unit/monitors/memory-monitor.test.js +0 -142
  88. package/dist/test/unit/monitors/memory-monitor.test.js.map +0 -1
  89. package/dist/test/unit/monitors/network-monitor.test.d.ts +0 -2
  90. package/dist/test/unit/monitors/network-monitor.test.d.ts.map +0 -1
  91. package/dist/test/unit/monitors/network-monitor.test.js +0 -22
  92. package/dist/test/unit/monitors/network-monitor.test.js.map +0 -1
  93. package/dist/test/unit/monitors/process-monitor.test.d.ts +0 -2
  94. package/dist/test/unit/monitors/process-monitor.test.d.ts.map +0 -1
  95. package/dist/test/unit/monitors/process-monitor.test.js +0 -165
  96. package/dist/test/unit/monitors/process-monitor.test.js.map +0 -1
  97. package/dist/test/unit/monitors/system-monitor-macos.test.d.ts +0 -2
  98. package/dist/test/unit/monitors/system-monitor-macos.test.d.ts.map +0 -1
  99. package/dist/test/unit/monitors/system-monitor-macos.test.js +0 -115
  100. package/dist/test/unit/monitors/system-monitor-macos.test.js.map +0 -1
  101. package/dist/test/unit/monitors/system-monitor.test.d.ts +0 -2
  102. package/dist/test/unit/monitors/system-monitor.test.d.ts.map +0 -1
  103. package/dist/test/unit/monitors/system-monitor.test.js +0 -70
  104. package/dist/test/unit/monitors/system-monitor.test.js.map +0 -1
  105. package/dist/test/unit/types/common.test.d.ts +0 -6
  106. package/dist/test/unit/types/common.test.d.ts.map +0 -1
  107. package/dist/test/unit/types/common.test.js +0 -139
  108. package/dist/test/unit/types/common.test.js.map +0 -1
  109. package/dist/test/unit/types/config.test.d.ts +0 -2
  110. package/dist/test/unit/types/config.test.d.ts.map +0 -1
  111. package/dist/test/unit/types/config.test.js +0 -9
  112. package/dist/test/unit/types/config.test.js.map +0 -1
  113. package/dist/test/unit/types/errors.test.d.ts +0 -6
  114. package/dist/test/unit/types/errors.test.d.ts.map +0 -1
  115. package/dist/test/unit/types/errors.test.js +0 -184
  116. package/dist/test/unit/types/errors.test.js.map +0 -1
  117. package/dist/test/unit/types/index.test.d.ts +0 -2
  118. package/dist/test/unit/types/index.test.d.ts.map +0 -1
  119. package/dist/test/unit/types/index.test.js +0 -39
  120. package/dist/test/unit/types/index.test.js.map +0 -1
  121. package/dist/test/unit/types/monitors.test.d.ts +0 -2
  122. package/dist/test/unit/types/monitors.test.d.ts.map +0 -1
  123. package/dist/test/unit/types/monitors.test.js +0 -9
  124. package/dist/test/unit/types/monitors.test.js.map +0 -1
  125. package/dist/test/unit/types/platform.test.d.ts +0 -2
  126. package/dist/test/unit/types/platform.test.d.ts.map +0 -1
  127. package/dist/test/unit/types/platform.test.js +0 -9
  128. package/dist/test/unit/types/platform.test.js.map +0 -1
  129. package/dist/test/unit/utils/command-executor.test.d.ts +0 -6
  130. package/dist/test/unit/utils/command-executor.test.d.ts.map +0 -1
  131. package/dist/test/unit/utils/command-executor.test.js +0 -190
  132. package/dist/test/unit/utils/command-executor.test.js.map +0 -1
  133. package/dist/test/unit/utils/platform-specific.test.d.ts +0 -2
  134. package/dist/test/unit/utils/platform-specific.test.d.ts.map +0 -1
  135. package/dist/test/unit/utils/platform-specific.test.js +0 -32
  136. package/dist/test/unit/utils/platform-specific.test.js.map +0 -1
  137. package/dist/test/utils/platform-specific.d.ts +0 -139
  138. package/dist/test/utils/platform-specific.d.ts.map +0 -1
  139. package/dist/test/utils/platform-specific.js +0 -306
  140. package/dist/test/utils/platform-specific.js.map +0 -1
  141. package/dist/test/utils/test-base.d.ts +0 -157
  142. package/dist/test/utils/test-base.d.ts.map +0 -1
  143. package/dist/test/utils/test-base.js +0 -316
  144. package/dist/test/utils/test-base.js.map +0 -1
@@ -1,280 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const chai_1 = require("chai");
7
- const linux_adapter_1 = require("../../../src/adapters/linux-adapter");
8
- const errors_1 = require("../../../src/types/errors");
9
- const os_1 = __importDefault(require("os"));
10
- describe('LinuxAdapter 内部解析逻辑', () => {
11
- it('应基于差分快照计算 CPU 使用率', () => {
12
- const adapter = new linux_adapter_1.LinuxAdapter();
13
- const internal = adapter;
14
- const snapshotA = `cpu 100 20 80 1000 10 5 5 0\n` +
15
- `cpu0 50 10 40 500 5 2 3 0\n` +
16
- `cpu1 50 10 40 500 5 3 2 0\n`;
17
- const snapshotB = `cpu 150 30 120 1100 20 10 10 0\n` +
18
- `cpu0 80 15 60 550 10 4 5 0\n` +
19
- `cpu1 70 15 60 550 10 6 5 0\n`;
20
- const first = internal.parseCpuStat(snapshotA);
21
- const second = internal.parseCpuStat(snapshotB);
22
- const usage = internal.calculateCpuUsage(first, second);
23
- (0, chai_1.expect)(usage.overall).to.be.closeTo(54.54, 0.1);
24
- (0, chai_1.expect)(usage.user).to.be.closeTo(27.27, 0.1);
25
- (0, chai_1.expect)(usage.system).to.be.closeTo(18.18, 0.1);
26
- (0, chai_1.expect)(usage.idle).to.be.closeTo(45.45, 0.1);
27
- (0, chai_1.expect)(usage.iowait).to.be.closeTo(4.54, 0.1);
28
- (0, chai_1.expect)(usage.irq).to.be.closeTo(2.27, 0.1);
29
- (0, chai_1.expect)(usage.softirq).to.be.closeTo(2.27, 0.1);
30
- (0, chai_1.expect)(usage.cores).to.have.lengthOf(2);
31
- (0, chai_1.expect)(usage.cores[0]).to.be.closeTo(56.14, 0.2);
32
- (0, chai_1.expect)(usage.cores[1]).to.be.closeTo(52.83, 0.2);
33
- });
34
- it('应正确解析 ip addr 输出中的网卡名称与地址', () => {
35
- const adapter = new linux_adapter_1.LinuxAdapter();
36
- const internal = adapter;
37
- const sampleOutput = `1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000\n` +
38
- ` link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00\n` +
39
- ` inet 127.0.0.1/8 scope host lo\n` +
40
- ` valid_lft forever preferred_lft forever\n` +
41
- ` inet6 ::1/128 scope host \n` +
42
- ` valid_lft forever preferred_lft forever\n` +
43
- `2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000\n` +
44
- ` link/ether aa:bb:cc:dd:ee:ff brd ff:ff:ff:ff:ff:ff\n` +
45
- ` inet 192.168.1.10/24 brd 192.168.1.255 scope global dynamic eth0\n` +
46
- ` valid_lft 86325sec preferred_lft 86325sec\n` +
47
- ` inet6 fe80::aabb:ccff:fedd:eeff/64 scope link \n` +
48
- ` valid_lft forever preferred_lft forever\n`;
49
- const interfaces = internal.parseNetworkInterfaces(sampleOutput);
50
- (0, chai_1.expect)(interfaces).to.have.lengthOf(2);
51
- const loopback = interfaces[0];
52
- const eth0 = interfaces[1];
53
- (0, chai_1.expect)(loopback.name).to.equal('lo');
54
- (0, chai_1.expect)(loopback.state).to.equal('unknown');
55
- (0, chai_1.expect)(loopback.internal).to.be.true;
56
- (0, chai_1.expect)(loopback.addresses.map((item) => item.address)).to.include.members(['127.0.0.1', '::1']);
57
- (0, chai_1.expect)(eth0.name).to.equal('eth0');
58
- (0, chai_1.expect)(eth0.state).to.equal('up');
59
- (0, chai_1.expect)(eth0.internal).to.be.false;
60
- (0, chai_1.expect)(eth0.addresses.map((item) => item.address)).to.include('192.168.1.10');
61
- });
62
- it('应解析进程内存与启动时间', () => {
63
- const adapter = new linux_adapter_1.LinuxAdapter();
64
- const internal = adapter;
65
- const stat = '123 (bash) R 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 500 0 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0';
66
- const status = 'Name:\tbash\nThreads:\t2\nVmRSS:\t2048 kB\nVmSize:\t4096 kB\n';
67
- const cmdline = 'bash\0--login\0';
68
- const result = internal.parseProcessInfo(123, stat, status, cmdline);
69
- (0, chai_1.expect)(result.memoryUsage).to.equal(2048 * 1024);
70
- (0, chai_1.expect)(result.rss).to.equal(2048 * 1024);
71
- const now = Date.now();
72
- let systemUptimeMs = 0;
73
- try {
74
- systemUptimeMs = os_1.default.uptime() * 1000;
75
- }
76
- catch {
77
- systemUptimeMs = 0;
78
- }
79
- (0, chai_1.expect)(result.startTime).to.be.at.most(now);
80
- const lowerBound = systemUptimeMs > 0 ? now - systemUptimeMs - 1000 : now - 1000;
81
- (0, chai_1.expect)(result.startTime).to.be.at.least(lowerBound);
82
- });
83
- it('应优先使用 uname -m 解析体系结构', () => {
84
- const adapter = new linux_adapter_1.LinuxAdapter();
85
- const internal = adapter;
86
- const uname = 'Linux test-host 5.15.0-89-generic #99-Ubuntu SMP PREEMPT Fri x86_64 x86_64 x86_64 GNU/Linux';
87
- const version = 'Ubuntu 5.15.0-89-generic';
88
- const uptime = '12345.67 4567.89';
89
- const loadavg = '0.10 0.20 0.30 1/234 567';
90
- const machine = 'x86_64\n';
91
- const info = internal.parseSystemInfo(uname, version, uptime, loadavg, machine);
92
- (0, chai_1.expect)(info.arch).to.equal('x86_64');
93
- });
94
- it('在缺少 uname -m 时仍能推断常见架构', () => {
95
- const adapter = new linux_adapter_1.LinuxAdapter();
96
- const internal = adapter;
97
- const uname = 'Linux test 6.5.0-21 #1 SMP PREEMPT_DYNAMIC Wed aarch64 GNU/Linux';
98
- const version = '#1 SMP PREEMPT';
99
- const uptime = '1000.00 2000.00';
100
- const loadavg = '0.50 0.60 0.70 1/1 2';
101
- const info = internal.parseSystemInfo(uname, version, uptime, loadavg, '');
102
- (0, chai_1.expect)(info.arch.toLowerCase()).to.equal('aarch64');
103
- });
104
- it('应正确解析多种默认网关格式', () => {
105
- const adapter = new linux_adapter_1.LinuxAdapter();
106
- const internal = adapter;
107
- const viaOutput = 'default via 192.168.1.1 dev eth0 proto dhcp metric 100';
108
- const directOutput = 'default dev ppp0 scope link';
109
- const viaResult = internal.parseDefaultGateway(viaOutput);
110
- (0, chai_1.expect)(viaResult).to.deep.equal({ gateway: '192.168.1.1', interface: 'eth0' });
111
- const directResult = internal.parseDefaultGateway(directOutput);
112
- (0, chai_1.expect)(directResult).to.deep.equal({ gateway: null, interface: 'ppp0' });
113
- });
114
- it('网络命令回退失败时应保留主次错误', async () => {
115
- const adapter = new linux_adapter_1.LinuxAdapter();
116
- let callCount = 0;
117
- adapter.executeCommand = async (command) => {
118
- callCount += 1;
119
- if (command === 'ip addr show') {
120
- throw errors_1.MonitorError.createCommandFailed('linux', command, { reason: 'ip missing' });
121
- }
122
- throw errors_1.MonitorError.createCommandFailed('linux', command, { reason: 'ifconfig missing' });
123
- };
124
- try {
125
- await adapter.getNetworkInterfaces();
126
- chai_1.expect.fail('应该抛出 MonitorError');
127
- }
128
- catch (error) {
129
- (0, chai_1.expect)(error).to.be.instanceOf(errors_1.MonitorError);
130
- (0, chai_1.expect)(error.details.primary.details.reason).to.equal('ip missing');
131
- (0, chai_1.expect)(error.details.fallback.details.reason).to.equal('ifconfig missing');
132
- }
133
- (0, chai_1.expect)(callCount).to.equal(2);
134
- });
135
- it('容器环境应禁用系统服务能力', async () => {
136
- const adapter = new linux_adapter_1.LinuxAdapter();
137
- const internal = adapter;
138
- internal.containerMode = true;
139
- internal.supportedFeatures.system.services = false;
140
- internal.executeCommand = async () => {
141
- throw new Error('systemctl should not be called in container mode');
142
- };
143
- (0, chai_1.expect)(adapter.getSupportedFeatures().system.services).to.be.false;
144
- try {
145
- await adapter.getSystemServices();
146
- chai_1.expect.fail('should throw MonitorError');
147
- }
148
- catch (error) {
149
- (0, chai_1.expect)(error).to.be.instanceOf(errors_1.MonitorError);
150
- (0, chai_1.expect)(error.code).to.equal(errors_1.ErrorCode.PLATFORM_NOT_SUPPORTED);
151
- }
152
- });
153
- it('T022: getCPUInfo() 在读取 /proc/cpuinfo 失败时应降级到 os.cpus() 数据而非抛出异常', async () => {
154
- const adapter = new linux_adapter_1.LinuxAdapter();
155
- const internal = adapter;
156
- // stub readFile 使 /proc/cpuinfo 读取失败
157
- internal.readFile = async () => {
158
- throw new errors_1.MonitorError('/proc/cpuinfo 不可访问', errors_1.ErrorCode.COMMAND_FAILED, 'linux');
159
- };
160
- const result = await adapter.getCPUInfo();
161
- (0, chai_1.expect)(result).to.be.an('object');
162
- (0, chai_1.expect)(result.cores).to.be.a('number').and.to.be.greaterThan(0);
163
- (0, chai_1.expect)(result.threads).to.be.a('number').and.to.be.greaterThan(0);
164
- (0, chai_1.expect)(result.model).to.be.a('string').and.to.have.length.greaterThan(0);
165
- });
166
- // ——— #37 修复:df 遇到无权限挂载点时不应整体失败 ———
167
- it('getDiskInfo() 在 df 遇到权限错误但 stdout 有效时应正常返回磁盘列表', async () => {
168
- const adapter = new linux_adapter_1.LinuxAdapter();
169
- adapter.executeCommand = async () => ({
170
- stdout: [
171
- 'Filesystem Size Used Avail Use% Mounted on',
172
- '/dev/sda1 50G 20G 30G 40% /',
173
- '/dev/sdb1 100G 60G 40G 60% /data'
174
- ].join('\n'),
175
- stderr: 'df: /run/user/1000/doc: Operation not permitted',
176
- exitCode: 1,
177
- platform: 'linux',
178
- executionTime: 5,
179
- command: 'df -h'
180
- });
181
- const result = await adapter.getDiskInfo();
182
- (0, chai_1.expect)(result).to.be.an('array').with.lengthOf(2);
183
- (0, chai_1.expect)(result[0].mountpoint).to.equal('/');
184
- (0, chai_1.expect)(result[1].mountpoint).to.equal('/data');
185
- });
186
- it('getDiskInfo() 在 df stdout 为空时应抛出错误', async () => {
187
- const adapter = new linux_adapter_1.LinuxAdapter();
188
- adapter.executeCommand = async () => ({
189
- stdout: '',
190
- stderr: 'df: command not found',
191
- exitCode: 127,
192
- platform: 'linux',
193
- executionTime: 0,
194
- command: 'df -h'
195
- });
196
- try {
197
- await adapter.getDiskInfo();
198
- chai_1.expect.fail('应该抛出 MonitorError');
199
- }
200
- catch (error) {
201
- (0, chai_1.expect)(error).to.be.instanceOf(errors_1.MonitorError);
202
- }
203
- });
204
- it('getDiskUsage() 在 df 遇到权限错误但 stdout 有效时应正常返回磁盘列表', async () => {
205
- const adapter = new linux_adapter_1.LinuxAdapter();
206
- adapter.executeCommand = async () => ({
207
- stdout: [
208
- 'Filesystem 1B-blocks Used Available Use% Mounted on',
209
- '/dev/sda1 53687091200 21474836480 32212254720 40% /',
210
- '/dev/sdb1 107374182400 64424509440 42949672960 60% /data'
211
- ].join('\n'),
212
- stderr: 'df: /run/user/1000/doc: Operation not permitted',
213
- exitCode: 1,
214
- platform: 'linux',
215
- executionTime: 5,
216
- command: 'df -B1'
217
- });
218
- const result = await adapter.getDiskUsage();
219
- (0, chai_1.expect)(result).to.be.an('array').with.lengthOf(2);
220
- (0, chai_1.expect)(result[0].mountPoint).to.equal('/');
221
- (0, chai_1.expect)(result[1].mountPoint).to.equal('/data');
222
- (0, chai_1.expect)(result[0].usagePercentage).to.equal(40);
223
- });
224
- it('getDiskUsage() 在 df stdout 为空时应抛出错误', async () => {
225
- const adapter = new linux_adapter_1.LinuxAdapter();
226
- adapter.executeCommand = async () => ({
227
- stdout: '',
228
- stderr: 'df: command not found',
229
- exitCode: 127,
230
- platform: 'linux',
231
- executionTime: 0,
232
- command: 'df -B1'
233
- });
234
- try {
235
- await adapter.getDiskUsage();
236
- chai_1.expect.fail('应该抛出 MonitorError');
237
- }
238
- catch (error) {
239
- (0, chai_1.expect)(error).to.be.instanceOf(errors_1.MonitorError);
240
- }
241
- });
242
- it('应在 ss 不可用时回退到 netstat 解析连接', async () => {
243
- const adapter = new linux_adapter_1.LinuxAdapter();
244
- const internal = adapter;
245
- const commands = [];
246
- internal.executeCommand = async (command) => {
247
- commands.push(command);
248
- if (command === 'ss -tuln') {
249
- throw errors_1.MonitorError.createCommandFailed('linux', command, { reason: 'missing ss' });
250
- }
251
- if (command === 'netstat -tuln') {
252
- return {
253
- stdout: 'Proto Recv-Q Send-Q Local Address Foreign Address State\n' +
254
- 'tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN\n',
255
- stderr: '',
256
- exitCode: 0,
257
- platform: 'linux',
258
- executionTime: 1,
259
- command
260
- };
261
- }
262
- return {
263
- stdout: '',
264
- stderr: 'unsupported',
265
- exitCode: 1,
266
- platform: 'linux',
267
- executionTime: 0,
268
- command
269
- };
270
- };
271
- const results = await adapter.getNetworkConnections();
272
- (0, chai_1.expect)(results).to.have.lengthOf(1);
273
- (0, chai_1.expect)(results[0].protocol).to.equal('tcp');
274
- (0, chai_1.expect)(results[0].state).to.equal('listen');
275
- (0, chai_1.expect)(results[0].localAddress).to.equal('0.0.0.0:22');
276
- (0, chai_1.expect)(results[0].foreignAddress).to.equal('0.0.0.0:*');
277
- (0, chai_1.expect)(commands).to.deep.equal(['ss -tuln', 'netstat -tuln']);
278
- });
279
- });
280
- //# sourceMappingURL=linux-adapter.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"linux-adapter.test.js","sourceRoot":"","sources":["../../../../test/unit/adapters/linux-adapter.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=macos-adapter.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"macos-adapter.test.d.ts","sourceRoot":"","sources":["../../../../test/unit/adapters/macos-adapter.test.ts"],"names":[],"mappings":""}
@@ -1,237 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const chai_1 = require("chai");
7
- const os_1 = __importDefault(require("os"));
8
- const macos_adapter_1 = require("../../../src/adapters/macos-adapter");
9
- const errors_1 = require("../../../src/types/errors");
10
- describe('MacOSAdapter 内部解析逻辑', () => {
11
- it('应当将 RSS 转换为字节并保留内存百分比', () => {
12
- const adapter = new macos_adapter_1.MacOSAdapter();
13
- const internal = adapter;
14
- const data = {
15
- summary: '123 1 20480 12.5 3.4 R user',
16
- command: '/usr/bin/example --flag',
17
- start: 'Mon Mar 11 10:00:00 2024'
18
- };
19
- const result = internal.parseProcessInfo(data, 123);
20
- (0, chai_1.expect)(result.pid).to.equal(123);
21
- (0, chai_1.expect)(result.ppid).to.equal(1);
22
- (0, chai_1.expect)(result.command).to.equal('/usr/bin/example --flag');
23
- (0, chai_1.expect)(result.memoryUsage).to.equal(20480 * 1024);
24
- (0, chai_1.expect)(result.memoryPercentage).to.be.closeTo(3.4, 0.0001);
25
- (0, chai_1.expect)(result.cpuUsage).to.be.closeTo(12.5, 0.0001);
26
- (0, chai_1.expect)(result.state).to.equal('R');
27
- });
28
- it('应当根据 vm_stat 中的页面大小正确计算内存', () => {
29
- const adapter = new macos_adapter_1.MacOSAdapter();
30
- const internal = adapter;
31
- const vmStatOutput = [
32
- 'Mach Virtual Memory Statistics: (page size of 16384 bytes)',
33
- 'Pages free: 100.',
34
- 'Pages active: 200.',
35
- 'Pages inactive: 300.',
36
- 'Pages wired down: 400.',
37
- 'Pages occupied by compressor: 50.',
38
- ''
39
- ].join('\n');
40
- const totalMem = (16 * 1024 * 1024 * 1024).toString();
41
- const pressureOutput = 'System-wide memory pressure: warn';
42
- const result = internal.parseMemoryInfo(vmStatOutput, totalMem, pressureOutput);
43
- const pageSize = 16384;
44
- (0, chai_1.expect)(result.total).to.equal(16 * 1024 * 1024 * 1024);
45
- (0, chai_1.expect)(result.free).to.equal(100 * pageSize);
46
- (0, chai_1.expect)(result.active).to.equal(200 * pageSize);
47
- (0, chai_1.expect)(result.inactive).to.equal(300 * pageSize);
48
- (0, chai_1.expect)(result.wired).to.equal(400 * pageSize);
49
- (0, chai_1.expect)(result.compressed).to.equal(50 * pageSize);
50
- (0, chai_1.expect)(result.used).to.equal((200 + 400 + 50) * pageSize);
51
- (0, chai_1.expect)(result.available).to.equal(result.total - result.used);
52
- (0, chai_1.expect)(result.pressure.level).to.equal('high');
53
- });
54
- it('应当正确解析 iostat 输出的磁盘数据', () => {
55
- const adapter = new macos_adapter_1.MacOSAdapter();
56
- const internal = adapter;
57
- const iostatOutput = `
58
- disk0 disk1
59
- KB/t tps MB/s KB/t tps MB/s
60
- 16.00 1 0.01 32.00 2 0.06
61
- `;
62
- const ioResult = internal.parseDiskIO(iostatOutput);
63
- const statsResult = internal.parseDiskStats(iostatOutput);
64
- (0, chai_1.expect)(ioResult).to.have.lengthOf(2);
65
- (0, chai_1.expect)(ioResult[0].device).to.equal('disk0');
66
- (0, chai_1.expect)(ioResult[0].kbPerTransfer).to.be.closeTo(16, 0.001);
67
- (0, chai_1.expect)(ioResult[0].mbPerSec).to.be.closeTo(0.01, 0.0001);
68
- (0, chai_1.expect)(ioResult[0].readSpeed).to.be.closeTo(0.01 * 1024 * 1024, 1e-6);
69
- (0, chai_1.expect)(statsResult[0].device).to.equal('disk0');
70
- (0, chai_1.expect)(statsResult[0].readCount).to.equal(1);
71
- (0, chai_1.expect)(statsResult[0].readSpeed).to.be.closeTo(0.01 * 1024 * 1024, 1e-6);
72
- (0, chai_1.expect)(statsResult[0].writeBytes).to.equal(0);
73
- });
74
- it('应当在解析进程环境变量时保留带空格的值', () => {
75
- const adapter = new macos_adapter_1.MacOSAdapter();
76
- const internal = adapter;
77
- const envOutput = [
78
- '123 ?? Ss 0:00.01 /usr/bin/node --inspect',
79
- 'PATH=/usr/bin:/bin HOME=/Users/test PID=1234 APP_NAME=My App With Spaces LANG=en_US.UTF-8',
80
- 'LOG_LEVEL="debug mode" EMPTY_VAR= NEXT=final'
81
- ].join('\n');
82
- const result = internal.parseEnvironment(envOutput);
83
- (0, chai_1.expect)(result.PATH).to.equal('/usr/bin:/bin');
84
- (0, chai_1.expect)(result.HOME).to.equal('/Users/test');
85
- (0, chai_1.expect)(result).to.not.have.property('PID');
86
- (0, chai_1.expect)(result.APP_NAME).to.equal('My App With Spaces');
87
- (0, chai_1.expect)(result.LANG).to.equal('en_US.UTF-8');
88
- (0, chai_1.expect)(result.LOG_LEVEL).to.equal('"debug mode"');
89
- (0, chai_1.expect)(result.EMPTY_VAR).to.equal('');
90
- (0, chai_1.expect)(result.NEXT).to.equal('final');
91
- });
92
- it('应当从 ifconfig 输出中提取 MAC 地址', () => {
93
- const adapter = new macos_adapter_1.MacOSAdapter();
94
- const internal = adapter;
95
- const ifconfigOutput = [
96
- 'lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384',
97
- '\tinet 127.0.0.1 netmask 0xff000000',
98
- 'en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500',
99
- '\tether f0:18:98:73:ad:10',
100
- '\tinet 192.168.1.2 netmask 0xffffff00 broadcast 192.168.1.255',
101
- '\tinet6 fe80::c86:abcd:ef12%en0 prefixlen 64'
102
- ].join('\n');
103
- const result = internal.parseNetworkInterfaces(ifconfigOutput);
104
- const en0 = result.find((iface) => iface.name === 'en0');
105
- (0, chai_1.expect)(en0).to.exist;
106
- (0, chai_1.expect)(en0.mac).to.equal('f0:18:98:73:ad:10');
107
- (0, chai_1.expect)(en0.addresses).to.have.lengthOf(2);
108
- });
109
- it('应当解析系统信息并计算启动时间', () => {
110
- const adapter = new macos_adapter_1.MacOSAdapter();
111
- const internal = adapter;
112
- const originalUptime = os_1.default.uptime;
113
- os_1.default.uptime = () => 1234;
114
- try {
115
- const uname = 'Darwin MacBook-Pro 23.4.0 Darwin Kernel Version';
116
- const uptime = ' 10:22 up 3:24, 2 users, load averages: 1.23 0.56 0.42';
117
- const loadavg = '{ 1.23 0.56 0.42 }';
118
- const swVers = 'ProductName: macOS\nProductVersion: 14.4\nBuildVersion: 23E214';
119
- const result = internal.parseSystemInfo(uname, uptime, loadavg, swVers);
120
- (0, chai_1.expect)(result.platform).to.equal('darwin');
121
- (0, chai_1.expect)(result.version).to.equal(swVers.trim());
122
- (0, chai_1.expect)(result.loadAverage.load1).to.be.closeTo(1.23, 0.0001);
123
- (0, chai_1.expect)(result.uptimeSeconds).to.equal(1234);
124
- (0, chai_1.expect)(result.bootTime).to.be.closeTo(Date.now() - 1234 * 1000, 50);
125
- }
126
- finally {
127
- os_1.default.uptime = originalUptime;
128
- }
129
- });
130
- it('应当解析 netstat 输出中的收发字节统计', () => {
131
- const adapter = new macos_adapter_1.MacOSAdapter();
132
- const internal = adapter;
133
- const netstatOutput = [
134
- 'Name Mtu Net/Dest Address Ibytes Obytes Ipackets Ierrs Opackets Oerrs Collisions',
135
- 'en0 1500 link#5 f0:18:98:73:ad:10 42 1 4096 84 0 8192 2'
136
- ].join('\n');
137
- const stats = internal.parseNetworkStats(netstatOutput);
138
- (0, chai_1.expect)(stats).to.have.lengthOf(1);
139
- (0, chai_1.expect)(stats[0].interface).to.equal('en0');
140
- (0, chai_1.expect)(stats[0].rxPackets).to.equal(42);
141
- (0, chai_1.expect)(stats[0].rxErrors).to.equal(1);
142
- (0, chai_1.expect)(stats[0].rxBytes).to.equal(4096);
143
- (0, chai_1.expect)(stats[0].txPackets).to.equal(84);
144
- (0, chai_1.expect)(stats[0].txBytes).to.equal(8192);
145
- (0, chai_1.expect)(stats[0].collisions).to.equal(2);
146
- });
147
- it('应当从 route 输出中解析默认网关', () => {
148
- const adapter = new macos_adapter_1.MacOSAdapter();
149
- const internal = adapter;
150
- const routeOutput = [
151
- ' route to: default',
152
- 'destination: default',
153
- ' mask: default',
154
- ' gateway: 192.168.1.1',
155
- ' interface: en0',
156
- ' flags: <UP,GATEWAY,DONE,STATIC>'
157
- ].join('\n');
158
- const result = internal.parseDefaultGateway(routeOutput);
159
- (0, chai_1.expect)(result).to.deep.equal({ gateway: '192.168.1.1', interface: 'en0' });
160
- });
161
- it('T022: getCPUInfo() 在 sysctl 命令全部失败时应降级到 os.cpus() 数据而非抛出异常', async () => {
162
- const adapter = new macos_adapter_1.MacOSAdapter();
163
- const internal = adapter;
164
- // stub executeCommand 使所有 sysctl 命令失败
165
- internal.executeCommand = async () => {
166
- throw new errors_1.MonitorError('sysctl 不可用', errors_1.ErrorCode.COMMAND_FAILED, 'darwin');
167
- };
168
- const result = await adapter.getCPUInfo();
169
- (0, chai_1.expect)(result).to.be.an('object');
170
- (0, chai_1.expect)(result.cores).to.be.a('number').and.to.be.greaterThan(0);
171
- (0, chai_1.expect)(result.threads).to.be.a('number').and.to.be.greaterThan(0);
172
- (0, chai_1.expect)(result.model).to.be.a('string').and.to.have.length.greaterThan(0);
173
- });
174
- it('在 top 失败时应回退到 iostat 获取 CPU 使用率', async () => {
175
- const adapter = new macos_adapter_1.MacOSAdapter();
176
- const internal = adapter;
177
- const commands = [];
178
- internal.executeCommand = async (command) => {
179
- commands.push(command);
180
- if (command.startsWith('top')) {
181
- throw new Error('top failed');
182
- }
183
- if (command.startsWith('iostat')) {
184
- return {
185
- stdout: ' cpu\n us sy id\n 12 5 83\n',
186
- stderr: '',
187
- exitCode: 0,
188
- platform: 'darwin',
189
- executionTime: 1,
190
- command
191
- };
192
- }
193
- throw new Error(`unexpected command: ${command}`);
194
- };
195
- const usage = await adapter.getCPUUsage();
196
- (0, chai_1.expect)(commands).to.deep.equal(['top -l 1 -n 0', 'iostat -c 1']);
197
- (0, chai_1.expect)(usage.overall).to.be.closeTo(17, 0.0001);
198
- (0, chai_1.expect)(usage.user).to.be.closeTo(12, 0.0001);
199
- (0, chai_1.expect)(usage.system).to.be.closeTo(5, 0.0001);
200
- (0, chai_1.expect)(usage.idle).to.be.closeTo(83, 0.0001);
201
- });
202
- it('powermetrics 无法执行时应返回不支持错误', async () => {
203
- const adapter = new macos_adapter_1.MacOSAdapter();
204
- const internal = adapter;
205
- internal.executeCommand = async () => {
206
- throw Object.assign(new Error('permission denied'), { code: 'EACCES' });
207
- };
208
- try {
209
- await adapter.getCPUTemperature();
210
- chai_1.expect.fail('should not succeed');
211
- }
212
- catch (error) {
213
- (0, chai_1.expect)(error).to.be.instanceOf(errors_1.MonitorError);
214
- const monitorError = error;
215
- (0, chai_1.expect)(monitorError.code).to.equal(errors_1.ErrorCode.PLATFORM_NOT_SUPPORTED);
216
- (0, chai_1.expect)(monitorError.platform).to.equal('darwin');
217
- }
218
- });
219
- it('读取文件权限不足时应抛出权限错误', async () => {
220
- const adapter = new macos_adapter_1.MacOSAdapter();
221
- const internal = adapter;
222
- internal.executeCommand = async () => {
223
- throw Object.assign(new Error('permission denied'), { code: 'EACCES' });
224
- };
225
- try {
226
- await adapter.readFile('/private/secret');
227
- chai_1.expect.fail('should not succeed');
228
- }
229
- catch (error) {
230
- (0, chai_1.expect)(error).to.be.instanceOf(errors_1.MonitorError);
231
- const monitorError = error;
232
- (0, chai_1.expect)(monitorError.code).to.equal(errors_1.ErrorCode.PERMISSION_DENIED);
233
- (0, chai_1.expect)(monitorError.details.path).to.equal('/private/secret');
234
- }
235
- });
236
- });
237
- //# sourceMappingURL=macos-adapter.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"macos-adapter.test.js","sourceRoot":"","sources":["../../../../test/unit/adapters/macos-adapter.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=windows-adapter.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"windows-adapter.test.d.ts","sourceRoot":"","sources":["../../../../test/unit/adapters/windows-adapter.test.ts"],"names":[],"mappings":""}