Sha256: 933fc895839f31df38f581ebaf6472049bd52bbbe3a0cf9a9d8cabea61459206
Contents?: true
Size: 1.9 KB
Versions: 3
Compression:
Stored size: 1.9 KB
Contents
# typed: strict # frozen_string_literal: true module Minitest module Distributed module Coordinators class MemoryCoordinator extend T::Sig include CoordinatorInterface sig { returns(Configuration) } attr_reader :configuration sig { returns(Queue) } attr_reader :queue sig { override.returns(ResultAggregate) } attr_reader :local_results alias_method :combined_results, :local_results sig { params(configuration: Configuration).void } def initialize(configuration:) @configuration = configuration @leader = T.let(Mutex.new, Mutex) @queue = T.let(Queue.new, Queue) @local_results = T.let(ResultAggregate.new, ResultAggregate) end sig { override.params(reporter: Minitest::CompositeReporter, options: T::Hash[Symbol, T.untyped]).void } def register_reporters(reporter:, options:) # No need for any additional reporters end sig { override.params(test_selector: TestSelector).void } def produce(test_selector:) if @leader.try_lock tests = test_selector.tests @local_results.size = tests.size if tests.empty? queue.close else tests.each { |test| queue << test } end end end sig { override.params(reporter: AbstractReporter).void } def consume(reporter:) until queue.empty? && queue.closed? enqueued_runnable = queue.pop reporter.prerecord(enqueued_runnable.runnable_class, enqueued_runnable.method_name) result = enqueued_runnable.run local_results.update_with_result(result) local_results.acks += 1 reporter.record(result) queue.close if local_results.completed? end end end end end end
Version data entries
3 entries across 3 versions & 1 rubygems