From 116112af01e3f4b894ccc40857858bf42bde5d81 Mon Sep 17 00:00:00 2001 From: "Arend van Beelen jr." Date: Tue, 5 Dec 2023 10:28:56 +0100 Subject: [PATCH] Test fixes --- .../src/exporter-prometheus/PrometheusExporter.ts | 5 +++-- packages/autometrics/tests/otlpHttpExporter.test.ts | 4 +++- packages/autometrics/tests/testUtils.ts | 4 +++- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/packages/autometrics/src/exporter-prometheus/PrometheusExporter.ts b/packages/autometrics/src/exporter-prometheus/PrometheusExporter.ts index 1c225c9..78cdca5 100644 --- a/packages/autometrics/src/exporter-prometheus/PrometheusExporter.ts +++ b/packages/autometrics/src/exporter-prometheus/PrometheusExporter.ts @@ -42,6 +42,7 @@ export interface ExporterConfig { export class PrometheusExporter extends MetricReader { private readonly _abortController: AbortController; + private readonly _server: Deno.HttpServer; // This will be required when histogram is implemented. Leaving here so it is not forgotten // Histogram cannot have a attribute named 'le' @@ -68,7 +69,7 @@ export class PrometheusExporter extends MetricReader { this._abortController = new AbortController(); const { signal } = this._abortController; - Deno.serve({ hostname, port, signal, onError }, async (request) => { + this._server = Deno.serve({ hostname, port, signal, onError }, async (request) => { if (new URL(request.url).pathname !== "/metrics") { return new Response("not found", { status: 404 }); } @@ -113,6 +114,6 @@ export class PrometheusExporter extends MetricReader { */ stopServer(): Promise { this._abortController.abort(); - return Promise.resolve(); + return this._server.finished; } } diff --git a/packages/autometrics/tests/otlpHttpExporter.test.ts b/packages/autometrics/tests/otlpHttpExporter.test.ts index ab5bb96..72a9bfb 100644 --- a/packages/autometrics/tests/otlpHttpExporter.test.ts +++ b/packages/autometrics/tests/otlpHttpExporter.test.ts @@ -14,7 +14,7 @@ Deno.test("OTLP/HTTP exporter", async (t) => { // retrying, which may mess with other tests. const serverController = new AbortController(); const { signal } = serverController; - Deno.serve({ port, signal }, () => new Response("ok")); + const server = Deno.serve({ port, signal }, () => new Response("ok")); // make sure that metrics that are collected before `init()` is called are // correctly tracked. @@ -53,4 +53,6 @@ Deno.test("OTLP/HTTP exporter", async (t) => { ); serverController.abort(); + + await server.finished; }); diff --git a/packages/autometrics/tests/testUtils.ts b/packages/autometrics/tests/testUtils.ts index 4db681c..03c1c85 100644 --- a/packages/autometrics/tests/testUtils.ts +++ b/packages/autometrics/tests/testUtils.ts @@ -59,7 +59,7 @@ export function testWithTemporality({ // retrying, which may mess with other tests. const serverController = new AbortController(); const { signal } = serverController; - Deno.serve({ port, signal }, () => new Response("ok")); + const server = Deno.serve({ port, signal }, () => new Response("ok")); const timeout = 10; @@ -96,5 +96,7 @@ export function testWithTemporality({ await metricReader.shutdown(); serverController.abort(); + + await server.finished; }; }