spans = new ArrayList<>( sampledSpanStore.getErrorSampledSpans(ErrorFilter.create(spanName, code, 0))); } else { if (subtype < 0 || subtype >= LatencyBucketBoundaries.values().length) {
@Test public void getErrorSampledSpans() { RecordEventsSpanImpl span = createSampledSpan(REGISTERED_SPAN_NAME); testClock.advanceTime(Duration.create(0, 1000)); span.end(EndSpanOptions.builder().setStatus(Status.CANCELLED).build()); Collection<SpanData> samples = sampleStore.getErrorSampledSpans( ErrorFilter.create(REGISTERED_SPAN_NAME, CanonicalCode.CANCELLED, 0)); assertThat(samples.size()).isEqualTo(1); assertThat(samples.contains(span.toSpanData())).isTrue(); }
@Test public void noopSampledSpanStore_GetErrorSampledSpans() { SampledSpanStore sampledSpanStore = ExportComponent.newNoopExportComponent().getSampledSpanStore(); Collection<SpanData> errorSampledSpans = sampledSpanStore.getErrorSampledSpans( SampledSpanStore.ErrorFilter.create("TestErrorFilter", null, 0)); assertThat(errorSampledSpans).isEmpty(); }
@Test public void getErrorSampledSpans_MaxSpansToReturn() { RecordEventsSpanImpl span1 = createSampledSpan(REGISTERED_SPAN_NAME); testClock.advanceTime(Duration.create(0, 1000)); span1.end(EndSpanOptions.builder().setStatus(Status.CANCELLED).build()); // Advance time to allow other spans to be sampled. testClock.advanceTime(Duration.create(5, 0)); RecordEventsSpanImpl span2 = createSampledSpan(REGISTERED_SPAN_NAME); testClock.advanceTime(Duration.create(0, 1000)); span2.end(EndSpanOptions.builder().setStatus(Status.CANCELLED).build()); Collection<SpanData> samples = sampleStore.getErrorSampledSpans( ErrorFilter.create(REGISTERED_SPAN_NAME, CanonicalCode.CANCELLED, 1)); assertThat(samples.size()).isEqualTo(1); // No order guaranteed so one of the spans should be in the list. assertThat(samples).containsAnyOf(span1.toSpanData(), span2.toSpanData()); }
@Test public void getErrorSampledSpans_NullCode_MaxSpansToReturn() { RecordEventsSpanImpl span1 = createSampledSpan(REGISTERED_SPAN_NAME); testClock.advanceTime(Duration.create(0, 1000)); span1.end(EndSpanOptions.builder().setStatus(Status.CANCELLED).build()); RecordEventsSpanImpl span2 = createSampledSpan(REGISTERED_SPAN_NAME); testClock.advanceTime(Duration.create(0, 1000)); span2.end(EndSpanOptions.builder().setStatus(Status.UNKNOWN).build()); Collection<SpanData> samples = sampleStore.getErrorSampledSpans(ErrorFilter.create(REGISTERED_SPAN_NAME, null, 1)); assertThat(samples.size()).isEqualTo(1); assertThat(samples).containsAnyOf(span1.toSpanData(), span2.toSpanData()); }
@Test public void getErrorSampledSpans_NullCode() { RecordEventsSpanImpl span1 = createSampledSpan(REGISTERED_SPAN_NAME); testClock.advanceTime(Duration.create(0, 1000)); span1.end(EndSpanOptions.builder().setStatus(Status.CANCELLED).build()); RecordEventsSpanImpl span2 = createSampledSpan(REGISTERED_SPAN_NAME); testClock.advanceTime(Duration.create(0, 1000)); span2.end(EndSpanOptions.builder().setStatus(Status.UNKNOWN).build()); Collection<SpanData> samples = sampleStore.getErrorSampledSpans(ErrorFilter.create(REGISTERED_SPAN_NAME, null, 0)); assertThat(samples.size()).isEqualTo(2); assertThat(samples).containsExactly(span1.toSpanData(), span2.toSpanData()); }