lib/ddtelemetry/summary.rb in ddtelemetry-1.0.0a1 vs lib/ddtelemetry/summary.rb in ddtelemetry-1.0.0a2

- old
+ new

@@ -1,55 +1,18 @@ # frozen_string_literal: true module DDTelemetry - class Summary - class EmptySummaryError < StandardError - def message - 'Cannot calculate quantile for empty summary' - end + class Summary < Metric + def observe(value, label) + basic_metric_for(label, BasicSummary).observe(value) end - def initialize - @values = [] + def get(label) + values = basic_metric_for(label, BasicSummary).values + DDTelemetry::Stats.new(values) end - def observe(value) - @values << value - @sorted_values = nil - end - - def count - @values.size - end - - def sum - raise EmptySummaryError if @values.empty? - @values.reduce(:+) - end - - def avg - sum / count - end - - def min - quantile(0.0) - end - - def max - quantile(1.0) - end - - def quantile(fraction) - raise EmptySummaryError if @values.empty? - - target = (@values.size - 1) * fraction.to_f - interp = target % 1.0 - sorted_values[target.floor] * (1.0 - interp) + sorted_values[target.ceil] * interp - end - - private - - def sorted_values - @sorted_values ||= @values.sort + def to_s + DDTelemetry::Printer.new.summary_to_s(self) end end end