Class: MultiProcessSpecRunner

Inherits:
Object
  • Object
show all
Defined in:
lib/selenium-grid/examples/ruby/lib/multi_process_behaviour_runner.rb

Instance Method Summary collapse

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