new ArrayList<>( sampledSpanStore.getLatencySampledSpans( LatencyFilter.create( spanName, latencyBucketBoundaries.getLatencyLowerNs(),
@Test public void getLatencySampledSpans_InclusiveLowerBound() { RecordEventsSpanImpl span = createSampledSpan(REGISTERED_SPAN_NAME); testClock.advanceTime(Duration.create(0, (int) TimeUnit.MICROSECONDS.toNanos(20))); span.end(); Collection<SpanData> samples = sampleStore.getLatencySampledSpans( LatencyFilter.create( REGISTERED_SPAN_NAME, TimeUnit.MICROSECONDS.toNanos(20), TimeUnit.MICROSECONDS.toNanos(25), 0)); assertThat(samples.size()).isEqualTo(1); assertThat(samples.contains(span.toSpanData())).isTrue(); }
@Test public void getLatencySampledSpans() { RecordEventsSpanImpl span = createSampledSpan(REGISTERED_SPAN_NAME); testClock.advanceTime(Duration.create(0, (int) TimeUnit.MICROSECONDS.toNanos(20))); span.end(); Collection<SpanData> samples = sampleStore.getLatencySampledSpans( LatencyFilter.create( REGISTERED_SPAN_NAME, TimeUnit.MICROSECONDS.toNanos(15), TimeUnit.MICROSECONDS.toNanos(25), 0)); assertThat(samples.size()).isEqualTo(1); assertThat(samples.contains(span.toSpanData())).isTrue(); }
@Test public void getLatencySampledSpans_QueryBetweenMultipleBuckets() { RecordEventsSpanImpl span1 = createSampledSpan(REGISTERED_SPAN_NAME); testClock.advanceTime(Duration.create(0, (int) TimeUnit.MICROSECONDS.toNanos(20))); span1.end(); // 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, (int) TimeUnit.MICROSECONDS.toNanos(200))); span2.end(); Collection<SpanData> samples = sampleStore.getLatencySampledSpans( LatencyFilter.create( REGISTERED_SPAN_NAME, TimeUnit.MICROSECONDS.toNanos(15), TimeUnit.MICROSECONDS.toNanos(250), 0)); assertThat(samples).containsExactly(span1.toSpanData(), span2.toSpanData()); }
@Test public void getLatencySampledSpans_MaxSpansToReturn() { RecordEventsSpanImpl span1 = createSampledSpan(REGISTERED_SPAN_NAME); testClock.advanceTime(Duration.create(0, (int) TimeUnit.MICROSECONDS.toNanos(20))); span1.end(); // 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, (int) TimeUnit.MICROSECONDS.toNanos(200))); span2.end(); Collection<SpanData> samples = sampleStore.getLatencySampledSpans( LatencyFilter.create( REGISTERED_SPAN_NAME, TimeUnit.MICROSECONDS.toNanos(15), TimeUnit.MICROSECONDS.toNanos(250), 1)); assertThat(samples.size()).isEqualTo(1); assertThat(samples.contains(span1.toSpanData())).isTrue(); }
@Test public void getLatencySampledSpans_ExclusiveUpperBound() { RecordEventsSpanImpl span = createSampledSpan(REGISTERED_SPAN_NAME); testClock.advanceTime(Duration.create(0, (int) TimeUnit.MICROSECONDS.toNanos(20))); span.end(); Collection<SpanData> samples = sampleStore.getLatencySampledSpans( LatencyFilter.create( REGISTERED_SPAN_NAME, TimeUnit.MICROSECONDS.toNanos(15), TimeUnit.MICROSECONDS.toNanos(20), 0)); assertThat(samples.size()).isEqualTo(0); }
@Test public void ignoreNegativeSpanLatency() { RecordEventsSpanImpl span = createSampledSpan(REGISTERED_SPAN_NAME); testClock.advanceTime(Duration.create(0, (int) TimeUnit.MICROSECONDS.toNanos(-20))); span.end(); Collection<SpanData> samples = sampleStore.getLatencySampledSpans( LatencyFilter.create(REGISTERED_SPAN_NAME, 0, Long.MAX_VALUE, 0)); assertThat(samples.size()).isEqualTo(0); } }
@Test public void noopSampledSpanStore_GetLatencySampledSpans() { SampledSpanStore sampledSpanStore = ExportComponent.newNoopExportComponent().getSampledSpanStore(); Collection<SpanData> latencySampledSpans = sampledSpanStore.getLatencySampledSpans( SampledSpanStore.LatencyFilter.create("TestLatencyFilter", 0, 0, 0)); assertThat(latencySampledSpans).isEmpty(); }