Search in sources :

Example 21 with RateSampler

use of com.wavefront.sdk.entities.tracing.sampling.RateSampler in project java by wavefrontHQ.

the class ZipkinPortUnificationHandlerTest method testZipkinCustomSource.

@Test
public void testZipkinCustomSource() throws Exception {
    ZipkinPortUnificationHandler handler = new ZipkinPortUnificationHandler("9411", new NoopHealthCheckManager(), mockTraceHandler, mockTraceSpanLogsHandler, null, () -> false, () -> false, null, new SpanSampler(new RateSampler(1.0D), () -> null), null, null);
    // take care of mocks.
    // Reset mock
    reset(mockTraceHandler, mockTraceSpanLogsHandler);
    // Set Expectation
    mockTraceHandler.report(Span.newBuilder().setCustomer("dummy").setStartMillis(startTime).setDuration(9).setName("getservice").setSource("customZipkinSource").setSpanId("00000000-0000-0000-2822-889fe47043bd").setTraceId("00000000-0000-0000-2822-889fe47043bd").setAnnotations(ImmutableList.of(new Annotation("zipkinSpanId", "2822889fe47043bd"), new Annotation("zipkinTraceId", "2822889fe47043bd"), new Annotation("span.kind", "server"), new Annotation("service", "frontend"), new Annotation("http.method", "GET"), new Annotation("http.status_code", "200"), new Annotation("http.url", "none+h1c://localhost:8881/"), new Annotation("application", "Zipkin"), new Annotation("cluster", "none"), new Annotation("shard", "none"), new Annotation("ipv4", "10.0.0.1"))).build());
    expectLastCall();
    Endpoint localEndpoint1 = Endpoint.newBuilder().serviceName("frontend").ip("10.0.0.1").build();
    zipkin2.Span spanServer1 = zipkin2.Span.newBuilder().traceId("2822889fe47043bd").id("2822889fe47043bd").kind(zipkin2.Span.Kind.SERVER).name("getservice").timestamp(startTime * 1000).duration(9 * 1000).localEndpoint(localEndpoint1).putTag("http.method", "GET").putTag("http.url", "none+h1c://localhost:8881/").putTag("http.status_code", "200").putTag("source", "customZipkinSource").build();
    List<zipkin2.Span> zipkinSpanList = ImmutableList.of(spanServer1);
    SpanBytesEncoder encoder = SpanBytesEncoder.values()[1];
    ByteBuf content = Unpooled.copiedBuffer(encoder.encodeList(zipkinSpanList));
    replay(mockTraceHandler, mockTraceSpanLogsHandler);
    ChannelHandlerContext mockCtx = createNiceMock(ChannelHandlerContext.class);
    doMockLifecycle(mockCtx);
    FullHttpRequest httpRequest = new DefaultFullHttpRequest(HttpVersion.HTTP_1_1, HttpMethod.POST, "http://localhost:9411/api/v1/spans", content, true);
    handler.handleHttpMessage(mockCtx, httpRequest);
    verify(mockTraceHandler, mockTraceSpanLogsHandler);
}
Also used : DefaultFullHttpRequest(io.netty.handler.codec.http.DefaultFullHttpRequest) FullHttpRequest(io.netty.handler.codec.http.FullHttpRequest) DefaultFullHttpRequest(io.netty.handler.codec.http.DefaultFullHttpRequest) RateSampler(com.wavefront.sdk.entities.tracing.sampling.RateSampler) SpanBytesEncoder(zipkin2.codec.SpanBytesEncoder) SpanSampler(com.wavefront.agent.sampler.SpanSampler) ChannelHandlerContext(io.netty.channel.ChannelHandlerContext) ByteBuf(io.netty.buffer.ByteBuf) Span(wavefront.report.Span) Annotation(wavefront.report.Annotation) Endpoint(zipkin2.Endpoint) NoopHealthCheckManager(com.wavefront.agent.channel.NoopHealthCheckManager) Test(org.junit.Test)

Example 22 with RateSampler

use of com.wavefront.sdk.entities.tracing.sampling.RateSampler in project java by wavefrontHQ.

the class PushAgentTest method testCustomTraceUnifiedPortHandlerDerivedMetrics.

