Class: NewRelic::TransactionAnalysis::SegmentSummary

Inherits:
Object
  • Object
show all
Defined in:
lib/new_relic/transaction_analysis.rb

Overview

summarizes performance data for all calls to segments with the same metric_name

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(metric_name, sample) ⇒ SegmentSummary

Returns a new instance of SegmentSummary.



15
16
17
18
19
# File 'lib/new_relic/transaction_analysis.rb', line 15

def initialize(metric_name, sample)
  @metric_name = metric_name
  @total_time, @exclusive_time, @call_count = 0,0,0
  @sample = sample
end

Instance Attribute Details

#call_countObject

Returns the value of attribute call_count.



14
15
16
# File 'lib/new_relic/transaction_analysis.rb', line 14

def call_count
  @call_count
end

#exclusive_timeObject

Returns the value of attribute exclusive_time.



14
15
16
# File 'lib/new_relic/transaction_analysis.rb', line 14

def exclusive_time
  @exclusive_time
end

#metric_nameObject

Returns the value of attribute metric_name.



14
15
16
# File 'lib/new_relic/transaction_analysis.rb', line 14

def metric_name
  @metric_name
end

#total_timeObject

Returns the value of attribute total_time.



14
15
16
# File 'lib/new_relic/transaction_analysis.rb', line 14

def total_time
  @total_time
end

Instance Method Details

#<<(segment) ⇒ Object



21
22
23
24
25
26
27
28
29
# File 'lib/new_relic/transaction_analysis.rb', line 21

def <<(segment)
  if metric_name != segment.metric_name
    raise ArgumentError, "Metric Name Mismatch: #{segment.metric_name} != #{metric_name}" 
  end
  
  @total_time += segment.duration
  @exclusive_time += segment.exclusive_duration
  @call_count += 1
end

#average_exclusive_timeObject



35
36
37
# File 'lib/new_relic/transaction_analysis.rb', line 35

def average_exclusive_time
  @exclusive_time / @call_count
end

#average_timeObject



31
32
33
# File 'lib/new_relic/transaction_analysis.rb', line 31

def average_time
  @total_time / @call_count
end

#developer_nameObject



49
50
51
52
# File 'lib/new_relic/transaction_analysis.rb', line 49

def developer_name
  return @metric_name if @metric_name == 'Remainder'
  NewRelic::MetricParser.parse(@metric_name).developer_name
end

#exclusive_time_percentageObject



39
40
41
42
# File 'lib/new_relic/transaction_analysis.rb', line 39

def exclusive_time_percentage
  return 0 unless @exclusive_time && @sample.duration && @sample.duration > 0
  @exclusive_time / @sample.duration
end

#total_time_percentageObject



44
45
46
47
# File 'lib/new_relic/transaction_analysis.rb', line 44

def total_time_percentage
  return 0 unless @total_time && @sample.duration && @sample.duration > 0
  @total_time / @sample.duration
end