Sha256: ccdfc1a723ce1a78a978f71eab6fe28da9d17b59d5b68ca1397dd11cfde0f652

Contents?: true

Size: 1.91 KB

Versions: 36

Compression:

Stored size: 1.91 KB

Contents

# encoding: utf-8
# This file is distributed under New Relic's license terms.
# See https://github.com/newrelic/rpm/blob/master/LICENSE for complete details.

require 'new_relic/coerce'

module NewRelic
  class MetricData
    # a NewRelic::MetricSpec object
    attr_reader :metric_spec
    # the actual statistics object
    attr_accessor :stats

    def initialize(metric_spec, stats)
      @original_spec = nil
      @metric_spec = metric_spec
      self.stats = stats
    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

    def to_json(*a)
       %Q[{"metric_spec":#{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}}}]
    end

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

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

    include NewRelic::Coerce

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

Version data entries

36 entries across 36 versions & 1 rubygems

Version Path
newrelic_rpm-6.11.0.365 lib/new_relic/metric_data.rb
newrelic_rpm-6.10.0.364 lib/new_relic/metric_data.rb
newrelic_rpm-6.9.0.363 lib/new_relic/metric_data.rb
newrelic_rpm-6.8.0.360 lib/new_relic/metric_data.rb
newrelic_rpm-6.7.0.359 lib/new_relic/metric_data.rb
newrelic_rpm-6.6.0.358 lib/new_relic/metric_data.rb
newrelic_rpm-6.5.0.357 lib/new_relic/metric_data.rb
newrelic_rpm-6.4.0.356 lib/new_relic/metric_data.rb
newrelic_rpm-6.3.0.355 lib/new_relic/metric_data.rb
newrelic_rpm-6.2.0.354 lib/new_relic/metric_data.rb
newrelic_rpm-6.1.0.352 lib/new_relic/metric_data.rb
newrelic_rpm-6.0.0.351 lib/new_relic/metric_data.rb
newrelic_rpm-5.7.0.350 lib/new_relic/metric_data.rb
newrelic_rpm-5.6.0.349 lib/new_relic/metric_data.rb
newrelic_rpm-5.5.0.348 lib/new_relic/metric_data.rb
newrelic_rpm-5.4.0.347 lib/new_relic/metric_data.rb
newrelic_rpm-5.3.0.346 lib/new_relic/metric_data.rb
newrelic_rpm-5.2.0.345 lib/new_relic/metric_data.rb
newrelic_rpm-5.1.0.344 lib/new_relic/metric_data.rb
newrelic_rpm-5.0.0.342 lib/new_relic/metric_data.rb