Class: Mergify::RSpec::FlakyDetector::TestMetrics

Inherits:
Object
  • Object
show all
Defined in:
lib/mergify/rspec/flaky_detection.rb

Overview

Per-test tracking metrics.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeTestMetrics

Returns a new instance of TestMetrics.



19
20
21
22
23
24
25
26
27
# File 'lib/mergify/rspec/flaky_detection.rb', line 19

def initialize
  @initial_setup_duration = 0.0
  @initial_call_duration = 0.0
  @initial_teardown_duration = 0.0
  @rerun_count = 0
  @deadline = nil
  @prevented_timeout = false
  @total_duration = 0.0
end

Instance Attribute Details

#deadlineObject

Returns the value of attribute deadline.



16
17
18
# File 'lib/mergify/rspec/flaky_detection.rb', line 16

def deadline
  @deadline
end

#initial_call_durationObject

Returns the value of attribute initial_call_duration.



16
17
18
# File 'lib/mergify/rspec/flaky_detection.rb', line 16

def initial_call_duration
  @initial_call_duration
end

#initial_setup_durationObject

Returns the value of attribute initial_setup_duration.



16
17
18
# File 'lib/mergify/rspec/flaky_detection.rb', line 16

def initial_setup_duration
  @initial_setup_duration
end

#initial_teardown_durationObject

Returns the value of attribute initial_teardown_duration.



16
17
18
# File 'lib/mergify/rspec/flaky_detection.rb', line 16

def initial_teardown_duration
  @initial_teardown_duration
end

#prevented_timeoutObject

Returns the value of attribute prevented_timeout.



16
17
18
# File 'lib/mergify/rspec/flaky_detection.rb', line 16

def prevented_timeout
  @prevented_timeout
end

#rerun_countObject

Returns the value of attribute rerun_count.



16
17
18
# File 'lib/mergify/rspec/flaky_detection.rb', line 16

def rerun_count
  @rerun_count
end

#total_durationObject

Returns the value of attribute total_duration.



16
17
18
# File 'lib/mergify/rspec/flaky_detection.rb', line 16

def total_duration
  @total_duration
end

Instance Method Details

#fill_from_report(phase, duration, _status) ⇒ Object



45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/mergify/rspec/flaky_detection.rb', line 45

def fill_from_report(phase, duration, _status)
  case phase
  when 'setup'
    @initial_setup_duration = duration if @initial_setup_duration.zero?
  when 'call'
    @initial_call_duration = duration if @initial_call_duration.zero?
    @rerun_count += 1
  when 'teardown'
    @initial_teardown_duration = duration if @initial_teardown_duration.zero?
  end
  @total_duration += duration
end

#initial_durationObject



29
30
31
# File 'lib/mergify/rspec/flaky_detection.rb', line 29

def initial_duration
  @initial_setup_duration + @initial_call_duration + @initial_teardown_duration
end

#remaining_timeObject



33
34
35
36
37
# File 'lib/mergify/rspec/flaky_detection.rb', line 33

def remaining_time
  return 0.0 if @deadline.nil?

  [(@deadline - Time.now.to_f), 0.0].max
end

#will_exceed_deadline?Boolean

Returns:

  • (Boolean)


39
40
41
42
43
# File 'lib/mergify/rspec/flaky_detection.rb', line 39

def will_exceed_deadline?
  return false if @deadline.nil?

  (Time.now.to_f + initial_duration) >= @deadline
end