github.com/ethereum-optimism/optimism@v1.7.2/packages/common-ts/test/metrics.spec.ts (about) 1 import request from 'supertest' 2 // Setup 3 import chai = require('chai') 4 const expect = chai.expect 5 6 import { Logger, LegacyMetrics, createMetricsServer } from '../src' 7 8 describe('Metrics', () => { 9 it('should serve metrics', async () => { 10 const metrics = new LegacyMetrics({ 11 prefix: 'test_metrics', 12 }) 13 const registry = metrics.registry 14 const logger = new Logger({ name: 'test_logger' }) 15 16 const server = await createMetricsServer({ 17 logger, 18 registry, 19 port: 42069, 20 }) 21 22 try { 23 // Create two metrics for testing 24 const counter = new metrics.client.Counter({ 25 name: 'counter', 26 help: 'counter help', 27 registers: [registry], 28 }) 29 const gauge = new metrics.client.Gauge({ 30 name: 'gauge', 31 help: 'gauge help', 32 registers: [registry], 33 }) 34 35 counter.inc() 36 counter.inc() 37 gauge.set(100) 38 39 // Verify that the registered metrics are served at `/` 40 const response = await request(server).get('/metrics').send() 41 expect(response.status).eq(200) 42 expect(response.text).match(/counter 2/) 43 expect(response.text).match(/gauge 100/) 44 } finally { 45 server.close() 46 registry.clear() 47 } 48 }) 49 })