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  })