Class: CI::Queue::Configuration

Inherits:
Object
  • Object
show all
Defined in:
lib/ci/queue/configuration.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(timeout: 30, build_id: nil, worker_id: nil, max_requeues: 0, requeue_tolerance: 0, namespace: nil, seed: nil, flaky_tests: [], statsd_endpoint: nil) ⇒ Configuration

Returns a new instance of Configuration.



27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/ci/queue/configuration.rb', line 27

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
)
  @namespace = namespace
  @timeout = timeout
  @build_id = build_id
  @worker_id = worker_id
  @max_requeues = max_requeues
  @requeue_tolerance = requeue_tolerance
  @seed = seed
  @flaky_tests = flaky_tests
  @statsd_endpoint = statsd_endpoint
end

Instance Attribute Details

#build_idObject

Returns the value of attribute build_id.



5
6
7
# File 'lib/ci/queue/configuration.rb', line 5

def build_id
  @build_id
end

#failing_testObject

Returns the value of attribute failing_test.



6
7
8
# File 'lib/ci/queue/configuration.rb', line 6

def failing_test
  @failing_test
end

#max_requeuesObject

Returns the value of attribute max_requeues.



5
6
7
# File 'lib/ci/queue/configuration.rb', line 5

def max_requeues
  @max_requeues
end

#namespaceObject

Returns the value of attribute namespace.



6
7
8
# File 'lib/ci/queue/configuration.rb', line 6

def namespace
  @namespace
end

#requeue_toleranceObject

Returns the value of attribute requeue_tolerance.



6
7
8
# File 'lib/ci/queue/configuration.rb', line 6

def requeue_tolerance
  @requeue_tolerance
end

#seedObject

Returns the value of attribute seed.



6
7
8
# File 'lib/ci/queue/configuration.rb', line 6

def seed
  @seed
end

#statsd_endpointObject

Returns the value of attribute statsd_endpoint.



6
7
8
# File 'lib/ci/queue/configuration.rb', line 6

def statsd_endpoint
  @statsd_endpoint
end

#timeoutObject

Returns the value of attribute timeout.



5
6
7
# File 'lib/ci/queue/configuration.rb', line 5

def timeout
  @timeout
end

#worker_idObject

Returns the value of attribute worker_id.



5
6
7
# File 'lib/ci/queue/configuration.rb', line 5

def worker_id
  @worker_id
end

Class Method Details

.from_env(env) ⇒ Object



9
10
11
12
13
14
15
16
17
# File 'lib/ci/queue/configuration.rb', line 9

def from_env(env)
  new(
    build_id: env['CIRCLE_BUILD_URL'] || env['BUILDKITE_BUILD_ID'] || env['TRAVIS_BUILD_ID'],
    worker_id: env['CIRCLE_NODE_INDEX'] || env['BUILDKITE_PARALLEL_JOB'],
    seed: env['CIRCLE_SHA1'] || env['BUILDKITE_COMMIT'] || env['TRAVIS_COMMIT'],
    flaky_tests: load_flaky_tests(env['CI_QUEUE_FLAKY_TESTS']),
    statsd_endpoint: env['CI_QUEUE_STATSD_ADDR'],
  )
end

.load_flaky_tests(path) ⇒ Object



19
20
21
22
23
24
# File 'lib/ci/queue/configuration.rb', line 19

def load_flaky_tests(path)
  return [] unless path
  ::File.readlines(path).map(&:chomp).to_set
rescue SystemCallError
  []
end

Instance Method Details

#flaky?(test) ⇒ Boolean

Returns:

  • (Boolean)


42
43
44
# File 'lib/ci/queue/configuration.rb', line 42

def flaky?(test)
  @flaky_tests.include?(test.id)
end

#global_max_requeues(tests_count) ⇒ Object



58
59
60
# File 'lib/ci/queue/configuration.rb', line 58

def global_max_requeues(tests_count)
  (tests_count * Float(requeue_tolerance)).ceil
end