@Test
public void testCustomTraceUnifiedPortHandlerDerivedMetrics() throws Exception {
    customTracePort = findAvailablePort(51233);
    proxy.proxyConfig.customTracingListenerPorts = String.valueOf(customTracePort);
    setUserPreprocessorForTraceDerivedREDMetrics(customTracePort);
    proxy.startCustomTracingListener(proxy.proxyConfig.getCustomTracingListenerPorts(), mockHandlerFactory, mockWavefrontSender, new SpanSampler(new RateSampler(1.0D), () -> null));
    waitUntilListenerIsOnline(customTracePort);
    reset(mockTraceHandler);
    reset(mockWavefrontSender);
    String traceId = UUID.randomUUID().toString();
    String spanData = "testSpanName source=testsource spanId=testspanid " + "traceId=\"" + traceId + "\" " + startTime + " " + (startTime + 1) + "\n";
    mockTraceHandler.report(Span.newBuilder().setCustomer("dummy").setStartMillis(startTime * 1000).setDuration(1000).setName("testSpanName").setSource(PREPROCESSED_SOURCE_VALUE).setSpanId("testspanid").setTraceId(traceId).setAnnotations(ImmutableList.of(new Annotation("application", PREPROCESSED_APPLICATION_TAG_VALUE), new Annotation("service", PREPROCESSED_SERVICE_TAG_VALUE), new Annotation("cluster", PREPROCESSED_CLUSTER_TAG_VALUE), new Annotation("shard", PREPROCESSED_SHARD_TAG_VALUE))).build());
    expectLastCall();
    Capture<HashMap<String, String>> tagsCapture = EasyMock.newCapture();
    mockWavefrontSender.sendMetric(eq(HEART_BEAT_METRIC), eq(1.0), anyLong(), eq(PREPROCESSED_SOURCE_VALUE), EasyMock.capture(tagsCapture));
    expectLastCall().anyTimes();
    replay(mockTraceHandler, mockWavefrontSender);
    Socket socket = SocketFactory.getDefault().createSocket("localhost", customTracePort);
    BufferedOutputStream stream = new BufferedOutputStream(socket.getOutputStream());
    stream.write(spanData.getBytes());
    stream.flush();
    socket.close();
    // sleep to get around "Nothing captured yet" issue with heartbeat metric call.
    Thread.sleep(100);
    verifyWithTimeout(500, mockTraceHandler, mockWavefrontSender);
    HashMap<String, String> tagsReturned = tagsCapture.getValue();
    assertEquals(PREPROCESSED_APPLICATION_TAG_VALUE, tagsReturned.get(APPLICATION_TAG_KEY));
    assertEquals(PREPROCESSED_SERVICE_TAG_VALUE, tagsReturned.get(SERVICE_TAG_KEY));
    assertEquals(PREPROCESSED_CLUSTER_TAG_VALUE, tagsReturned.get(CLUSTER_TAG_KEY));
    assertEquals(PREPROCESSED_SHARD_TAG_VALUE, tagsReturned.get(SHARD_TAG_KEY));
}
Also used : RateSampler(com.wavefront.sdk.entities.tracing.sampling.RateSampler) HashMap(java.util.HashMap) SpanSampler(com.wavefront.agent.sampler.SpanSampler) EasyMock.anyString(org.easymock.EasyMock.anyString) BufferedOutputStream(java.io.BufferedOutputStream) Annotation(wavefront.report.Annotation) Socket(java.net.Socket) Test(org.junit.Test)

Example 23 with RateSampler

use of com.wavefront.sdk.entities.tracing.sampling.RateSampler in project java by wavefrontHQ.

the class PushAgentTest method testSecureAll.

