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