start_sites

in spec/support/faux/faux_crawl.rb [94:128]


  def start_sites 
    sites_to_start = sites.uniq(&:port)
    @site_containers = sites_to_start.collect do |site|
      site_options = { port: site.port, debug: true, start: false }
      the_site = Faux::Site.new(site.site, site_options)
      Thread.new { the_site.start }
      the_site
    end

    start_time = Time.now
    ports_remaining = sites.map(&:port)

    
    loop do
      break if ports_remaining.empty?

      time_elapsed = Time.now - start_time
      break if time_elapsed > START_TIMEOUT

      begin
        port_to_check = ports_remaining.first
        response = HTTPClient.new.get("http://127.0.0.1:#{port_to_check}/status")
        ports_remaining.shift if (200..299).cover?(response.status)
      rescue StandardError
        
      end

      sleep 0.05
    end

    return unless ports_remaining.any?

    raise "Unable to start all Faux sites; these ports never were available: #{ports_remaining.inspect}"
  end