@Test
public void testSecureAll() throws Exception {
    int securePort1 = findAvailablePort(2888);
    int securePort2 = findAvailablePort(2889);
    proxy.proxyConfig.privateCertPath = getClass().getClassLoader().getResource("demo.cert").getPath();
    proxy.proxyConfig.privateKeyPath = getClass().getClassLoader().getResource("demo.key").getPath();
    proxy.proxyConfig.tlsPorts = "*";
    proxy.initSslContext();
    proxy.proxyConfig.pushListenerPorts = securePort1 + "," + securePort2;
    SpanSampler sampler = new SpanSampler(new RateSampler(1.0D), () -> null);
    proxy.startGraphiteListener(String.valueOf(securePort1), mockHandlerFactory, null, sampler);
    proxy.startGraphiteListener(String.valueOf(securePort2), mockHandlerFactory, null, sampler);
    waitUntilListenerIsOnline(securePort1);
    waitUntilListenerIsOnline(securePort2);
    reset(mockPointHandler);
    mockPointHandler.report(ReportPoint.newBuilder().setTable("dummy").setMetric("metric.test").setHost("test1").setTimestamp(startTime * 1000).setValue(0.0d).build());
    expectLastCall();
    mockPointHandler.report(ReportPoint.newBuilder().setTable("dummy").setMetric("metric.test").setHost("test2").setTimestamp((startTime + 1) * 1000).setValue(1.0d).build());
    expectLastCall();
    replay(mockPointHandler);
    // try plaintext over tcp first
    Socket socket = sslSocketFactory.createSocket("localhost", securePort1);
    BufferedOutputStream stream = new BufferedOutputStream(socket.getOutputStream());
    String payloadStr = "metric.test 0 " + startTime + " source=test1\n" + "metric.test 1 " + (startTime + 1) + " source=test2\n";
    stream.write(payloadStr.getBytes());
    stream.flush();
    socket.close();
    verifyWithTimeout(500, mockPointHandler);
    reset(mockPointHandler);
    mockPointHandler.report(ReportPoint.newBuilder().setTable("dummy").setMetric("metric.test").setHost("test3").setTimestamp(startTime * 1000).setValue(0.0d).build());
    expectLastCall();
    mockPointHandler.report(ReportPoint.newBuilder().setTable("dummy").setMetric("metric.test").setHost("test4").setTimestamp((startTime + 1) * 1000).setValue(1.0d).build());
    expectLastCall();
    replay(mockPointHandler);
    // secure test
    socket = sslSocketFactory.createSocket("localhost", securePort2);
    stream = new BufferedOutputStream(socket.getOutputStream());
    payloadStr = "metric.test 0 " + startTime + " source=test3\n" + "metric.test 1 " + (startTime + 1) + " source=test4\n";
    stream.write(payloadStr.getBytes());
    stream.flush();
    socket.close();
    verifyWithTimeout(500, mockPointHandler);
}
Also used : RateSampler(com.wavefront.sdk.entities.tracing.sampling.RateSampler) SpanSampler(com.wavefront.agent.sampler.SpanSampler) EasyMock.anyString(org.easymock.EasyMock.anyString) BufferedOutputStream(java.io.BufferedOutputStream) ReportPoint(wavefront.report.ReportPoint) Socket(java.net.Socket) Test(org.junit.Test)

Example 24 with RateSampler

use of com.wavefront.sdk.entities.tracing.sampling.RateSampler in project java by wavefrontHQ.

the class PushAgentTest method testHistogramDataOnWavefrontUnifiedPortHandlerPlaintextUncompressed.

// test that histograms received on Wavefront port get routed to the correct handler
@Test
public void testHistogramDataOnWavefrontUnifiedPortHandlerPlaintextUncompressed() throws Exception {
    port = findAvailablePort(2888);
    proxy.proxyConfig.pushListenerPorts = String.valueOf(port);
    proxy.startGraphiteListener(proxy.proxyConfig.getPushListenerPorts(), mockHandlerFactory, null, new SpanSampler(new RateSampler(1.0D), () -> null));
    waitUntilListenerIsOnline(port);
    reset(mockHistogramHandler);
    mockHistogramHandler.report(ReportPoint.newBuilder().setTable("dummy").setMetric("metric.test.histo").setHost("test1").setTimestamp(startTime * 1000).setValue(Histogram.newBuilder().setType(HistogramType.TDIGEST).setDuration(60000).setBins(ImmutableList.of(10.0d, 100.0d)).setCounts(ImmutableList.of(5, 10)).build()).build());
    mockHistogramHandler.report(ReportPoint.newBuilder().setTable("dummy").setMetric("metric.test.histo").setHost("test2").setTimestamp((startTime + 60) * 1000).setValue(Histogram.newBuilder().setType(HistogramType.TDIGEST).setDuration(60000).setBins(ImmutableList.of(20.0d, 30.0d, 40.0d)).setCounts(ImmutableList.of(5, 6, 7)).build()).build());
    expectLastCall();
    replay(mockHistogramHandler);
    Socket socket = SocketFactory.getDefault().createSocket("localhost", port);
    BufferedOutputStream stream = new BufferedOutputStream(socket.getOutputStream());
    String payloadStr = "!M " + startTime + " #5 10.0 #10 100.0 metric.test.histo source=test1\n" + "!M " + (startTime + 60) + " #5 20.0 #6 30.0 #7 40.0 metric.test.histo source=test2\n";
    stream.write(payloadStr.getBytes());
    stream.flush();
    socket.close();
    verifyWithTimeout(500, mockHistogramHandler);
}
Also used : RateSampler(com.wavefront.sdk.entities.tracing.sampling.RateSampler) SpanSampler(com.wavefront.agent.sampler.SpanSampler) EasyMock.anyString(org.easymock.EasyMock.anyString) BufferedOutputStream(java.io.BufferedOutputStream) Socket(java.net.Socket) Test(org.junit.Test)

