hemera.ext('onRequest', (hemera, request, reply, next) => { const rootSpan = tracer.extract(Opentracing.FORMAT_TEXT_MAP, hemera.trace$[tracingKey]) const span = tracer.startSpan(`${tracePrefix} - ${hemera.trace$.method}`, { childOf: rootSpan }) span.setTag(Opentracing.Tags.PEER_SERVICE, 'hemera') span.setTag(tags.HEMERA_SERVICE, hemera.trace$.service) span.setTag(tags.HEMERA_PATTERN, hemera.trace$.method) span.setTag(tags.HEMERA_CONTEXT, 'server') span.setTag( tags.HEMERA_PUBSUB, hemera.matchedAction ? hemera.matchedAction.pattern.pubsub$ || false : false ) hemera[jaegerContextKey] = span next() })
tracer.inject(span, Opentracing.FORMAT_TEXT_MAP, textCarrier) hemera.trace$[tracingKey] = textCarrier
_inject (spanContext, format, carrier) { switch (format) { case opentracing.FORMAT_TEXT_MAP: case opentracing.FORMAT_HTTP_HEADERS: carrier['elastic-apm-traceparent'] = spanContext.toString() break } }
describe('inject', () => { it('must inject text map context', () => { tracer.inject(span, opentracing.FORMAT_TEXT_MAP, carrier); expect(carrier).to.deep.equal({ 'x-instana-t': span.span.t, tracer.inject(span, opentracing.FORMAT_TEXT_MAP, carrier); expect(carrier).to.deep.equal({ 'x-instana-t': span.span.t, childOf: span }); tracer.inject(child, opentracing.FORMAT_TEXT_MAP, carrier); expect(carrier).to.deep.equal({ 'x-instana-t': span.span.t, tracer.inject(span, opentracing.FORMAT_TEXT_MAP, carrier); expect(carrier).to.deep.equal({ 'x-instana-t': span.span.t,
_extract (format, carrier) { if (typeof carrier !== 'object') return null let ctx switch (format) { case opentracing.FORMAT_TEXT_MAP: case opentracing.FORMAT_HTTP_HEADERS: ctx = carrier['elastic-apm-traceparent'] break } return ctx ? new SpanContext(ctx) : null }
hemera.ext('onRequest', (hemera, request, reply, next) => { const rootSpan = tracer.extract(Opentracing.FORMAT_TEXT_MAP, hemera.trace$[tracingKey]) const span = tracer.startSpan(`${tracePrefix} - ${hemera.trace$.method}`, { childOf: rootSpan }) span.setTag(Opentracing.Tags.PEER_SERVICE, 'hemera') span.setTag(tags.HEMERA_SERVICE, hemera.trace$.service) span.setTag(tags.HEMERA_PATTERN, hemera.trace$.method) span.setTag(tags.HEMERA_CONTEXT, 'server') span.setTag( tags.HEMERA_PUBSUB, hemera.matchedAction ? hemera.matchedAction.pattern.pubsub$ || false : false ) hemera[jaegerContextKey] = span next() })
tracer.inject(span, Opentracing.FORMAT_TEXT_MAP, textCarrier) hemera.trace$[tracingKey] = textCarrier