package org.springframework.cloud.netflix.metrics.servo;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.junit.Test;
import org.springframework.boot.actuate.metrics.Metric;
import org.springframework.cloud.netflix.metrics.SimpleMonitorRegistry;
import com.google.common.collect.Lists;
import com.netflix.servo.monitor.MonitorConfig;
import static org.junit.Assert.assertEquals;
public class ServoMetricReaderTests {
@Test
public void singleCompositeMonitorYieldsMultipleActuatorMetrics() {
SimpleMonitorRegistry registry = new SimpleMonitorRegistry();
ServoMetricReader reader = new ServoMetricReader(registry,
new DimensionalServoMetricNaming());
MonitorConfig.Builder builder = new MonitorConfig.Builder("metricName");
ServoMonitorCache servoMonitorCache = new ServoMonitorCache(registry, new ServoMetricsConfigBean());
servoMonitorCache.getTimer(builder.build());
List<Metric<?>> metrics = Lists.newArrayList(reader.findAll());
List<String> metricNames = new ArrayList<>();
for (Metric<?> metric : metrics) {
metricNames.add(metric.getName());
}
Collections.sort(metricNames);
assertEquals(4, metrics.size());
assertEquals("metricName(statistic=count,type=NORMALIZED,unit=MILLISECONDS)",
metricNames.get(0));
assertEquals("metricName(statistic=max,type=GAUGE,unit=MILLISECONDS)",
metricNames.get(1));
assertEquals("metricName(statistic=min,type=GAUGE,unit=MILLISECONDS)",
metricNames.get(2));
assertEquals("metricName(statistic=totalTime,type=NORMALIZED,unit=MILLISECONDS)",
metricNames.get(3));
}
}