Class: OneApm::TransactionAnalysis::SegmentSummary

Inherits:
Object
  • Object
show all
Defined in:
lib/one_apm/transaction/segment_summary.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.



9
10
11
12
13
14
# File 'lib/one_apm/transaction/segment_summary.rb', line 9

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

Instance Attribute Details

#call_countObject

Returns the value of attribute call_count.



8
9
10
# File 'lib/one_apm/transaction/segment_summary.rb', line 8

def call_count
  @call_count
end

#current_nest_countObject

Returns the value of attribute current_nest_count.



8
9
10
# File 'lib/one_apm/transaction/segment_summary.rb', line 8

def current_nest_count
  @current_nest_count
end

#exclusive_timeObject

Returns the value of attribute exclusive_time.



8
9
10
# File 'lib/one_apm/transaction/segment_summary.rb', line 8

def exclusive_time
  @exclusive_time
end

#metric_nameObject

Returns the value of attribute metric_name.



8
9
10
# File 'lib/one_apm/transaction/segment_summary.rb', line 8

def metric_name
  @metric_name
end

#total_timeObject

Returns the value of attribute total_time.



8
9
10
# File 'lib/one_apm/transaction/segment_summary.rb', line 8

def total_time
  @total_time
end

Instance Method Details

#<<(segment) ⇒ Object



16
17
18
19
20
21
22
23
24
25
# File 'lib/one_apm/transaction/segment_summary.rb', line 16

def <<(segment)
  if metric_name != segment.metric_name
    raise ArgumentError, "Metric Name Mismatch: #{segment.metric_name} != #{metric_name}"
  end

  # a nested segment should use the sum of the top level totals
  @total_time += segment.duration if current_nest_count == 0
  @exclusive_time += segment.exclusive_duration
  @call_count += 1
end

#average_exclusive_timeObject



31
32
33
# File 'lib/one_apm/transaction/segment_summary.rb', line 31

def average_exclusive_time
  @exclusive_time / @call_count
end

#average_timeObject



27
28
29
# File 'lib/one_apm/transaction/segment_summary.rb', line 27

def average_time
  @total_time / @call_count
end

#exclusive_time_percentageObject



35
36
37
38
# File 'lib/one_apm/transaction/segment_summary.rb', line 35

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

#total_time_percentageObject



40
41
42
43
# File 'lib/one_apm/transaction/segment_summary.rb', line 40

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