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 print response.code response.code.to_i == 200 rescue Errno::ECONNREFUSED, Errno::ECONNRESET, EOFError => e print e.message false end