From 3479516b3ab80fa5a7c3b81ed669970570196e12 Mon Sep 17 00:00:00 2001 From: devromik Date: Wed, 28 Sep 2022 16:47:23 +0400 Subject: [PATCH] #33: SampleMaker -> SamplesProducer, add Samples to InstanceSample rather than returning them --- README.md | 8 +- .../samples/AbstractInstanceSample.java | 7 +- .../AbstractInstanceSamplesProvider.java | 16 +- .../samples/AbstractSamplesProducer.java | 14 + .../CompositeInstanceSamplesProvider.java | 2 +- .../DefaultInstanceSamplesProvider.java | 8 +- .../metrics/samples/DefaultSample.java | 2 +- ...Maker.java => DefaultSamplesProducer.java} | 11 +- .../metrics/samples/InstanceSample.java | 2 +- .../metrics/samples/InstanceSampleMaker.java | 2 +- .../samples/InstanceSamplesProvider.java | 2 +- .../platform/metrics/samples/Sample.java | 14 +- ...{SampleMaker.java => SamplesProducer.java} | 6 +- .../prometheus/PrometheusInstanceSample.java | 6 - .../PrometheusInstanceSamplesProvider.java | 10 +- ...metheusInstanceSamplesProviderBuilder.java | 12 +- .../samples/prometheus/PrometheusSample.java | 44 +-- .../PrometheusSamplesMakerBuilder.java | 16 +- ...er.java => PrometheusSamplesProducer.java} | 63 ++-- .../PrometheusMetricsExporterTest.java | 2 +- ...ava => PrometheusSamplesProducerTest.java} | 349 +++++++++++------- .../PrometheusMetricsExporterSample.java | 4 +- 22 files changed, 337 insertions(+), 263 deletions(-) create mode 100644 metrics-facade-base/src/main/java/com/ringcentral/platform/metrics/samples/AbstractSamplesProducer.java rename metrics-facade-base/src/main/java/com/ringcentral/platform/metrics/samples/{DefaultSampleMaker.java => DefaultSamplesProducer.java} (87%) rename metrics-facade-base/src/main/java/com/ringcentral/platform/metrics/samples/{SampleMaker.java => SamplesProducer.java} (53%) rename metrics-facade-prometheus/src/main/java/com/ringcentral/platform/metrics/samples/prometheus/{PrometheusSampleMaker.java => PrometheusSamplesProducer.java} (80%) rename metrics-facade-prometheus/src/test/java/com/ringcentral/platform/metrics/samples/prometheus/{PrometheusSampleMakerTest.java => PrometheusSamplesProducerTest.java} (72%) diff --git a/README.md b/README.md index c80c7c5..c528559 100644 --- a/README.md +++ b/README.md @@ -1817,7 +1817,7 @@ miSampleSpecModsProvider.addMod( (metric, instance, currSpec) -> instanceSampleSpec().name(currSpec.name().replaceLast(currSpec.name().lastPart() + "_svc"))); -PrometheusInstanceSampleMaker miSampleMaker = new PrometheusInstanceSampleMaker( +PrometheusInstanceSamplesProducer miSamplesProducer = new PrometheusInstanceSamplesProducer( null, // totalInstanceNameSuffix. defaults to null that means no suffix "all"); // dimensionalTotalInstanceNameSuffix. defaults to "all" @@ -1831,15 +1831,15 @@ sampleSpecModsProvider.addMod( (instanceSampleSpec, instance, measurableValues, measurable, currSpec) -> measurable instanceof Max ? sampleSpec().disable() : sampleSpec()); -PrometheusSampleMaker sampleMaker = new PrometheusSampleMaker(); +PrometheusSamplesProducer samplesProducer = new PrometheusSamplesProducer(); PrometheusInstanceSamplesProvider miSamplesProvider = new PrometheusInstanceSamplesProvider( miSampleSpecProvider, miSampleSpecModsProvider, - miSampleMaker, + miSamplesProducer, sampleSpecProvider, sampleSpecModsProvider, - sampleMaker, + samplesProducer, registry); PrometheusMetricsExporter exporter = new PrometheusMetricsExporter( diff --git a/metrics-facade-base/src/main/java/com/ringcentral/platform/metrics/samples/AbstractInstanceSample.java b/metrics-facade-base/src/main/java/com/ringcentral/platform/metrics/samples/AbstractInstanceSample.java index 3636e6e..78c5268 100644 --- a/metrics-facade-base/src/main/java/com/ringcentral/platform/metrics/samples/AbstractInstanceSample.java +++ b/metrics-facade-base/src/main/java/com/ringcentral/platform/metrics/samples/AbstractInstanceSample.java @@ -1,10 +1,11 @@ package com.ringcentral.platform.metrics.samples; -import java.util.*; +import java.util.ArrayList; +import java.util.List; -import static java.util.Objects.*; +import static java.util.Objects.requireNonNull; -public class AbstractInstanceSample> implements InstanceSample { +public class AbstractInstanceSample implements InstanceSample { protected final List samples; diff --git a/metrics-facade-base/src/main/java/com/ringcentral/platform/metrics/samples/AbstractInstanceSamplesProvider.java b/metrics-facade-base/src/main/java/com/ringcentral/platform/metrics/samples/AbstractInstanceSamplesProvider.java index bd4217f..0602310 100644 --- a/metrics-facade-base/src/main/java/com/ringcentral/platform/metrics/samples/AbstractInstanceSamplesProvider.java +++ b/metrics-facade-base/src/main/java/com/ringcentral/platform/metrics/samples/AbstractInstanceSamplesProvider.java @@ -11,10 +11,10 @@ import static java.util.Objects.requireNonNull; public abstract class AbstractInstanceSamplesProvider< - S extends Sample, + S extends Sample, SS extends SampleSpec, SSP extends SampleSpecProvider, - SM extends SampleMaker, + SP extends SamplesProducer, IS extends InstanceSample, ISS extends InstanceSampleSpec, ISSP extends InstanceSampleSpecProvider, @@ -26,7 +26,7 @@ public abstract class AbstractInstanceSamplesProvider< private final SSP sampleSpecProvider; private final PredicativeMetricNamedInfoProvider sampleSpecModsProvider; - private final SM sampleMaker; + private final SP samplesProducer; private final MetricRegistry metricRegistry; @@ -36,7 +36,7 @@ public AbstractInstanceSamplesProvider( ISM instanceSampleMaker, SSP sampleSpecProvider, PredicativeMetricNamedInfoProvider sampleSpecModsProvider, - SM sampleMaker, + SP samplesProducer, MetricRegistry metricRegistry) { this.instanceSampleSpecProvider = requireNonNull(instanceSampleSpecProvider); @@ -45,7 +45,7 @@ public AbstractInstanceSamplesProvider( this.sampleSpecProvider = requireNonNull(sampleSpecProvider); this.sampleSpecModsProvider = sampleSpecModsProvider; - this.sampleMaker = requireNonNull(sampleMaker); + this.samplesProducer = requireNonNull(samplesProducer); this.metricRegistry = requireNonNull(metricRegistry); } @@ -101,11 +101,7 @@ public Set instanceSamples() { return; } - S sample = sampleMaker.makeSample(sampleSpec, instanceSampleSpec, instanceSample); - - if (sample != null) { - instanceSample.add(sample); - } + samplesProducer.produceSamples(sampleSpec, instanceSampleSpec, instanceSample); }); if (!instanceSample.isEmpty()) { diff --git a/metrics-facade-base/src/main/java/com/ringcentral/platform/metrics/samples/AbstractSamplesProducer.java b/metrics-facade-base/src/main/java/com/ringcentral/platform/metrics/samples/AbstractSamplesProducer.java new file mode 100644 index 0000000..aa2f986 --- /dev/null +++ b/metrics-facade-base/src/main/java/com/ringcentral/platform/metrics/samples/AbstractSamplesProducer.java @@ -0,0 +1,14 @@ +package com.ringcentral.platform.metrics.samples; + +public abstract class AbstractSamplesProducer< + S extends Sample, + SS extends SampleSpec, + ISS extends InstanceSampleSpec, + IS extends InstanceSample> implements SamplesProducer { + + public void produceSamples(SS spec, ISS instanceSampleSpec, IS instanceSample) { + instanceSample.add(makeSample(spec, instanceSampleSpec, instanceSample)); + } + + protected abstract S makeSample(SS spec, ISS instanceSampleSpec, IS instanceSample); +} diff --git a/metrics-facade-base/src/main/java/com/ringcentral/platform/metrics/samples/CompositeInstanceSamplesProvider.java b/metrics-facade-base/src/main/java/com/ringcentral/platform/metrics/samples/CompositeInstanceSamplesProvider.java index 7a2913a..1f07f9e 100644 --- a/metrics-facade-base/src/main/java/com/ringcentral/platform/metrics/samples/CompositeInstanceSamplesProvider.java +++ b/metrics-facade-base/src/main/java/com/ringcentral/platform/metrics/samples/CompositeInstanceSamplesProvider.java @@ -5,7 +5,7 @@ import java.util.Set; public class CompositeInstanceSamplesProvider< - S extends Sample, + S extends Sample, IS extends InstanceSample, ISP extends InstanceSamplesProvider> implements InstanceSamplesProvider { diff --git a/metrics-facade-base/src/main/java/com/ringcentral/platform/metrics/samples/DefaultInstanceSamplesProvider.java b/metrics-facade-base/src/main/java/com/ringcentral/platform/metrics/samples/DefaultInstanceSamplesProvider.java index 0fa85f4..0e1797c 100644 --- a/metrics-facade-base/src/main/java/com/ringcentral/platform/metrics/samples/DefaultInstanceSamplesProvider.java +++ b/metrics-facade-base/src/main/java/com/ringcentral/platform/metrics/samples/DefaultInstanceSamplesProvider.java @@ -7,7 +7,7 @@ public class DefaultInstanceSamplesProvider extends AbstractInstanceSamplesProvi DefaultSample, DefaultSampleSpec, SampleSpecProvider, - SampleMaker>, + SamplesProducer>, InstanceSample, DefaultInstanceSampleSpec, InstanceSampleSpecProvider, @@ -66,7 +66,7 @@ public DefaultInstanceSamplesProvider( new DefaultInstanceSampleMaker(), sampleSpecProvider, sampleSpecModsProvider, - new DefaultSampleMaker(), + new DefaultSamplesProducer(), metricRegistry); } @@ -76,7 +76,7 @@ public DefaultInstanceSamplesProvider( InstanceSampleMaker, DefaultInstanceSampleSpec> instanceSampleMaker, SampleSpecProvider sampleSpecProvider, PredicativeMetricNamedInfoProvider> sampleSpecModsProvider, - SampleMaker> sampleMaker, + SamplesProducer> samplesProducer, MetricRegistry metricRegistry) { super( @@ -85,7 +85,7 @@ public DefaultInstanceSamplesProvider( instanceSampleMaker, sampleSpecProvider, sampleSpecModsProvider, - sampleMaker, + samplesProducer, metricRegistry); } } diff --git a/metrics-facade-base/src/main/java/com/ringcentral/platform/metrics/samples/DefaultSample.java b/metrics-facade-base/src/main/java/com/ringcentral/platform/metrics/samples/DefaultSample.java index edab2ba..c3b58bc 100644 --- a/metrics-facade-base/src/main/java/com/ringcentral/platform/metrics/samples/DefaultSample.java +++ b/metrics-facade-base/src/main/java/com/ringcentral/platform/metrics/samples/DefaultSample.java @@ -1,6 +1,6 @@ package com.ringcentral.platform.metrics.samples; -public class DefaultSample implements Sample { +public class DefaultSample implements Sample { private final String name; private final Object value; diff --git a/metrics-facade-base/src/main/java/com/ringcentral/platform/metrics/samples/DefaultSampleMaker.java b/metrics-facade-base/src/main/java/com/ringcentral/platform/metrics/samples/DefaultSamplesProducer.java similarity index 87% rename from metrics-facade-base/src/main/java/com/ringcentral/platform/metrics/samples/DefaultSampleMaker.java rename to metrics-facade-base/src/main/java/com/ringcentral/platform/metrics/samples/DefaultSamplesProducer.java index a06de45..9c3e7ec 100644 --- a/metrics-facade-base/src/main/java/com/ringcentral/platform/metrics/samples/DefaultSampleMaker.java +++ b/metrics-facade-base/src/main/java/com/ringcentral/platform/metrics/samples/DefaultSamplesProducer.java @@ -1,9 +1,10 @@ package com.ringcentral.platform.metrics.samples; import com.ringcentral.platform.metrics.dimensions.MetricDimensionValue; -import static java.lang.String.*; -public class DefaultSampleMaker implements SampleMaker< +import static java.lang.String.join; + +public class DefaultSamplesProducer extends AbstractSamplesProducer< DefaultSample, DefaultSampleSpec, DefaultInstanceSampleSpec, @@ -15,13 +16,13 @@ public class DefaultSampleMaker implements SampleMaker< private final String namePartsDelimiter; private final String measurableNameDelimiter; - public DefaultSampleMaker() { + public DefaultSamplesProducer() { this( DEFAULT_NAME_PARTS_DELIMITER, DEFAULT_MEASURABLE_NAME_DELIMITER); } - public DefaultSampleMaker( + public DefaultSamplesProducer( String namePartsDelimiter, String measurableNameDelimiter) { @@ -30,7 +31,7 @@ public DefaultSampleMaker( } @Override - public DefaultSample makeSample( + protected DefaultSample makeSample( DefaultSampleSpec spec, DefaultInstanceSampleSpec instanceSampleSpec, InstanceSample instanceSample) { diff --git a/metrics-facade-base/src/main/java/com/ringcentral/platform/metrics/samples/InstanceSample.java b/metrics-facade-base/src/main/java/com/ringcentral/platform/metrics/samples/InstanceSample.java index 6b8d063..0c7b7bb 100644 --- a/metrics-facade-base/src/main/java/com/ringcentral/platform/metrics/samples/InstanceSample.java +++ b/metrics-facade-base/src/main/java/com/ringcentral/platform/metrics/samples/InstanceSample.java @@ -2,7 +2,7 @@ import java.util.List; -public interface InstanceSample> { +public interface InstanceSample { void add(S sample); List samples(); diff --git a/metrics-facade-base/src/main/java/com/ringcentral/platform/metrics/samples/InstanceSampleMaker.java b/metrics-facade-base/src/main/java/com/ringcentral/platform/metrics/samples/InstanceSampleMaker.java index 35b6898..e694561 100644 --- a/metrics-facade-base/src/main/java/com/ringcentral/platform/metrics/samples/InstanceSampleMaker.java +++ b/metrics-facade-base/src/main/java/com/ringcentral/platform/metrics/samples/InstanceSampleMaker.java @@ -1,7 +1,7 @@ package com.ringcentral.platform.metrics.samples; public interface InstanceSampleMaker< - S extends Sample, + S extends Sample, IS extends InstanceSample, ISS extends InstanceSampleSpec> { diff --git a/metrics-facade-base/src/main/java/com/ringcentral/platform/metrics/samples/InstanceSamplesProvider.java b/metrics-facade-base/src/main/java/com/ringcentral/platform/metrics/samples/InstanceSamplesProvider.java index b0fd174..884eb27 100644 --- a/metrics-facade-base/src/main/java/com/ringcentral/platform/metrics/samples/InstanceSamplesProvider.java +++ b/metrics-facade-base/src/main/java/com/ringcentral/platform/metrics/samples/InstanceSamplesProvider.java @@ -2,6 +2,6 @@ import java.util.Set; -public interface InstanceSamplesProvider, IS extends InstanceSample> { +public interface InstanceSamplesProvider> { Set instanceSamples(); } diff --git a/metrics-facade-base/src/main/java/com/ringcentral/platform/metrics/samples/Sample.java b/metrics-facade-base/src/main/java/com/ringcentral/platform/metrics/samples/Sample.java index d55b6a6..c6f822f 100644 --- a/metrics-facade-base/src/main/java/com/ringcentral/platform/metrics/samples/Sample.java +++ b/metrics-facade-base/src/main/java/com/ringcentral/platform/metrics/samples/Sample.java @@ -1,15 +1,3 @@ package com.ringcentral.platform.metrics.samples; -import java.util.List; - -import static java.util.Collections.emptyList; - -public interface Sample> { - default boolean hasChildren() { - return !children().isEmpty(); - } - - default List children() { - return emptyList(); - } -} +public interface Sample {} diff --git a/metrics-facade-base/src/main/java/com/ringcentral/platform/metrics/samples/SampleMaker.java b/metrics-facade-base/src/main/java/com/ringcentral/platform/metrics/samples/SamplesProducer.java similarity index 53% rename from metrics-facade-base/src/main/java/com/ringcentral/platform/metrics/samples/SampleMaker.java rename to metrics-facade-base/src/main/java/com/ringcentral/platform/metrics/samples/SamplesProducer.java index 12216dc..9da0f1d 100644 --- a/metrics-facade-base/src/main/java/com/ringcentral/platform/metrics/samples/SampleMaker.java +++ b/metrics-facade-base/src/main/java/com/ringcentral/platform/metrics/samples/SamplesProducer.java @@ -1,10 +1,10 @@ package com.ringcentral.platform.metrics.samples; -public interface SampleMaker< - S extends Sample, +public interface SamplesProducer< + S extends Sample, SS extends SampleSpec, ISS extends InstanceSampleSpec, IS extends InstanceSample> { - S makeSample(SS spec, ISS instanceSampleSpec, IS instanceSample); + void produceSamples(SS spec, ISS instanceSampleSpec, IS instanceSample); } diff --git a/metrics-facade-prometheus/src/main/java/com/ringcentral/platform/metrics/samples/prometheus/PrometheusInstanceSample.java b/metrics-facade-prometheus/src/main/java/com/ringcentral/platform/metrics/samples/prometheus/PrometheusInstanceSample.java index 054c01b..884e74f 100644 --- a/metrics-facade-prometheus/src/main/java/com/ringcentral/platform/metrics/samples/prometheus/PrometheusInstanceSample.java +++ b/metrics-facade-prometheus/src/main/java/com/ringcentral/platform/metrics/samples/prometheus/PrometheusInstanceSample.java @@ -86,12 +86,6 @@ public void add(PrometheusSample sample) { } else { super.add(sample); } - - if (sample.hasChildren()) { - for (PrometheusSample childSample : sample.children()) { - add(childSample); - } - } } @Override diff --git a/metrics-facade-prometheus/src/main/java/com/ringcentral/platform/metrics/samples/prometheus/PrometheusInstanceSamplesProvider.java b/metrics-facade-prometheus/src/main/java/com/ringcentral/platform/metrics/samples/prometheus/PrometheusInstanceSamplesProvider.java index 5dea8cb..feca90b 100644 --- a/metrics-facade-prometheus/src/main/java/com/ringcentral/platform/metrics/samples/prometheus/PrometheusInstanceSamplesProvider.java +++ b/metrics-facade-prometheus/src/main/java/com/ringcentral/platform/metrics/samples/prometheus/PrometheusInstanceSamplesProvider.java @@ -8,7 +8,7 @@ public class PrometheusInstanceSamplesProvider extends AbstractInstanceSamplesPr PrometheusSample, PrometheusSampleSpec, SampleSpecProvider, - SampleMaker, + SamplesProducer, PrometheusInstanceSample, PrometheusInstanceSampleSpec, InstanceSampleSpecProvider, @@ -31,7 +31,7 @@ public PrometheusInstanceSamplesProvider( new PrometheusInstanceSampleMaker(), new PrometheusSampleSpecProvider(), null, - new PrometheusSampleMaker(), + new PrometheusSamplesProducer(), metricRegistry); } @@ -81,7 +81,7 @@ public PrometheusInstanceSamplesProvider( new PrometheusInstanceSampleMaker(), sampleSpecProvider, sampleSpecModsProvider, - new PrometheusSampleMaker(), + new PrometheusSamplesProducer(), metricRegistry); } @@ -91,7 +91,7 @@ public PrometheusInstanceSamplesProvider( InstanceSampleMaker instanceSampleMaker, SampleSpecProvider sampleSpecProvider, PredicativeMetricNamedInfoProvider> sampleSpecModsProvider, - SampleMaker sampleMaker, + SamplesProducer samplesProducer, MetricRegistry metricRegistry) { super( @@ -100,7 +100,7 @@ public PrometheusInstanceSamplesProvider( instanceSampleMaker, sampleSpecProvider, sampleSpecModsProvider, - sampleMaker, + samplesProducer, metricRegistry); } } diff --git a/metrics-facade-prometheus/src/main/java/com/ringcentral/platform/metrics/samples/prometheus/PrometheusInstanceSamplesProviderBuilder.java b/metrics-facade-prometheus/src/main/java/com/ringcentral/platform/metrics/samples/prometheus/PrometheusInstanceSamplesProviderBuilder.java index 7742597..c509bf2 100644 --- a/metrics-facade-prometheus/src/main/java/com/ringcentral/platform/metrics/samples/prometheus/PrometheusInstanceSamplesProviderBuilder.java +++ b/metrics-facade-prometheus/src/main/java/com/ringcentral/platform/metrics/samples/prometheus/PrometheusInstanceSamplesProviderBuilder.java @@ -4,8 +4,8 @@ import com.ringcentral.platform.metrics.infoProviders.PredicativeMetricNamedInfoProvider; import com.ringcentral.platform.metrics.samples.InstanceSampleMaker; import com.ringcentral.platform.metrics.samples.InstanceSampleSpecProvider; -import com.ringcentral.platform.metrics.samples.SampleMaker; import com.ringcentral.platform.metrics.samples.SampleSpecProvider; +import com.ringcentral.platform.metrics.samples.SamplesProducer; import static java.util.Objects.requireNonNull; @@ -16,7 +16,7 @@ public class PrometheusInstanceSamplesProviderBuilder { private InstanceSampleMaker instanceSampleMaker; private SampleSpecProvider sampleSpecProvider; private PredicativeMetricNamedInfoProvider> sampleSpecModsProvider; - private SampleMaker sampleMaker; + private SamplesProducer samplesProducer; private final MetricRegistry metricRegistry; public PrometheusInstanceSamplesProviderBuilder(MetricRegistry metricRegistry) { @@ -24,7 +24,7 @@ public PrometheusInstanceSamplesProviderBuilder(MetricRegistry metricRegistry) { this.instanceSampleSpecProvider = new PrometheusInstanceSampleSpecProvider(); this.instanceSampleMaker = new PrometheusInstanceSampleMaker(); this.sampleSpecProvider = new PrometheusSampleSpecProvider(); - this.sampleMaker = new PrometheusSampleMaker(); + this.samplesProducer = new PrometheusSamplesProducer(); } public static PrometheusInstanceSamplesProviderBuilder prometheusInstanceSamplesProvider(MetricRegistry metricRegistry) { @@ -56,8 +56,8 @@ public PrometheusInstanceSamplesProviderBuilder sampleSpecModsProvider(Predicati return this; } - public PrometheusInstanceSamplesProviderBuilder sampleMaker(SampleMaker sampleMaker) { - this.sampleMaker = requireNonNull(sampleMaker); + public PrometheusInstanceSamplesProviderBuilder samplesProducer(SamplesProducer samplesProducer) { + this.samplesProducer = requireNonNull(samplesProducer); return this; } @@ -68,7 +68,7 @@ public PrometheusInstanceSamplesProvider build() { instanceSampleMaker, sampleSpecProvider, sampleSpecModsProvider, - sampleMaker, + samplesProducer, metricRegistry); } } diff --git a/metrics-facade-prometheus/src/main/java/com/ringcentral/platform/metrics/samples/prometheus/PrometheusSample.java b/metrics-facade-prometheus/src/main/java/com/ringcentral/platform/metrics/samples/prometheus/PrometheusSample.java index e73cc29..fa929fc 100644 --- a/metrics-facade-prometheus/src/main/java/com/ringcentral/platform/metrics/samples/prometheus/PrometheusSample.java +++ b/metrics-facade-prometheus/src/main/java/com/ringcentral/platform/metrics/samples/prometheus/PrometheusSample.java @@ -10,7 +10,7 @@ import static com.ringcentral.platform.metrics.utils.Preconditions.checkArgument; import static java.util.Collections.emptyList; -public class PrometheusSample implements Sample { +public class PrometheusSample implements Sample { private final Measurable measurable; private final MetricName childInstanceSampleNameSuffix; @@ -20,7 +20,6 @@ public class PrometheusSample implements Sample { private final List labelNames; private final List labelValues; private final double value; - private final List children; public PrometheusSample( Measurable measurable, @@ -32,29 +31,6 @@ public PrometheusSample( List labelValues, double value) { - this( - measurable, - childInstanceSampleNameSuffix, - childInstanceSampleType, - name, - nameSuffix, - labelNames, - labelValues, - value, - emptyList()); - } - - public PrometheusSample( - Measurable measurable, - MetricName childInstanceSampleNameSuffix, - Collector.Type childInstanceSampleType, - MetricName name, - String nameSuffix, - List labelNames, - List labelValues, - double value, - List children) { - this.measurable = measurable; if (childInstanceSampleNameSuffix != null) { @@ -70,8 +46,6 @@ public PrometheusSample( this.labelNames = labelNames != null ? labelNames : emptyList(); this.labelValues = labelValues != null ? labelValues : emptyList(); this.value = value; - - this.children = children != null ? children : emptyList(); } public boolean hasMeasurable() { @@ -103,8 +77,7 @@ public PrometheusSample notBelongingToChildInstanceSample() { nameSuffix, labelNames, labelValues, - value, - children); + value); } public boolean hasName() { @@ -136,7 +109,16 @@ public double value() { } @Override - public List children() { - return children; + public String toString() { + return "PrometheusSample{" + + "measurable=" + measurable + + ", childInstanceSampleNameSuffix=" + childInstanceSampleNameSuffix + + ", childInstanceSampleType=" + childInstanceSampleType + + ", name=" + name + + ", nameSuffix='" + nameSuffix + '\'' + + ", labelNames=" + labelNames + + ", labelValues=" + labelValues + + ", value=" + value + + '}'; } } diff --git a/metrics-facade-prometheus/src/main/java/com/ringcentral/platform/metrics/samples/prometheus/PrometheusSamplesMakerBuilder.java b/metrics-facade-prometheus/src/main/java/com/ringcentral/platform/metrics/samples/prometheus/PrometheusSamplesMakerBuilder.java index f4a5b29..5ce40ab 100644 --- a/metrics-facade-prometheus/src/main/java/com/ringcentral/platform/metrics/samples/prometheus/PrometheusSamplesMakerBuilder.java +++ b/metrics-facade-prometheus/src/main/java/com/ringcentral/platform/metrics/samples/prometheus/PrometheusSamplesMakerBuilder.java @@ -2,7 +2,7 @@ import com.ringcentral.platform.metrics.names.MetricName; -import static com.ringcentral.platform.metrics.samples.prometheus.PrometheusSampleMaker.*; +import static com.ringcentral.platform.metrics.samples.prometheus.PrometheusSamplesProducer.*; import static com.ringcentral.platform.metrics.utils.Preconditions.checkArgument; public class PrometheusSamplesMakerBuilder { @@ -14,6 +14,7 @@ public class PrometheusSamplesMakerBuilder { private MetricName minChildInstanceSampleNameSuffix = DEFAULT_MIN_CHILD_INSTANCE_SAMPLE_NAME_SUFFIX; private MetricName maxChildInstanceSampleNameSuffix = DEFAULT_MAX_CHILD_INSTANCE_SAMPLE_NAME_SUFFIX; private MetricName meanChildInstanceSampleNameSuffix = DEFAULT_MEAN_CHILD_INSTANCE_SAMPLE_NAME_SUFFIX; + private MetricName standardDeviationChildInstanceSampleNameSuffix = DEFAULT_STANDARD_DEVIATION_CHILD_INSTANCE_SAMPLE_NAME_SUFFIX; public static PrometheusSamplesMakerBuilder prometheusSamplesMakerBuilder() { return new PrometheusSamplesMakerBuilder(); @@ -54,13 +55,20 @@ public PrometheusSamplesMakerBuilder meanChildInstanceSampleNameSuffix(MetricNam return this; } - public PrometheusSampleMaker build() { - return new PrometheusSampleMaker( + public PrometheusSamplesMakerBuilder standardDeviationChildInstanceSampleNameSuffix(MetricName standardDeviationChildInstanceSampleNameSuffix) { + checkArgument(!standardDeviationChildInstanceSampleNameSuffix.isEmpty(), "standardDeviationChildInstanceSampleNameSuffix is empty"); + this.standardDeviationChildInstanceSampleNameSuffix = standardDeviationChildInstanceSampleNameSuffix; + return this; + } + + public PrometheusSamplesProducer build() { + return new PrometheusSamplesProducer( separateHistogramAndSummary, histogramChildInstanceSampleNameSuffix, summaryChildInstanceSampleNameSuffix, minChildInstanceSampleNameSuffix, maxChildInstanceSampleNameSuffix, - meanChildInstanceSampleNameSuffix); + meanChildInstanceSampleNameSuffix, + standardDeviationChildInstanceSampleNameSuffix); } } diff --git a/metrics-facade-prometheus/src/main/java/com/ringcentral/platform/metrics/samples/prometheus/PrometheusSampleMaker.java b/metrics-facade-prometheus/src/main/java/com/ringcentral/platform/metrics/samples/prometheus/PrometheusSamplesProducer.java similarity index 80% rename from metrics-facade-prometheus/src/main/java/com/ringcentral/platform/metrics/samples/prometheus/PrometheusSampleMaker.java rename to metrics-facade-prometheus/src/main/java/com/ringcentral/platform/metrics/samples/prometheus/PrometheusSamplesProducer.java index 576f6bd..0c5a248 100644 --- a/metrics-facade-prometheus/src/main/java/com/ringcentral/platform/metrics/samples/prometheus/PrometheusSampleMaker.java +++ b/metrics-facade-prometheus/src/main/java/com/ringcentral/platform/metrics/samples/prometheus/PrometheusSamplesProducer.java @@ -7,7 +7,7 @@ import com.ringcentral.platform.metrics.histogram.HistogramInstance; import com.ringcentral.platform.metrics.measurables.Measurable; import com.ringcentral.platform.metrics.names.MetricName; -import com.ringcentral.platform.metrics.samples.SampleMaker; +import com.ringcentral.platform.metrics.samples.SamplesProducer; import com.ringcentral.platform.metrics.timer.TimerInstance; import io.prometheus.client.Collector; @@ -18,7 +18,7 @@ import static java.util.Collections.singletonList; import static java.util.stream.Collectors.toList; -public class PrometheusSampleMaker implements SampleMaker< +public class PrometheusSamplesProducer implements SamplesProducer< PrometheusSample, PrometheusSampleSpec, PrometheusInstanceSampleSpec, @@ -31,6 +31,7 @@ public class PrometheusSampleMaker implements SampleMaker< public static final MetricName DEFAULT_MIN_CHILD_INSTANCE_SAMPLE_NAME_SUFFIX = MetricName.of("min"); public static final MetricName DEFAULT_MAX_CHILD_INSTANCE_SAMPLE_NAME_SUFFIX = MetricName.of("max"); public static final MetricName DEFAULT_MEAN_CHILD_INSTANCE_SAMPLE_NAME_SUFFIX = MetricName.of("mean"); + public static final MetricName DEFAULT_STANDARD_DEVIATION_CHILD_INSTANCE_SAMPLE_NAME_SUFFIX = MetricName.of("stdDev"); private final boolean separateHistogramAndSummary; @@ -39,24 +40,27 @@ public class PrometheusSampleMaker implements SampleMaker< private final MetricName minChildInstanceSampleNameSuffix; private final MetricName maxChildInstanceSampleNameSuffix; private final MetricName meanChildInstanceSampleNameSuffix; + private final MetricName standardDeviationChildInstanceSampleNameSuffix; - public PrometheusSampleMaker() { + public PrometheusSamplesProducer() { this( DEFAULT_SEPARATE_HISTOGRAM_AND_SUMMARY, DEFAULT_HISTOGRAM_CHILD_INSTANCE_SAMPLE_NAME_SUFFIX, DEFAULT_SUMMARY_CHILD_INSTANCE_SAMPLE_NAME_SUFFIX, DEFAULT_MIN_CHILD_INSTANCE_SAMPLE_NAME_SUFFIX, DEFAULT_MAX_CHILD_INSTANCE_SAMPLE_NAME_SUFFIX, - DEFAULT_MEAN_CHILD_INSTANCE_SAMPLE_NAME_SUFFIX); + DEFAULT_MEAN_CHILD_INSTANCE_SAMPLE_NAME_SUFFIX, + DEFAULT_STANDARD_DEVIATION_CHILD_INSTANCE_SAMPLE_NAME_SUFFIX); } - public PrometheusSampleMaker( + public PrometheusSamplesProducer( boolean separateHistogramAndSummary, MetricName histogramChildInstanceSampleNameSuffix, MetricName summaryChildInstanceSampleNameSuffix, MetricName minChildInstanceSampleNameSuffix, MetricName maxChildInstanceSampleNameSuffix, - MetricName meanChildInstanceSampleNameSuffix) { + MetricName meanChildInstanceSampleNameSuffix, + MetricName standardDeviationChildInstanceSampleNameSuffix) { this.separateHistogramAndSummary = separateHistogramAndSummary; @@ -65,16 +69,17 @@ public PrometheusSampleMaker( this.minChildInstanceSampleNameSuffix = minChildInstanceSampleNameSuffix; this.maxChildInstanceSampleNameSuffix = maxChildInstanceSampleNameSuffix; this.meanChildInstanceSampleNameSuffix = meanChildInstanceSampleNameSuffix; + this.standardDeviationChildInstanceSampleNameSuffix = standardDeviationChildInstanceSampleNameSuffix; } @Override - public PrometheusSample makeSample( + public void produceSamples( PrometheusSampleSpec spec, PrometheusInstanceSampleSpec instanceSampleSpec, PrometheusInstanceSample instanceSample) { if (!spec.isEnabled() || !spec.hasMeasurable() || !spec.hasValue()) { - return null; + return; } MetricInstance instance = instanceSampleSpec.instance(); @@ -93,6 +98,9 @@ public PrometheusSample makeSample( } else if (m instanceof Mean) { childInstanceSampleNameSuffix = meanChildInstanceSampleNameSuffix; childInstanceSampleType = GAUGE; + } else if (m instanceof StandardDeviation) { + childInstanceSampleNameSuffix = standardDeviationChildInstanceSampleNameSuffix; + childInstanceSampleType = GAUGE; } String nameSuffix = null; @@ -139,7 +147,7 @@ public PrometheusSample makeSample( if (!separateHistogramAndSummary || !((type == HISTOGRAM && instance.isWithPercentiles()) || (type == SUMMARY && instance.isWithBuckets()))) { - return new PrometheusSample( + instanceSample.add(new PrometheusSample( m, childInstanceSampleNameSuffix, childInstanceSampleType, @@ -147,49 +155,50 @@ public PrometheusSample makeSample( nameSuffix, labelNames, labelValues, - spec.value()); + spec.value())); + + return; } - MetricName childSampleChildInstanceSampleNameSuffix = + MetricName additionalSampleChildInstanceSampleNameSuffix = type == HISTOGRAM ? summaryChildInstanceSampleNameSuffix : histogramChildInstanceSampleNameSuffix; - Collector.Type childSampleChildInstanceSampleType = type == HISTOGRAM ? SUMMARY : HISTOGRAM; + Collector.Type additionalSampleChildInstanceSampleType = type == HISTOGRAM ? SUMMARY : HISTOGRAM; if (m instanceof Count || m instanceof TotalSum) { - PrometheusSample childSample = new PrometheusSample( + instanceSample.add(new PrometheusSample( m, - childSampleChildInstanceSampleNameSuffix, - childSampleChildInstanceSampleType, + childInstanceSampleNameSuffix, + childInstanceSampleType, null, nameSuffix, labelNames, labelValues, - spec.value()); + spec.value())); - return new PrometheusSample( + instanceSample.add(new PrometheusSample( m, - childInstanceSampleNameSuffix, - childInstanceSampleType, + additionalSampleChildInstanceSampleNameSuffix, + additionalSampleChildInstanceSampleType, null, nameSuffix, labelNames, labelValues, - spec.value(), - List.of(childSample)); + spec.value())); } else if (type == HISTOGRAM && m instanceof Percentile || type == SUMMARY && m instanceof Bucket) { - return new PrometheusSample( + instanceSample.add(new PrometheusSample( m, - childSampleChildInstanceSampleNameSuffix, - childSampleChildInstanceSampleType, + additionalSampleChildInstanceSampleNameSuffix, + additionalSampleChildInstanceSampleType, null, nameSuffix, labelNames, labelValues, - spec.value()); + spec.value())); } else { - return new PrometheusSample( + instanceSample.add(new PrometheusSample( m, childInstanceSampleNameSuffix, childInstanceSampleType, @@ -197,7 +206,7 @@ public PrometheusSample makeSample( nameSuffix, labelNames, labelValues, - spec.value()); + spec.value())); } } diff --git a/metrics-facade-prometheus/src/test/java/com/ringcentral/platform/metrics/reporters/prometheus/PrometheusMetricsExporterTest.java b/metrics-facade-prometheus/src/test/java/com/ringcentral/platform/metrics/reporters/prometheus/PrometheusMetricsExporterTest.java index b7b0f95..65fa14b 100644 --- a/metrics-facade-prometheus/src/test/java/com/ringcentral/platform/metrics/reporters/prometheus/PrometheusMetricsExporterTest.java +++ b/metrics-facade-prometheus/src/test/java/com/ringcentral/platform/metrics/reporters/prometheus/PrometheusMetricsExporterTest.java @@ -17,7 +17,7 @@ import static com.ringcentral.platform.metrics.names.MetricName.name; import static com.ringcentral.platform.metrics.reporters.prometheus.PrometheusMetricsExporter.Format.OPENMETRICS_TEXT_1_0_0; import static com.ringcentral.platform.metrics.reporters.prometheus.PrometheusMetricsExporter.Format.PROMETHEUS_TEXT_O_O_4; -import static com.ringcentral.platform.metrics.samples.prometheus.PrometheusSampleMaker.*; +import static com.ringcentral.platform.metrics.samples.prometheus.PrometheusSamplesProducer.*; import static java.util.Collections.emptyList; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; diff --git a/metrics-facade-prometheus/src/test/java/com/ringcentral/platform/metrics/samples/prometheus/PrometheusSampleMakerTest.java b/metrics-facade-prometheus/src/test/java/com/ringcentral/platform/metrics/samples/prometheus/PrometheusSamplesProducerTest.java similarity index 72% rename from metrics-facade-prometheus/src/test/java/com/ringcentral/platform/metrics/samples/prometheus/PrometheusSampleMakerTest.java rename to metrics-facade-prometheus/src/test/java/com/ringcentral/platform/metrics/samples/prometheus/PrometheusSamplesProducerTest.java index 1c4f349..ed2e4c6 100644 --- a/metrics-facade-prometheus/src/test/java/com/ringcentral/platform/metrics/samples/prometheus/PrometheusSampleMakerTest.java +++ b/metrics-facade-prometheus/src/test/java/com/ringcentral/platform/metrics/samples/prometheus/PrometheusSamplesProducerTest.java @@ -23,10 +23,9 @@ import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; import static org.junit.Assert.assertNull; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; +import static org.mockito.Mockito.*; -public class PrometheusSampleMakerTest { +public class PrometheusSamplesProducerTest { static final MetricDimension DIMENSION_1 = new MetricDimension("dimension_1"); static final MetricDimension DIMENSION_2 = new MetricDimension("dimension_2"); @@ -38,24 +37,30 @@ public class PrometheusSampleMakerTest { "description", emptyList()); - PrometheusSampleMaker maker = prometheusSamplesMakerBuilder().separateHistogramAndSummary(false).build(); + PrometheusSamplesProducer maker = prometheusSamplesMakerBuilder().separateHistogramAndSummary(false).build(); @Test public void sampleDisabled() { + PrometheusInstanceSample instanceSample = mock(PrometheusInstanceSample.class); PrometheusSampleSpec sampleSpec = new PrometheusSampleSpec(false, COUNT, 1.0); - assertNull(maker.makeSample(sampleSpec, SIMPLE_COUNTER_INSTANCE_SAMPLE_SPEC, null)); + maker.produceSamples(sampleSpec, SIMPLE_COUNTER_INSTANCE_SAMPLE_SPEC, instanceSample); + verifyNoInteractions(instanceSample); } @Test public void noMeasurable() { + PrometheusInstanceSample instanceSample = mock(PrometheusInstanceSample.class); PrometheusSampleSpec sampleSpec = new PrometheusSampleSpec(true, null, 1.0); - assertNull(maker.makeSample(sampleSpec, SIMPLE_COUNTER_INSTANCE_SAMPLE_SPEC, null)); + maker.produceSamples(sampleSpec, SIMPLE_COUNTER_INSTANCE_SAMPLE_SPEC, instanceSample); + verifyNoInteractions(instanceSample); } @Test public void noValue() { + PrometheusInstanceSample instanceSample = mock(PrometheusInstanceSample.class); PrometheusSampleSpec sampleSpec = new PrometheusSampleSpec(true, COUNT, null); - assertNull(maker.makeSample(sampleSpec, SIMPLE_COUNTER_INSTANCE_SAMPLE_SPEC, null)); + maker.produceSamples(sampleSpec, SIMPLE_COUNTER_INSTANCE_SAMPLE_SPEC, instanceSample); + verifyNoInteractions(instanceSample); } @Test @@ -87,7 +92,8 @@ public void var() { List.of("value_1", "value_2"), 1.0); - check(maker.makeSample(sampleSpec, instanceSampleSpec, instanceSample), expectedSample); + maker.produceSamples(sampleSpec, instanceSampleSpec, instanceSample); + checkLastSample(instanceSample, expectedSample); } @Test @@ -119,7 +125,8 @@ public void counter() { List.of("value_1", "value_2"), 1.0); - check(maker.makeSample(sampleSpec, instanceSampleSpec, instanceSample), expectedSample); + maker.produceSamples(sampleSpec, instanceSampleSpec, instanceSample); + checkLastSample(instanceSample, expectedSample); } @Test @@ -152,7 +159,8 @@ public void rate() { List.of("value_1", "value_2"), 1.0); - check(maker.makeSample(sampleSpec, instanceSampleSpec, instanceSample), expectedSample); + maker.produceSamples(sampleSpec, instanceSampleSpec, instanceSample); + checkLastSample(instanceSample, expectedSample); // MEAN_RATE sampleSpec = new PrometheusSampleSpec(true, MEAN_RATE, 1.0); @@ -167,7 +175,8 @@ public void rate() { List.of("value_1", "value_2"), 1.0); - check(maker.makeSample(sampleSpec, instanceSampleSpec, instanceSample), expectedSample); + maker.produceSamples(sampleSpec, instanceSampleSpec, instanceSample); + checkLastSample(instanceSample, expectedSample); // ONE_MINUTE_RATE sampleSpec = new PrometheusSampleSpec(true, ONE_MINUTE_RATE, 1.0); @@ -182,7 +191,8 @@ public void rate() { List.of("value_1", "value_2"), 1.0); - check(maker.makeSample(sampleSpec, instanceSampleSpec, instanceSample), expectedSample); + maker.produceSamples(sampleSpec, instanceSampleSpec, instanceSample); + checkLastSample(instanceSample, expectedSample); // FIVE_MINUTES_RATE sampleSpec = new PrometheusSampleSpec(true, FIVE_MINUTES_RATE, 1.0); @@ -197,7 +207,8 @@ public void rate() { List.of("value_1", "value_2"), 1.0); - check(maker.makeSample(sampleSpec, instanceSampleSpec, instanceSample), expectedSample); + maker.produceSamples(sampleSpec, instanceSampleSpec, instanceSample); + checkLastSample(instanceSample, expectedSample); // FIFTEEN_MINUTES_RATE sampleSpec = new PrometheusSampleSpec(true, FIFTEEN_MINUTES_RATE, 1.0); @@ -212,7 +223,8 @@ public void rate() { List.of("value_1", "value_2"), 1.0); - check(maker.makeSample(sampleSpec, instanceSampleSpec, instanceSample), expectedSample); + maker.produceSamples(sampleSpec, instanceSampleSpec, instanceSample); + checkLastSample(instanceSample, expectedSample); // RATE_UNIT sampleSpec = new PrometheusSampleSpec(true, RATE_UNIT, 1.0); @@ -227,7 +239,8 @@ public void rate() { List.of("value_1", "value_2"), 1.0); - check(maker.makeSample(sampleSpec, instanceSampleSpec, instanceSample), expectedSample); + maker.produceSamples(sampleSpec, instanceSampleSpec, instanceSample); + checkLastSample(instanceSample, expectedSample); } @Test @@ -262,7 +275,8 @@ public void histogram() { List.of("value_1", "value_2"), 1.0); - check(maker.makeSample(sampleSpec, instanceSampleSpec, instanceSample), expectedSample); + maker.produceSamples(sampleSpec, instanceSampleSpec, instanceSample); + checkLastSample(instanceSample, expectedSample); // TOTAL_SUM sampleSpec = new PrometheusSampleSpec(true, TOTAL_SUM, 1.0); @@ -277,7 +291,8 @@ public void histogram() { List.of("value_1", "value_2"), 1.0); - check(maker.makeSample(sampleSpec, instanceSampleSpec, instanceSample), expectedSample); + maker.produceSamples(sampleSpec, instanceSampleSpec, instanceSample); + checkLastSample(instanceSample, expectedSample); // MIN sampleSpec = new PrometheusSampleSpec(true, MIN, 1.0); @@ -292,7 +307,8 @@ public void histogram() { List.of("value_1", "value_2"), 1.0); - check(maker.makeSample(sampleSpec, instanceSampleSpec, instanceSample), expectedSample); + maker.produceSamples(sampleSpec, instanceSampleSpec, instanceSample); + checkLastChildInstanceLastSample(instanceSample, expectedSample); // MAX sampleSpec = new PrometheusSampleSpec(true, MAX, 1.0); @@ -307,7 +323,8 @@ public void histogram() { List.of("value_1", "value_2"), 1.0); - check(maker.makeSample(sampleSpec, instanceSampleSpec, instanceSample), expectedSample); + maker.produceSamples(sampleSpec, instanceSampleSpec, instanceSample); + checkLastChildInstanceLastSample(instanceSample, expectedSample); // MEAN sampleSpec = new PrometheusSampleSpec(true, MEAN, 1.0); @@ -322,22 +339,24 @@ public void histogram() { List.of("value_1", "value_2"), 1.0); - check(maker.makeSample(sampleSpec, instanceSampleSpec, instanceSample), expectedSample); + maker.produceSamples(sampleSpec, instanceSampleSpec, instanceSample); + checkLastChildInstanceLastSample(instanceSample, expectedSample); // STANDARD_DEVIATION sampleSpec = new PrometheusSampleSpec(true, STANDARD_DEVIATION, 1.0); expectedSample = new PrometheusSample( STANDARD_DEVIATION, - null, - null, + name("stdDev"), + GAUGE, null, null, List.of(DIMENSION_1.name(), DIMENSION_2.name()), List.of("value_1", "value_2"), 1.0); - check(maker.makeSample(sampleSpec, instanceSampleSpec, instanceSample), expectedSample); + maker.produceSamples(sampleSpec, instanceSampleSpec, instanceSample); + checkLastChildInstanceLastSample(instanceSample, expectedSample); // PERCENTILE_50 sampleSpec = new PrometheusSampleSpec(true, PERCENTILE_50, 1.0); @@ -352,7 +371,8 @@ public void histogram() { List.of("value_1", "value_2", "0.5"), 1.0); - check(maker.makeSample(sampleSpec, instanceSampleSpec, instanceSample), expectedSample); + maker.produceSamples(sampleSpec, instanceSampleSpec, instanceSample); + checkSample(instanceSample, 0, expectedSample); // PERCENTILE_75 sampleSpec = new PrometheusSampleSpec(true, PERCENTILE_75, 1.0); @@ -367,7 +387,8 @@ public void histogram() { List.of("value_1", "value_2", "0.75"), 1.0); - check(maker.makeSample(sampleSpec, instanceSampleSpec, instanceSample), expectedSample); + maker.produceSamples(sampleSpec, instanceSampleSpec, instanceSample); + checkSample(instanceSample, 1, expectedSample); // SEC_1_BUCKET sampleSpec = new PrometheusSampleSpec(true, SEC_1_BUCKET, 1.0); @@ -382,13 +403,14 @@ public void histogram() { List.of("value_1", "value_2", "1.0E9"), 1.0); - check(maker.makeSample(sampleSpec, instanceSampleSpec, instanceSample), expectedSample); + maker.produceSamples(sampleSpec, instanceSampleSpec, instanceSample); + checkSample(instanceSample, 0, expectedSample); // +Inf bucket sampleSpec = new PrometheusSampleSpec(true, INF_BUCKET, 1.0); expectedSample = new PrometheusSample( - SEC_1_BUCKET, + INF_BUCKET, null, null, null, @@ -397,13 +419,14 @@ public void histogram() { List.of("value_1", "value_2", "+Inf"), 1.0); - check(maker.makeSample(sampleSpec, instanceSampleSpec, instanceSample), expectedSample); + maker.produceSamples(sampleSpec, instanceSampleSpec, instanceSample); + checkSample(instanceSample, 1, expectedSample); // -Inf bucket sampleSpec = new PrometheusSampleSpec(true, NEGATIVE_INF_BUCKET, 1.0); expectedSample = new PrometheusSample( - SEC_1_BUCKET, + NEGATIVE_INF_BUCKET, null, null, null, @@ -412,7 +435,8 @@ public void histogram() { List.of("value_1", "value_2", "-Inf"), 1.0); - check(maker.makeSample(sampleSpec, instanceSampleSpec, instanceSample), expectedSample); + maker.produceSamples(sampleSpec, instanceSampleSpec, instanceSample); + checkSample(instanceSample, 0, expectedSample); } @Test @@ -447,7 +471,8 @@ public void histogram_NoDimensions() { emptyList(), 1.0); - check(maker.makeSample(sampleSpec, instanceSampleSpec, instanceSample), expectedSample); + maker.produceSamples(sampleSpec, instanceSampleSpec, instanceSample); + checkLastSample(instanceSample, expectedSample); // TOTAL_SUM sampleSpec = new PrometheusSampleSpec(true, TOTAL_SUM, 1.0); @@ -462,7 +487,8 @@ public void histogram_NoDimensions() { emptyList(), 1.0); - check(maker.makeSample(sampleSpec, instanceSampleSpec, instanceSample), expectedSample); + maker.produceSamples(sampleSpec, instanceSampleSpec, instanceSample); + checkLastSample(instanceSample, expectedSample); // MIN sampleSpec = new PrometheusSampleSpec(true, MIN, 1.0); @@ -477,7 +503,8 @@ public void histogram_NoDimensions() { emptyList(), 1.0); - check(maker.makeSample(sampleSpec, instanceSampleSpec, instanceSample), expectedSample); + maker.produceSamples(sampleSpec, instanceSampleSpec, instanceSample); + checkLastChildInstanceLastSample(instanceSample, expectedSample); // MAX sampleSpec = new PrometheusSampleSpec(true, MAX, 1.0); @@ -492,7 +519,8 @@ public void histogram_NoDimensions() { emptyList(), 1.0); - check(maker.makeSample(sampleSpec, instanceSampleSpec, instanceSample), expectedSample); + maker.produceSamples(sampleSpec, instanceSampleSpec, instanceSample); + checkLastChildInstanceLastSample(instanceSample, expectedSample); // MEAN sampleSpec = new PrometheusSampleSpec(true, MEAN, 1.0); @@ -507,22 +535,24 @@ public void histogram_NoDimensions() { emptyList(), 1.0); - check(maker.makeSample(sampleSpec, instanceSampleSpec, instanceSample), expectedSample); + maker.produceSamples(sampleSpec, instanceSampleSpec, instanceSample); + checkLastChildInstanceLastSample(instanceSample, expectedSample); // STANDARD_DEVIATION sampleSpec = new PrometheusSampleSpec(true, STANDARD_DEVIATION, 1.0); expectedSample = new PrometheusSample( STANDARD_DEVIATION, - null, - null, + name("stdDev"), + GAUGE, null, null, emptyList(), emptyList(), 1.0); - check(maker.makeSample(sampleSpec, instanceSampleSpec, instanceSample), expectedSample); + maker.produceSamples(sampleSpec, instanceSampleSpec, instanceSample); + checkLastChildInstanceLastSample(instanceSample, expectedSample); // PERCENTILE_50 sampleSpec = new PrometheusSampleSpec(true, PERCENTILE_50, 1.0); @@ -537,7 +567,8 @@ public void histogram_NoDimensions() { List.of("0.5"), 1.0); - check(maker.makeSample(sampleSpec, instanceSampleSpec, instanceSample), expectedSample); + maker.produceSamples(sampleSpec, instanceSampleSpec, instanceSample); + checkSample(instanceSample, 0, expectedSample); // PERCENTILE_75 sampleSpec = new PrometheusSampleSpec(true, PERCENTILE_75, 1.0); @@ -552,7 +583,8 @@ public void histogram_NoDimensions() { List.of("0.75"), 1.0); - check(maker.makeSample(sampleSpec, instanceSampleSpec, instanceSample), expectedSample); + maker.produceSamples(sampleSpec, instanceSampleSpec, instanceSample); + checkSample(instanceSample, 1, expectedSample); // SEC_1_BUCKET sampleSpec = new PrometheusSampleSpec(true, SEC_1_BUCKET, 1.0); @@ -567,7 +599,8 @@ public void histogram_NoDimensions() { List.of("1.0E9"), 1.0); - check(maker.makeSample(sampleSpec, instanceSampleSpec, instanceSample), expectedSample); + maker.produceSamples(sampleSpec, instanceSampleSpec, instanceSample); + checkSample(instanceSample, 0, expectedSample); } @Test @@ -577,6 +610,7 @@ public void timer() { .minChildInstanceSampleNameSuffix(name("test", "min")) .maxChildInstanceSampleNameSuffix(name("test", "max")) .meanChildInstanceSampleNameSuffix(name("test", "mean")) + .standardDeviationChildInstanceSampleNameSuffix(name("test", "stdDev")) .build(); MetricInstance instance = mock(TimerInstance.class); @@ -609,7 +643,8 @@ public void timer() { List.of("value_1", "value_2"), 1.0); - check(maker.makeSample(sampleSpec, instanceSampleSpec, instanceSample), expectedSample); + maker.produceSamples(sampleSpec, instanceSampleSpec, instanceSample); + checkLastSample(instanceSample, expectedSample); // TOTAL_SUM sampleSpec = new PrometheusSampleSpec(true, TOTAL_SUM, 1.0); @@ -624,7 +659,8 @@ public void timer() { List.of("value_1", "value_2"), 1.0); - check(maker.makeSample(sampleSpec, instanceSampleSpec, instanceSample), expectedSample); + maker.produceSamples(sampleSpec, instanceSampleSpec, instanceSample); + checkLastSample(instanceSample, expectedSample); // MEAN_RATE sampleSpec = new PrometheusSampleSpec(true, MEAN_RATE, 1.0); @@ -639,7 +675,8 @@ public void timer() { List.of("value_1", "value_2"), 1.0); - check(maker.makeSample(sampleSpec, instanceSampleSpec, instanceSample), expectedSample); + maker.produceSamples(sampleSpec, instanceSampleSpec, instanceSample); + checkLastSample(instanceSample, expectedSample); // ONE_MINUTE_RATE sampleSpec = new PrometheusSampleSpec(true, ONE_MINUTE_RATE, 1.0); @@ -654,7 +691,8 @@ public void timer() { List.of("value_1", "value_2"), 1.0); - check(maker.makeSample(sampleSpec, instanceSampleSpec, instanceSample), expectedSample); + maker.produceSamples(sampleSpec, instanceSampleSpec, instanceSample); + checkLastSample(instanceSample, expectedSample); // FIVE_MINUTES_RATE sampleSpec = new PrometheusSampleSpec(true, FIVE_MINUTES_RATE, 1.0); @@ -669,7 +707,8 @@ public void timer() { List.of("value_1", "value_2"), 1.0); - check(maker.makeSample(sampleSpec, instanceSampleSpec, instanceSample), expectedSample); + maker.produceSamples(sampleSpec, instanceSampleSpec, instanceSample); + checkLastSample(instanceSample, expectedSample); // FIFTEEN_MINUTES_RATE sampleSpec = new PrometheusSampleSpec(true, FIFTEEN_MINUTES_RATE, 1.0); @@ -684,7 +723,8 @@ public void timer() { List.of("value_1", "value_2"), 1.0); - check(maker.makeSample(sampleSpec, instanceSampleSpec, instanceSample), expectedSample); + maker.produceSamples(sampleSpec, instanceSampleSpec, instanceSample); + checkLastSample(instanceSample, expectedSample); // RATE_UNIT sampleSpec = new PrometheusSampleSpec(true, RATE_UNIT, 1.0); @@ -699,7 +739,8 @@ public void timer() { List.of("value_1", "value_2"), 1.0); - check(maker.makeSample(sampleSpec, instanceSampleSpec, instanceSample), expectedSample); + maker.produceSamples(sampleSpec, instanceSampleSpec, instanceSample); + checkLastSample(instanceSample, expectedSample); // MIN sampleSpec = new PrometheusSampleSpec(true, MIN, 1.0); @@ -714,7 +755,8 @@ public void timer() { List.of("value_1", "value_2"), 1.0); - check(maker.makeSample(sampleSpec, instanceSampleSpec, instanceSample), expectedSample); + maker.produceSamples(sampleSpec, instanceSampleSpec, instanceSample); + checkLastChildInstanceLastSample(instanceSample, expectedSample); // MAX sampleSpec = new PrometheusSampleSpec(true, MAX, 1.0); @@ -729,7 +771,8 @@ public void timer() { List.of("value_1", "value_2"), 1.0); - check(maker.makeSample(sampleSpec, instanceSampleSpec, instanceSample), expectedSample); + maker.produceSamples(sampleSpec, instanceSampleSpec, instanceSample); + checkLastChildInstanceLastSample(instanceSample, expectedSample); // MEAN sampleSpec = new PrometheusSampleSpec(true, MEAN, 1.0); @@ -744,22 +787,24 @@ public void timer() { List.of("value_1", "value_2"), 1.0); - check(maker.makeSample(sampleSpec, instanceSampleSpec, instanceSample), expectedSample); + maker.produceSamples(sampleSpec, instanceSampleSpec, instanceSample); + checkLastChildInstanceLastSample(instanceSample, expectedSample); // STANDARD_DEVIATION sampleSpec = new PrometheusSampleSpec(true, STANDARD_DEVIATION, 1.0); expectedSample = new PrometheusSample( STANDARD_DEVIATION, - null, - null, + name("test", "stdDev"), + GAUGE, null, null, List.of(DIMENSION_1.name(), DIMENSION_2.name()), List.of("value_1", "value_2"), 1.0); - check(maker.makeSample(sampleSpec, instanceSampleSpec, instanceSample), expectedSample); + maker.produceSamples(sampleSpec, instanceSampleSpec, instanceSample); + checkLastChildInstanceLastSample(instanceSample, expectedSample); // PERCENTILE_50 sampleSpec = new PrometheusSampleSpec(true, PERCENTILE_50, 1.0); @@ -774,7 +819,8 @@ public void timer() { List.of("value_1", "value_2", "0.5"), 1.0); - check(maker.makeSample(sampleSpec, instanceSampleSpec, instanceSample), expectedSample); + maker.produceSamples(sampleSpec, instanceSampleSpec, instanceSample); + checkSample(instanceSample, 0, expectedSample); // PERCENTILE_75 sampleSpec = new PrometheusSampleSpec(true, PERCENTILE_75, 1.0); @@ -789,7 +835,8 @@ public void timer() { List.of("value_1", "value_2", "0.75"), 1.0); - check(maker.makeSample(sampleSpec, instanceSampleSpec, instanceSample), expectedSample); + maker.produceSamples(sampleSpec, instanceSampleSpec, instanceSample); + checkSample(instanceSample, 1, expectedSample); // DURATION_UNIT sampleSpec = new PrometheusSampleSpec(true, DURATION_UNIT, 1.0); @@ -804,7 +851,8 @@ public void timer() { List.of("value_1", "value_2"), 1.0); - check(maker.makeSample(sampleSpec, instanceSampleSpec, instanceSample), expectedSample); + maker.produceSamples(sampleSpec, instanceSampleSpec, instanceSample); + checkLastSample(instanceSample, expectedSample); // SEC_1_BUCKET sampleSpec = new PrometheusSampleSpec(true, SEC_1_BUCKET, 1.0); @@ -819,7 +867,8 @@ public void timer() { List.of("value_1", "value_2", "1"), 1.0); - check(maker.makeSample(sampleSpec, instanceSampleSpec, instanceSample), expectedSample); + maker.produceSamples(sampleSpec, instanceSampleSpec, instanceSample); + checkSample(instanceSample, 0, expectedSample); } @Test @@ -849,60 +898,56 @@ public void separatingSummaryFromHistogram() { // COUNT PrometheusSampleSpec sampleSpec = new PrometheusSampleSpec(true, COUNT, 1.0); + maker.produceSamples(sampleSpec, instanceSampleSpec, instanceSample); - PrometheusSample expectedChildSample = new PrometheusSample( + checkLastSample(instanceSample, new PrometheusSample( COUNT, - name("test", "summary"), - SUMMARY, + null, + null, null, "_count", List.of(DIMENSION_1.name(), DIMENSION_2.name()), List.of("value_1", "value_2"), - 1.0); + 1.0)); - PrometheusSample expectedSample = new PrometheusSample( + checkLastSample(instanceSample, new PrometheusSample( COUNT, - null, - null, + name("test", "summary"), + SUMMARY, null, "_count", List.of(DIMENSION_1.name(), DIMENSION_2.name()), List.of("value_1", "value_2"), - 1.0, - List.of(expectedChildSample)); - - check(maker.makeSample(sampleSpec, instanceSampleSpec, instanceSample), expectedSample); + 1.0)); // TOTAL_SUM sampleSpec = new PrometheusSampleSpec(true, TOTAL_SUM, 1.0); + maker.produceSamples(sampleSpec, instanceSampleSpec, instanceSample); - expectedChildSample = new PrometheusSample( - COUNT, - name("test", "summary"), - SUMMARY, + checkLastSample(instanceSample, new PrometheusSample( + TOTAL_SUM, + null, + null, null, "_sum", List.of(DIMENSION_1.name(), DIMENSION_2.name()), List.of("value_1", "value_2"), - 1.0); + 1.0)); - expectedSample = new PrometheusSample( + checkLastSample(instanceSample, new PrometheusSample( TOTAL_SUM, - null, - null, + name("test", "summary"), + SUMMARY, null, "_sum", List.of(DIMENSION_1.name(), DIMENSION_2.name()), List.of("value_1", "value_2"), - 1.0, - List.of(expectedChildSample)); - - check(maker.makeSample(sampleSpec, instanceSampleSpec, instanceSample), expectedSample); + 1.0)); // MIN sampleSpec = new PrometheusSampleSpec(true, MIN, 1.0); - expectedSample = new PrometheusSample( + PrometheusSample expectedSample = new PrometheusSample( MIN, name("min"), GAUGE, @@ -912,7 +957,8 @@ public void separatingSummaryFromHistogram() { List.of("value_1", "value_2"), 1.0); - check(maker.makeSample(sampleSpec, instanceSampleSpec, instanceSample), expectedSample); + maker.produceSamples(sampleSpec, instanceSampleSpec, instanceSample); + checkLastChildInstanceLastSample(instanceSample, expectedSample); // MAX sampleSpec = new PrometheusSampleSpec(true, MAX, 1.0); @@ -927,7 +973,8 @@ public void separatingSummaryFromHistogram() { List.of("value_1", "value_2"), 1.0); - check(maker.makeSample(sampleSpec, instanceSampleSpec, instanceSample), expectedSample); + maker.produceSamples(sampleSpec, instanceSampleSpec, instanceSample); + checkLastChildInstanceLastSample(instanceSample, expectedSample); // MEAN sampleSpec = new PrometheusSampleSpec(true, MEAN, 1.0); @@ -942,22 +989,24 @@ public void separatingSummaryFromHistogram() { List.of("value_1", "value_2"), 1.0); - check(maker.makeSample(sampleSpec, instanceSampleSpec, instanceSample), expectedSample); + maker.produceSamples(sampleSpec, instanceSampleSpec, instanceSample); + checkLastChildInstanceLastSample(instanceSample, expectedSample); // STANDARD_DEVIATION sampleSpec = new PrometheusSampleSpec(true, STANDARD_DEVIATION, 1.0); expectedSample = new PrometheusSample( STANDARD_DEVIATION, - null, - null, + name("stdDev"), + GAUGE, null, null, List.of(DIMENSION_1.name(), DIMENSION_2.name()), List.of("value_1", "value_2"), 1.0); - check(maker.makeSample(sampleSpec, instanceSampleSpec, instanceSample), expectedSample); + maker.produceSamples(sampleSpec, instanceSampleSpec, instanceSample); + checkLastChildInstanceLastSample(instanceSample, expectedSample); // PERCENTILE_50 sampleSpec = new PrometheusSampleSpec(true, PERCENTILE_50, 1.0); @@ -972,7 +1021,8 @@ public void separatingSummaryFromHistogram() { List.of("value_1", "value_2", "0.5"), 1.0); - check(maker.makeSample(sampleSpec, instanceSampleSpec, instanceSample), expectedSample); + maker.produceSamples(sampleSpec, instanceSampleSpec, instanceSample); + checkChildInstanceSample(instanceSample, 0, 0, expectedSample); // PERCENTILE_75 sampleSpec = new PrometheusSampleSpec(true, PERCENTILE_75, 1.0); @@ -987,7 +1037,8 @@ public void separatingSummaryFromHistogram() { List.of("value_1", "value_2", "0.75"), 1.0); - check(maker.makeSample(sampleSpec, instanceSampleSpec, instanceSample), expectedSample); + maker.produceSamples(sampleSpec, instanceSampleSpec, instanceSample); + checkChildInstanceSample(instanceSample, 0, 1, expectedSample); // SEC_1_BUCKET sampleSpec = new PrometheusSampleSpec(true, SEC_1_BUCKET, 1.0); @@ -1002,7 +1053,8 @@ public void separatingSummaryFromHistogram() { List.of("value_1", "value_2", "1.0E9"), 1.0); - check(maker.makeSample(sampleSpec, instanceSampleSpec, instanceSample), expectedSample); + maker.produceSamples(sampleSpec, instanceSampleSpec, instanceSample); + checkSample(instanceSample, 0, expectedSample); } @Test @@ -1032,60 +1084,56 @@ public void separatingHistogramFromSummary() { // COUNT PrometheusSampleSpec sampleSpec = new PrometheusSampleSpec(true, COUNT, 1.0); + maker.produceSamples(sampleSpec, instanceSampleSpec, instanceSample); - PrometheusSample expectedChildSample = new PrometheusSample( + checkLastSample(instanceSample, new PrometheusSample( COUNT, - name("test", "histogram"), - HISTOGRAM, + null, + null, null, "_count", List.of(DIMENSION_1.name(), DIMENSION_2.name()), List.of("value_1", "value_2"), - 1.0); + 1.0)); - PrometheusSample expectedSample = new PrometheusSample( + checkLastSample(instanceSample, new PrometheusSample( COUNT, - null, - null, + name("test", "histogram"), + SUMMARY, null, "_count", List.of(DIMENSION_1.name(), DIMENSION_2.name()), List.of("value_1", "value_2"), - 1.0, - List.of(expectedChildSample)); - - check(maker.makeSample(sampleSpec, instanceSampleSpec, instanceSample), expectedSample); + 1.0)); // TOTAL_SUM sampleSpec = new PrometheusSampleSpec(true, TOTAL_SUM, 1.0); + maker.produceSamples(sampleSpec, instanceSampleSpec, instanceSample); - expectedChildSample = new PrometheusSample( - COUNT, - name("test", "histogram"), - HISTOGRAM, + checkLastSample(instanceSample, new PrometheusSample( + TOTAL_SUM, + null, + null, null, "_sum", List.of(DIMENSION_1.name(), DIMENSION_2.name()), List.of("value_1", "value_2"), - 1.0); + 1.0)); - expectedSample = new PrometheusSample( + checkLastSample(instanceSample, new PrometheusSample( TOTAL_SUM, - null, - null, + name("test", "histogram"), + SUMMARY, null, "_sum", List.of(DIMENSION_1.name(), DIMENSION_2.name()), List.of("value_1", "value_2"), - 1.0, - List.of(expectedChildSample)); - - check(maker.makeSample(sampleSpec, instanceSampleSpec, instanceSample), expectedSample); + 1.0)); // MIN sampleSpec = new PrometheusSampleSpec(true, MIN, 1.0); - expectedSample = new PrometheusSample( + PrometheusSample expectedSample = new PrometheusSample( MIN, name("min"), GAUGE, @@ -1095,7 +1143,8 @@ public void separatingHistogramFromSummary() { List.of("value_1", "value_2"), 1.0); - check(maker.makeSample(sampleSpec, instanceSampleSpec, instanceSample), expectedSample); + maker.produceSamples(sampleSpec, instanceSampleSpec, instanceSample); + checkLastChildInstanceLastSample(instanceSample, expectedSample); // MAX sampleSpec = new PrometheusSampleSpec(true, MAX, 1.0); @@ -1110,7 +1159,8 @@ public void separatingHistogramFromSummary() { List.of("value_1", "value_2"), 1.0); - check(maker.makeSample(sampleSpec, instanceSampleSpec, instanceSample), expectedSample); + maker.produceSamples(sampleSpec, instanceSampleSpec, instanceSample); + checkLastChildInstanceLastSample(instanceSample, expectedSample); // MEAN sampleSpec = new PrometheusSampleSpec(true, MEAN, 1.0); @@ -1125,22 +1175,24 @@ public void separatingHistogramFromSummary() { List.of("value_1", "value_2"), 1.0); - check(maker.makeSample(sampleSpec, instanceSampleSpec, instanceSample), expectedSample); + maker.produceSamples(sampleSpec, instanceSampleSpec, instanceSample); + checkLastChildInstanceLastSample(instanceSample, expectedSample); // STANDARD_DEVIATION sampleSpec = new PrometheusSampleSpec(true, STANDARD_DEVIATION, 1.0); expectedSample = new PrometheusSample( STANDARD_DEVIATION, - null, - null, + name("stdDev"), + GAUGE, null, null, List.of(DIMENSION_1.name(), DIMENSION_2.name()), List.of("value_1", "value_2"), 1.0); - check(maker.makeSample(sampleSpec, instanceSampleSpec, instanceSample), expectedSample); + maker.produceSamples(sampleSpec, instanceSampleSpec, instanceSample); + checkLastChildInstanceLastSample(instanceSample, expectedSample); // PERCENTILE_50 sampleSpec = new PrometheusSampleSpec(true, PERCENTILE_50, 1.0); @@ -1155,7 +1207,8 @@ public void separatingHistogramFromSummary() { List.of("value_1", "value_2", "0.5"), 1.0); - check(maker.makeSample(sampleSpec, instanceSampleSpec, instanceSample), expectedSample); + maker.produceSamples(sampleSpec, instanceSampleSpec, instanceSample); + checkSample(instanceSample, 0, expectedSample); // PERCENTILE_75 sampleSpec = new PrometheusSampleSpec(true, PERCENTILE_75, 1.0); @@ -1170,7 +1223,8 @@ public void separatingHistogramFromSummary() { List.of("value_1", "value_2", "0.75"), 1.0); - check(maker.makeSample(sampleSpec, instanceSampleSpec, instanceSample), expectedSample); + maker.produceSamples(sampleSpec, instanceSampleSpec, instanceSample); + checkSample(instanceSample, 1, expectedSample); // SEC_1_BUCKET sampleSpec = new PrometheusSampleSpec(true, SEC_1_BUCKET, 1.0); @@ -1185,22 +1239,49 @@ public void separatingHistogramFromSummary() { List.of("value_1", "value_2", "1.0E9"), 1.0); - check(maker.makeSample(sampleSpec, instanceSampleSpec, instanceSample), expectedSample); + maker.produceSamples(sampleSpec, instanceSampleSpec, instanceSample); + checkChildInstanceSample(instanceSample, 0, 0, expectedSample); + } + + public void checkLastSample(PrometheusInstanceSample instanceSample, PrometheusSample expected) { + checkSample( + instanceSample, + instanceSample.samples().size() - 1, + expected); } - public void check(PrometheusSample actual, PrometheusSample expected) { - assertThat(actual.childInstanceSampleNameSuffix(), is(expected.childInstanceSampleNameSuffix())); - assertThat(actual.childInstanceSampleType(), is(expected.childInstanceSampleType())); + public void checkSample(PrometheusInstanceSample instanceSample, int sampleIndex, PrometheusSample expected) { + checkSample(instanceSample.samples().get(sampleIndex), expected); + } + + public void checkLastChildInstanceLastSample(PrometheusInstanceSample instanceSample, PrometheusSample expected) { + int childIndex = instanceSample.children().size() - 1; + + checkChildInstanceSample( + instanceSample, + childIndex, + instanceSample.children().get(childIndex).samples().size() - 1, + expected); + } + + public void checkChildInstanceSample( + PrometheusInstanceSample instanceSample, + int childIndex, + int sampleIndex, + PrometheusSample expected) { + + checkSample( + instanceSample.children().get(childIndex).samples().get(sampleIndex), + expected); + } + + public void checkSample(PrometheusSample actual, PrometheusSample expected) { + assertNull(actual.childInstanceSampleNameSuffix()); + assertNull(actual.childInstanceSampleType()); + assertThat(actual.measurable(), is(expected.measurable())); assertThat(actual.nameSuffix(), is(expected.nameSuffix())); assertThat(actual.labelNames(), is(expected.labelNames())); assertThat(actual.labelValues(), is(expected.labelValues())); assertThat(actual.value(), is(expected.value())); - - assertThat(actual.hasChildren(), is(expected.hasChildren())); - assertThat(actual.children().size(), is(expected.children().size())); - - for (int i = 0; i < actual.children().size(); ++i) { - check(actual.children().get(i), expected.children().get(i)); - } } } \ No newline at end of file diff --git a/metrics-facade-samples/src/main/java/com/ringcentral/platform/metrics/samples/reporters/PrometheusMetricsExporterSample.java b/metrics-facade-samples/src/main/java/com/ringcentral/platform/metrics/samples/reporters/PrometheusMetricsExporterSample.java index 6dbd0bc..2a36fa3 100644 --- a/metrics-facade-samples/src/main/java/com/ringcentral/platform/metrics/samples/reporters/PrometheusMetricsExporterSample.java +++ b/metrics-facade-samples/src/main/java/com/ringcentral/platform/metrics/samples/reporters/PrometheusMetricsExporterSample.java @@ -78,7 +78,7 @@ public static void main(String[] args) throws Exception { (instanceSampleSpec, instance, measurableValues, measurable, currSpec) -> measurable instanceof Max ? sampleSpec().disable() : sampleSpec()); - PrometheusSampleMaker sampleMaker = new PrometheusSampleMaker(); + PrometheusSamplesProducer samplesProducer = new PrometheusSamplesProducer(); PrometheusInstanceSamplesProvider miSamplesProvider = prometheusInstanceSamplesProvider(registry) .instanceSampleSpecProvider(miSampleSpecProvider) @@ -86,7 +86,7 @@ public static void main(String[] args) throws Exception { .instanceSampleMaker(miSampleMaker) .sampleSpecProvider(sampleSpecProvider) .sampleSpecModsProvider(sampleSpecModsProvider) - .sampleMaker(sampleMaker) + .samplesProducer(samplesProducer) .build(); PrometheusMetricsExporter exporter = new PrometheusMetricsExporter(