diff options
-rw-r--r-- | api/src/main/java/io/opencensus/metrics/export/Metric.java | 8 | ||||
-rw-r--r-- | api/src/test/java/io/opencensus/metrics/export/MetricTest.java | 31 |
2 files changed, 38 insertions, 1 deletions
diff --git a/api/src/main/java/io/opencensus/metrics/export/Metric.java b/api/src/main/java/io/opencensus/metrics/export/Metric.java index 07fe356a..5e2fa5e8 100644 --- a/api/src/main/java/io/opencensus/metrics/export/Metric.java +++ b/api/src/main/java/io/opencensus/metrics/export/Metric.java @@ -23,6 +23,8 @@ import io.opencensus.metrics.export.Value.ValueDistribution; import io.opencensus.metrics.export.Value.ValueDouble; import io.opencensus.metrics.export.Value.ValueLong; import io.opencensus.metrics.export.Value.ValueSummary; +import java.util.ArrayList; +import java.util.Collections; import java.util.List; import javax.annotation.concurrent.Immutable; @@ -47,8 +49,12 @@ public abstract class Metric { * @since 0.17 */ public static Metric create(MetricDescriptor metricDescriptor, List<TimeSeries> timeSeriesList) { + Utils.checkNotNull(metricDescriptor, "metricDescriptor"); + Utils.checkNotNull(timeSeriesList, "timeSeriesList"); + Utils.checkListElementNotNull(timeSeriesList, "timeSeries"); checkTypeMatch(metricDescriptor.getType(), timeSeriesList); - return new AutoValue_Metric(metricDescriptor, timeSeriesList); + return new AutoValue_Metric( + metricDescriptor, Collections.unmodifiableList(new ArrayList<TimeSeries>(timeSeriesList))); } /** diff --git a/api/src/test/java/io/opencensus/metrics/export/MetricTest.java b/api/src/test/java/io/opencensus/metrics/export/MetricTest.java index 0b1ecf65..52fa2c47 100644 --- a/api/src/test/java/io/opencensus/metrics/export/MetricTest.java +++ b/api/src/test/java/io/opencensus/metrics/export/MetricTest.java @@ -23,6 +23,7 @@ import io.opencensus.common.Timestamp; import io.opencensus.metrics.LabelKey; import io.opencensus.metrics.LabelValue; import io.opencensus.metrics.export.MetricDescriptor.Type; +import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -103,6 +104,36 @@ public class MetricTest { } @Test + public void create_WithNullMetricDescriptor() { + thrown.expect(NullPointerException.class); + thrown.expectMessage("metricDescriptor"); + Metric.create(null, Collections.<TimeSeries>emptyList()); + } + + @Test + public void create_WithNullTimeSeriesList() { + thrown.expect(NullPointerException.class); + thrown.expectMessage("timeSeriesList"); + Metric.create(METRIC_DESCRIPTOR_1, null); + } + + @Test + public void create_WithNullTimeSeries() { + thrown.expect(NullPointerException.class); + thrown.expectMessage("timeSeries"); + Metric.create(METRIC_DESCRIPTOR_1, Arrays.asList(GAUGE_TIME_SERIES_1, null)); + } + + @Test + public void immutableTimeSeriesList() { + List<TimeSeries> timeSeriesList = new ArrayList<TimeSeries>(); + timeSeriesList.add(GAUGE_TIME_SERIES_1); + Metric metric = Metric.create(METRIC_DESCRIPTOR_1, timeSeriesList); + timeSeriesList.add(GAUGE_TIME_SERIES_2); + assertThat(metric.getTimeSeriesList()).containsExactly(GAUGE_TIME_SERIES_1); + } + + @Test public void testEquals() { new EqualsTester() .addEqualityGroup( |