From 7da2aa145347942ffb710b80f83eb2cc42708a2c Mon Sep 17 00:00:00 2001 From: schickling-assistant <261620128+schickling-assistant@users.noreply.github.com> Date: Thu, 11 Jun 2026 09:53:48 +0200 Subject: [PATCH] fix(otelite): honor traces endpoint env semantics --- .../utils-dev/src/otelite/test-harness.test.ts | 13 +++++++++++++ .../@overeng/utils-dev/src/otelite/test-harness.ts | 13 +++++++++++-- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/packages/@overeng/utils-dev/src/otelite/test-harness.test.ts b/packages/@overeng/utils-dev/src/otelite/test-harness.test.ts index d2aa3c8b3..d591959b6 100644 --- a/packages/@overeng/utils-dev/src/otelite/test-harness.test.ts +++ b/packages/@overeng/utils-dev/src/otelite/test-harness.test.ts @@ -1,6 +1,7 @@ import { describe, expect, it } from '@effect/vitest' import { Effect } from 'effect' +import { otlpTracesUrl } from '../node-vitest/Vitest.ts' import { captureInProcessTrace, OteliteTestHarness } from './test-harness.ts' describe('OteliteTestHarness', () => { @@ -105,6 +106,18 @@ describe('OteliteTestHarness', () => { expect(process.env.OTELITE_TEST_ENDPOINT).toBe(previousCustomEndpoint) expect(process.env.OTELITE_TEST_SERVICE).toBe(previousCustomService) expect(process.env.OTELITE_TEST_EXTRA).toBe(previousExtra) + + const previousPerSignalEndpoint = process.env.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT + yield* otel.withEnv( + Effect.sync(() => { + expect(process.env.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT).toBe( + otlpTracesUrl(otel.capture.endpoints.http), + ) + }), + { endpointVar: 'OTEL_EXPORTER_OTLP_TRACES_ENDPOINT' }, + ) + + expect(process.env.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT).toBe(previousPerSignalEndpoint) }).pipe(Effect.provide(OteliteTestHarness.Default)), 30_000, ) diff --git a/packages/@overeng/utils-dev/src/otelite/test-harness.ts b/packages/@overeng/utils-dev/src/otelite/test-harness.ts index 2f13953c6..20e634570 100644 --- a/packages/@overeng/utils-dev/src/otelite/test-harness.ts +++ b/packages/@overeng/utils-dev/src/otelite/test-harness.ts @@ -113,6 +113,13 @@ const makeInProcessLayer = ( ) } +const endpointEnvValue = (handle: CaptureHandle, endpointVar?: string): string => { + if (endpointVar === 'OTEL_EXPORTER_OTLP_TRACES_ENDPOINT') { + return otlpTracesUrl(handle.endpoints.http) + } + return handle.endpoints.http +} + export class OteliteTestHarness extends Effect.Service()( '@overeng/utils-dev/otelite/OteliteTestHarness', { @@ -166,8 +173,10 @@ export class OteliteTestHarness extends Effect.Service()( envSemaphore.withPermits(1)( Effect.scoped( scopedEnv({ - [envOptions.endpointVar ?? 'OTEL_EXPORTER_OTLP_ENDPOINT']: - captureHandle.endpoints.http, + [envOptions.endpointVar ?? 'OTEL_EXPORTER_OTLP_ENDPOINT']: endpointEnvValue( + captureHandle, + envOptions.endpointVar, + ), [envOptions.serviceNameVar ?? 'OTEL_SERVICE_NAME']: options.serviceName, ...envOptions.extra, }).pipe(Effect.zipRight(effect)),