class Gitlab::QA::Component::Gitlab::Availability

def check(retries)

def check(retries)
  print "Waiting for GitLab at `#{@uri}` to become available "
  retries.times do
    return true if service_available?
    print '.'
    sleep 1
  end
  false
end

def initialize(name, relative_path: '', scheme: 'http', protocol_port: 80)

def initialize(name, relative_path: '', scheme: 'http', protocol_port: 80)
  @docker = Docker::Engine.new
  host = @docker.hostname
  port = @docker.port(name, protocol_port).split(':').last
  @uri = URI.join("#{scheme}://#{host}:#{port}", "#{relative_path}/", 'help')
end

def opts

def opts
  @uri.scheme == 'https' ? { use_ssl: true, verify_mode: OpenSSL::SSL::VERIFY_NONE } : {}
end

def service_available?

def service_available?
  response = Net::HTTP.start(@uri.host, @uri.port, opts) do |http|
    http.head2(@uri.request_uri)
  end
  response.code.to_i == 200
rescue Errno::ECONNREFUSED, Errno::ECONNRESET, EOFError
  false
end