Module: Qspec::SporkHelper
- Included in:
- CommandLine, Helper
- Defined in:
- lib/qspec/spork_helper.rb
Instance Method Summary collapse
- #connect_spork(port, id, err, out) ⇒ Object
- #create_port_file(ports) ⇒ Object
- #remove_port_file ⇒ Object
- #runnning_ports ⇒ Object
- #start_spork_workers(count) ⇒ Object
Instance Method Details
#connect_spork(port, id, err, out) ⇒ Object
31 32 33 34 35 36 37 38 39 |
# File 'lib/qspec/spork_helper.rb', line 31 def connect_spork(port, id, err, out) begin DRb.start_service("druby://localhost:0") rescue SocketError, Errno::EADDRNOTAVAIL DRb.start_service("druby://:0") end spec_server = DRbObject.new_with_uri("druby://127.0.0.1:#{port||PORT}") exit spec_server.run(@options.drb_argv + [id], err, out).to_i end |
#create_port_file(ports) ⇒ Object
41 42 43 44 45 |
# File 'lib/qspec/spork_helper.rb', line 41 def create_port_file(ports) File.open(port_file, 'w') do |f| f.puts ports.join("\n") end end |
#remove_port_file ⇒ Object
56 57 58 |
# File 'lib/qspec/spork_helper.rb', line 56 def remove_port_file File.unlink(port_file) end |
#runnning_ports ⇒ Object
47 48 49 50 51 52 53 54 |
# File 'lib/qspec/spork_helper.rb', line 47 def runnning_ports @runnning_ports ||= begin ports = File.readlines(port_file).map { |line| line.strip.to_i } ports.empty? ? nil : ports rescue Errno::ENOENT nil end end |
#start_spork_workers(count) ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/qspec/spork_helper.rb', line 12 def start_spork_workers(count) Signal.trap(:INT){ puts "Stop spork processes" remove_port_file exit(0) } default_port = (@config['spork_port'] || ::Spork::TestFramework::Qspec::DEFAULT_PORT).to_i ports = [] count.times do |i| port = default_port+i spawn({ "TEST_ENV_NUMBER" => i == 0 ? '' : (i + 1).to_s }, "spork qspec --port #{port}") ports << port end create_port_file(ports) Process.waitall.all? { |pid, status| status.exitstatus == 0 } ? 0 : 1 end |