remove confusing type and dimensions labeling methods

This commit is contained in:
Jonathan Shook 2023-09-09 20:31:04 -05:00
parent 4294758c52
commit bf3e9636c0
21 changed files with 32 additions and 96 deletions

View File

@ -51,7 +51,7 @@ public class AmqpAdapterMetrics {
public AmqpAdapterMetrics(final AmqpBaseOpDispenser amqpBaseOpDispenser, final NBLabeledElement labeledParent) {
this.amqpBaseOpDispenser = amqpBaseOpDispenser;
labels=labeledParent.getLabels().andTypes("name", AmqpAdapterMetrics.class.getSimpleName());
labels=labeledParent.getLabels().and("name", AmqpAdapterMetrics.class.getSimpleName());
}
public void initS4JAdapterInstrumentation() {

View File

@ -71,13 +71,13 @@ public class NamingFolio {
* by name, type, table, keyspace. For now it just returns everything in fully qualified form.
*/
public String nameFor(NBLabeledElement labeled, String... fields) {
NBLabels labelsPlus = labeled.getLabels().andTypes(fields);
NBLabels labelsPlus = labeled.getLabels().and(fields);
String name = namer.apply(labelsPlus.asMap());
return name;
}
public String nameFor(NBLabeledElement labeled, Map<String,String> fields) {
NBLabels labelsPlus = labeled.getLabels().andTypes(fields);
NBLabels labelsPlus = labeled.getLabels().and(fields);
String name = namer.apply(labelsPlus.asMap());
return name;

View File

@ -42,6 +42,6 @@ public class CqlTableColumn extends CqlColumnBase {
@Override
public NBLabels getLabels() {
return super.getLabels().andTypes("table", table.getName());
return super.getLabels().and("table", table.getName());
}
}

View File

@ -42,6 +42,6 @@ public class CqlTypeColumn extends CqlColumnBase {
@Override
public NBLabels getLabels() {
return super.getLabels().andTypes("name", this.type.getName());
return super.getLabels().and("name", this.type.getName());
}
}

View File

@ -171,6 +171,6 @@ public class DiagTask_gauge extends BaseDiagTask implements Gauge<Double> {
@Override
public NBLabels getLabels() {
return super.getLabels().andTypes("stat",this.stat.toString());
return super.getLabels().and("stat",this.stat.toString());
}
}

View File

@ -51,7 +51,7 @@ public class KafkaAdapterMetrics {
public KafkaAdapterMetrics(final KafkaBaseOpDispenser kafkaBaseOpDispenser, final NBLabeledElement labeledParent) {
this.kafkaBaseOpDispenser = kafkaBaseOpDispenser;
labels=labeledParent.getLabels().andTypes("name",KafkaAdapterMetrics.class.getSimpleName());
labels=labeledParent.getLabels().and("name",KafkaAdapterMetrics.class.getSimpleName());
}
public void initS4JAdapterInstrumentation() {

View File

@ -354,7 +354,7 @@ public class ParsedOp implements LongFunction<Map<String, ?>>, NBLabeledElement,
activityCfg.getMap())
);
NBLabels opLabels = parent.getLabels().andTypes("op", this.getName());
NBLabels opLabels = parent.getLabels().and("op", this.getName());
if (tmap.isStatic("labels")) {
Object labelSpecObject = tmap.takeStaticValue("labels", Object.class);
if (labelSpecObject instanceof String labelsSpec) {

View File

@ -95,7 +95,7 @@ public class SimpleActivity implements Activity {
public SimpleActivity(ActivityDef activityDef, NBLabeledElement parentLabels) {
NBLabels activityLabels = parentLabels.getLabels()
.andTypes("activity", activityDef.getAlias());
.and("activity", activityDef.getAlias());
Optional<String> auxLabelSpec = activityDef.getParams().getOptionalString("labels");
if (auxLabelSpec.isPresent()) {
activityLabels = activityLabels.and(NBLabelSpec.parseLabels(auxLabelSpec.get()));

View File

@ -161,7 +161,7 @@ public class NBCLI implements Function<String[], Integer>, NBLabeledElement {
this.sessionCode = SystemId.genSessionCode(sessionTime);
this.sessionName = SessionNamer.format(globalOptions.getSessionName(),sessionTime).replaceAll("SESSIONCODE",sessionCode);
this.labels = NBLabels.forKV("appname", "nosqlbench")
.andInstances("node",SystemId.getNodeId())
.and("node",SystemId.getNodeId())
.and(globalOptions.getLabelMap());
NBCLI.loggerConfig

View File

@ -59,10 +59,10 @@ public class GrafanaMetricsAnnotator implements Annotator, NBConfigurable {
ga.setTime(annotation.getStart());
ga.setTimeEnd(annotation.getEnd());
annotation.getLabels().onlyTypes().asMap().forEach((k, v) -> {
annotation.getLabels().asMap().forEach((k, v) -> {
ga.getTags().add(k + ":" + v);
});
annotation.getLabels().onlyInstances().asMap().forEach((k,v)->{
annotation.getLabels().asMap().forEach((k,v)->{
ga.addText(" " + k + ":" + v);
});
ga.getTags().add("layer:" + annotation.getLayer().toString());

View File

@ -82,7 +82,7 @@ public class Scenario implements Callable<ExecutionMetricsResult>, NBLabeledElem
@Override
public NBLabels getLabels() {
return this.parentComponent.getLabels().andTypes("scenario", this.scenarioName);
return this.parentComponent.getLabels().and("scenario", this.scenarioName);
}
public enum State {

View File

@ -24,7 +24,7 @@ import java.util.Map;
public class AveragePrecision extends BaseRelevancyFunction {
private final int k;
public AveragePrecision(String name, int k, Map<String,String> labels) {
super(name, NBLabels.forKV("k",labels).andTypes(labels));
super(name, NBLabels.forKV("k",labels).and(labels));
this.k = k;
}
public AveragePrecision(String name, int k, Object... labels) {

View File

@ -25,7 +25,7 @@ public class F1 extends BaseRelevancyFunction {
private final int k;
public F1(String name, int k, Map<String,String> labels) {
super(name, NBLabels.forKV("k",labels).andTypes(labels));
super(name, NBLabels.forKV("k",labels).and(labels));
this.k = k;
}
public F1(String name, int k, Object... labels) {

View File

@ -25,7 +25,7 @@ public class Precision extends BaseRelevancyFunction {
private final int k;
public Precision(String name, int k, Map<String,String> labels) {
super(name,NBLabels.forKV("k",labels).andTypes(labels));
super(name,NBLabels.forKV("k",labels).and(labels));
this.k = k;
}
public Precision(String name, int k, Object... labels) {

View File

@ -29,7 +29,7 @@ public class Recall extends BaseRelevancyFunction {
this.k = k;
}
public Recall(String name, int k, Map<String,String> labels) {
super(name, NBLabels.forKV("k",labels).andTypes(labels));
super(name, NBLabels.forKV("k",labels).and(labels));
this.k = k;
}

View File

@ -25,7 +25,7 @@ public class ReciprocalRank extends BaseRelevancyFunction {
private final int k;
public ReciprocalRank(String name, int k, Map<String,String> labels) {
super(name, NBLabels.forKV("k",labels).andTypes(labels));
super(name, NBLabels.forKV("k",labels).and(labels));
this.k = k;
}
public ReciprocalRank(String name, int k, Object... labels) {

View File

@ -24,17 +24,15 @@ import java.util.regex.Pattern;
public class MapLabels implements NBLabels {
private final Map<String,String> labels;
private String[] instanceFields = new String[0];
public MapLabels(final Map<String, String> labels, String... instanceFields) {
verifyValidNamesAndValues(labels);
// verifyValidValues(labels);
this.labels = Collections.unmodifiableMap(labels);
this.instanceFields = instanceFields;
}
public MapLabels(final Map<String,String> parentLabels, final Map<String,String> childLabels, String... instanceFields) {
public MapLabels(final Map<String,String> parentLabels, final Map<String,String> childLabels) {
final Map<String, String> combined = new LinkedHashMap<>(parentLabels);
childLabels.forEach((k,v) -> {
if (combined.containsKey(k))
@ -43,7 +41,6 @@ public class MapLabels implements NBLabels {
});
verifyValidNamesAndValues(combined);
// verifyValidValues(combined);
this.instanceFields = instanceFields;
labels=Collections.unmodifiableMap(combined);
}
@ -124,27 +121,14 @@ public class MapLabels implements NBLabels {
}
@Override
public MapLabels andTypes(final Object... labelsAndValues) {
public MapLabels and(final Object... labelsAndValues) {
final Map<String,String> childLabels = getStringStringMap(labelsAndValues);
return new MapLabels(labels,childLabels);
}
@Override
public MapLabels and(NBLabels labels) {
return new MapLabels(this.labels,labels.asMap(), concat(this.instanceFields,labels.getInstanceFields()));
}
@Override
public MapLabels andInstances(final Object... labelsAndValues) {
final Map<String,String> childLabels = getStringStringMap(labelsAndValues);
String[] childInstanceFields = getNamesArray(labelsAndValues);
return new MapLabels(this.labels,childLabels,concat(this.instanceFields,getNamesArray(labelsAndValues)));
}
@Override
public MapLabels andInstances(Map<String, String> instanceLabelsAndValues) {
return new MapLabels(this.labels,instanceLabelsAndValues,instanceLabelsAndValues.keySet().toArray(new String[0]));
return new MapLabels(this.labels,labels.asMap());
}
@Override
public NBLabels modifyName(final String nameToModify, final Function<String, String> transform) {
@ -194,30 +178,7 @@ public class MapLabels implements NBLabels {
}
@Override
public NBLabels onlyTypes() {
Map<String,String> typesOnlyMap = new LinkedHashMap<>(this.labels);
for (String instanceField : this.instanceFields) {
typesOnlyMap.remove(instanceField);
}
return new MapLabels(typesOnlyMap);
}
@Override
public NBLabels onlyInstances() {
Map<String,String> instancesOnlyMap = new LinkedHashMap<>();
for (String instanceField : this.instanceFields) {
instancesOnlyMap.put(instanceField,this.labels.get(instanceField));
}
return new MapLabels(instancesOnlyMap);
}
@Override
public String[] getInstanceFields() {
return instanceFields;
}
@Override
public NBLabels andTypes(final Map<String, String> moreLabels) {
public NBLabels and(final Map<String, String> moreLabels) {
return new MapLabels(this.labels, moreLabels);
}

View File

@ -142,7 +142,7 @@ public interface NBLabels {
* Keys and values in "key1", "value1", "key2", "value2", ... form
* @return A new NBLabels instance
*/
NBLabels andTypes(Object... typeLabelsAndValues);
NBLabels and(Object... typeLabelsAndValues);
NBLabels and(NBLabels labels);
/**
@ -150,10 +150,7 @@ public interface NBLabels {
* @param typeLabelsAndValues a map of keys and values
* @return A new NBLabels instance
*/
NBLabels andTypes(Map<String, String> typeLabelsAndValues);
NBLabels andInstances(Object... instanceLabelsAndValues);
NBLabels andInstances(Map<String,String> instanceLabelsAndValues);
NBLabels and(Map<String, String> typeLabelsAndValues);
/**
* Return the value of the specified label key.
@ -176,9 +173,5 @@ public interface NBLabels {
/**
* @return a new set of labels which includes only those which are not using per-instance semantics.
*/
NBLabels onlyTypes();
NBLabels onlyInstances();
String[] getInstanceFields();
}

View File

@ -106,7 +106,7 @@ public class ActivityMetrics {
* @return the timer, perhaps a different one if it has already been registered
*/
public static Timer timer(NBLabeledElement parent, String metricFamilyName, int hdrdigits) {
final NBLabels labels = parent.getLabels().andTypes("name",sanitize(metricFamilyName));
final NBLabels labels = parent.getLabels().and("name",sanitize(metricFamilyName));
Timer registeredTimer = (Timer) register(labels, () ->
@ -135,7 +135,7 @@ public class ActivityMetrics {
* @return the histogram, perhaps a different one if it has already been registered
*/
public static Histogram histogram(NBLabeledElement labeled, String metricFamilyName, int hdrdigits) {
final NBLabels labels = labeled.getLabels().andTypes("name", sanitize(metricFamilyName));
final NBLabels labels = labeled.getLabels().and("name", sanitize(metricFamilyName));
return (Histogram) register(labels, () ->
new NBMetricHistogram(
labels,
@ -158,7 +158,7 @@ public class ActivityMetrics {
* @return the counter, perhaps a different one if it has already been registered
*/
public static Counter counter(NBLabeledElement parent, String metricFamilyName) {
final NBLabels labels = parent.getLabels().andTypes("name",metricFamilyName);
final NBLabels labels = parent.getLabels().and("name",metricFamilyName);
return (Counter) register(labels, () -> new NBMetricCounter(labels));
}
@ -174,7 +174,7 @@ public class ActivityMetrics {
* @return the meter, perhaps a different one if it has already been registered
*/
public static Meter meter(NBLabeledElement parent, String metricFamilyName) {
final NBLabels labels = parent.getLabels().andTypes("name",sanitize(metricFamilyName));
final NBLabels labels = parent.getLabels().and("name",sanitize(metricFamilyName));
return (Meter) register(labels, () -> new NBMetricMeter(labels));
}
@ -204,7 +204,7 @@ public class ActivityMetrics {
DoubleSummaryGauge anyGauge = null;
for (DoubleSummaryGauge.Stat statName: DoubleSummaryGauge.Stat.values()){
final NBLabels labels = parent.getLabels()
.andTypes("name",sanitize(metricFamilyName))
.and("name",sanitize(metricFamilyName))
.modifyValue("name", n -> n+"_"+statName.name().toLowerCase());
anyGauge= (DoubleSummaryGauge) register(labels, () -> new DoubleSummaryGauge(labels,statName,stats));
}
@ -213,7 +213,7 @@ public class ActivityMetrics {
@SuppressWarnings("unchecked")
public static <T> Gauge<T> gauge(NBLabeledElement parent, String metricFamilyName, Gauge<T> gauge) {
final NBLabels labels = parent.getLabels().andTypes("name",sanitize(metricFamilyName));
final NBLabels labels = parent.getLabels().and("name",sanitize(metricFamilyName));
return (Gauge<T>) register(labels, () -> new NBMetricGaugeWrapper<>(labels,gauge));
}

View File

@ -85,13 +85,13 @@ public class PromExpositionFormat {
for (final double quantile : new double[]{0.5, 0.75, 0.90, 0.95, 0.98, 0.99, 0.999}) {
final double value = snapshot.getValue(quantile);
buffer
.append(labels.modifyValue("name",n -> n+"_bucket").andTypes("le", String.valueOf(quantile)).linearize("name"))
.append(labels.modifyValue("name",n -> n+"_bucket").and("le", String.valueOf(quantile)).linearize("name"))
// .append(labels.andTypes("quantile", String.valueOf(quantile)).linearize("name"))
.append(' ')
.append(value)
.append('\n');
}
buffer.append(labels.modifyValue("name",n->n+"_bucket").andTypes("le","+Inf").linearize("name"))
buffer.append(labels.modifyValue("name",n->n+"_bucket").and("le","+Inf").linearize("name"))
.append(' ')
.append(snapshot.getMax())
.append('\n');

View File

@ -32,24 +32,6 @@ public class MapLabelsTest {
assertThat(result).isEqualTo("value_a_value_c");
}
@Test
public void testInstances() {
final MapLabels l1 = new MapLabels(Map.of("key_a", "value_a", "key_c", "value_c"),"key_c");
NBLabels typesOnly = l1.onlyTypes();
assertThat(typesOnly.linearizeValues()).isEqualTo("value_a");
}
@Test
public void testInstanceCombination() {
final MapLabels l1 = new MapLabels(Map.of("key_a", "value_a"),Map.of("key_c", "value_c"),"key_c");
final MapLabels l2 = new MapLabels(Map.of("key_dog", "value_dog"),Map.of( "key_cat", "value_cat"),"key_dog");
final MapLabels l3 = l1.and(l2);
assertThat(l3.linearizeValues()).matches("value_a.value_c.value_dog.value_cat");
assertThat(l3.onlyTypes().linearizeValues()).matches("value_a.value_cat");
assertThat(l3.onlyInstances().linearizeValues()).matches("value_c.value_dog");
}
@Test
public void testInvalidCharacters() {