Class: MultiProcessSpecRunner
- Inherits:
-
Object
- Object
- MultiProcessSpecRunner
- Defined in:
- lib/selenium-grid/examples/ruby/lib/multi_process_behaviour_runner.rb
Instance Method Summary collapse
-
#initialize(max_concurrent_processes = 10) ⇒ MultiProcessSpecRunner
constructor
A new instance of MultiProcessSpecRunner.
- #run(spec_files) ⇒ Object
Constructor Details
#initialize(max_concurrent_processes = 10) ⇒ MultiProcessSpecRunner
Returns a new instance of MultiProcessSpecRunner.
6 7 8 |
# File 'lib/selenium-grid/examples/ruby/lib/multi_process_behaviour_runner.rb', line 6 def initialize(max_concurrent_processes = 10) @max_concurrent_processes = max_concurrent_processes end |
Instance Method Details
#run(spec_files) ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/selenium-grid/examples/ruby/lib/multi_process_behaviour_runner.rb', line 10 def run(spec_files) concurrent_processes = [ @max_concurrent_processes, spec_files.size ].min spec_files_by_process = spec_files / concurrent_processes concurrent_processes.times do |i| cmd = "spec #{spec_files_by_process[i].join(' ')}" puts "Launching #{cmd}" exec(cmd) if fork == nil end success = true concurrent_processes.times do |i| pid, status = Process.wait2 puts "Test process ##{i} with pid #{pid} completed with #{status}" success &&= status.exitstatus.zero? end raise "Build failed" unless success end |