blob: 2b41e9b8787d0dda3acb8b3b7fc4366959685b72 [file] [log] [blame]
/*
* Copyright 2018, 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.contrib.dropwizard;
import static com.google.common.truth.Truth.assertThat;
import static io.opencensus.contrib.dropwizard.DropWizardMetrics.DEFAULT_UNIT;
import com.codahale.metrics.Counter;
import com.codahale.metrics.Gauge;
import com.codahale.metrics.Histogram;
import com.codahale.metrics.Meter;
import com.codahale.metrics.Timer;
import io.opencensus.common.Timestamp;
import io.opencensus.metrics.LabelKey;
import io.opencensus.metrics.export.Metric;
import io.opencensus.metrics.export.MetricDescriptor;
import io.opencensus.metrics.export.MetricDescriptor.Type;
import io.opencensus.metrics.export.Summary;
import io.opencensus.metrics.export.Summary.Snapshot;
import io.opencensus.metrics.export.Summary.Snapshot.ValueAtPercentile;
import io.opencensus.metrics.export.Value;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
/** Unit tests for {@link DropWizardMetrics}. */
@RunWith(JUnit4.class)
public class DropWizardMetricsTest {
private com.codahale.metrics.MetricRegistry metricRegistry;
DropWizardMetrics dropWizardMetrics;
@Before
public void setUp() throws Exception {
metricRegistry = new com.codahale.metrics.MetricRegistry();
dropWizardMetrics = new DropWizardMetrics(Collections.singletonList((metricRegistry)));
}
@Test
public void collect() throws InterruptedException {
// create dropwizard metrics
Counter evictions = metricRegistry.counter("cache_evictions");
evictions.inc();
evictions.inc(3);
evictions.dec();
evictions.dec(2);
Gauge<Integer> integerGauge =
new Gauge<Integer>() {
@Override
public Integer getValue() {
return 1234;
}
};
metricRegistry.register("integer_gauge", integerGauge);
Gauge<Double> doubleGauge =
new Gauge<Double>() {
@Override
public Double getValue() {
return 1.234D;
}
};
metricRegistry.register("double_gauge", doubleGauge);
Gauge<Long> longGauge =
new Gauge<Long>() {
@Override
public Long getValue() {
return 1234L;
}
};
metricRegistry.register("long_gauge", longGauge);
Gauge<Float> floatGauge =
new Gauge<Float>() {
@Override
public Float getValue() {
return 0.1234F;
}
};
metricRegistry.register("float_gauge", floatGauge);
Gauge<Boolean> boolGauge =
new Gauge<Boolean>() {
@Override
public Boolean getValue() {
return Boolean.TRUE;
}
};
metricRegistry.register("boolean_gauge", boolGauge);
Meter getRequests = metricRegistry.meter("get_requests");
getRequests.mark();
getRequests.mark();
Histogram resultCounts = metricRegistry.histogram("result");
resultCounts.update(200);
Timer timer = metricRegistry.timer("requests");
Timer.Context context = timer.time();
Thread.sleep(1L);
context.stop();
ArrayList<Metric> metrics = new ArrayList<Metric>(dropWizardMetrics.getMetrics());
assertThat(metrics.size()).isEqualTo(9);
assertThat(metrics.get(0).getMetricDescriptor())
.isEqualTo(
MetricDescriptor.create(
"codahale_cache_evictions_counter",
"Collected from codahale (metric=cache_evictions, "
+ "type=com.codahale.metrics.Counter)",
DEFAULT_UNIT,
Type.GAUGE_INT64,
Collections.<LabelKey>emptyList()));
assertThat(metrics.get(0).getTimeSeriesList().size()).isEqualTo(1);
assertThat(metrics.get(0).getTimeSeriesList().get(0).getLabelValues().size()).isEqualTo(0);
assertThat(metrics.get(0).getTimeSeriesList().get(0).getPoints().size()).isEqualTo(1);
assertThat(metrics.get(0).getTimeSeriesList().get(0).getPoints().get(0).getValue())
.isEqualTo(Value.longValue(1));
assertThat(metrics.get(0).getTimeSeriesList().get(0).getStartTimestamp()).isEqualTo(null);
assertThat(metrics.get(1).getMetricDescriptor())
.isEqualTo(
MetricDescriptor.create(
"codahale_boolean_gauge_gauge",
"Collected from codahale (metric=boolean_gauge, "
+ "type=io.opencensus.contrib.dropwizard.DropWizardMetricsTest$5)",
DEFAULT_UNIT,
Type.GAUGE_INT64,
Collections.<LabelKey>emptyList()));
assertThat(metrics.get(1).getTimeSeriesList().size()).isEqualTo(1);
assertThat(metrics.get(1).getTimeSeriesList().get(0).getLabelValues().size()).isEqualTo(0);
assertThat(metrics.get(1).getTimeSeriesList().get(0).getPoints().size()).isEqualTo(1);
assertThat(metrics.get(1).getTimeSeriesList().get(0).getPoints().get(0).getValue())
.isEqualTo(Value.longValue(1));
assertThat(metrics.get(1).getTimeSeriesList().get(0).getStartTimestamp()).isEqualTo(null);
assertThat(metrics.get(2).getMetricDescriptor())
.isEqualTo(
MetricDescriptor.create(
"codahale_double_gauge_gauge",
"Collected from codahale (metric=double_gauge, "
+ "type=io.opencensus.contrib.dropwizard.DropWizardMetricsTest$2)",
DEFAULT_UNIT,
Type.GAUGE_DOUBLE,
Collections.<LabelKey>emptyList()));
assertThat(metrics.get(2).getTimeSeriesList().size()).isEqualTo(1);
assertThat(metrics.get(2).getTimeSeriesList().get(0).getLabelValues().size()).isEqualTo(0);
assertThat(metrics.get(2).getTimeSeriesList().get(0).getPoints().size()).isEqualTo(1);
assertThat(metrics.get(2).getTimeSeriesList().get(0).getPoints().get(0).getValue())
.isEqualTo(Value.doubleValue(1.234));
assertThat(metrics.get(2).getTimeSeriesList().get(0).getStartTimestamp()).isEqualTo(null);
assertThat(metrics.get(3).getMetricDescriptor())
.isEqualTo(
MetricDescriptor.create(
"codahale_float_gauge_gauge",
"Collected from codahale (metric=float_gauge, "
+ "type=io.opencensus.contrib.dropwizard.DropWizardMetricsTest$4)",
DEFAULT_UNIT,
Type.GAUGE_DOUBLE,
Collections.<LabelKey>emptyList()));
assertThat(metrics.get(3).getTimeSeriesList().size()).isEqualTo(1);
assertThat(metrics.get(3).getTimeSeriesList().get(0).getLabelValues().size()).isEqualTo(0);
assertThat(metrics.get(3).getTimeSeriesList().get(0).getPoints().size()).isEqualTo(1);
assertThat(metrics.get(3).getTimeSeriesList().get(0).getPoints().get(0).getValue())
.isEqualTo(Value.doubleValue(0.1234000027179718));
assertThat(metrics.get(3).getTimeSeriesList().get(0).getStartTimestamp()).isEqualTo(null);
assertThat(metrics.get(4).getMetricDescriptor())
.isEqualTo(
MetricDescriptor.create(
"codahale_integer_gauge_gauge",
"Collected from codahale (metric=integer_gauge, "
+ "type=io.opencensus.contrib.dropwizard.DropWizardMetricsTest$1)",
DEFAULT_UNIT,
Type.GAUGE_DOUBLE,
Collections.<LabelKey>emptyList()));
assertThat(metrics.get(4).getTimeSeriesList().size()).isEqualTo(1);
assertThat(metrics.get(4).getTimeSeriesList().get(0).getLabelValues().size()).isEqualTo(0);
assertThat(metrics.get(4).getTimeSeriesList().get(0).getPoints().size()).isEqualTo(1);
assertThat(metrics.get(4).getTimeSeriesList().get(0).getPoints().get(0).getValue())
.isEqualTo(Value.doubleValue(1234.0));
assertThat(metrics.get(4).getTimeSeriesList().get(0).getStartTimestamp()).isEqualTo(null);
assertThat(metrics.get(5).getMetricDescriptor())
.isEqualTo(
MetricDescriptor.create(
"codahale_long_gauge_gauge",
"Collected from codahale (metric=long_gauge, "
+ "type=io.opencensus.contrib.dropwizard.DropWizardMetricsTest$3)",
DEFAULT_UNIT,
Type.GAUGE_DOUBLE,
Collections.<LabelKey>emptyList()));
assertThat(metrics.get(5).getTimeSeriesList().size()).isEqualTo(1);
assertThat(metrics.get(5).getTimeSeriesList().get(0).getLabelValues().size()).isEqualTo(0);
assertThat(metrics.get(5).getTimeSeriesList().get(0).getPoints().size()).isEqualTo(1);
assertThat(metrics.get(5).getTimeSeriesList().get(0).getPoints().get(0).getValue())
.isEqualTo(Value.doubleValue(1234.0));
assertThat(metrics.get(5).getTimeSeriesList().get(0).getStartTimestamp()).isEqualTo(null);
assertThat(metrics.get(6).getMetricDescriptor())
.isEqualTo(
MetricDescriptor.create(
"codahale_get_requests_meter",
"Collected from codahale (metric=get_requests, "
+ "type=com.codahale.metrics.Meter)",
DEFAULT_UNIT,
Type.CUMULATIVE_INT64,
Collections.<LabelKey>emptyList()));
assertThat(metrics.get(6).getTimeSeriesList().size()).isEqualTo(1);
assertThat(metrics.get(6).getTimeSeriesList().get(0).getLabelValues().size()).isEqualTo(0);
assertThat(metrics.get(6).getTimeSeriesList().get(0).getPoints().size()).isEqualTo(1);
assertThat(metrics.get(6).getTimeSeriesList().get(0).getPoints().get(0).getValue())
.isEqualTo(Value.longValue(2));
assertThat(metrics.get(6).getTimeSeriesList().get(0).getStartTimestamp()).isEqualTo(null);
assertThat(metrics.get(7).getMetricDescriptor())
.isEqualTo(
MetricDescriptor.create(
"codahale_result_histogram",
"Collected from codahale (metric=result, " + "type=com.codahale.metrics.Histogram)",
DEFAULT_UNIT,
Type.SUMMARY,
Collections.<LabelKey>emptyList()));
assertThat(metrics.get(7).getTimeSeriesList().size()).isEqualTo(1);
assertThat(metrics.get(7).getTimeSeriesList().get(0).getLabelValues().size()).isEqualTo(0);
assertThat(metrics.get(7).getTimeSeriesList().get(0).getPoints().size()).isEqualTo(1);
assertThat(metrics.get(7).getTimeSeriesList().get(0).getPoints().get(0).getValue())
.isEqualTo(
Value.summaryValue(
Summary.create(
1L,
0.0,
Snapshot.create(
1L,
0.0,
Arrays.asList(
ValueAtPercentile.create(50.0, 200.0),
ValueAtPercentile.create(75.0, 200.0),
ValueAtPercentile.create(98.0, 200.0),
ValueAtPercentile.create(99.0, 200.0),
ValueAtPercentile.create(99.9, 200.0))))));
assertThat(metrics.get(7).getTimeSeriesList().get(0).getStartTimestamp())
.isInstanceOf(Timestamp.class);
assertThat(metrics.get(8).getMetricDescriptor())
.isEqualTo(
MetricDescriptor.create(
"codahale_requests_timer",
"Collected from codahale (metric=requests, " + "type=com.codahale.metrics.Timer)",
DEFAULT_UNIT,
Type.SUMMARY,
Collections.<LabelKey>emptyList()));
assertThat(metrics.get(8).getTimeSeriesList().size()).isEqualTo(1);
assertThat(metrics.get(8).getTimeSeriesList().get(0).getLabelValues().size()).isEqualTo(0);
assertThat(metrics.get(8).getTimeSeriesList().get(0).getPoints().size()).isEqualTo(1);
assertThat(metrics.get(8).getTimeSeriesList().get(0).getPoints().get(0).getValue())
.isEqualTo(
Value.summaryValue(
Summary.create(
1L,
0.0,
Snapshot.create(
1L,
0.0,
Arrays.asList(
ValueAtPercentile.create(50.0, timer.getSnapshot().getMedian()),
ValueAtPercentile.create(75.0, timer.getSnapshot().get75thPercentile()),
ValueAtPercentile.create(98.0, timer.getSnapshot().get98thPercentile()),
ValueAtPercentile.create(99.0, timer.getSnapshot().get99thPercentile()),
ValueAtPercentile.create(
99.9, timer.getSnapshot().get999thPercentile()))))));
assertThat(metrics.get(8).getTimeSeriesList().get(0).getStartTimestamp())
.isInstanceOf(Timestamp.class);
}
@Test
public void empty_GetMetrics() {
assertThat(dropWizardMetrics.getMetrics()).isEmpty();
}
}