11import * as NodeHttpClient from "@effect/platform-node/NodeHttpClient" ;
22import * as NodeServices from "@effect/platform-node/NodeServices" ;
33import { assert , describe , it } from "@effect/vitest" ;
4+ import * as ConfigProvider from "effect/ConfigProvider" ;
45import * as Effect from "effect/Effect" ;
56import * as FileSystem from "effect/FileSystem" ;
67import * as Layer from "effect/Layer" ;
@@ -92,6 +93,9 @@ const collectorLayer = (requests: Array<ExportedRequest>) =>
9293 ) ,
9394 ) ;
9495
96+ // A developer's own OTEL_* variables would otherwise pick the endpoints.
97+ const emptyEnv = ConfigProvider . layer ( ConfigProvider . fromEnv ( { env : { } } ) ) ;
98+
9599const encodeObservabilitySettingsFile = Schema . encodeSync (
96100 Schema . fromJsonString (
97101 Schema . Struct ( { observability : Schema . Record ( Schema . String , Schema . String ) } ) ,
@@ -181,7 +185,7 @@ describe("DesktopObservability", () => {
181185 assert . isFalse ( yield * fileSystem . exists ( logPath ) ) ;
182186 } ) . pipe (
183187 Effect . scoped ,
184- Effect . provide ( Layer . mergeAll ( NodeServices . layer , NodeHttpClient . layerUndici ) ) ,
188+ Effect . provide ( Layer . mergeAll ( NodeServices . layer , NodeHttpClient . layerUndici , emptyEnv ) ) ,
185189 ) ,
186190 ) ;
187191
@@ -259,7 +263,7 @@ describe("DesktopObservability", () => {
259263 ) ;
260264 } ) . pipe (
261265 Effect . scoped ,
262- Effect . provide ( Layer . mergeAll ( NodeServices . layer , NodeHttpClient . layerUndici ) ) ,
266+ Effect . provide ( Layer . mergeAll ( NodeServices . layer , NodeHttpClient . layerUndici , emptyEnv ) ) ,
263267 ) ,
264268 ) ;
265269
@@ -299,7 +303,7 @@ describe("DesktopObservability", () => {
299303 assert . equal ( records . at ( - 1 ) ?. annotations . details , "code=1" ) ;
300304 } ) . pipe (
301305 Effect . scoped ,
302- Effect . provide ( Layer . mergeAll ( NodeServices . layer , NodeHttpClient . layerUndici ) ) ,
306+ Effect . provide ( Layer . mergeAll ( NodeServices . layer , NodeHttpClient . layerUndici , emptyEnv ) ) ,
303307 ) ,
304308 ) ;
305309
@@ -343,7 +347,7 @@ describe("DesktopObservability", () => {
343347 assert . isFalse ( text . includes ( "y" ) ) ;
344348 } ) . pipe (
345349 Effect . scoped ,
346- Effect . provide ( Layer . mergeAll ( NodeServices . layer , NodeHttpClient . layerUndici ) ) ,
350+ Effect . provide ( Layer . mergeAll ( NodeServices . layer , NodeHttpClient . layerUndici , emptyEnv ) ) ,
347351 ) ,
348352 ) ;
349353
@@ -377,7 +381,7 @@ describe("DesktopObservability", () => {
377381 assert . equal ( lines . length , 258 ) ;
378382 } ) . pipe (
379383 Effect . scoped ,
380- Effect . provide ( Layer . mergeAll ( NodeServices . layer , NodeHttpClient . layerUndici ) ) ,
384+ Effect . provide ( Layer . mergeAll ( NodeServices . layer , NodeHttpClient . layerUndici , emptyEnv ) ) ,
381385 ) ,
382386 ) ;
383387
@@ -423,7 +427,7 @@ describe("DesktopObservability", () => {
423427 assert . lengthOf ( record ?. events ?? [ ] , 0 ) ;
424428 } ) . pipe (
425429 Effect . scoped ,
426- Effect . provide ( Layer . mergeAll ( NodeServices . layer , collectorLayer ( requests ) ) ) ,
430+ Effect . provide ( Layer . mergeAll ( NodeServices . layer , collectorLayer ( requests ) , emptyEnv ) ) ,
427431 ) ;
428432 } ) ;
429433
@@ -436,9 +440,6 @@ describe("DesktopObservability", () => {
436440 } ) ;
437441 const environmentLayer = makeEnvironmentLayer ( baseDir , true , {
438442 T3CODE_OTLP_HEADERS : "x-scope=desktop" ,
439- OTEL_EXPORTER_OTLP_ENDPOINT : "https://collector.example.com" ,
440- OTEL_EXPORTER_OTLP_HEADERS : "x-otel=desktop" ,
441- OTEL_EXPORTER_OTLP_LOGS_PROTOCOL : "http/json" ,
442443 } ) ;
443444 yield * writeObservabilitySettings ( environmentLayer , {
444445 otlpLogsUrl : "https://settings.example.com/v1/logs" ,
@@ -458,7 +459,21 @@ describe("DesktopObservability", () => {
458459 assert . strictEqual ( request ?. headers [ "content-type" ] , "application/json" ) ;
459460 } ) . pipe (
460461 Effect . scoped ,
461- Effect . provide ( Layer . mergeAll ( NodeServices . layer , collectorLayer ( requests ) ) ) ,
462+ Effect . provide (
463+ Layer . mergeAll (
464+ NodeServices . layer ,
465+ collectorLayer ( requests ) ,
466+ ConfigProvider . layer (
467+ ConfigProvider . fromEnv ( {
468+ env : {
469+ OTEL_EXPORTER_OTLP_ENDPOINT : "https://collector.example.com" ,
470+ OTEL_EXPORTER_OTLP_HEADERS : "x-otel=desktop" ,
471+ OTEL_EXPORTER_OTLP_LOGS_PROTOCOL : "http/json" ,
472+ } ,
473+ } ) ,
474+ ) ,
475+ ) ,
476+ ) ,
462477 ) ;
463478 } ) ;
464479
@@ -471,9 +486,6 @@ describe("DesktopObservability", () => {
471486 } ) ;
472487 const environmentLayer = makeEnvironmentLayer ( baseDir , true , {
473488 T3CODE_OTLP_LOGS_URL : "https://collector.example.com/v1/logs" ,
474- OTEL_SERVICE_NAME : "renamed" ,
475- OTEL_RESOURCE_ATTRIBUTES :
476- "service.name=renamed,service.namespace=renamed,deployment.environment.name=development" ,
477489 } ) ;
478490
479491 yield * Effect . scoped (
@@ -490,7 +502,21 @@ describe("DesktopObservability", () => {
490502 assert . notInclude ( body , "renamed" ) ;
491503 } ) . pipe (
492504 Effect . scoped ,
493- Effect . provide ( Layer . mergeAll ( NodeServices . layer , collectorLayer ( requests ) ) ) ,
505+ Effect . provide (
506+ Layer . mergeAll (
507+ NodeServices . layer ,
508+ collectorLayer ( requests ) ,
509+ ConfigProvider . layer (
510+ ConfigProvider . fromEnv ( {
511+ env : {
512+ OTEL_SERVICE_NAME : "renamed" ,
513+ OTEL_RESOURCE_ATTRIBUTES :
514+ "service.name=renamed,service.namespace=renamed,deployment.environment.name=development" ,
515+ } ,
516+ } ) ,
517+ ) ,
518+ ) ,
519+ ) ,
494520 ) ;
495521 } ) ;
496522
@@ -503,8 +529,6 @@ describe("DesktopObservability", () => {
503529 } ) ;
504530 const environmentLayer = makeEnvironmentLayer ( baseDir , true , {
505531 T3CODE_OTLP_HEADERS : "x-scope=desktop" ,
506- OTEL_EXPORTER_OTLP_ENDPOINT : "https://collector.example.com" ,
507- OTEL_EXPORTER_OTLP_LOGS_PROTOCOL : "grpc" ,
508532 } ) ;
509533 yield * writeObservabilitySettings ( environmentLayer , {
510534 otlpLogsUrl : "https://settings.example.com/v1/logs" ,
@@ -519,7 +543,20 @@ describe("DesktopObservability", () => {
519543 assert . lengthOf ( requests , 0 ) ;
520544 } ) . pipe (
521545 Effect . scoped ,
522- Effect . provide ( Layer . mergeAll ( NodeServices . layer , collectorLayer ( requests ) ) ) ,
546+ Effect . provide (
547+ Layer . mergeAll (
548+ NodeServices . layer ,
549+ collectorLayer ( requests ) ,
550+ ConfigProvider . layer (
551+ ConfigProvider . fromEnv ( {
552+ env : {
553+ OTEL_EXPORTER_OTLP_ENDPOINT : "https://collector.example.com" ,
554+ OTEL_EXPORTER_OTLP_LOGS_PROTOCOL : "grpc" ,
555+ } ,
556+ } ) ,
557+ ) ,
558+ ) ,
559+ ) ,
523560 ) ;
524561 } ) ;
525562
@@ -532,7 +569,6 @@ describe("DesktopObservability", () => {
532569 } ) ;
533570 const environmentLayer = makeEnvironmentLayer ( baseDir , true , {
534571 T3CODE_OTLP_LOGS_URL : "https://collector.example.com/v1/logs" ,
535- OTEL_SDK_DISABLED : "1" ,
536572 } ) ;
537573
538574 yield * Effect . scoped (
@@ -544,7 +580,13 @@ describe("DesktopObservability", () => {
544580 assert . include ( requests [ 0 ] ?. body ?? "" , "OTEL_SDK_DISABLED=1 was read as false" ) ;
545581 } ) . pipe (
546582 Effect . scoped ,
547- Effect . provide ( Layer . mergeAll ( NodeServices . layer , collectorLayer ( requests ) ) ) ,
583+ Effect . provide (
584+ Layer . mergeAll (
585+ NodeServices . layer ,
586+ collectorLayer ( requests ) ,
587+ ConfigProvider . layer ( ConfigProvider . fromEnv ( { env : { OTEL_SDK_DISABLED : "1" } } ) ) ,
588+ ) ,
589+ ) ,
548590 ) ;
549591 } ) ;
550592
@@ -585,7 +627,7 @@ describe("DesktopObservability", () => {
585627 ) ;
586628 } ) . pipe (
587629 Effect . scoped ,
588- Effect . provide ( Layer . mergeAll ( NodeServices . layer , collectorLayer ( requests ) ) ) ,
630+ Effect . provide ( Layer . mergeAll ( NodeServices . layer , collectorLayer ( requests ) , emptyEnv ) ) ,
589631 ) ;
590632 } ) ;
591633
@@ -609,7 +651,7 @@ describe("DesktopObservability", () => {
609651 assert . lengthOf ( requests , 0 ) ;
610652 } ) . pipe (
611653 Effect . scoped ,
612- Effect . provide ( Layer . mergeAll ( NodeServices . layer , collectorLayer ( requests ) ) ) ,
654+ Effect . provide ( Layer . mergeAll ( NodeServices . layer , collectorLayer ( requests ) , emptyEnv ) ) ,
613655 ) ;
614656 } ) ;
615657
@@ -620,9 +662,7 @@ describe("DesktopObservability", () => {
620662 const baseDir = yield * fileSystem . makeTempDirectoryScoped ( {
621663 prefix : "t3-desktop-observability-test-" ,
622664 } ) ;
623- const environmentLayer = makeEnvironmentLayer ( baseDir , true , {
624- OTEL_SDK_DISABLED : "true" ,
625- } ) ;
665+ const environmentLayer = makeEnvironmentLayer ( baseDir ) ;
626666 yield * writeObservabilitySettings ( environmentLayer , {
627667 otlpTracesUrl : "https://settings.example.com/v1/traces" ,
628668 otlpLogsUrl : "https://settings.example.com/v1/logs" ,
@@ -638,7 +678,13 @@ describe("DesktopObservability", () => {
638678 assert . lengthOf ( requests , 0 ) ;
639679 } ) . pipe (
640680 Effect . scoped ,
641- Effect . provide ( Layer . mergeAll ( NodeServices . layer , collectorLayer ( requests ) ) ) ,
681+ Effect . provide (
682+ Layer . mergeAll (
683+ NodeServices . layer ,
684+ collectorLayer ( requests ) ,
685+ ConfigProvider . layer ( ConfigProvider . fromEnv ( { env : { OTEL_SDK_DISABLED : "true" } } ) ) ,
686+ ) ,
687+ ) ,
642688 ) ;
643689 } ) ;
644690} ) ;
0 commit comments