@Override public int hashCode() { int hashCode = 1; hashCode = 31 * hashCode + Objects.hashCode(sampleCount()); hashCode = 31 * hashCode + Objects.hashCode(sum()); hashCode = 31 * hashCode + Objects.hashCode(minimum()); hashCode = 31 * hashCode + Objects.hashCode(maximum()); return hashCode; }
public final StatisticSet.Builder getStatisticValues() { return statisticValues != null ? statisticValues.toBuilder() : null; }
@Override public StatisticSet build() { return new StatisticSet(this); }
/** * <p> * The statistical values for the metric. * </p> * This is a convenience that creates an instance of the {@link StatisticSet.Builder} avoiding the need to * create one manually via {@link StatisticSet#builder()}. * * When the {@link Consumer} completes, {@link StatisticSet.Builder#build()} is called immediately and its * result is passed to {@link #statisticValues(StatisticSet)}. * * @param statisticValues * a consumer that will call methods on {@link StatisticSet.Builder} * @return Returns a reference to this object so that method calls can be chained together. * @see #statisticValues(StatisticSet) */ default Builder statisticValues(Consumer<StatisticSet.Builder> statisticValues) { return statisticValues(StatisticSet.builder().applyMutation(statisticValues).build()); }
/** * <p> * The statistical values for the metric. * </p> * This is a convenience that creates an instance of the {@link StatisticSet.Builder} avoiding the need to * create one manually via {@link StatisticSet#builder()}. * * When the {@link Consumer} completes, {@link StatisticSet.Builder#build()} is called immediately and its * result is passed to {@link #statisticValues(StatisticSet)}. * * @param statisticValues * a consumer that will call methods on {@link StatisticSet.Builder} * @return Returns a reference to this object so that method calls can be chained together. * @see #statisticValues(StatisticSet) */ default Builder statisticValues(Consumer<StatisticSet.Builder> statisticValues) { return statisticValues(StatisticSet.builder().applyMutation(statisticValues).build()); }
/** * Returns a string representation of this object. This is useful for testing and debugging. Sensitive data will be * redacted from this string using a placeholder value. */ @Override public String toString() { return ToString.builder("StatisticSet").add("SampleCount", sampleCount()).add("Sum", sum()).add("Minimum", minimum()) .add("Maximum", maximum()).build(); }
public final StatisticSet.Builder getStatisticValues() { return statisticValues != null ? statisticValues.toBuilder() : null; }
@Override public StatisticSet build() { return new StatisticSet(this); }
@Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (!(obj instanceof StatisticSet)) { return false; } StatisticSet other = (StatisticSet) obj; return Objects.equals(sampleCount(), other.sampleCount()) && Objects.equals(sum(), other.sum()) && Objects.equals(minimum(), other.minimum()) && Objects.equals(maximum(), other.maximum()); }
@Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (!(obj instanceof StatisticSet)) { return false; } StatisticSet other = (StatisticSet) obj; return Objects.equals(sampleCount(), other.sampleCount()) && Objects.equals(sum(), other.sum()) && Objects.equals(minimum(), other.minimum()) && Objects.equals(maximum(), other.maximum()); }
@Override public int hashCode() { int hashCode = 1; hashCode = 31 * hashCode + Objects.hashCode(sampleCount()); hashCode = 31 * hashCode + Objects.hashCode(sum()); hashCode = 31 * hashCode + Objects.hashCode(minimum()); hashCode = 31 * hashCode + Objects.hashCode(maximum()); return hashCode; }
/** * Returns a string representation of this object. This is useful for testing and debugging. Sensitive data will be * redacted from this string using a placeholder value. */ @Override public String toString() { return ToString.builder("StatisticSet").add("SampleCount", sampleCount()).add("Sum", sum()).add("Minimum", minimum()) .add("Maximum", maximum()).build(); }
public <T> Optional<T> getValueForField(String fieldName, Class<T> clazz) { switch (fieldName) { case "SampleCount": return Optional.ofNullable(clazz.cast(sampleCount())); case "Sum": return Optional.ofNullable(clazz.cast(sum())); case "Minimum": return Optional.ofNullable(clazz.cast(minimum())); case "Maximum": return Optional.ofNullable(clazz.cast(maximum())); default: return Optional.empty(); } }
public <T> Optional<T> getValueForField(String fieldName, Class<T> clazz) { switch (fieldName) { case "SampleCount": return Optional.ofNullable(clazz.cast(sampleCount())); case "Sum": return Optional.ofNullable(clazz.cast(sum())); case "Minimum": return Optional.ofNullable(clazz.cast(minimum())); case "Maximum": return Optional.ofNullable(clazz.cast(maximum())); default: return Optional.empty(); } }
@Override public void end() { StringBuilder output = new StringBuilder(); output.append("Metrics:\n"); output.append("Dimensions: "); boolean needsComma = false; for (Dimension dimension : getDimensions()) { output.append(String.format("%s[%s: %s]", needsComma ? ", " : "", dimension.name(), dimension.value())); needsComma = true; } output.append("\n"); for (MetricDatum datum : data.values()) { StatisticSet statistics = datum.statisticValues(); output.append(String.format("Name=%25s\tMin=%.2f\tMax=%.2f\tCount=%.2f\tSum=%.2f\tAvg=%.2f\tUnit=%s\n", datum.metricName(), statistics.minimum(), statistics.maximum(), statistics.sampleCount(), statistics.sum(), statistics.sum() / statistics.sampleCount(), datum.unit())); } log.info(output.toString()); } }
private void accumulate(MetricDatumWithKey<KeyType> metricDatumWithKey, MetricDatum newDatum) { MetricDatum oldDatum = metricDatumWithKey.datum; if (!oldDatum.unit().equals(newDatum.unit())) { throw new IllegalArgumentException("Unit mismatch for datum named " + oldDatum.metricName()); } StatisticSet oldStats = oldDatum.statisticValues(); StatisticSet newStats = newDatum.statisticValues(); StatisticSet statisticSet = oldStats.toBuilder().sum(oldStats.sum() + newStats.sum()) .minimum(Math.min(oldStats.minimum(), newStats.minimum())) .maximum(Math.max(oldStats.maximum(), newStats.maximum())) .sampleCount(oldStats.sampleCount() + newStats.sampleCount()).build(); MetricDatum datum = oldDatum.toBuilder().statisticValues(statisticSet).build(); metricDatumWithKey.datum(datum); } }
@Override public void end() { StringBuilder output = new StringBuilder(); output.append("Metrics:\n"); output.append("Dimensions: "); boolean needsComma = false; for (Dimension dimension : getDimensions()) { output.append(String.format("%s[%s: %s]", needsComma ? ", " : "", dimension.name(), dimension.value())); needsComma = true; } output.append("\n"); for (MetricDatum datum : data.values()) { StatisticSet statistics = datum.statisticValues(); output.append(String.format("Name=%25s\tMin=%.2f\tMax=%.2f\tCount=%.2f\tSum=%.2f\tAvg=%.2f\tUnit=%s\n", datum.metricName(), statistics.minimum(), statistics.maximum(), statistics.sampleCount(), statistics.sum(), statistics.sum() / statistics.sampleCount(), datum.unit())); } log.info(output.toString()); } }
private void accumulate(MetricDatumWithKey<KeyType> metricDatumWithKey, MetricDatum newDatum) { MetricDatum oldDatum = metricDatumWithKey.datum; if (!oldDatum.unit().equals(newDatum.unit())) { throw new IllegalArgumentException("Unit mismatch for datum named " + oldDatum.metricName()); } StatisticSet oldStats = oldDatum.statisticValues(); StatisticSet newStats = newDatum.statisticValues(); StatisticSet statisticSet = oldStats.toBuilder().sum(oldStats.sum() + newStats.sum()) .minimum(Math.min(oldStats.minimum(), newStats.minimum())) .maximum(Math.max(oldStats.maximum(), newStats.maximum())) .sampleCount(oldStats.sampleCount() + newStats.sampleCount()).build(); MetricDatum datum = oldDatum.toBuilder().statisticValues(statisticSet).build(); metricDatumWithKey.datum(datum); } }
metricDatum = MetricDatum.builder().metricName(name).unit(unit) .statisticValues( StatisticSet.builder().maximum(value).minimum(value).sampleCount(1.0).sum(value).build()) .build(); } else { final StatisticSet statisticSet = oldStatisticSet.toBuilder() .maximum(Math.max(value, oldStatisticSet.maximum())) .minimum(Math.min(value, oldStatisticSet.minimum())).sampleCount(oldStatisticSet.sampleCount() + 1) .sum(oldStatisticSet.sum() + value).build();
metricDatum = MetricDatum.builder().metricName(name).unit(unit) .statisticValues( StatisticSet.builder().maximum(value).minimum(value).sampleCount(1.0).sum(value).build()) .build(); } else { final StatisticSet statisticSet = oldStatisticSet.toBuilder() .maximum(Math.max(value, oldStatisticSet.maximum())) .minimum(Math.min(value, oldStatisticSet.minimum())).sampleCount(oldStatisticSet.sampleCount() + 1) .sum(oldStatisticSet.sum() + value).build();