Sha256: 3701aa1b13c424896b59edfa3bfca7a2bc90e0f826a5c7331c3577c7889e276a

Contents?: true

Size: 1.64 KB

Versions: 8

Compression:

Stored size: 1.64 KB

Contents

require 'json'
require 'net/http'
require 'cgi'

module Gitlab
  module QA
    module Scenario
      module Test
        module Sanity
          # This test checks that the sha_version of a GitLab was authored in
          # the window defined by `HOURS_AGO`.  We perform a single API call,
          # so `COMMITS` needs to be a large enough value that we expect all
          # the commits in the time window will fit.
          class Version < Scenario::Template
            HOURS_AGO = 24
            COMMITS = 10_000

            def perform(release)
              version = Component::Gitlab.perform do |gitlab|
                gitlab.release = release
                gitlab.act do
                  pull
                  sha_version
                end
              end

              project = "gitlab-org/#{QA::Release.new(release).project_name}"
              commit = recent_commits(project).find { |c| c['id'] == version }

              if commit
                puts "Found commit #{version} in recent history of #{project}"
              else
                puts "Did not find #{version} in recent history of #{project}"
                exit 1
              end
            end

            private

            def recent_commits(project)
              api = 'https://gitlab.com/api/v4'
              url = "#{api}/projects/#{CGI.escape(project)}/repository/commits"
              since = (Time.now - HOURS_AGO * 60 * 60).strftime('%FT%T')

              uri = URI(url)
              uri.query = URI.encode_www_form(since: since, per_page: COMMITS)
              JSON.parse(Net::HTTP.get(uri))
            end
          end
        end
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
gitlab-qa-5.14.1 lib/gitlab/qa/scenario/test/sanity/version.rb
gitlab-qa-5.14.0 lib/gitlab/qa/scenario/test/sanity/version.rb
gitlab-qa-5.13.7 lib/gitlab/qa/scenario/test/sanity/version.rb
gitlab-qa-5.13.6 lib/gitlab/qa/scenario/test/sanity/version.rb
gitlab-qa-5.13.5 lib/gitlab/qa/scenario/test/sanity/version.rb
gitlab-qa-5.13.4 lib/gitlab/qa/scenario/test/sanity/version.rb
gitlab-qa-5.13.3 lib/gitlab/qa/scenario/test/sanity/version.rb
gitlab-qa-5.13.2 lib/gitlab/qa/scenario/test/sanity/version.rb