101
tests/procfs-reader.test.ts
Archivo normal
101
tests/procfs-reader.test.ts
Archivo normal
@@ -0,0 +1,101 @@
|
||||
/**
|
||||
* Basic tests for ProcFS Reader
|
||||
*/
|
||||
|
||||
import { ProcFSReader } from '../src/lib/procfs-reader';
|
||||
|
||||
describe('ProcFSReader', () => {
|
||||
let reader: ProcFSReader;
|
||||
|
||||
beforeEach(() => {
|
||||
reader = new ProcFSReader();
|
||||
});
|
||||
|
||||
describe('System Information', () => {
|
||||
test('should read CPU information', async () => {
|
||||
const info = await reader.getCPUInfo();
|
||||
expect(info).toBeDefined();
|
||||
expect(info).toHaveProperty('model');
|
||||
expect(info).toHaveProperty('cores');
|
||||
expect(info).toHaveProperty('processors');
|
||||
expect(typeof info.cores).toBe('number');
|
||||
expect(info.cores).toBeGreaterThan(0);
|
||||
});
|
||||
|
||||
test('should read memory information', async () => {
|
||||
const info = await reader.getMemInfo();
|
||||
expect(info).toBeDefined();
|
||||
expect(info).toHaveProperty('total');
|
||||
expect(info).toHaveProperty('free');
|
||||
expect(info).toHaveProperty('available');
|
||||
expect(typeof info.total).toBe('number');
|
||||
expect(info.total).toBeGreaterThan(0);
|
||||
});
|
||||
|
||||
test('should read load average', async () => {
|
||||
const info = await reader.getLoadAvg();
|
||||
expect(info).toBeDefined();
|
||||
expect(info).toHaveProperty('one');
|
||||
expect(info).toHaveProperty('five');
|
||||
expect(info).toHaveProperty('fifteen');
|
||||
expect(typeof info.one).toBe('number');
|
||||
expect(info.one).toBeGreaterThanOrEqual(0);
|
||||
});
|
||||
|
||||
test('should read network statistics', async () => {
|
||||
const stats = await reader.getNetDevStats();
|
||||
expect(Array.isArray(stats)).toBe(true);
|
||||
if (stats.length > 0) {
|
||||
const first = stats[0];
|
||||
expect(first).toHaveProperty('interface');
|
||||
expect(first).toHaveProperty('rxBytes');
|
||||
expect(first).toHaveProperty('txBytes');
|
||||
}
|
||||
});
|
||||
|
||||
test('should read disk statistics', async () => {
|
||||
const stats = await reader.getDiskStats();
|
||||
expect(Array.isArray(stats)).toBe(true);
|
||||
if (stats.length > 0) {
|
||||
const first = stats[0];
|
||||
expect(first).toHaveProperty('device');
|
||||
expect(first).toHaveProperty('readsCompleted');
|
||||
expect(first).toHaveProperty('writesCompleted');
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
describe('Process Information', () => {
|
||||
test('should list PIDs', async () => {
|
||||
const pids = await reader.listPIDs();
|
||||
expect(Array.isArray(pids)).toBe(true);
|
||||
expect(pids.length).toBeGreaterThan(0);
|
||||
expect(pids).toContain(1); // init/systemd should always exist
|
||||
});
|
||||
|
||||
test('should read process information for PID 1', async () => {
|
||||
const info = await reader.getProcessInfo(1);
|
||||
expect(info).toBeDefined();
|
||||
expect(info.pid).toBe(1);
|
||||
expect(info).toHaveProperty('name');
|
||||
expect(info).toHaveProperty('state');
|
||||
expect(info).toHaveProperty('ppid');
|
||||
});
|
||||
|
||||
test('should throw error for non-existent PID', async () => {
|
||||
await expect(reader.getProcessInfo(999999)).rejects.toThrow();
|
||||
});
|
||||
});
|
||||
|
||||
describe('Raw File Reading', () => {
|
||||
test('should read raw procfs file', async () => {
|
||||
const content = await reader.readRaw('version');
|
||||
expect(typeof content).toBe('string');
|
||||
expect(content.length).toBeGreaterThan(0);
|
||||
});
|
||||
|
||||
test('should throw error for non-existent file', async () => {
|
||||
await expect(reader.readRaw('nonexistent')).rejects.toThrow();
|
||||
});
|
||||
});
|
||||
});
|
||||
Referencia en una nueva incidencia
Block a user