class DeepTest::Distributed::MasterTestServer

Constants

STATUS_PORT

Attributes

servers[R]

Public Class Methods

new(servers) click to toggle source
# File lib/deep_test/distributed/master_test_server.rb, line 10
def initialize(servers)
  @servers = servers
end
start(uri, server_uris) click to toggle source
# File lib/deep_test/distributed/master_test_server.rb, line 31
def self.start(uri, server_uris)
  master = start_drb(uri, server_uris)
  start_http(master)
  DeepTest.logger.info "MasterTestServer listening at #{DRb.uri}"
  DRb.thread.join
end
start_drb(uri, server_uris) click to toggle source
# File lib/deep_test/distributed/master_test_server.rb, line 38
def self.start_drb(uri, server_uris)
  servers = server_uris.map {|server_uri| DRbObject.new_with_uri server_uri}
  master = DeepTest::Distributed::MasterTestServer.new(servers)
  DRb.start_service(uri, master)
  master
end
start_http(master) click to toggle source
# File lib/deep_test/distributed/master_test_server.rb, line 45
def self.start_http(master)
  s = WEBrick::HTTPServer.new :Port => STATUS_PORT
  s.mount_proc("/", &master.method(:show_status))
  Thread.new {s.start}
end

Public Instance Methods

show_status(req, res) click to toggle source
# File lib/deep_test/distributed/master_test_server.rb, line 14
def show_status(req, res)
  template = File.read(File.dirname(__FILE__) + "/show_status.rhtml")
  res.body = ERB.new(template).result(binding)
end
test_server_statuses() click to toggle source
# File lib/deep_test/distributed/master_test_server.rb, line 19
def test_server_statuses
  @servers.map do |s|
    status = begin
               s.status
             rescue Exception => e
               e
             end

    [s.__drburi, status]
  end
end