MetricSet.builder() .name(canaryMetricConfig.getName()) .startTimeMillis(entry.getStartMills())
public MetricSetPair mixOne(MetricSet controlMetricSet, MetricSet experimentMetricSet) { String controlName = controlMetricSet.getName(); String experimentName = experimentMetricSet.getName(); Map<String, String> controlTags = controlMetricSet.getTags(); Map<String, String> experimentTags = experimentMetricSet.getTags(); List<Double> controlValues = controlMetricSet.getValues(); List<Double> experimentValues = experimentMetricSet.getValues(); MetricSetPair.MetricSetScope controlScope = MetricSetPair.MetricSetScope.builder() .startTimeIso(controlMetricSet.getStartTimeIso()) .startTimeMillis(controlMetricSet.getStartTimeMillis()) .stepMillis(controlMetricSet.getStepMillis()) .build(); MetricSetPair.MetricSetScope experimentScope = MetricSetPair.MetricSetScope.builder() .startTimeIso(experimentMetricSet.getStartTimeIso()) .startTimeMillis(experimentMetricSet.getStartTimeMillis()) .stepMillis(experimentMetricSet.getStepMillis()) .build(); if (controlMetricSet.expectedDataPoints() > controlValues.size()) { controlValues = new ArrayList<>(controlValues); while (controlMetricSet.expectedDataPoints() > controlValues.size()) { controlValues.add(Double.NaN); if (experimentMetricSet.expectedDataPoints() > experimentValues.size()) { experimentValues = new ArrayList<>(experimentValues); while (experimentMetricSet.expectedDataPoints() > experimentValues.size()) { experimentValues.add(Double.NaN);
private static List<MetricSet> findMissingMetricSets(List<MetricSet> requiredMetricSetList, Map<String, MetricSet> knownMetricSetMap) { return requiredMetricSetList .stream() .filter(requiredMetricSet -> !knownMetricSetMap.containsKey(requiredMetricSet.getMetricSetKey())) .collect(Collectors.toList()); }
private static void addMissingMetricSets(List<MetricSet> knownMetricSetList, List<MetricSet> missingMetricSetList) { knownMetricSetList.addAll( missingMetricSetList .stream() .map(metricSet -> MetricSet .builder() .name(metricSet.getName()) .tags(metricSet.getTags()) .build()) .collect(Collectors.toList())); } }
private static void addMissingMetricSets(List<MetricSet> knownMetricSetList, List<MetricSet> missingMetricSetList) { knownMetricSetList.addAll( missingMetricSetList .stream() .map(metricSet -> MetricSet .builder() .name(metricSet.getName()) .tags(metricSet.getTags()) .build()) .collect(Collectors.toList())); } }
MetricSet metricSet = MetricSet.builder() .name(canaryMetricConfig.getName()) .startTimeMillis(startEpochMilli)
public MetricSetPair mixOne(MetricSet controlMetricSet, MetricSet experimentMetricSet) { String controlName = controlMetricSet.getName(); String experimentName = experimentMetricSet.getName(); Map<String, String> controlTags = controlMetricSet.getTags(); Map<String, String> experimentTags = experimentMetricSet.getTags(); List<Double> controlValues = controlMetricSet.getValues(); List<Double> experimentValues = experimentMetricSet.getValues(); MetricSetPair.MetricSetScope controlScope = MetricSetPair.MetricSetScope.builder() .startTimeIso(controlMetricSet.getStartTimeIso()) .startTimeMillis(controlMetricSet.getStartTimeMillis()) .stepMillis(controlMetricSet.getStepMillis()) .build(); MetricSetPair.MetricSetScope experimentScope = MetricSetPair.MetricSetScope.builder() .startTimeIso(experimentMetricSet.getStartTimeIso()) .startTimeMillis(experimentMetricSet.getStartTimeMillis()) .stepMillis(experimentMetricSet.getStepMillis()) .build(); if (controlMetricSet.expectedDataPoints() > controlValues.size()) { controlValues = new ArrayList<>(controlValues); while (controlMetricSet.expectedDataPoints() > controlValues.size()) { controlValues.add(Double.NaN); if (experimentMetricSet.expectedDataPoints() > experimentValues.size()) { experimentValues = new ArrayList<>(experimentValues); while (experimentMetricSet.expectedDataPoints() > experimentValues.size()) { experimentValues.add(Double.NaN);
public List<MetricSetPair> mixAll(List<MetricSet> controlMetricSetList, List<MetricSet> experimentMetricSetList) { if (controlMetricSetList == null) { controlMetricSetList = new ArrayList<>(); } if (experimentMetricSetList == null) { experimentMetricSetList = new ArrayList<>(); } // Build 'metric set key' -> 'metric set' maps of control and experiment so we can efficiently identify missing metric sets. Map<String, MetricSet> controlMetricSetMap = buildMetricSetMap(controlMetricSetList); Map<String, MetricSet> experimentMetricSetMap = buildMetricSetMap(experimentMetricSetList); // Identify metric sets missing from each map. List<MetricSet> missingFromExperiment = findMissingMetricSets(controlMetricSetList, experimentMetricSetMap); List<MetricSet> missingFromControl = findMissingMetricSets(experimentMetricSetList, controlMetricSetMap); // Add placeholder metric sets for each one that is missing. addMissingMetricSets(controlMetricSetList, missingFromControl); addMissingMetricSets(experimentMetricSetList, missingFromExperiment); // Sort each metric set list so that we can pair them. controlMetricSetList.sort(Comparator.comparing(metricSet -> metricSet.getMetricSetKey())); experimentMetricSetList.sort(Comparator.comparing(metricSet -> metricSet.getMetricSetKey())); // Produce the list of metric set pairs from the pair of metric set lists. List<MetricSetPair> ret = new ArrayList<>(); for (int i = 0; i < controlMetricSetList.size(); i++) { ret.add(mixOne(controlMetricSetList.get(i), experimentMetricSetList.get(i))); } return ret; }
private List<MetricSet> buildMetricSets(String metricSetName, List<InfluxDbResult> influxDbResults) { List<MetricSet> metricSets = new ArrayList<MetricSet>(); if (influxDbResults != null) { for (InfluxDbResult influxDbResult : influxDbResults) { Instant endtime = Instant.ofEpochMilli(influxDbResult.getStartTimeMillis() + influxDbResult.getStepMillis() * influxDbResult.getValues().size()); MetricSetBuilder metricSetBuilder = MetricSet.builder() .name(metricSetName) .startTimeMillis(influxDbResult.getStartTimeMillis()) .startTimeIso(Instant.ofEpochMilli(influxDbResult.getStartTimeMillis()).toString()) .endTimeMillis(endtime.toEpochMilli()) .endTimeIso(endtime.toString()) .stepMillis(influxDbResult.getStepMillis()) .values(influxDbResult.getValues()) .tag("field", influxDbResult.getId()); Map<String, String> tags = influxDbResult.getTags(); if (tags != null) { metricSetBuilder.tags(tags); } metricSets.add(metricSetBuilder.build()); } } return metricSets; } }
private static List<MetricSet> findMissingMetricSets(List<MetricSet> requiredMetricSetList, Map<String, MetricSet> knownMetricSetMap) { return requiredMetricSetList .stream() .filter(requiredMetricSet -> !knownMetricSetMap.containsKey(requiredMetricSet.getMetricSetKey())) .collect(Collectors.toList()); }
MetricSet.builder() .name(canaryMetricConfig.getName()) .startTimeMillis(begin.toEpochMilli())
public List<MetricSetPair> mixAll(List<MetricSet> controlMetricSetList, List<MetricSet> experimentMetricSetList) { if (controlMetricSetList == null) { controlMetricSetList = new ArrayList<>(); } if (experimentMetricSetList == null) { experimentMetricSetList = new ArrayList<>(); } // Build 'metric set key' -> 'metric set' maps of control and experiment so we can efficiently identify missing metric sets. Map<String, MetricSet> controlMetricSetMap = buildMetricSetMap(controlMetricSetList); Map<String, MetricSet> experimentMetricSetMap = buildMetricSetMap(experimentMetricSetList); // Identify metric sets missing from each map. List<MetricSet> missingFromExperiment = findMissingMetricSets(controlMetricSetList, experimentMetricSetMap); List<MetricSet> missingFromControl = findMissingMetricSets(experimentMetricSetList, controlMetricSetMap); // Add placeholder metric sets for each one that is missing. addMissingMetricSets(controlMetricSetList, missingFromControl); addMissingMetricSets(experimentMetricSetList, missingFromExperiment); // Sort each metric set list so that we can pair them. controlMetricSetList.sort(Comparator.comparing(metricSet -> metricSet.getMetricSetKey())); experimentMetricSetList.sort(Comparator.comparing(metricSet -> metricSet.getMetricSetKey())); // Produce the list of metric set pairs from the pair of metric set lists. List<MetricSetPair> ret = new ArrayList<>(); for (int i = 0; i < controlMetricSetList.size(); i++) { ret.add(mixOne(controlMetricSetList.get(i), experimentMetricSetList.get(i))); } return ret; }
MetricSet.builder() .name(canaryMetricConfig.getName()) .startTimeMillis(series.getStart())
Instant responseStartTimeInstant = Instant.ofEpochMilli(prometheusResults.getStartTimeMillis()); MetricSet.MetricSetBuilder metricSetBuilder = MetricSet.builder() .name(canaryMetricConfig.getName()) .startTimeMillis(prometheusResults.getStartTimeMillis()) MetricSet.builder() .name(canaryMetricConfig.getName()) .startTimeMillis(canaryScope.getStart().toEpochMilli())
MetricSet.builder() .name(canaryMetricConfig.getName()) .startTimeMillis(responseStartTimeMillis)
MetricSet.builder() .name(canaryMetricConfig.getName()) .startTimeMillis(entry.getStartMills())
MetricSet.builder() .name(canaryMetricConfig.getName()) .startTimeMillis(begin.toEpochMilli())
private List<MetricSet> buildMetricSets(String metricSetName, List<InfluxDbResult> influxDbResults) { List<MetricSet> metricSets = new ArrayList<MetricSet>(); if (influxDbResults != null) { for (InfluxDbResult influxDbResult : influxDbResults) { Instant endtime = Instant.ofEpochMilli(influxDbResult.getStartTimeMillis() + influxDbResult.getStepMillis() * influxDbResult.getValues().size()); MetricSetBuilder metricSetBuilder = MetricSet.builder() .name(metricSetName) .startTimeMillis(influxDbResult.getStartTimeMillis()) .startTimeIso(Instant.ofEpochMilli(influxDbResult.getStartTimeMillis()).toString()) .endTimeMillis(endtime.toEpochMilli()) .endTimeIso(endtime.toString()) .stepMillis(influxDbResult.getStepMillis()) .values(influxDbResult.getValues()) .tag("field", influxDbResult.getId()); Map<String, String> tags = influxDbResult.getTags(); if (tags != null) { metricSetBuilder.tags(tags); } metricSets.add(metricSetBuilder.build()); } } return metricSets; } }
MetricSet metricSet = MetricSet.builder() .name(canaryMetricConfig.getName()) .startTimeMillis(startEpochMilli)