• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2016-17, OpenCensus Authors
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package io.opencensus.stats;
18 
19 import static com.google.common.truth.Truth.assertThat;
20 
21 import com.google.common.collect.Lists;
22 import com.google.common.testing.EqualsTester;
23 import io.opencensus.common.Function;
24 import io.opencensus.common.Functions;
25 import io.opencensus.stats.Measure.MeasureDouble;
26 import io.opencensus.stats.Measure.MeasureLong;
27 import java.util.Arrays;
28 import java.util.List;
29 import org.junit.Rule;
30 import org.junit.Test;
31 import org.junit.rules.ExpectedException;
32 import org.junit.runner.RunWith;
33 import org.junit.runners.JUnit4;
34 
35 /** Tests for {@link Measure}. */
36 @RunWith(JUnit4.class)
37 public final class MeasureTest {
38 
39   @Rule public final ExpectedException thrown = ExpectedException.none();
40 
41   @Test
testConstants()42   public void testConstants() {
43     assertThat(Measure.NAME_MAX_LENGTH).isEqualTo(255);
44   }
45 
46   @Test
preventTooLongMeasureName()47   public void preventTooLongMeasureName() {
48     char[] chars = new char[Measure.NAME_MAX_LENGTH + 1];
49     Arrays.fill(chars, 'a');
50     String longName = String.valueOf(chars);
51     thrown.expect(IllegalArgumentException.class);
52     Measure.MeasureDouble.create(longName, "description", "1");
53   }
54 
55   @Test
preventNonPrintableMeasureName()56   public void preventNonPrintableMeasureName() {
57     thrown.expect(IllegalArgumentException.class);
58     Measure.MeasureDouble.create("\2", "description", "1");
59   }
60 
61   @Test
testMeasureDoubleComponents()62   public void testMeasureDoubleComponents() {
63     Measure measurement = Measure.MeasureDouble.create("Foo", "The description of Foo", "Mbit/s");
64     assertThat(measurement.getName()).isEqualTo("Foo");
65     assertThat(measurement.getDescription()).isEqualTo("The description of Foo");
66     assertThat(measurement.getUnit()).isEqualTo("Mbit/s");
67   }
68 
69   @Test
testMeasureLongComponents()70   public void testMeasureLongComponents() {
71     Measure measurement = Measure.MeasureLong.create("Bar", "The description of Bar", "1");
72     assertThat(measurement.getName()).isEqualTo("Bar");
73     assertThat(measurement.getDescription()).isEqualTo("The description of Bar");
74     assertThat(measurement.getUnit()).isEqualTo("1");
75   }
76 
77   @Test
testMeasureDoubleEquals()78   public void testMeasureDoubleEquals() {
79     new EqualsTester()
80         .addEqualityGroup(
81             Measure.MeasureDouble.create("name", "description", "bit/s"),
82             Measure.MeasureDouble.create("name", "description", "bit/s"))
83         .addEqualityGroup(Measure.MeasureDouble.create("name", "description 2", "bit/s"))
84         .testEquals();
85   }
86 
87   @Test
testMeasureLongEquals()88   public void testMeasureLongEquals() {
89     new EqualsTester()
90         .addEqualityGroup(
91             Measure.MeasureLong.create("name", "description", "bit/s"),
92             Measure.MeasureLong.create("name", "description", "bit/s"))
93         .addEqualityGroup(Measure.MeasureLong.create("name", "description 2", "bit/s"))
94         .testEquals();
95   }
96 
97   @Test
testMatch()98   public void testMatch() {
99     List<Measure> measures =
100         Arrays.asList(
101             MeasureDouble.create("measure1", "description", "1"),
102             MeasureLong.create("measure2", "description", "1"));
103     List<String> outputs = Lists.newArrayList();
104     for (Measure measure : measures) {
105       outputs.add(
106           measure.match(
107               new Function<MeasureDouble, String>() {
108                 @Override
109                 public String apply(MeasureDouble arg) {
110                   return "double";
111                 }
112               },
113               new Function<MeasureLong, String>() {
114                 @Override
115                 public String apply(MeasureLong arg) {
116                   return "long";
117                 }
118               },
119               Functions.<String>throwAssertionError()));
120     }
121     assertThat(outputs).containsExactly("double", "long").inOrder();
122   }
123 
124   @Test
testMeasureDoubleIsNotEqualToMeasureLong()125   public void testMeasureDoubleIsNotEqualToMeasureLong() {
126     assertThat(Measure.MeasureDouble.create("name", "description", "bit/s"))
127         .isNotEqualTo(Measure.MeasureLong.create("name", "description", "bit/s"));
128   }
129 }
130