Class: TingYun::Agent::TransactionTimings

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Defined in:
lib/ting_yun/agent/transaction/transaction_timings.rb

Defined Under Namespace

Classes: Timings

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(queue_time_in_seconds, start_time_in_seconds) ⇒ TransactionTimings

Returns a new instance of TransactionTimings.



11
12
13
14
15
16
# File 'lib/ting_yun/agent/transaction/transaction_timings.rb', line 11

def initialize(queue_time_in_seconds, start_time_in_seconds)
  @queue_time_in_seconds = clamp_to_positive(queue_time_in_seconds.to_f)
  @start_time_in_seconds = clamp_to_positive(start_time_in_seconds.to_f)

  @timings = TingYun::Agent::TransactionTimings::Timings.new(0.0, 0.0, 0.0, 0.0, 0.0)
end

Instance Attribute Details

#queue_time_in_secondsObject (readonly)

Returns the value of attribute queue_time_in_seconds.



19
20
21
# File 'lib/ting_yun/agent/transaction/transaction_timings.rb', line 19

def queue_time_in_seconds
  @queue_time_in_seconds
end

#start_time_in_secondsObject (readonly)

Returns the value of attribute start_time_in_seconds.



19
20
21
# File 'lib/ting_yun/agent/transaction/transaction_timings.rb', line 19

def start_time_in_seconds
  @start_time_in_seconds
end

#timingsObject (readonly)

Returns the value of attribute timings.



19
20
21
# File 'lib/ting_yun/agent/transaction/transaction_timings.rb', line 19

def timings
  @timings
end

Instance Method Details

#app_execute_durationObject



50
51
52
# File 'lib/ting_yun/agent/transaction/transaction_timings.rb', line 50

def app_execute_duration
  app_time_in_millis - queue_time_in_millis - sql_duration - external_duration - rds_duration - mon_duration - mc_duration
end

#app_time_in_millisObject



42
43
44
# File 'lib/ting_yun/agent/transaction/transaction_timings.rb', line 42

def app_time_in_millis
  convert_to_milliseconds(app_time_in_seconds)
end

#app_time_in_secondsObject



46
47
48
# File 'lib/ting_yun/agent/transaction/transaction_timings.rb', line 46

def app_time_in_seconds
  Time.now.to_f - @start_time_in_seconds
end

#clamp_to_positive(value) ⇒ Object



64
65
66
67
# File 'lib/ting_yun/agent/transaction/transaction_timings.rb', line 64

def clamp_to_positive(value)
  return 0.0 if value < 0.0
  value
end

#convert_to_milliseconds(value_in_seconds) ⇒ Object



60
61
62
# File 'lib/ting_yun/agent/transaction/transaction_timings.rb', line 60

def convert_to_milliseconds(value_in_seconds)
  clamp_to_positive((value_in_seconds.to_f * 1000.0).round)
end

#queue_time_in_millisObject



38
39
40
# File 'lib/ting_yun/agent/transaction/transaction_timings.rb', line 38

def queue_time_in_millis
  convert_to_milliseconds(queue_time_in_seconds)
end

#slow_action_tracer?Boolean

Helpers

Returns:

  • (Boolean)


56
57
58
# File 'lib/ting_yun/agent/transaction/transaction_timings.rb', line 56

def slow_action_tracer?
  return app_time_in_millis > TingYun::Agent.config[:'nbs.action_tracer.action_threshold']
end

#start_time_as_timeObject



30
31
32
# File 'lib/ting_yun/agent/transaction/transaction_timings.rb', line 30

def start_time_as_time
  Time.at(@start_time_in_seconds)
end

#start_time_in_millisObject



34
35
36
# File 'lib/ting_yun/agent/transaction/transaction_timings.rb', line 34

def start_time_in_millis
  convert_to_milliseconds(@start_time_in_seconds)
end