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.



25
26
27
28
29
30
31
32
33
# File 'lib/mergify/rspec/flaky_detection.rb', line 25

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.



22
23
24
# File 'lib/mergify/rspec/flaky_detection.rb', line 22

def deadline
  @deadline
end

#initial_call_durationObject

Returns the value of attribute initial_call_duration.



22
23
24
# File 'lib/mergify/rspec/flaky_detection.rb', line 22

def initial_call_duration
  @initial_call_duration
end

#initial_setup_durationObject

Returns the value of attribute initial_setup_duration.



22
23
24
# File 'lib/mergify/rspec/flaky_detection.rb', line 22

def initial_setup_duration
  @initial_setup_duration
end

#initial_teardown_durationObject

Returns the value of attribute initial_teardown_duration.



22
23
24
# File 'lib/mergify/rspec/flaky_detection.rb', line 22

def initial_teardown_duration
  @initial_teardown_duration
end

#prevented_timeoutObject

Returns the value of attribute prevented_timeout.



22
23
24
# File 'lib/mergify/rspec/flaky_detection.rb', line 22

def prevented_timeout
  @prevented_timeout
end

#rerun_countObject

Returns the value of attribute rerun_count.



22
23
24
# File 'lib/mergify/rspec/flaky_detection.rb', line 22

def rerun_count
  @rerun_count
end

#total_durationObject

Returns the value of attribute total_duration.



22
23
24
# File 'lib/mergify/rspec/flaky_detection.rb', line 22

def total_duration
  @total_duration
end

Instance Method Details

#fill_from_report(phase, duration, _status) ⇒ Object



51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/mergify/rspec/flaky_detection.rb', line 51

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



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

def initial_duration
  @initial_setup_duration + @initial_call_duration + @initial_teardown_duration
end

#remaining_timeObject



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

def remaining_time
  return 0.0 if @deadline.nil?

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

#will_exceed_deadline?Boolean

Returns:

  • (Boolean)


45
46
47
48
49
# File 'lib/mergify/rspec/flaky_detection.rb', line 45

def will_exceed_deadline?
  return false if @deadline.nil?

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