aboutsummaryrefslogtreecommitdiff
path: root/impl_core/src/test/java/io/opencensus/implcore/trace/export/InProcessRunningSpanStoreImplTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'impl_core/src/test/java/io/opencensus/implcore/trace/export/InProcessRunningSpanStoreImplTest.java')
-rw-r--r--impl_core/src/test/java/io/opencensus/implcore/trace/export/InProcessRunningSpanStoreImplTest.java168
1 files changed, 168 insertions, 0 deletions
diff --git a/impl_core/src/test/java/io/opencensus/implcore/trace/export/InProcessRunningSpanStoreImplTest.java b/impl_core/src/test/java/io/opencensus/implcore/trace/export/InProcessRunningSpanStoreImplTest.java
new file mode 100644
index 00000000..68ce1c18
--- /dev/null
+++ b/impl_core/src/test/java/io/opencensus/implcore/trace/export/InProcessRunningSpanStoreImplTest.java
@@ -0,0 +1,168 @@
+/*
+ * Copyright 2017, OpenCensus Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package io.opencensus.implcore.trace.export;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import io.opencensus.common.Duration;
+import io.opencensus.implcore.common.MillisClock;
+import io.opencensus.implcore.internal.SimpleEventQueue;
+import io.opencensus.implcore.trace.RecordEventsSpanImpl;
+import io.opencensus.implcore.trace.RecordEventsSpanImpl.StartEndHandler;
+import io.opencensus.implcore.trace.StartEndHandlerImpl;
+import io.opencensus.trace.SpanContext;
+import io.opencensus.trace.SpanId;
+import io.opencensus.trace.TraceId;
+import io.opencensus.trace.TraceOptions;
+import io.opencensus.trace.config.TraceParams;
+import io.opencensus.trace.export.RunningSpanStore.Filter;
+import java.util.Random;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+/** Unit tests for {@link InProcessRunningSpanStoreImpl}. */
+@RunWith(JUnit4.class)
+public class InProcessRunningSpanStoreImplTest {
+
+ private static final String SPAN_NAME_1 = "MySpanName/1";
+ private static final String SPAN_NAME_2 = "MySpanName/2";
+ private final Random random = new Random(1234);
+ private final SpanExporterImpl sampledSpansServiceExporter =
+ SpanExporterImpl.create(4, Duration.create(1, 0));
+ private final InProcessRunningSpanStoreImpl activeSpansExporter =
+ new InProcessRunningSpanStoreImpl();
+ private final StartEndHandler startEndHandler =
+ new StartEndHandlerImpl(
+ sampledSpansServiceExporter, activeSpansExporter, null, new SimpleEventQueue());
+
+ private RecordEventsSpanImpl createSpan(String spanName) {
+ final SpanContext spanContext =
+ SpanContext.create(
+ TraceId.generateRandomId(random),
+ SpanId.generateRandomId(random),
+ TraceOptions.DEFAULT);
+ return RecordEventsSpanImpl.startSpan(
+ spanContext,
+ spanName,
+ null,
+ SpanId.generateRandomId(random),
+ false,
+ TraceParams.DEFAULT,
+ startEndHandler,
+ null,
+ MillisClock.getInstance());
+ }
+
+ @Test
+ public void getSummary_SpansWithDifferentNames() {
+ final RecordEventsSpanImpl span1 = createSpan(SPAN_NAME_1);
+ final RecordEventsSpanImpl span2 = createSpan(SPAN_NAME_2);
+ assertThat(activeSpansExporter.getSummary().getPerSpanNameSummary().size()).isEqualTo(2);
+ assertThat(
+ activeSpansExporter
+ .getSummary()
+ .getPerSpanNameSummary()
+ .get(SPAN_NAME_1)
+ .getNumRunningSpans())
+ .isEqualTo(1);
+ assertThat(
+ activeSpansExporter
+ .getSummary()
+ .getPerSpanNameSummary()
+ .get(SPAN_NAME_2)
+ .getNumRunningSpans())
+ .isEqualTo(1);
+ span1.end();
+ assertThat(activeSpansExporter.getSummary().getPerSpanNameSummary().size()).isEqualTo(1);
+ assertThat(activeSpansExporter.getSummary().getPerSpanNameSummary().get(SPAN_NAME_1)).isNull();
+ assertThat(
+ activeSpansExporter
+ .getSummary()
+ .getPerSpanNameSummary()
+ .get(SPAN_NAME_2)
+ .getNumRunningSpans())
+ .isEqualTo(1);
+ span2.end();
+ assertThat(activeSpansExporter.getSummary().getPerSpanNameSummary().size()).isEqualTo(0);
+ }
+
+ @Test
+ public void getSummary_SpansWithSameName() {
+ final RecordEventsSpanImpl span1 = createSpan(SPAN_NAME_1);
+ final RecordEventsSpanImpl span2 = createSpan(SPAN_NAME_1);
+ final RecordEventsSpanImpl span3 = createSpan(SPAN_NAME_1);
+ assertThat(activeSpansExporter.getSummary().getPerSpanNameSummary().size()).isEqualTo(1);
+ assertThat(
+ activeSpansExporter
+ .getSummary()
+ .getPerSpanNameSummary()
+ .get(SPAN_NAME_1)
+ .getNumRunningSpans())
+ .isEqualTo(3);
+ span1.end();
+ assertThat(activeSpansExporter.getSummary().getPerSpanNameSummary().size()).isEqualTo(1);
+ assertThat(
+ activeSpansExporter
+ .getSummary()
+ .getPerSpanNameSummary()
+ .get(SPAN_NAME_1)
+ .getNumRunningSpans())
+ .isEqualTo(2);
+ span2.end();
+ assertThat(activeSpansExporter.getSummary().getPerSpanNameSummary().size()).isEqualTo(1);
+ assertThat(
+ activeSpansExporter
+ .getSummary()
+ .getPerSpanNameSummary()
+ .get(SPAN_NAME_1)
+ .getNumRunningSpans())
+ .isEqualTo(1);
+ span3.end();
+ assertThat(activeSpansExporter.getSummary().getPerSpanNameSummary().size()).isEqualTo(0);
+ }
+
+ @Test
+ public void getActiveSpans_SpansWithDifferentNames() {
+ RecordEventsSpanImpl span1 = createSpan(SPAN_NAME_1);
+ RecordEventsSpanImpl span2 = createSpan(SPAN_NAME_2);
+ assertThat(activeSpansExporter.getRunningSpans(Filter.create(SPAN_NAME_1, 0)))
+ .containsExactly(span1.toSpanData());
+ assertThat(activeSpansExporter.getRunningSpans(Filter.create(SPAN_NAME_1, 2)))
+ .containsExactly(span1.toSpanData());
+ assertThat(activeSpansExporter.getRunningSpans(Filter.create(SPAN_NAME_2, 0)))
+ .containsExactly(span2.toSpanData());
+ span1.end();
+ span2.end();
+ }
+
+ @Test
+ public void getActiveSpans_SpansWithSameName() {
+ RecordEventsSpanImpl span1 = createSpan(SPAN_NAME_1);
+ RecordEventsSpanImpl span2 = createSpan(SPAN_NAME_1);
+ RecordEventsSpanImpl span3 = createSpan(SPAN_NAME_1);
+ assertThat(activeSpansExporter.getRunningSpans(Filter.create(SPAN_NAME_1, 0)))
+ .containsExactly(span1.toSpanData(), span2.toSpanData(), span3.toSpanData());
+ assertThat(activeSpansExporter.getRunningSpans(Filter.create(SPAN_NAME_1, 2)).size())
+ .isEqualTo(2);
+ assertThat(activeSpansExporter.getRunningSpans(Filter.create(SPAN_NAME_1, 2)))
+ .containsAnyOf(span1.toSpanData(), span2.toSpanData(), span3.toSpanData());
+ span1.end();
+ span2.end();
+ span3.end();
+ }
+}