next.js/test/e2e/opentelemetry/client-trace-metadata/instrumentation.ts
instrumentation.ts36 lines1.1 KB
import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'
import { trace } from '@opentelemetry/api'

export async function register() {
  if (process.env.NEXT_RUNTIME === 'nodejs') {
    const provider = new NodeTracerProvider()
    provider.register({
      propagator: {
        inject(context, carrier, setter) {
          setter.set(carrier, 'my-test-key-1', 'my-test-value-1')
          setter.set(carrier, 'my-test-key-2', 'my-test-value-2')
          // This non-metadata-key-3 is not going to be injected into the page
          setter.set(carrier, 'non-metadata-key-3', 'non-metadata-key-3')
          setter.set(
            carrier,
            'my-parent-span-id',
            trace.getSpanContext(context)?.spanId ?? 'invariant'
          )
        },
        extract(context) {
          // This is a noop because we don't extract in this test
          return context
        },
        fields() {
          return [
            'my-parent-span-id',
            'my-test-key-1',
            'my-test-key-2',
            'non-metadata-key-3',
          ]
        },
      },
    })
  }
}
Quest for Codev2.0.0
/
SIGN IN