Skip to main content
Glama

firewalla-mcp-server

metrics.test.ts3.77 kB
import { metrics } from '../../src/monitoring/metrics.js'; describe('InMemoryMetrics', () => { beforeEach(() => { // Clear metrics before each test metrics.clear(); }); describe('count', () => { it('should increment counter by 1 by default', () => { metrics.count('test.counter'); const snapshot = metrics.snapshot(); expect(snapshot.counters['test.counter']).toBe(1); }); it('should increment counter by specified delta', () => { metrics.count('test.counter', 5); const snapshot = metrics.snapshot(); expect(snapshot.counters['test.counter']).toBe(5); }); it('should accumulate multiple counts', () => { metrics.count('test.counter', 2); metrics.count('test.counter', 3); metrics.count('test.counter'); const snapshot = metrics.snapshot(); expect(snapshot.counters['test.counter']).toBe(6); }); it('should handle multiple different counters', () => { metrics.count('counter1', 1); metrics.count('counter2', 2); const snapshot = metrics.snapshot(); expect(snapshot.counters['counter1']).toBe(1); expect(snapshot.counters['counter2']).toBe(2); }); }); describe('timing', () => { it('should record single timing', () => { metrics.timing('test.timing', 100); const snapshot = metrics.snapshot(); expect(snapshot.timings['test.timing']).toEqual({ count: 1, min: 100, max: 100, avg: 100, p50: 100, p95: 100, p99: 100 }); }); it('should record multiple timings', () => { metrics.timing('test.timing', 100); metrics.timing('test.timing', 200); metrics.timing('test.timing', 300); const snapshot = metrics.snapshot(); expect(snapshot.timings['test.timing']).toEqual({ count: 3, min: 100, max: 300, avg: 200, p50: 200, p95: 300, p99: 300 }); }); it('should handle multiple different timings', () => { metrics.timing('timing1', 100); metrics.timing('timing2', 200); metrics.timing('timing2', 300); const snapshot = metrics.snapshot(); expect(snapshot.timings['timing1']).toEqual({ count: 1, min: 100, max: 100, avg: 100, p50: 100, p95: 100, p99: 100 }); expect(snapshot.timings['timing2']).toEqual({ count: 2, min: 200, max: 300, avg: 250, p50: 300, p95: 300, p99: 300 }); }); }); describe('snapshot', () => { it('should return empty snapshot when no metrics recorded', () => { const snapshot = metrics.snapshot(); expect(snapshot).toEqual({ counters: {}, timings: {} }); }); it('should return complete snapshot with mixed metrics', () => { metrics.count('counter1', 10); metrics.count('counter2', 20); metrics.timing('timing1', 100); metrics.timing('timing1', 200); const snapshot = metrics.snapshot(); expect(snapshot).toEqual({ counters: { counter1: 10, counter2: 20 }, timings: { timing1: { count: 2, min: 100, max: 200, avg: 150, p50: 200, p95: 200, p99: 200 } } }); }); }); describe('clear', () => { it('should clear all metrics', () => { metrics.count('counter', 5); metrics.timing('timing', 100); metrics.clear(); const snapshot = metrics.snapshot(); expect(snapshot).toEqual({ counters: {}, timings: {} }); }); }); });

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/amittell/firewalla-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server