Class: Evilution::Runner::MutationExecutor::Strategy::Parallel

Inherits:
Object
  • Object
show all
Defined in:
lib/evilution/runner/mutation_executor/strategy/parallel.rb

Instance Method Summary collapse

Constructor Details

#initialize(cache:, isolator:, packer:, pipeline:, notifier:, pool_factory:, config:, diagnostics: nil) ⇒ Parallel

Returns a new instance of Parallel.



6
7
8
9
10
11
12
13
14
15
# File 'lib/evilution/runner/mutation_executor/strategy/parallel.rb', line 6

def initialize(cache:, isolator:, packer:, pipeline:, notifier:, pool_factory:, config:, diagnostics: nil)
  @cache = cache
  @isolator = isolator
  @packer = packer
  @pipeline = pipeline
  @notifier = notifier
  @pool_factory = pool_factory
  @diagnostics = diagnostics
  @config = config
end

Instance Method Details

#call(mutations, baseline_result:, integration:) ⇒ Object



17
18
19
20
21
22
23
24
25
26
# File 'lib/evilution/runner/mutation_executor/strategy/parallel.rb', line 17

def call(mutations, baseline_result:, integration:)
  @notifier.start(mutations.length)
  pool = @pool_factory.call
  state = { results: [], truncated: false, completed: 0 }
  all_worker_stats = run_batches(mutations, pool, baseline_result, integration, state)

  log_worker_diagnostics(all_worker_stats)
  @notifier.finish
  build_result(state)
end