Merge branch 'github-rake-task-rate-limiting' into 'master'

Add GitHub enterprise support to the GitHub Rake task and better handle rate limiting being disabled

See merge request gitlab-org/gitlab-ce!15284
This commit is contained in:
Douwe Maan 2017-11-09 08:37:41 +00:00
commit 760b2c75ef
3 changed files with 36 additions and 3 deletions

View file

@ -129,6 +129,8 @@ module Gitlab
# whether we are running in parallel mode or not. For more information see
# `#rate_or_wait_for_rate_limit`.
def with_rate_limit
return yield unless rate_limiting_enabled?
request_count_counter.increment
raise_or_wait_for_rate_limit unless requests_remaining?
@ -170,6 +172,10 @@ module Gitlab
octokit.rate_limit.resets_in + 5
end
def rate_limiting_enabled?
@rate_limiting_enabled ||= api_endpoint.include?('.github.com')
end
def api_endpoint
custom_api_endpoint || default_api_endpoint
end

View file

@ -101,8 +101,8 @@ end
class GithubRepos
def initialize(token, current_user, github_repo)
@client = Octokit::Client
.new(access_token: token, auto_paginate: true, per_page: 100)
@client = Gitlab::GithubImport::Client.new(token)
@client.octokit.auto_paginate = true
@current_user = current_user
@github_repo = github_repo
@ -130,7 +130,7 @@ class GithubRepos
end
def repos
@client.list_repositories
@client.octokit.list_repositories
end
end

View file

@ -185,6 +185,17 @@ describe Gitlab::GithubImport::Client do
client.with_rate_limit { }
end
it 'ignores rate limiting when disabled' do
expect(client)
.to receive(:rate_limiting_enabled?)
.and_return(false)
expect(client)
.not_to receive(:requests_remaining?)
expect(client.with_rate_limit { 10 }).to eq(10)
end
end
describe '#requests_remaining?' do
@ -362,4 +373,20 @@ describe Gitlab::GithubImport::Client do
end
end
end
describe '#rate_limiting_enabled?' do
let(:client) { described_class.new('foo') }
it 'returns true when using GitHub.com' do
expect(client.rate_limiting_enabled?).to eq(true)
end
it 'returns false for GitHub enterprise installations' do
expect(client)
.to receive(:api_endpoint)
.and_return('https://github.kittens.com/')
expect(client.rate_limiting_enabled?).to eq(false)
end
end
end