import { Registry } from 'prom-client' import { createMetrics, createMetricsServer } from '.' import request from 'supertest' import { createLogger } from '../logging' describe('Metrics', () => { test('Create metrics', () => { const metrics = createMetrics() expect(metrics.client).toBeDefined() expect(metrics.registry).toBeInstanceOf(Registry) metrics.registry.clear() }) test('Serve metrics', async () => { const { client, registry } = createMetrics() const logger = createLogger({ name: 'test' }) const server = createMetricsServer({ logger, registry, port: 51235 }) try { // Create two metrics for testing const counter = new client.Counter({ name: 'counter', help: 'counter help', registers: [registry], }) const gauge = new client.Gauge({ name: 'gauge', help: 'gauge help', registers: [registry], }) counter.inc() counter.inc() gauge.set(100) // Verify that the registered metrics are served at `/` const response = await request(server).get('/metrics').send() expect(response.status).toEqual(200) expect(response.text).toMatch(/counter 2/) expect(response.text).toMatch(/gauge 100/) } finally { server.close() registry.clear() } }) })