aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYang Song <songy23@users.noreply.github.com>2018-10-09 18:32:38 -0700
committerGitHub <noreply@github.com>2018-10-09 18:32:38 -0700
commite3b2074a090836985307123517fd2d361c4b503c (patch)
treee2eb33dbf3bf0136a1d4c35fdca71301049c2ac5
parentdea86ae9d49eb9ecc0172c96773d41a9dcc2a4b2 (diff)
downloadopencensus-java-e3b2074a090836985307123517fd2d361c4b503c.tar.gz
Metrics: Copy TimeSeries list when creating a Metric. (#1485)
* Metrics: Copy TimeSeries list when creating a Metric. * Check for null and add more tests.
-rw-r--r--api/src/main/java/io/opencensus/metrics/export/Metric.java8
-rw-r--r--api/src/test/java/io/opencensus/metrics/export/MetricTest.java31
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(