mirror of
https://github.com/google/nomulus.git
synced 2025-05-13 16:07:15 +02:00
Add method to create and register EventMetrics
------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=132346375
This commit is contained in:
parent
2ba9b01a13
commit
0538c1e210
3 changed files with 65 additions and 0 deletions
|
@ -103,6 +103,33 @@ public interface MetricRegistry {
|
|||
String valueDisplayName,
|
||||
ImmutableSet<LabelDescriptor> labels);
|
||||
|
||||
/**
|
||||
* Returns a new {@link EventMetric}.
|
||||
*
|
||||
* <p>This metric type is intended for recording aspects of an "event" -- things like latency or
|
||||
* payload size.
|
||||
*
|
||||
* <p>The metric's values are {@link Distribution} instances which are updated via {@link
|
||||
* EventMetric#record(double, String...)}.
|
||||
*
|
||||
* <p>The metric is thread-safe. The metric will be registered at the time of creation and
|
||||
* collected for subsequent write intervals.
|
||||
*
|
||||
* @param name name of the metric. Should be in the form of '/foo/bar'.
|
||||
* @param description human readable description of the metric.
|
||||
* @param valueDisplayName human readable description of the metric's value type.
|
||||
* @param labels list of the metric's labels.
|
||||
* @param distributionFitter fit to apply to the underlying {@link Distribution} instances of this
|
||||
* metric.
|
||||
* @throws IllegalStateException if a metric of the same name is already registered.
|
||||
*/
|
||||
EventMetric newEventMetric(
|
||||
String name,
|
||||
String description,
|
||||
String valueDisplayName,
|
||||
ImmutableSet<LabelDescriptor> labels,
|
||||
DistributionFitter distributionFitter);
|
||||
|
||||
/**
|
||||
* Fetches a snapshot of the currently registered metrics
|
||||
*
|
||||
|
|
|
@ -42,6 +42,21 @@ public final class MetricRegistryImpl implements MetricRegistry {
|
|||
return INSTANCE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public EventMetric newEventMetric(
|
||||
String name,
|
||||
String description,
|
||||
String valueDisplayName,
|
||||
ImmutableSet<LabelDescriptor> labels,
|
||||
DistributionFitter distributionFitter) {
|
||||
EventMetric metric =
|
||||
new EventMetric(name, description, valueDisplayName, distributionFitter, labels);
|
||||
registerMetric(name, metric);
|
||||
logger.info("Registered new event metric: " + name);
|
||||
|
||||
return metric;
|
||||
}
|
||||
|
||||
@Override
|
||||
@CanIgnoreReturnValue
|
||||
public <V> Metric<V> newGauge(
|
||||
|
|
|
@ -138,6 +138,29 @@ public class MetricRegistryImplTest {
|
|||
ImmutableSet.of(label)));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testNewEventMetric_createsEventMetric() {
|
||||
DistributionFitter fitter = CustomFitter.create(ImmutableSet.of(0.0));
|
||||
EventMetric testMetric =
|
||||
MetricRegistryImpl.getDefault()
|
||||
.newEventMetric(
|
||||
"/test_metric",
|
||||
"test_description",
|
||||
"test_valuedisplayname",
|
||||
ImmutableSet.of(label),
|
||||
fitter);
|
||||
|
||||
assertThat(testMetric.getValueClass()).isSameAs(Distribution.class);
|
||||
assertThat(testMetric.getMetricSchema())
|
||||
.isEqualTo(
|
||||
MetricSchema.create(
|
||||
"/test_metric",
|
||||
"test_description",
|
||||
"test_valuedisplayname",
|
||||
Kind.CUMULATIVE,
|
||||
ImmutableSet.of(label)));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRegister_duplicateMetric_throwsException() {
|
||||
SettableMetric<Boolean> testMetric =
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue