Skip to content

Commit

Permalink
#33: SampleMaker -> SamplesProducer, add Samples to InstanceSample ra…
Browse files Browse the repository at this point in the history
…ther than returning them
  • Loading branch information
devromik committed Sep 28, 2022
1 parent de3f3ed commit 3479516
Show file tree
Hide file tree
Showing 22 changed files with 337 additions and 263 deletions.
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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"

Expand 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(
Expand Down
Original file line number Diff line number Diff line change
@@ -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<S extends Sample<S>> implements InstanceSample<S> {
public class AbstractInstanceSample<S extends Sample> implements InstanceSample<S> {

protected final List<S> samples;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@
import static java.util.Objects.requireNonNull;

public abstract class AbstractInstanceSamplesProvider<
S extends Sample<S>,
S extends Sample,
SS extends SampleSpec,
SSP extends SampleSpecProvider<SS, ISS>,
SM extends SampleMaker<S, SS, ISS, IS>,
SP extends SamplesProducer<S, SS, ISS, IS>,
IS extends InstanceSample<S>,
ISS extends InstanceSampleSpec,
ISSP extends InstanceSampleSpecProvider<ISS>,
Expand All @@ -26,7 +26,7 @@ public abstract class AbstractInstanceSamplesProvider<

private final SSP sampleSpecProvider;
private final PredicativeMetricNamedInfoProvider<SSP> sampleSpecModsProvider;
private final SM sampleMaker;
private final SP samplesProducer;

private final MetricRegistry metricRegistry;

Expand All @@ -36,7 +36,7 @@ public AbstractInstanceSamplesProvider(
ISM instanceSampleMaker,
SSP sampleSpecProvider,
PredicativeMetricNamedInfoProvider<SSP> sampleSpecModsProvider,
SM sampleMaker,
SP samplesProducer,
MetricRegistry metricRegistry) {

this.instanceSampleSpecProvider = requireNonNull(instanceSampleSpecProvider);
Expand All @@ -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);
}
Expand Down Expand Up @@ -101,11 +101,7 @@ public Set<IS> instanceSamples() {
return;
}

S sample = sampleMaker.makeSample(sampleSpec, instanceSampleSpec, instanceSample);

if (sample != null) {
instanceSample.add(sample);
}
samplesProducer.produceSamples(sampleSpec, instanceSampleSpec, instanceSample);
});

