Methods

Included Modules

  • DRb::DRbUndumped

Class Public methods

new()

📝 Source code
# File activesupport/lib/active_support/testing/parallelization/server.rb, line 12
        def initialize
          @queue = Queue.new
          @active_workers = Concurrent::Map.new
          @in_flight = Concurrent::Map.new
        end
🔎 See on GitHub

Instance Public methods

<<(o)

📝 Source code
# File activesupport/lib/active_support/testing/parallelization/server.rb, line 28
        def <<(o)
          o[2] = DRbObject.new(o[2]) if o
          @queue << o
        end
🔎 See on GitHub

active_workers?()

📝 Source code
# File activesupport/lib/active_support/testing/parallelization/server.rb, line 48
        def active_workers?
          @active_workers.size > 0
        end
🔎 See on GitHub

interrupt()

📝 Source code
# File activesupport/lib/active_support/testing/parallelization/server.rb, line 52
        def interrupt
          @queue.clear
        end
🔎 See on GitHub

pop()

📝 Source code
# File activesupport/lib/active_support/testing/parallelization/server.rb, line 33
        def pop
          if test = @queue.pop
            @in_flight[[test[0].to_s, test[1]]] = test
            test
          end
        end
🔎 See on GitHub

record(reporter, result)

📝 Source code
# File activesupport/lib/active_support/testing/parallelization/server.rb, line 18
        def record(reporter, result)
          raise DRb::DRbConnError if result.is_a?(DRb::DRbUnknown)

          @in_flight.delete([result.klass, result.name])

          reporter.synchronize do
            reporter.record(result)
          end
        end
🔎 See on GitHub

shutdown()

📝 Source code
# File activesupport/lib/active_support/testing/parallelization/server.rb, line 56
        def shutdown
          # Wait for initial queue to drain
          while @queue.length != 0
            sleep 0.1
          end

          @queue.close

          # Wait until all workers have finished
          while active_workers?
            sleep 0.1
          end

          @in_flight.values.each do |(klass, name, reporter)|
            result = Minitest::Result.from(klass.new(name))
            error = RuntimeError.new("result not reported")
            error.set_backtrace([""])
            result.failures << Minitest::UnexpectedError.new(error)
            reporter.synchronize do
              reporter.record(result)
            end
          end
        end
🔎 See on GitHub

start_worker(worker_id)

📝 Source code
# File activesupport/lib/active_support/testing/parallelization/server.rb, line 40
        def start_worker(worker_id)
          @active_workers[worker_id] = true
        end
🔎 See on GitHub

stop_worker(worker_id)

📝 Source code
# File activesupport/lib/active_support/testing/parallelization/server.rb, line 44
        def stop_worker(worker_id)
          @active_workers.delete(worker_id)
        end
🔎 See on GitHub