Sha256: a5b1d8bc28a2b7f9ccc9559e9664dfd881dc5ad5c11b992c4898cf6a4336dd24

Contents?: true

Size: 1.97 KB

Versions: 8

Compression:

Stored size: 1.97 KB

Contents

module NewRelic
  class MetricData
    # nil, or a NewRelic::MetricSpec object if we have no cached ID
    attr_accessor :metric_spec
    # nil or a cached integer ID for the metric from the collector.
    attr_accessor :metric_id
    # the actual statistics object
    attr_accessor :stats

    def initialize(metric_spec, stats, metric_id)
      @metric_spec = metric_spec
      self.stats = stats
      self.metric_id = metric_id
    end

    def eql?(o)
     (metric_spec.eql? o.metric_spec) && (stats.eql? o.stats)
    end

    def original_spec
      @original_spec || @metric_spec
    end

    # assigns a new metric spec, and retains the old metric spec as
    # @original_spec if it exists currently
    def metric_spec= new_spec
      @original_spec = @metric_spec if @metric_spec
      @metric_spec = new_spec
    end

    def hash
      metric_spec.hash ^ stats.hash
    end

    # Serialize with all attributes, but if the metric id is not nil, then don't send the metric spec
    def to_json(*a)
       %Q[{"metric_spec":#{metric_id ? 'null' : metric_spec.to_json},"stats":{"total_exclusive_time":#{stats.total_exclusive_time},"min_call_time":#{stats.min_call_time},"call_count":#{stats.call_count},"sum_of_squares":#{stats.sum_of_squares},"total_call_time":#{stats.total_call_time},"max_call_time":#{stats.max_call_time}},"metric_id":#{metric_id ? metric_id : 'null'}}]
    end

    def to_s
      if metric_spec
        "#{metric_spec.name}(#{metric_spec.scope}): #{stats}"
      else
        "#{metric_id}: #{stats}"
      end
    end

    def inspect
      "#<MetricData metric_spec:#{metric_spec.inspect}, stats:#{stats.inspect}, metric_id:#{metric_id.inspect}>"
    end

    def to_collector_array(marshaller=nil)
      stat_key = metric_id || { 'name' => metric_spec.name, 'scope' => metric_spec.scope }
      [ stat_key,
        [ stats.call_count, stats.total_call_time, stats.total_exclusive_time,
          stats.min_call_time, stats.max_call_time, stats.sum_of_squares ] ]
    end
  end
end

Version data entries

8 entries across 8 versions & 2 rubygems

Version Path
newrelic_rpm-3.5.4.35.beta lib/new_relic/metric_data.rb
newrelic_rpm-3.5.4.34 lib/new_relic/metric_data.rb
newrelic_rpm-3.5.4.33 lib/new_relic/metric_data.rb
newrelic_rpm-3.5.4.31.beta lib/new_relic/metric_data.rb
newrelic_rpm-3.5.4.29.beta lib/new_relic/metric_data.rb
ghazel-newrelic_rpm-3.5.4 lib/new_relic/metric_data.rb
newrelic_rpm-3.5.3.25 lib/new_relic/metric_data.rb
newrelic_rpm-3.5.3.24 lib/new_relic/metric_data.rb