use of io.opencensus.implcore.trace.StartEndHandlerImpl in project instrumentation-java by census-instrumentation.
the class SpanExporterImplTest method exportMoreSpansThanTheMaximumLimit.
@Test
public void exportMoreSpansThanTheMaximumLimit() {
final int bufferSize = 4;
final int maxReferencedSpans = bufferSize * 4;
SpanExporterImpl spanExporter = SpanExporterImpl.create(bufferSize, Duration.create(1, 0));
StartEndHandler startEndHandler = new StartEndHandlerImpl(spanExporter, runningSpanStore, sampledSpanStore, new SimpleEventQueue());
BlockingExporter blockingExporter = new BlockingExporter();
spanExporter.registerHandler("test.service", serviceHandler);
spanExporter.registerHandler("test.blocking", blockingExporter);
List<SpanData> spansToExport = new ArrayList<>(maxReferencedSpans);
for (int i = 0; i < maxReferencedSpans; i++) {
spansToExport.add(createSampledEndedSpan(startEndHandler, "span_1_" + i).toSpanData());
}
assertThat(spanExporter.getReferencedSpans()).isEqualTo(maxReferencedSpans);
// Now we should start dropping.
for (int i = 0; i < 7; i++) {
createSampledEndedSpan(startEndHandler, "span_2_" + i);
assertThat(spanExporter.getDroppedSpans()).isEqualTo(i + 1);
}
assertThat(spanExporter.getReferencedSpans()).isEqualTo(maxReferencedSpans);
// Release the blocking exporter
blockingExporter.unblock();
List<SpanData> exported = serviceHandler.waitForExport(maxReferencedSpans);
assertThat(exported).isNotNull();
assertThat(exported).containsExactlyElementsIn(spansToExport);
exported.clear();
spansToExport.clear();
// We cannot compare with maxReferencedSpans here because the worker thread may get
// unscheduled immediately after exporting, but before updating the pushed spans, if that is
// the case at most bufferSize spans will miss.
assertThat(spanExporter.getPushedSpans()).isAtLeast((long) maxReferencedSpans - bufferSize);
for (int i = 0; i < 7; i++) {
spansToExport.add(createSampledEndedSpan(startEndHandler, "span_3_" + i).toSpanData());
// No more dropped spans.
assertThat(spanExporter.getDroppedSpans()).isEqualTo(7);
}
exported = serviceHandler.waitForExport(7);
assertThat(exported).isNotNull();
assertThat(exported).containsExactlyElementsIn(spansToExport);
}
use of io.opencensus.implcore.trace.StartEndHandlerImpl in project instrumentation-java by census-instrumentation.
the class SpanExporterImplTest method exportSpansToMultipleServices.
@Test
public void exportSpansToMultipleServices() {
SpanExporterImpl spanExporter = SpanExporterImpl.create(4, Duration.create(1, 0));
StartEndHandler startEndHandler = new StartEndHandlerImpl(spanExporter, runningSpanStore, sampledSpanStore, new SimpleEventQueue());
spanExporter.registerHandler("test.service", serviceHandler);
TestHandler serviceHandler2 = new TestHandler();
spanExporter.registerHandler("test.service2", serviceHandler2);
RecordEventsSpanImpl span1 = createSampledEndedSpan(startEndHandler, SPAN_NAME_1);
RecordEventsSpanImpl span2 = createSampledEndedSpan(startEndHandler, SPAN_NAME_2);
List<SpanData> exported1 = serviceHandler.waitForExport(2);
List<SpanData> exported2 = serviceHandler2.waitForExport(2);
assertThat(exported1).containsExactly(span1.toSpanData(), span2.toSpanData());
assertThat(exported2).containsExactly(span1.toSpanData(), span2.toSpanData());
}
use of io.opencensus.implcore.trace.StartEndHandlerImpl in project instrumentation-java by census-instrumentation.
the class SpanExporterImplTest method exportNotSampledSpans.
@Test
public void exportNotSampledSpans() {
SpanExporterImpl spanExporter = SpanExporterImpl.create(4, Duration.create(1, 0));
StartEndHandler startEndHandler = new StartEndHandlerImpl(spanExporter, runningSpanStore, sampledSpanStore, new SimpleEventQueue());
spanExporter.registerHandler("test.service", serviceHandler);
RecordEventsSpanImpl span1 = createNotSampledEndedSpan(startEndHandler, SPAN_NAME_1);
RecordEventsSpanImpl span2 = createSampledEndedSpan(startEndHandler, SPAN_NAME_2);
// Spans are recorded and exported in the same order as they are ended, we test that a non
// sampled span is not exported by creating and ending a sampled span after a non sampled span
// and checking that the first exported span is the sampled span (the non sampled did not get
// exported).
List<SpanData> exported = serviceHandler.waitForExport(1);
// Need to check this because otherwise the variable span1 is unused, other option is to not
// have a span1 variable.
assertThat(exported).doesNotContain(span1.toSpanData());
assertThat(exported).containsExactly(span2.toSpanData());
}
use of io.opencensus.implcore.trace.StartEndHandlerImpl in project instrumentation-java by census-instrumentation.
the class SpanExporterImplTest method exportNotSampledSpansFlushed.
@Test(timeout = 10000L)
public void exportNotSampledSpansFlushed() {
// Set the export delay to zero, for no timeout, in order to confirm the #flush() below works
SpanExporterImpl spanExporter = SpanExporterImpl.create(4, Duration.create(0, 0));
StartEndHandler startEndHandler = new StartEndHandlerImpl(spanExporter, runningSpanStore, sampledSpanStore, new SimpleEventQueue());
spanExporter.registerHandler("test.service", serviceHandler);
RecordEventsSpanImpl span2 = createSampledEndedSpan(startEndHandler, SPAN_NAME_2);
// Force a flush, without this, the #waitForExport() call below would block indefinitely.
spanExporter.flush();
List<SpanData> exported = serviceHandler.waitForExport(1);
assertThat(exported).containsExactly(span2.toSpanData());
}
use of io.opencensus.implcore.trace.StartEndHandlerImpl in project instrumentation-java by census-instrumentation.
the class SpanExporterImplTest method exportDifferentSampledSpans.
@Test
public void exportDifferentSampledSpans() {
SpanExporterImpl spanExporter = SpanExporterImpl.create(4, Duration.create(1, 0));
StartEndHandler startEndHandler = new StartEndHandlerImpl(spanExporter, runningSpanStore, sampledSpanStore, new SimpleEventQueue());
spanExporter.registerHandler("test.service", serviceHandler);
RecordEventsSpanImpl span1 = createSampledEndedSpan(startEndHandler, SPAN_NAME_1);
RecordEventsSpanImpl span2 = createSampledEndedSpan(startEndHandler, SPAN_NAME_2);
List<SpanData> exported = serviceHandler.waitForExport(2);
assertThat(exported).containsExactly(span1.toSpanData(), span2.toSpanData());
}
Aggregations