package io.prometheus.client; import static org.junit.Assert.assertEquals; import java.util.Arrays; import java.util.ArrayList; import java.util.List; import org.junit.Before; import org.junit.Test; public class SummaryMetricFamilyTest { CollectorRegistry registry; @Before public void setUp() { registry = new CollectorRegistry(); } @Test public void testJavadocExample() { class YourCustomCollector extends Collector { public List<MetricFamilySamples> collect() { List<MetricFamilySamples> mfs = new ArrayList<MetricFamilySamples>(); // With no labels. mfs.add(new SummaryMetricFamily("my_summary", "help", 1, 42)); // With labels. Record 95th percentile as 3, and 99th percentile as 5. SummaryMetricFamily labeledSummary = new SummaryMetricFamily("my_other_summary", "help", Arrays.asList("labelname"), Arrays.asList(.95, .99)); labeledSummary.addMetric(Arrays.asList("foo"), 2, 10, Arrays.asList(3.0, 5.0)); mfs.add(labeledSummary); return mfs; } } new YourCustomCollector().register(registry); assertEquals(1.0, registry.getSampleValue("my_summary_count").doubleValue(), .001); assertEquals(42.0, registry.getSampleValue("my_summary_sum").doubleValue(), .001); assertEquals(2.0, registry.getSampleValue("my_other_summary_count", new String[]{"labelname"}, new String[]{"foo"}).doubleValue(), .001); assertEquals(10.0, registry.getSampleValue("my_other_summary_sum", new String[]{"labelname"}, new String[]{"foo"}).doubleValue(), .001); assertEquals(3.0, registry.getSampleValue("my_other_summary", new String[]{"labelname", "quantile"}, new String[]{"foo", "0.95"}).doubleValue(), .001); assertEquals(5.0, registry.getSampleValue("my_other_summary", new String[]{"labelname", "quantile"}, new String[]{"foo", "0.99"}).doubleValue(), .001); } @Test public void testBuilderStyleUsage() { class YourCustomCollector extends Collector { public List<MetricFamilySamples> collect() { return Arrays.<MetricFamilySamples>asList( new SummaryMetricFamily("my_metric", "help", Arrays.asList("name")) .addMetric(Arrays.asList("value1"), 1, 1.0) .addMetric(Arrays.asList("value2"), 2, 2.0) ); } } new YourCustomCollector().register(registry); assertEquals(1.0, registry.getSampleValue("my_metric_count", new String[]{"name"}, new String[]{"value1"}) .doubleValue(), .001); assertEquals(2.0, registry.getSampleValue("my_metric_count", new String[]{"name"}, new String[]{"value2"}) .doubleValue(), .001); } }