class DeepTest::ProcessOrchestrator
Public Class Methods
new(options, workers, runner)
click to toggle source
# File lib/deep_test/process_orchestrator.rb, line 7 def initialize(options, workers, runner) @options = options @runner = runner @workers = workers end
run(options, workers, runner)
click to toggle source
# File lib/deep_test/process_orchestrator.rb, line 3 def self.run(options, workers, runner) new(options, workers, runner).run end
Public Instance Methods
run(exit_when_done = true)
click to toggle source
# File lib/deep_test/process_orchestrator.rb, line 13 def run(exit_when_done = true) passed = false begin server = Server.start(@options) @options.new_listener_list.before_starting_workers @workers.start_all begin DeepTest.logger.debug "Loader Starting (#{$$})" passed = @runner.process_work_units ensure shutdown(server) end ensure DeepTest.logger.debug "ProcessOrchestrator: Stopping Server" Server.stop end Kernel.exit(passed ? 0 : 1) if exit_when_done end
shutdown(server)
click to toggle source
# File lib/deep_test/process_orchestrator.rb, line 34 def shutdown(server) DeepTest.logger.debug "ProcessOrchestrator: Shutting Down" server.done_with_work first_exception = $! begin DeepTest.logger.debug "ProcessOrchestrator: Stopping Workers" @workers.stop_all rescue DRb::DRbConnError # Workers must have already stopped rescue Exception => e raise first_exception || e end end