Module: Testjour::Bonjour

Included in:
CLI::List, CLI::Run, CLI::SlaveStart, CLI::Warm
Defined in:
lib/testjour/bonjour.rb

Defined Under Namespace

Classes: Server

Instance Method Summary collapse

Instance Method Details

#bonjour_serve(port) ⇒ Object



81
82
83
84
85
86
87
88
89
90
# File 'lib/testjour/bonjour.rb', line 81

def bonjour_serve(port)
  name = ENV['USER']

  tr = DNSSD::TextRecord.new
  tr['description'] = "#{name}'s testjour server"

  DNSSD.register(name, SERVICE, "local", port, tr.encode) do |reply|
    Testjour.logger.info "Broadcasting: Ready to run tests under name '#{name}' on port #{port}..."
  end
end

#bonjour_serversObject



59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/testjour/bonjour.rb', line 59

def bonjour_servers
  return @bonjour_servers if !@bonjour_servers.nil?
  
  @bonjour_servers = []

  service = DNSSD.browse(SERVICE) do |reply|
    DNSSD.resolve(reply.name, reply.type, reply.domain) do |rr|
      found_bonjour_server(Server.from_dnssd(reply, rr))
    end
  end

  sleep 3
  service.stop
  return @bonjour_servers
end

#found_bonjour_server(server) ⇒ Object



75
76
77
78
79
# File 'lib/testjour/bonjour.rb', line 75

def found_bonjour_server(server)
  unless @bonjour_servers.any? { |h| h == server }
    @bonjour_servers << server
  end
end