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);
}
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));
}
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);
}
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);
}
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);
}
Aggregations