class CI::Queue::Configuration

Attributes

build_id[W]
circuit_breakers[R]
failing_test[RW]
failure_file[RW]
grind_count[RW]
max_requeues[RW]
max_test_duration[RW]
max_test_duration_percentile[RW]
max_test_failed[RW]
namespace[RW]
queue_init_timeout[W]
requeue_tolerance[RW]
seed[W]
statsd_endpoint[RW]
timeout[RW]
track_test_duration[RW]
worker_id[RW]

Public Class Methods

from_env(env) click to toggle source
# File lib/ci/queue/configuration.rb, line 14
def from_env(env)
  new(
    build_id: env['CIRCLE_BUILD_URL'] || env['BUILDKITE_BUILD_ID'] || env['TRAVIS_BUILD_ID'] || env['HEROKU_TEST_RUN_ID'] || env['SEMAPHORE_PIPELINE_ID'],
    worker_id: env['CIRCLE_NODE_INDEX'] || env['BUILDKITE_PARALLEL_JOB'] || env['CI_NODE_INDEX'] || env['SEMAPHORE_JOB_ID'],
    seed: env['CIRCLE_SHA1'] || env['BUILDKITE_COMMIT'] || env['TRAVIS_COMMIT'] || env['HEROKU_TEST_RUN_COMMIT_VERSION'] || env['SEMAPHORE_GIT_SHA'],
    flaky_tests: load_flaky_tests(env['CI_QUEUE_FLAKY_TESTS']),
    statsd_endpoint: env['CI_QUEUE_STATSD_ADDR'],
  )
end
load_flaky_tests(path) click to toggle source
# File lib/ci/queue/configuration.rb, line 24
def load_flaky_tests(path)
  return [] unless path
  ::File.readlines(path).map(&:chomp).to_set
rescue SystemCallError
  []
end
new( timeout: 30, build_id: nil, worker_id: nil, max_requeues: 0, requeue_tolerance: 0, namespace: nil, seed: nil, flaky_tests: [], statsd_endpoint: nil, max_consecutive_failures: nil, grind_count: nil, max_duration: nil, failure_file: nil, max_test_duration: nil, max_test_duration_percentile: 0.5, track_test_duration: false, max_test_failed: nil, queue_init_timeout: nil ) click to toggle source
# File lib/ci/queue/configuration.rb, line 32
def initialize(
  timeout: 30, build_id: nil, worker_id: nil, max_requeues: 0, requeue_tolerance: 0,
  namespace: nil, seed: nil, flaky_tests: [], statsd_endpoint: nil, max_consecutive_failures: nil,
  grind_count: nil, max_duration: nil, failure_file: nil, max_test_duration: nil,
  max_test_duration_percentile: 0.5, track_test_duration: false, max_test_failed: nil,
  queue_init_timeout: nil
)
  @build_id = build_id
  @circuit_breakers = [CircuitBreaker::Disabled]
  @failure_file = failure_file
  @flaky_tests = flaky_tests
  @grind_count = grind_count
  @max_requeues = max_requeues
  @max_test_duration = max_test_duration
  @max_test_duration_percentile = max_test_duration_percentile
  @max_test_failed = max_test_failed
  @namespace = namespace
  @requeue_tolerance = requeue_tolerance
  @seed = seed
  @statsd_endpoint = statsd_endpoint
  @timeout = timeout
  @queue_init_timeout = queue_init_timeout
  @track_test_duration = track_test_duration
  @worker_id = worker_id
  self.max_consecutive_failures = max_consecutive_failures
  self.max_duration = max_duration
end

Public Instance Methods

build_id() click to toggle source
# File lib/ci/queue/configuration.rb, line 84
def build_id
  if namespace
    "#{namespace}:#{@build_id}"
  else
    @build_id
  end
end
flaky?(test) click to toggle source
# File lib/ci/queue/configuration.rb, line 76
def flaky?(test)
  @flaky_tests.include?(test.id)
end
global_max_requeues(tests_count) click to toggle source
# File lib/ci/queue/configuration.rb, line 92
def global_max_requeues(tests_count)
  (tests_count * Float(requeue_tolerance)).ceil
end
max_consecutive_failures=(max) click to toggle source
# File lib/ci/queue/configuration.rb, line 64
def max_consecutive_failures=(max)
  if max
    @circuit_breakers << CircuitBreaker::MaxConsecutiveFailures.new(max_consecutive_failures: max)
  end
end
max_duration=(duration) click to toggle source
# File lib/ci/queue/configuration.rb, line 70
def max_duration=(duration)
  if duration
    @circuit_breakers << CircuitBreaker::Timeout.new(duration: duration)
  end
end
queue_init_timeout() click to toggle source
# File lib/ci/queue/configuration.rb, line 60
def queue_init_timeout
  @queue_init_timeout || timeout
end
seed() click to toggle source
# File lib/ci/queue/configuration.rb, line 80
def seed
  @seed || build_id
end