Example 25 with RateSampler

use of com.wavefront.sdk.entities.tracing.sampling.RateSampler in project java by wavefrontHQ.

the class PushAgentTest method testLargeHistogramDataOnWavefrontUnifiedPortHandler.

@Test
public void testLargeHistogramDataOnWavefrontUnifiedPortHandler() throws Exception {
    port = findAvailablePort(2988);
    proxy.proxyConfig.pushListenerPorts = String.valueOf(port);
    proxy.startGraphiteListener(proxy.proxyConfig.getPushListenerPorts(), mockHandlerFactory, null, new SpanSampler(new RateSampler(1.0D), () -> null));
    waitUntilListenerIsOnline(port);
    reset(mockHistogramHandler);
    List<Double> bins = new ArrayList<>();
    List<Integer> counts = new ArrayList<>();
    for (int i = 0; i < 50; i++) bins.add(10.0d);
    for (int i = 0; i < 150; i++) bins.add(99.0d);
    for (int i = 0; i < 200; i++) counts.add(1);
    mockHistogramHandler.report(ReportPoint.newBuilder().setTable("dummy").setMetric("metric.test.histo").setHost("test1").setTimestamp(startTime * 1000).setValue(Histogram.newBuilder().setType(HistogramType.TDIGEST).setDuration(60000).setBins(bins).setCounts(counts).build()).build());
    expectLastCall();
    replay(mockHistogramHandler);
    Socket socket = SocketFactory.getDefault().createSocket("localhost", port);
    BufferedOutputStream stream = new BufferedOutputStream(socket.getOutputStream());
    StringBuilder payloadStr = new StringBuilder("!M ");
    payloadStr.append(startTime);
    for (int i = 0; i < 50; i++) payloadStr.append(" #1 10.0");
    for (int i = 0; i < 150; i++) payloadStr.append(" #1 99.0");
    payloadStr.append(" metric.test.histo source=test1\n");
    stream.write(payloadStr.toString().getBytes());
    stream.flush();
    socket.close();
    verifyWithTimeout(500, mockHistogramHandler);
}
Also used : RateSampler(com.wavefront.sdk.entities.tracing.sampling.RateSampler) SpanSampler(com.wavefront.agent.sampler.SpanSampler) ArrayList(java.util.ArrayList) BufferedOutputStream(java.io.BufferedOutputStream) ReportPoint(wavefront.report.ReportPoint) Socket(java.net.Socket) Test(org.junit.Test)

Aggregations

SpanSampler (com.wavefront.agent.sampler.SpanSampler)36 RateSampler (com.wavefront.sdk.entities.tracing.sampling.RateSampler)36 Test (org.junit.Test)35 Annotation (wavefront.report.Annotation)23 EasyMock.anyString (org.easymock.EasyMock.anyString)13 Span (wavefront.report.Span)12 Socket (java.net.Socket)10 Batch (io.jaegertracing.thriftjava.Batch)9 Process (io.jaegertracing.thriftjava.Process)9 BufferedOutputStream (java.io.BufferedOutputStream)9 ByteString (com.google.protobuf.ByteString)8 Tag (io.jaegertracing.thriftjava.Tag)8 Collector (io.opentelemetry.exporters.jaeger.proto.api_v2.Collector)8 Model (io.opentelemetry.exporters.jaeger.proto.api_v2.Model)8 ByteBuffer (java.nio.ByteBuffer)8 Collector (io.jaegertracing.thriftjava.Collector)7 ReportPoint (wavefront.report.ReportPoint)7 NoopHealthCheckManager (com.wavefront.agent.channel.NoopHealthCheckManager)5 ByteBuf (io.netty.buffer.ByteBuf)5 DefaultFullHttpRequest (io.netty.handler.codec.http.DefaultFullHttpRequest)5