Add Redis rolling stats for flow packets and z-score driven classifiers
This commit is contained in:
parent
fc7065792f
commit
163ab1039e
10 changed files with 389 additions and 32 deletions
24
services/compute/tests/rolling-stats.test.ts
Normal file
24
services/compute/tests/rolling-stats.test.ts
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
import { describe, expect, test } from "bun:test";
|
||||
import { computeSnapshot, computeStats } from "../src/rolling-stats";
|
||||
|
||||
describe("rolling stats helpers", () => {
|
||||
test("computeStats handles empty baseline", () => {
|
||||
const stats = computeStats([]);
|
||||
expect(stats.count).toBe(0);
|
||||
expect(stats.mean).toBe(0);
|
||||
expect(stats.stddev).toBe(0);
|
||||
});
|
||||
|
||||
test("computeStats calculates mean and stddev", () => {
|
||||
const stats = computeStats([10, 12, 14]);
|
||||
expect(stats.count).toBe(3);
|
||||
expect(stats.mean).toBe(12);
|
||||
expect(stats.stddev).toBeCloseTo(1.633, 3);
|
||||
});
|
||||
|
||||
test("computeSnapshot calculates z-score against baseline", () => {
|
||||
const snapshot = computeSnapshot([10, 12, 14], 15);
|
||||
expect(snapshot.baselineCount).toBe(3);
|
||||
expect(snapshot.zscore).toBeCloseTo(1.84, 2);
|
||||
});
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue