feat(observability): refine span linkage and telemetry
This commit is contained in:
parent
a2e640aef9
commit
0b9f1a47c6
6 changed files with 293 additions and 34 deletions
32
packages/server/test/observability.test.ts
Normal file
32
packages/server/test/observability.test.ts
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
import { expect, test } from "bun:test"
|
||||
import { NodeServices } from "@effect/platform-node"
|
||||
import { Context, Effect, Layer, References } from "effect"
|
||||
import { HttpMiddleware, HttpServer, HttpServerRequest } from "effect/unstable/http"
|
||||
|
||||
test("route construction retains the server tracing policy", async () => {
|
||||
const database = process.env.OPENCODE_DB
|
||||
const endpoint = process.env.OTEL_EXPORTER_OTLP_ENDPOINT
|
||||
delete process.env.OTEL_EXPORTER_OTLP_ENDPOINT
|
||||
process.env.OPENCODE_DB = ":memory:"
|
||||
|
||||
try {
|
||||
const { createEmbeddedRoutes } = await import("../src/routes")
|
||||
await Effect.gen(function* () {
|
||||
const context = yield* Layer.build(
|
||||
createEmbeddedRoutes().pipe(
|
||||
Layer.provide(HttpServer.layerServices),
|
||||
Layer.provide(NodeServices.layer),
|
||||
),
|
||||
)
|
||||
const request = HttpServerRequest.fromWeb(new Request("http://opencode.local/api/session"))
|
||||
|
||||
expect(Context.get(context, References.TracerEnabled)).toBeFalse()
|
||||
expect(Context.get(context, HttpMiddleware.TracerDisabledWhen)(request)).toBeTrue()
|
||||
}).pipe(Effect.scoped, Effect.runPromise)
|
||||
} finally {
|
||||
if (database === undefined) delete process.env.OPENCODE_DB
|
||||
else process.env.OPENCODE_DB = database
|
||||
if (endpoint === undefined) delete process.env.OTEL_EXPORTER_OTLP_ENDPOINT
|
||||
else process.env.OTEL_EXPORTER_OTLP_ENDPOINT = endpoint
|
||||
}
|
||||
})
|
||||
Loading…
Add table
Add a link
Reference in a new issue