aboutsummaryrefslogtreecommitdiff
path: root/api/src/test/java/io/opencensus/stats/NoopViewManagerTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'api/src/test/java/io/opencensus/stats/NoopViewManagerTest.java')
-rw-r--r--api/src/test/java/io/opencensus/stats/NoopViewManagerTest.java186
1 files changed, 186 insertions, 0 deletions
diff --git a/api/src/test/java/io/opencensus/stats/NoopViewManagerTest.java b/api/src/test/java/io/opencensus/stats/NoopViewManagerTest.java
new file mode 100644
index 00000000..44c7626f
--- /dev/null
+++ b/api/src/test/java/io/opencensus/stats/NoopViewManagerTest.java
@@ -0,0 +1,186 @@
+/*
+ * 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.stats;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import io.opencensus.common.Duration;
+import io.opencensus.common.Timestamp;
+import io.opencensus.stats.Aggregation.Sum;
+import io.opencensus.stats.Measure.MeasureDouble;
+import io.opencensus.stats.View.AggregationWindow.Cumulative;
+import io.opencensus.stats.View.AggregationWindow.Interval;
+import io.opencensus.stats.View.Name;
+import io.opencensus.stats.ViewData.AggregationWindowData.CumulativeData;
+import io.opencensus.stats.ViewData.AggregationWindowData.IntervalData;
+import io.opencensus.tags.TagKey;
+import java.util.Arrays;
+import java.util.Set;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+/** Unit tests for {@link NoopStats#newNoopViewManager}. */
+@RunWith(JUnit4.class)
+public final class NoopViewManagerTest {
+ private static final MeasureDouble MEASURE =
+ Measure.MeasureDouble.create("my measure", "description", "s");
+ private static final TagKey KEY = TagKey.create("KEY");
+ private static final Name VIEW_NAME = Name.create("my view");
+ private static final String VIEW_DESCRIPTION = "view description";
+ private static final Sum AGGREGATION = Sum.create();
+ private static final Cumulative CUMULATIVE = Cumulative.create();
+ private static final Duration TEN_SECONDS = Duration.create(10, 0);
+ private static final Interval INTERVAL = Interval.create(TEN_SECONDS);
+
+ @Rule public final ExpectedException thrown = ExpectedException.none();
+
+ @Test
+ public void noopViewManager_RegisterView_DisallowRegisteringDifferentViewWithSameName() {
+ final View view1 =
+ View.create(
+ VIEW_NAME, "description 1", MEASURE, AGGREGATION, Arrays.asList(KEY), CUMULATIVE);
+ final View view2 =
+ View.create(
+ VIEW_NAME, "description 2", MEASURE, AGGREGATION, Arrays.asList(KEY), CUMULATIVE);
+ ViewManager viewManager = NoopStats.newNoopViewManager();
+ viewManager.registerView(view1);
+
+ try {
+ thrown.expect(IllegalArgumentException.class);
+ thrown.expectMessage("A different view with the same name already exists.");
+ viewManager.registerView(view2);
+ } finally {
+ assertThat(viewManager.getView(VIEW_NAME).getView()).isEqualTo(view1);
+ }
+ }
+
+ @Test
+ public void noopViewManager_RegisterView_AllowRegisteringSameViewTwice() {
+ View view =
+ View.create(
+ VIEW_NAME, VIEW_DESCRIPTION, MEASURE, AGGREGATION, Arrays.asList(KEY), CUMULATIVE);
+ ViewManager viewManager = NoopStats.newNoopViewManager();
+ viewManager.registerView(view);
+ viewManager.registerView(view);
+ }
+
+ @Test
+ public void noopViewManager_RegisterView_DisallowNull() {
+ ViewManager viewManager = NoopStats.newNoopViewManager();
+ thrown.expect(NullPointerException.class);
+ viewManager.registerView(null);
+ }
+
+ @Test
+ public void noopViewManager_GetView_GettingNonExistentViewReturnsNull() {
+ ViewManager viewManager = NoopStats.newNoopViewManager();
+ assertThat(viewManager.getView(VIEW_NAME)).isNull();
+ }
+
+ @Test
+ public void noopViewManager_GetView_Cumulative() {
+ View view =
+ View.create(
+ VIEW_NAME, VIEW_DESCRIPTION, MEASURE, AGGREGATION, Arrays.asList(KEY), CUMULATIVE);
+ ViewManager viewManager = NoopStats.newNoopViewManager();
+ viewManager.registerView(view);
+
+ ViewData viewData = viewManager.getView(VIEW_NAME);
+ assertThat(viewData.getView()).isEqualTo(view);
+ assertThat(viewData.getAggregationMap()).isEmpty();
+ assertThat(viewData.getStart()).isEqualTo(Timestamp.create(0, 0));
+ assertThat(viewData.getEnd()).isEqualTo(Timestamp.create(0, 0));
+ assertThat(viewData.getWindowData())
+ .isEqualTo(CumulativeData.create(Timestamp.create(0, 0), Timestamp.create(0, 0)));
+ }
+
+ @Test
+ public void noopViewManager_GetView_Interval() {
+ View view =
+ View.create(
+ VIEW_NAME, VIEW_DESCRIPTION, MEASURE, AGGREGATION, Arrays.asList(KEY), INTERVAL);
+ ViewManager viewManager = NoopStats.newNoopViewManager();
+ viewManager.registerView(view);
+
+ ViewData viewData = viewManager.getView(VIEW_NAME);
+ assertThat(viewData.getView()).isEqualTo(view);
+ assertThat(viewData.getAggregationMap()).isEmpty();
+ assertThat(viewData.getWindowData()).isEqualTo(IntervalData.create(Timestamp.create(0, 0)));
+ }
+
+ @Test
+ public void noopViewManager_GetView_DisallowNull() {
+ ViewManager viewManager = NoopStats.newNoopViewManager();
+ thrown.expect(NullPointerException.class);
+ viewManager.getView(null);
+ }
+
+ @Test
+ public void getAllExportedViews() {
+ ViewManager viewManager = NoopStats.newNoopViewManager();
+ assertThat(viewManager.getAllExportedViews()).isEmpty();
+ View cumulativeView1 =
+ View.create(
+ View.Name.create("View 1"),
+ VIEW_DESCRIPTION,
+ MEASURE,
+ AGGREGATION,
+ Arrays.asList(KEY),
+ CUMULATIVE);
+ View cumulativeView2 =
+ View.create(
+ View.Name.create("View 2"),
+ VIEW_DESCRIPTION,
+ MEASURE,
+ AGGREGATION,
+ Arrays.asList(KEY),
+ CUMULATIVE);
+ View intervalView =
+ View.create(
+ View.Name.create("View 3"),
+ VIEW_DESCRIPTION,
+ MEASURE,
+ AGGREGATION,
+ Arrays.asList(KEY),
+ INTERVAL);
+ viewManager.registerView(cumulativeView1);
+ viewManager.registerView(cumulativeView2);
+ viewManager.registerView(intervalView);
+
+ // Only cumulative views should be exported.
+ assertThat(viewManager.getAllExportedViews()).containsExactly(cumulativeView1, cumulativeView2);
+ }
+
+ @Test
+ public void getAllExportedViews_ResultIsUnmodifiable() {
+ ViewManager viewManager = NoopStats.newNoopViewManager();
+ View view1 =
+ View.create(
+ View.Name.create("View 1"), VIEW_DESCRIPTION, MEASURE, AGGREGATION, Arrays.asList(KEY));
+ viewManager.registerView(view1);
+ Set<View> exported = viewManager.getAllExportedViews();
+
+ View view2 =
+ View.create(
+ View.Name.create("View 2"), VIEW_DESCRIPTION, MEASURE, AGGREGATION, Arrays.asList(KEY));
+ thrown.expect(UnsupportedOperationException.class);
+ exported.add(view2);
+ }
+}