@Test public void testJaegerPortUnificationHandler() throws Exception { reset(mockTraceHandler, mockTraceSpanLogsHandler, mockCtx); Span expectedSpan1 = Span.newBuilder().setCustomer("dummy").setStartMillis(startTime) .setDuration(1234) .setName("HTTP GET") .setSource(DEFAULT_SOURCE) .setSpanId("00000000-0000-0000-0000-00000012d687") .setTraceId("00000000-4996-02d2-0000-011f71fb04cb") .setAnnotations(ImmutableList.of( new Annotation("ip", "10.0.0.1"), new Annotation("jaegerSpanId", "12d687"), new Annotation("jaegerTraceId", "499602d20000011f71fb04cb"), new Annotation("service", "frontend"), new Annotation("component", "db"), new Annotation("application", "Jaeger"), new Annotation("cluster", "none"), new Annotation("shard", "none"), new Annotation("_spanLogs", "true"))) .build(); mockTraceHandler.report(expectedSpan1); expectLastCall(); mockTraceSpanLogsHandler.report(SpanLogs.newBuilder(). setCustomer("default"). setSpanId("00000000-0000-0000-0000-00000012d687"). setTraceId("00000000-4996-02d2-0000-011f71fb04cb"). setLogs(ImmutableList.of( SpanLog.newBuilder(). setTimestamp(startTime * 1000). setFields(ImmutableMap.of("event", "error", "exception", "NullPointerException")). build() )). build()); expectLastCall(); mockTraceHandler.report(Span.newBuilder().setCustomer("dummy").setStartMillis(startTime) .setDuration(2345) .setName("HTTP GET /") .setSource(DEFAULT_SOURCE) .setSpanId("00000000-0000-0000-0000-00000023cace") .setTraceId("00000000-4996-02d2-0000-011f71fb04cb") .setAnnotations(ImmutableList.of( new Annotation("ip", "10.0.0.1"), new Annotation("jaegerSpanId", "23cace"), new Annotation("jaegerTraceId", "499602d20000011f71fb04cb"), new Annotation("service", "frontend"), new Annotation("parent", "00000000-0000-0000-0000-00000012d687"), new Annotation("component", "db"), new Annotation("application", "Custom-JaegerApp"), new Annotation("cluster", "none"), new Annotation("shard", "none"))) .build()); expectLastCall(); mockTraceHandler.report(Span.newBuilder().setCustomer("dummy").setStartMillis(startTime) .setDuration(3456) .setName("HTTP GET /") .setSource(DEFAULT_SOURCE) .setSpanId("00000000-0000-0000-9a12-b85901d53397") .setTraceId("00000000-0000-0000-fea4-87ee36e58cab") .setAnnotations(ImmutableList.of( new Annotation("ip", "10.0.0.1"), new Annotation("jaegerSpanId", "9a12b85901d53397"), new Annotation("jaegerTraceId", "fea487ee36e58cab"), new Annotation("service", "frontend"), new Annotation("parent", "00000000-0000-0000-fea4-87ee36e58cab"), new Annotation("application", "Jaeger"), new Annotation("cluster", "none"), new Annotation("shard", "none"))) .build()); expectLastCall(); mockTraceHandler.report(Span.newBuilder().setCustomer("dummy").setStartMillis(startTime) .setDuration(3456) .setName("HTTP GET /test") .setSource(DEFAULT_SOURCE) .setSpanId("00000000-0000-0000-0000-0051759bfc69") .setTraceId("0000011e-ab2a-9944-0000-000049631900") .setAnnotations(ImmutableList.of( new Annotation("ip", "10.0.0.1"), new Annotation("jaegerSpanId", "51759bfc69"), new Annotation("jaegerTraceId", "11eab2a99440000000049631900"), new Annotation("service", "frontend"), new Annotation("application", "Jaeger"), new Annotation("cluster", "none"), new Annotation("shard", "none"))) .build()); expectLastCall(); expect(mockCtx.write(EasyMock.isA(FullHttpResponse.class))).andReturn(null).anyTimes(); replay(mockTraceHandler, mockTraceSpanLogsHandler, mockCtx); JaegerPortUnificationHandler handler = new JaegerPortUnificationHandler("14268", TokenAuthenticatorBuilder.create().build(), new NoopHealthCheckManager(), mockTraceHandler, mockTraceSpanLogsHandler, null, () -> false, () -> false, null, new SpanSampler(new RateSampler(1.0D), false), null, null); Tag ipTag = new Tag("ip", TagType.STRING); ipTag.setVStr("10.0.0.1"); Tag componentTag = new Tag("component", TagType.STRING); componentTag.setVStr("db"); Tag customApplicationTag = new Tag("application", TagType.STRING); customApplicationTag.setVStr("Custom-JaegerApp"); Tag emptyTag = new Tag("empty", TagType.STRING); emptyTag.setVStr(""); io.jaegertracing.thriftjava.Span span1 = new io.jaegertracing.thriftjava.Span(1234567890123L, 1234567890L, 1234567L, 0L, "HTTP GET", 1, startTime * 1000, 1234 * 1000); io.jaegertracing.thriftjava.Span span2 = new io.jaegertracing.thriftjava.Span(1234567890123L, 1234567890L, 2345678L, 1234567L, "HTTP GET /", 1, startTime * 1000, 2345 * 1000); io.jaegertracing.thriftjava.Span span3 = new io.jaegertracing.thriftjava.Span(-97803834702328661L, 0L, -7344605349865507945L, -97803834702328661L, "HTTP GET /", 1, startTime * 1000, 3456 * 1000); io.jaegertracing.thriftjava.Span span4 = new io.jaegertracing.thriftjava.Span(1231231232L, 1231232342340L, 349865507945L, 0, "HTTP GET /test", 1, startTime * 1000, 3456 * 1000); span1.setTags(ImmutableList.of(componentTag)); span2.setTags(ImmutableList.of(componentTag, customApplicationTag)); span4.setTags(ImmutableList.of(emptyTag)); Tag tag1 = new Tag("event", TagType.STRING); tag1.setVStr("error"); Tag tag2 = new Tag("exception", TagType.STRING); tag2.setVStr("NullPointerException"); span1.setLogs(ImmutableList.of(new Log(startTime * 1000, ImmutableList.of(tag1, tag2)))); Batch testBatch = new Batch(); testBatch.process = new Process(); testBatch.process.serviceName = "frontend"; testBatch.process.setTags(ImmutableList.of(ipTag)); testBatch.setSpans(ImmutableList.of(span1, span2, span3, span4)); ByteBuf content = Unpooled.copiedBuffer(new TSerializer().serialize(testBatch)); FullHttpRequest httpRequest = new DefaultFullHttpRequest( HttpVersion.HTTP_1_1, HttpMethod.POST, "http: content, true ); handler.handleHttpMessage(mockCtx, httpRequest); verify(mockTraceHandler, mockTraceSpanLogsHandler); }
public JaegerPortUnificationHandler(String handle, final TokenAuthenticator tokenAuthenticator, final HealthCheckManager healthCheckManager, ReportableEntityHandlerFactory handlerFactory, @Nullable WavefrontSender wfSender, Supplier<Boolean> traceDisabled, Supplier<Boolean> spanLogsDisabled, @Nullable Supplier<ReportableEntityPreprocessor> preprocessor, SpanSampler sampler, @Nullable String traceJaegerApplicationName, Set<String> traceDerivedCustomTagKeys) { this(handle, tokenAuthenticator, healthCheckManager, handlerFactory.getHandler(HandlerKey.of(ReportableEntityType.TRACE, handle)), handlerFactory.getHandler(HandlerKey.of(ReportableEntityType.TRACE_SPAN_LOGS, handle)), wfSender, traceDisabled, spanLogsDisabled, preprocessor, sampler, traceJaegerApplicationName, traceDerivedCustomTagKeys); }
JaegerPortUnificationHandler extends AbstractHttpOnlyHandler implements Runnable,
    Closeable { public JaegerPortUnificationHandler(String handle, final TokenAuthenticator tokenAuthenticator, final HealthCheckManager healthCheckManager, ReportableEntityHandlerFactory handlerFactory, @Nullable WavefrontSender wfSender, Supplier<Boolean> traceDisabled, Supplier<Boolean> spanLogsDisabled, @Nullable Supplier<ReportableEntityPreprocessor> preprocessor, SpanSampler sampler, @Nullable String traceJaegerApplicationName, Set<String> traceDerivedCustomTagKeys) { this(handle, tokenAuthenticator, healthCheckManager, handlerFactory.getHandler(HandlerKey.of(ReportableEntityType.TRACE, handle)), handlerFactory.getHandler(HandlerKey.of(ReportableEntityType.TRACE_SPAN_LOGS, handle)), wfSender, traceDisabled, spanLogsDisabled, preprocessor, sampler, traceJaegerApplicationName, traceDerivedCustomTagKeys); } }
JaegerPortUnificationHandler extends AbstractHttpOnlyHandler implements Runnable,
    Closeable { public JaegerPortUnificationHandler(String handle, final TokenAuthenticator tokenAuthenticator, final HealthCheckManager healthCheckManager, ReportableEntityHandlerFactory handlerFactory, @Nullable WavefrontSender wfSender, Supplier<Boolean> traceDisabled, Supplier<Boolean> spanLogsDisabled, @Nullable Supplier<ReportableEntityPreprocessor> preprocessor, SpanSampler sampler, @Nullable String traceJaegerApplicationName, Set<String> traceDerivedCustomTagKeys) { this(handle, tokenAuthenticator, healthCheckManager, handlerFactory.getHandler(HandlerKey.of(ReportableEntityType.TRACE, handle)), handlerFactory.getHandler(HandlerKey.of(ReportableEntityType.TRACE_SPAN_LOGS, handle)), wfSender, traceDisabled, spanLogsDisabled, preprocessor, sampler, traceJaegerApplicationName, traceDerivedCustomTagKeys); } JaegerPortUnificationHandler(String handle,
                                      final TokenAuthenticator tokenAuthenticator,
                                      final HealthCheckManager healthCheckManager,
                                      ReportableEntityHandlerFactory handlerFactory,
                                      @Nullable WavefrontSender wfSender,
                                      Supplier<Boolean> traceDisabled,
                                      Supplier<Boolean> spanLogsDisabled,
                                      @Nullable Supplier<ReportableEntityPreprocessor> preprocessor,
                                      SpanSampler sampler,
                                      @Nullable String traceJaegerApplicationName,
                                      Set<String> traceDerivedCustomTagKeys); @VisibleForTesting  JaegerPortUnificationHandler(String handle,
                               final TokenAuthenticator tokenAuthenticator,
                               final HealthCheckManager healthCheckManager,
                               ReportableEntityHandler<Span, String> spanHandler,
                               ReportableEntityHandler<SpanLogs, String> spanLogsHandler,
                               @Nullable WavefrontSender wfSender,
                               Supplier<Boolean> traceDisabled,
                               Supplier<Boolean> spanLogsDisabled,
                               @Nullable Supplier<ReportableEntityPreprocessor> preprocessor,
                               SpanSampler sampler,
                               @Nullable String traceJaegerApplicationName,
                               Set<String> traceDerivedCustomTagKeys); }
JaegerPortUnificationHandler extends AbstractHttpOnlyHandler implements Runnable,
    Closeable { public JaegerPortUnificationHandler(String handle, final TokenAuthenticator tokenAuthenticator, final HealthCheckManager healthCheckManager, ReportableEntityHandlerFactory handlerFactory, @Nullable WavefrontSender wfSender, Supplier<Boolean> traceDisabled, Supplier<Boolean> spanLogsDisabled, @Nullable Supplier<ReportableEntityPreprocessor> preprocessor, SpanSampler sampler, @Nullable String traceJaegerApplicationName, Set<String> traceDerivedCustomTagKeys) { this(handle, tokenAuthenticator, healthCheckManager, handlerFactory.getHandler(HandlerKey.of(ReportableEntityType.TRACE, handle)), handlerFactory.getHandler(HandlerKey.of(ReportableEntityType.TRACE_SPAN_LOGS, handle)), wfSender, traceDisabled, spanLogsDisabled, preprocessor, sampler, traceJaegerApplicationName, traceDerivedCustomTagKeys); } JaegerPortUnificationHandler(String handle,
                                      final TokenAuthenticator tokenAuthenticator,
                                      final HealthCheckManager healthCheckManager,
                                      ReportableEntityHandlerFactory handlerFactory,
                                      @Nullable WavefrontSender wfSender,
                                      Supplier<Boolean> traceDisabled,
                                      Supplier<Boolean> spanLogsDisabled,
                                      @Nullable Supplier<ReportableEntityPreprocessor> preprocessor,
                                      SpanSampler sampler,
                                      @Nullable String traceJaegerApplicationName,
                                      Set<String> traceDerivedCustomTagKeys); @VisibleForTesting  JaegerPortUnificationHandler(String handle,
                               final TokenAuthenticator tokenAuthenticator,
                               final HealthCheckManager healthCheckManager,
                               ReportableEntityHandler<Span, String> spanHandler,
                               ReportableEntityHandler<SpanLogs, String> spanLogsHandler,
                               @Nullable WavefrontSender wfSender,
                               Supplier<Boolean> traceDisabled,
                               Supplier<Boolean> spanLogsDisabled,
                               @Nullable Supplier<ReportableEntityPreprocessor> preprocessor,
                               SpanSampler sampler,
                               @Nullable String traceJaegerApplicationName,
                               Set<String> traceDerivedCustomTagKeys); @Override void run(); @Override void close(); }
JaegerPortUnificationHandler extends AbstractHttpOnlyHandler implements Runnable,
    Closeable { public JaegerPortUnificationHandler(String handle, final TokenAuthenticator tokenAuthenticator, final HealthCheckManager healthCheckManager, ReportableEntityHandlerFactory handlerFactory, @Nullable WavefrontSender wfSender, Supplier<Boolean> traceDisabled, Supplier<Boolean> spanLogsDisabled, @Nullable Supplier<ReportableEntityPreprocessor> preprocessor, SpanSampler sampler, @Nullable String traceJaegerApplicationName, Set<String> traceDerivedCustomTagKeys) { this(handle, tokenAuthenticator, healthCheckManager, handlerFactory.getHandler(HandlerKey.of(ReportableEntityType.TRACE, handle)), handlerFactory.getHandler(HandlerKey.of(ReportableEntityType.TRACE_SPAN_LOGS, handle)), wfSender, traceDisabled, spanLogsDisabled, preprocessor, sampler, traceJaegerApplicationName, traceDerivedCustomTagKeys); } JaegerPortUnificationHandler(String handle,
                                      final TokenAuthenticator tokenAuthenticator,
                                      final HealthCheckManager healthCheckManager,
                                      ReportableEntityHandlerFactory handlerFactory,
                                      @Nullable WavefrontSender wfSender,
                                      Supplier<Boolean> traceDisabled,
                                      Supplier<Boolean> spanLogsDisabled,
                                      @Nullable Supplier<ReportableEntityPreprocessor> preprocessor,
                                      SpanSampler sampler,
                                      @Nullable String traceJaegerApplicationName,
                                      Set<String> traceDerivedCustomTagKeys); @VisibleForTesting  JaegerPortUnificationHandler(String handle,
                               final TokenAuthenticator tokenAuthenticator,
                               final HealthCheckManager healthCheckManager,
                               ReportableEntityHandler<Span, String> spanHandler,
                               ReportableEntityHandler<SpanLogs, String> spanLogsHandler,
                               @Nullable WavefrontSender wfSender,
                               Supplier<Boolean> traceDisabled,
                               Supplier<Boolean> spanLogsDisabled,
                               @Nullable Supplier<ReportableEntityPreprocessor> preprocessor,
                               SpanSampler sampler,
                               @Nullable String traceJaegerApplicationName,
                               Set<String> traceDerivedCustomTagKeys); @Override void run(); @Override void close();  }