blob: 19e8a6c54651fe3959cdb26c763de2bc2e1de1fa [file] [log] [blame]
/*
* Copyright 2016-17, 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.stats;
import static com.google.common.truth.Truth.assertThat;
import com.google.common.collect.Lists;
import io.opencensus.stats.Measure;
import io.opencensus.stats.Measure.MeasureDouble;
import io.opencensus.stats.Measure.MeasureLong;
import io.opencensus.stats.Measurement;
import io.opencensus.stats.Measurement.MeasurementDouble;
import io.opencensus.stats.Measurement.MeasurementLong;
import java.util.ArrayList;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
/** Tests for {@link MeasureMapInternal}. */
@RunWith(JUnit4.class)
public class MeasureMapInternalTest {
@Test
public void testPutDouble() {
MeasureMapInternal metrics = MeasureMapInternal.builder().put(M1, 44.4).build();
assertContains(metrics, MeasurementDouble.create(M1, 44.4));
}
@Test
public void testPutLong() {
MeasureMapInternal metrics = MeasureMapInternal.builder().put(M3, 9999L).put(M4, 8888L).build();
assertContains(metrics, MeasurementLong.create(M3, 9999L), MeasurementLong.create(M4, 8888L));
}
@Test
public void testPutAttachment() {
MeasureMapInternal metrics =
MeasureMapInternal.builder()
.putAttachment("k1", "v1")
.putAttachment("k2", "v2")
.putAttachment("k1", "v3")
.build();
assertThat(metrics.getAttachments()).containsExactly("k1", "v3", "k2", "v2");
assertContains(metrics);
}
@Test
public void testCombination() {
MeasureMapInternal metrics =
MeasureMapInternal.builder()
.put(M1, 44.4)
.put(M2, 66.6)
.put(M3, 9999L)
.put(M4, 8888L)
.build();
assertContains(
metrics,
MeasurementDouble.create(M1, 44.4),
MeasurementDouble.create(M2, 66.6),
MeasurementLong.create(M3, 9999L),
MeasurementLong.create(M4, 8888L));
}
@Test
public void testBuilderEmpty() {
MeasureMapInternal metrics = MeasureMapInternal.builder().build();
assertContains(metrics);
}
@Test
public void testBuilder() {
ArrayList<Measurement> expected = new ArrayList<Measurement>(10);
MeasureMapInternal.Builder builder = MeasureMapInternal.builder();
for (int i = 1; i <= 10; i++) {
expected.add(MeasurementDouble.create(makeSimpleMeasureDouble("m" + i), i * 11.1));
builder.put(makeSimpleMeasureDouble("m" + i), i * 11.1);
assertContains(builder.build(), expected.toArray(new Measurement[i]));
}
}
@Test
public void testDuplicateMeasureDoubles() {
assertContains(
MeasureMapInternal.builder().put(M1, 1.0).put(M1, 2.0).build(),
MeasurementDouble.create(M1, 2.0));
assertContains(
MeasureMapInternal.builder().put(M1, 1.0).put(M1, 2.0).put(M1, 3.0).build(),
MeasurementDouble.create(M1, 3.0));
assertContains(
MeasureMapInternal.builder().put(M1, 1.0).put(M2, 2.0).put(M1, 3.0).build(),
MeasurementDouble.create(M1, 3.0),
MeasurementDouble.create(M2, 2.0));
assertContains(
MeasureMapInternal.builder().put(M1, 1.0).put(M1, 2.0).put(M2, 2.0).build(),
MeasurementDouble.create(M1, 2.0),
MeasurementDouble.create(M2, 2.0));
}
@Test
public void testDuplicateMeasureLongs() {
assertContains(
MeasureMapInternal.builder().put(M3, 100L).put(M3, 100L).build(),
MeasurementLong.create(M3, 100L));
assertContains(
MeasureMapInternal.builder().put(M3, 100L).put(M3, 200L).put(M3, 300L).build(),
MeasurementLong.create(M3, 300L));
assertContains(
MeasureMapInternal.builder().put(M3, 100L).put(M4, 200L).put(M3, 300L).build(),
MeasurementLong.create(M3, 300L),
MeasurementLong.create(M4, 200L));
assertContains(
MeasureMapInternal.builder().put(M3, 100L).put(M3, 200L).put(M4, 200L).build(),
MeasurementLong.create(M3, 200L),
MeasurementLong.create(M4, 200L));
}
@Test
public void testDuplicateMeasures() {
assertContains(
MeasureMapInternal.builder().put(M3, 100L).put(M1, 1.0).put(M3, 300L).build(),
MeasurementLong.create(M3, 300L),
MeasurementDouble.create(M1, 1.0));
assertContains(
MeasureMapInternal.builder().put(M2, 2.0).put(M3, 100L).put(M2, 3.0).build(),
MeasurementDouble.create(M2, 3.0),
MeasurementLong.create(M3, 100L));
}
private static final MeasureDouble M1 = makeSimpleMeasureDouble("m1");
private static final MeasureDouble M2 = makeSimpleMeasureDouble("m2");
private static final MeasureLong M3 = makeSimpleMeasureLong("m3");
private static final MeasureLong M4 = makeSimpleMeasureLong("m4");
private static MeasureDouble makeSimpleMeasureDouble(String measure) {
return Measure.MeasureDouble.create(measure, measure + " description", "1");
}
private static MeasureLong makeSimpleMeasureLong(String measure) {
return Measure.MeasureLong.create(measure, measure + " description", "1");
}
private static void assertContains(MeasureMapInternal metrics, Measurement... measurements) {
assertThat(Lists.newArrayList(metrics.iterator())).containsExactly((Object[]) measurements);
}
}