class CI::Queue::Static
Attributes
index[R]
progress[R]
total[R]
Public Class Methods
from_uri(uri, config)
click to toggle source
# File lib/ci/queue/static.rb, line 8 def from_uri(uri, config) tests = uri.opaque.split(':').map { |t| CGI.unescape(t) } new(tests, config) end
new(tests, config)
click to toggle source
# File lib/ci/queue/static.rb, line 16 def initialize(tests, config) @queue = tests @config = config @progress = 0 @total = tests.size end
Public Instance Methods
acknowledge(test)
click to toggle source
# File lib/ci/queue/static.rb, line 62 def acknowledge(test) @progress += 1 true end
build()
click to toggle source
# File lib/ci/queue/static.rb, line 23 def build @build ||= BuildRecord.new(self) end
exhausted?()
click to toggle source
# File lib/ci/queue/static.rb, line 58 def exhausted? @queue.empty? end
increment_test_failed()
click to toggle source
# File lib/ci/queue/static.rb, line 67 def increment_test_failed @test_failed = test_failed + 1 end
max_test_failed?()
click to toggle source
# File lib/ci/queue/static.rb, line 75 def max_test_failed? return false if config.max_test_failed.nil? test_failed >= config.max_test_failed end
poll() { |fetch| ... }
click to toggle source
# File lib/ci/queue/static.rb, line 52 def poll while config.circuit_breakers.none?(&:open?) && !max_test_failed? && test = @queue.shift yield index.fetch(test) end end
populate(tests, random: nil)
click to toggle source
# File lib/ci/queue/static.rb, line 35 def populate(tests, random: nil) @index = tests.map { |t| [t.id, t] }.to_h self end
populated?()
click to toggle source
# File lib/ci/queue/static.rb, line 40 def populated? !!defined?(@index) end
requeue(test)
click to toggle source
# File lib/ci/queue/static.rb, line 81 def requeue(test) test_key = test.id return false unless should_requeue?(test_key) requeues[test_key] += 1 @queue.unshift(test_key) true end
retry_queue()
click to toggle source
# File lib/ci/queue/static.rb, line 31 def retry_queue self end
size()
click to toggle source
# File lib/ci/queue/static.rb, line 48 def size @queue.size end
supervisor()
click to toggle source
# File lib/ci/queue/static.rb, line 27 def supervisor raise NotImplementedError, "This type of queue can't be supervised" end
test_failed()
click to toggle source
# File lib/ci/queue/static.rb, line 71 def test_failed @test_failed ||= 0 end
to_a()
click to toggle source
# File lib/ci/queue/static.rb, line 44 def to_a @queue.map { |i| index.fetch(i) } end
Private Instance Methods
requeues()
click to toggle source
# File lib/ci/queue/static.rb, line 98 def requeues @requeues ||= Hash.new(0) end
should_requeue?(key)
click to toggle source
# File lib/ci/queue/static.rb, line 94 def should_requeue?(key) requeues[key] < config.max_requeues && requeues.values.inject(0, :+) < config.global_max_requeues(total) end