if (!instanceSample.isEmpty()) {
Expand Down
Original file line number Diff line number Diff line change
@@ -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<S>> implements SamplesProducer<S, SS, ISS, IS> {

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);
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import java.util.Set;

public class CompositeInstanceSamplesProvider<
S extends Sample<S>,
S extends Sample,
IS extends InstanceSample<S>,
ISP extends InstanceSamplesProvider<? extends S, ? extends IS>> implements InstanceSamplesProvider<S, IS> {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ public class DefaultInstanceSamplesProvider extends AbstractInstanceSamplesProvi
DefaultSample,
DefaultSampleSpec,
SampleSpecProvider<DefaultSampleSpec, DefaultInstanceSampleSpec>,
SampleMaker<DefaultSample, DefaultSampleSpec, DefaultInstanceSampleSpec, InstanceSample<DefaultSample>>,
SamplesProducer<DefaultSample, DefaultSampleSpec, DefaultInstanceSampleSpec, InstanceSample<DefaultSample>>,
InstanceSample<DefaultSample>,
DefaultInstanceSampleSpec,
InstanceSampleSpecProvider<DefaultInstanceSampleSpec>,
Expand Down Expand Up @@ -66,7 +66,7 @@ public DefaultInstanceSamplesProvider(
new DefaultInstanceSampleMaker(),
sampleSpecProvider,
sampleSpecModsProvider,
new DefaultSampleMaker(),
new DefaultSamplesProducer(),
metricRegistry);
}

Expand All @@ -76,7 +76,7 @@ public DefaultInstanceSamplesProvider(
InstanceSampleMaker<DefaultSample, InstanceSample<DefaultSample>, DefaultInstanceSampleSpec> instanceSampleMaker,
SampleSpecProvider<DefaultSampleSpec, DefaultInstanceSampleSpec> sampleSpecProvider,
PredicativeMetricNamedInfoProvider<SampleSpecProvider<DefaultSampleSpec, DefaultInstanceSampleSpec>> sampleSpecModsProvider,
SampleMaker<DefaultSample, DefaultSampleSpec, DefaultInstanceSampleSpec, InstanceSample<DefaultSample>> sampleMaker,
SamplesProducer<DefaultSample, DefaultSampleSpec, DefaultInstanceSampleSpec, InstanceSample<DefaultSample>> samplesProducer,
MetricRegistry metricRegistry) {

super(
Expand All @@ -85,7 +85,7 @@ public DefaultInstanceSamplesProvider(
instanceSampleMaker,
sampleSpecProvider,
sampleSpecModsProvider,
sampleMaker,
samplesProducer,
metricRegistry);
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.ringcentral.platform.metrics.samples;

public class DefaultSample implements Sample<DefaultSample> {
public class DefaultSample implements Sample {

private final String name;
private final Object value;
Expand Down
Original file line number Diff line number Diff line change
@@ -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,
Expand All @@ -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) {

Expand All @@ -30,7 +31,7 @@ public DefaultSampleMaker(
}

@Override
public DefaultSample makeSample(
protected DefaultSample makeSample(
DefaultSampleSpec spec,
DefaultInstanceSampleSpec instanceSampleSpec,
InstanceSample<DefaultSample> instanceSample) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import java.util.List;

public interface InstanceSample<S extends Sample<S>> {
public interface InstanceSample<S extends Sample> {
void add(S sample);
List<S> samples();

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.ringcentral.platform.metrics.samples;

public interface InstanceSampleMaker<
S extends Sample<S>,
S extends Sample,
IS extends InstanceSample<S>,
ISS extends InstanceSampleSpec> {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@

import java.util.Set;

public interface InstanceSamplesProvider<S extends Sample<S>, IS extends InstanceSample<S>> {
public interface InstanceSamplesProvider<S extends Sample, IS extends InstanceSample<S>> {
Set<IS> instanceSamples();
}
Original file line number Diff line number Diff line change
@@ -1,15 +1,3 @@
package com.ringcentral.platform.metrics.samples;

import java.util.List;

import static java.util.Collections.emptyList;

public interface Sample<S extends Sample<S>> {
default boolean hasChildren() {
return !children().isEmpty();
}

default List<S> children() {
return emptyList();
}
}
public interface Sample {}
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package com.ringcentral.platform.metrics.samples;

public interface SampleMaker<
S extends Sample<S>,
public interface SamplesProducer<
S extends Sample,
SS extends SampleSpec,
ISS extends InstanceSampleSpec,
IS extends InstanceSample<S>> {

S makeSample(SS spec, ISS instanceSampleSpec, IS instanceSample);
void produceSamples(SS spec, ISS instanceSampleSpec, IS instanceSample);
}
Original file line number Diff line number Diff line change
Expand Up @@ -86,12 +86,6 @@ public void add(PrometheusSample sample) {
} else {
super.add(sample);
}

if (sample.hasChildren()) {
for (PrometheusSample childSample : sample.children()) {
add(childSample);
}
}
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ public class PrometheusInstanceSamplesProvider extends AbstractInstanceSamplesPr
PrometheusSample,
PrometheusSampleSpec,
SampleSpecProvider<PrometheusSampleSpec, PrometheusInstanceSampleSpec>,
SampleMaker<PrometheusSample, PrometheusSampleSpec, PrometheusInstanceSampleSpec, PrometheusInstanceSample>,
SamplesProducer<PrometheusSample, PrometheusSampleSpec, PrometheusInstanceSampleSpec, PrometheusInstanceSample>,
PrometheusInstanceSample,
PrometheusInstanceSampleSpec,
InstanceSampleSpecProvider<PrometheusInstanceSampleSpec>,
Expand All @@ -31,7 +31,7 @@ public PrometheusInstanceSamplesProvider(
new PrometheusInstanceSampleMaker(),
new PrometheusSampleSpecProvider(),
null,
new PrometheusSampleMaker(),
new PrometheusSamplesProducer(),
metricRegistry);
}

Expand Down Expand Up @@ -81,7 +81,7 @@ public PrometheusInstanceSamplesProvider(
new PrometheusInstanceSampleMaker(),
sampleSpecProvider,
sampleSpecModsProvider,
new PrometheusSampleMaker(),
new PrometheusSamplesProducer(),
metricRegistry);
}

Expand All @@ -91,7 +91,7 @@ public PrometheusInstanceSamplesProvider(
InstanceSampleMaker<PrometheusSample, PrometheusInstanceSample, PrometheusInstanceSampleSpec> instanceSampleMaker,
SampleSpecProvider<PrometheusSampleSpec, PrometheusInstanceSampleSpec> sampleSpecProvider,
PredicativeMetricNamedInfoProvider<SampleSpecProvider<PrometheusSampleSpec, PrometheusInstanceSampleSpec>> sampleSpecModsProvider,
SampleMaker<PrometheusSample, PrometheusSampleSpec, PrometheusInstanceSampleSpec, PrometheusInstanceSample> sampleMaker,
SamplesProducer<PrometheusSample, PrometheusSampleSpec, PrometheusInstanceSampleSpec, PrometheusInstanceSample> samplesProducer,
MetricRegistry metricRegistry) {

super(
Expand All @@ -100,7 +100,7 @@ public PrometheusInstanceSamplesProvider(
instanceSampleMaker,
sampleSpecProvider,
sampleSpecModsProvider,
sampleMaker,
samplesProducer,
metricRegistry);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -16,15 +16,15 @@ public class PrometheusInstanceSamplesProviderBuilder {
private InstanceSampleMaker<PrometheusSample, PrometheusInstanceSample, PrometheusInstanceSampleSpec> instanceSampleMaker;
private SampleSpecProvider<PrometheusSampleSpec, PrometheusInstanceSampleSpec> sampleSpecProvider;
private PredicativeMetricNamedInfoProvider<SampleSpecProvider<PrometheusSampleSpec, PrometheusInstanceSampleSpec>> sampleSpecModsProvider;
private SampleMaker<PrometheusSample, PrometheusSampleSpec, PrometheusInstanceSampleSpec, PrometheusInstanceSample> sampleMaker;
private SamplesProducer<PrometheusSample, PrometheusSampleSpec, PrometheusInstanceSampleSpec, PrometheusInstanceSample> samplesProducer;
private final MetricRegistry metricRegistry;

public PrometheusInstanceSamplesProviderBuilder(MetricRegistry metricRegistry) {
this.metricRegistry = requireNonNull(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) {
Expand Down Expand Up @@ -56,8 +56,8 @@ public PrometheusInstanceSamplesProviderBuilder sampleSpecModsProvider(Predicati
return this;
}

public PrometheusInstanceSamplesProviderBuilder sampleMaker(SampleMaker<PrometheusSample, PrometheusSampleSpec, PrometheusInstanceSampleSpec, PrometheusInstanceSample> sampleMaker) {
this.sampleMaker = requireNonNull(sampleMaker);
public PrometheusInstanceSamplesProviderBuilder samplesProducer(SamplesProducer<PrometheusSample, PrometheusSampleSpec, PrometheusInstanceSampleSpec, PrometheusInstanceSample> samplesProducer) {
this.samplesProducer = requireNonNull(samplesProducer);
return this;
}

Expand All @@ -68,7 +68,7 @@ public PrometheusInstanceSamplesProvider build() {
instanceSampleMaker,
sampleSpecProvider,
sampleSpecModsProvider,
sampleMaker,
samplesProducer,
metricRegistry);
}
}
Loading

0 comments on commit 3479516

Please sign in to comment.