use of org.eclipse.microprofile.metrics.Metadata in project Payara by payara.
the class MetricRegistryImpl method register.
@SuppressWarnings("unchecked")
private <T extends Metric> T register(Metadata metadata, boolean useExistingMetadata, T metric, Tag... tags) {
if (metadata.getTypeRaw() == MetricType.INVALID) {
metadata = withType(metadata, MetricType.from(metric.getClass()));
}
String name = metadata.getName();
checkNameIsNotNullOrEmpty(name);
if (useExistingMetadata) {
Metadata existingMetadata = getMetadata(name);
if (existingMetadata != null) {
checkSameType(name, metadata, existingMetadata);
metadata = existingMetadata;
}
}
final Metadata newMetadata = metadata;
final T newMetric = metric != null ? metric : (T) createMetricInstance(newMetadata);
MetricFamily<T> family = (MetricFamily<T>) metricsFamiliesByName.computeIfAbsent(name, key -> new MetricFamily<>(newMetadata));
MetricID metricID = new MetricID(name, tags);
if (family.metadata != newMetadata) {
checkReusableMetadata(name, newMetadata, family.metadata);
}
T current = family.metrics.computeIfAbsent(metricID, key -> newMetric);
notifyRegistrationListeners(metricID);
return current;
}
use of org.eclipse.microprofile.metrics.Metadata in project Payara by payara.
the class OpenMetricsExporterTest method eachTypeAndHelpLineOccursOnlyOnceForEachOpenMetricsName.
/*
* Below tests are no examples from the specification
*/
@Test
public void eachTypeAndHelpLineOccursOnlyOnceForEachOpenMetricsName() {
Gauge<Long> g1 = () -> 1L;
MetricID g1ID = new MetricID("common", new Tag("a", "b"));
Gauge<Long> g2 = () -> 2L;
MetricID g2ID = new MetricID("common", new Tag("some", "other"));
Metadata metadata = Metadata.builder().withName("common").withDescription("description").build();
exporter.export(g1ID, g1, metadata);
exporter.export(g2ID, g2, metadata);
assertEquals("# TYPE application_common gauge\n" + "# HELP application_common description\n" + "application_common{a=\"b\"} 1\n" + "application_common{some=\"other\"} 2\n", actual.getBuffer().toString());
}
use of org.eclipse.microprofile.metrics.Metadata in project Payara by payara.
the class OpenMetricsExporterTest method gaugesWithNonNumberValuesAreNotExported.
@Test
public void gaugesWithNonNumberValuesAreNotExported() {
Gauge<String> gauge = () -> "hello world";
MetricID metricID = new MetricID("test3");
Metadata metadata = Metadata.builder().withName(metricID.getName()).build();
assertOutputEquals("", metricID, gauge, metadata);
}
use of org.eclipse.microprofile.metrics.Metadata in project Payara by payara.
the class OpenMetricsExporterTest method exportTags.
@Test
@SuppressWarnings("unchecked")
public void exportTags() {
Gauge<Long> fooVal = mock(Gauge.class);
when(fooVal.getValue()).thenReturn(12345L);
MetricID fooValID = new MetricID("fooVal", new Tag("store", "webshop"));
Metadata fooValMetadata = Metadata.builder().withName(fooValID.getName()).withDescription("The average duration of foo requests during last 5 minutes").withUnit(MetricUnits.MILLISECONDS).build();
MetricExporter base = exporter.in(Type.BASE);
base.export(fooValID, fooVal, fooValMetadata);
Gauge<Long> barVal = mock(Gauge.class);
when(barVal.getValue()).thenReturn(42L);
MetricID barValID = new MetricID("barVal", new Tag("component", "backend"), new Tag("store", "webshop"));
Metadata barValMetadata = Metadata.builder().withName(barValID.getName()).withUnit(MetricUnits.KILOBYTES).build();
base.export(barValID, barVal, barValMetadata);
Gauge<Long> barVal2 = mock(Gauge.class);
when(barVal2.getValue()).thenReturn(63L);
MetricID barVal2ID = new MetricID("barVal", new Tag("component", "frontend"), new Tag("store", "webshop"));
base.export(barVal2ID, barVal2, barValMetadata);
assertOutputEqualsFile("GaugeTags.txt");
}
use of org.eclipse.microprofile.metrics.Metadata in project Payara by payara.
the class OpenMetricsExporterTest method exportGauge.
@Test
public void exportGauge() {
@SuppressWarnings("unchecked") Gauge<Long> gauge = mock(Gauge.class);
when(gauge.getValue()).thenReturn(80L);
MetricID metricID = new MetricID("cost");
Metadata metadata = Metadata.builder().withName(metricID.getName()).withDescription("The running cost of the server in dollars.").withUnit("dollars").build();
assertOutputEqualsFile("Gauge.txt", metricID, gauge, metadata);
}
Aggregations