diff options
author | Antoine GIRARD <sapk@users.noreply.github.com> | 2020-01-16 16:15:44 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-01-16 16:15:44 +0100 |
commit | 11885daaa0397d02d7acd559234b098dfd239d49 (patch) | |
tree | 84743e7845f27124acf9045a0797ccafda51e2e9 | |
parent | fdb32ab0f82843f333969487d1207db7e085caaa (diff) | |
download | gitea-11885daaa0397d02d7acd559234b098dfd239d49.tar.gz gitea-11885daaa0397d02d7acd559234b098dfd239d49.zip |
tests: configure github remaining limit + read token (#9800)
* ci: configure remaining github limmit
* prepend with github since package is common to all migrations
* add RefreshRate
* Update github.go
* add missing space
* go fmt
* Read env variable GITHUB_READ_TOKEN for token
* Update .drone.yml
-rw-r--r-- | .drone.yml | 2 | ||||
-rw-r--r-- | modules/migrations/github.go | 17 | ||||
-rw-r--r-- | modules/migrations/github_test.go | 7 |
3 files changed, 22 insertions, 4 deletions
diff --git a/.drone.yml b/.drone.yml index 11dea174bb..3e02a47c44 100644 --- a/.drone.yml +++ b/.drone.yml @@ -122,6 +122,8 @@ steps: environment: GOPROXY: off TAGS: bindata sqlite sqlite_unlock_notify + GITHUB_READ_TOKEN: + from_secret: github_read_token when: branch: - master diff --git a/modules/migrations/github.go b/modules/migrations/github.go index 17e49d90d1..a99b05e11c 100644 --- a/modules/migrations/github.go +++ b/modules/migrations/github.go @@ -24,6 +24,8 @@ import ( var ( _ base.Downloader = &GithubDownloaderV3{} _ base.DownloaderFactory = &GithubDownloaderV3Factory{} + // GithubLimitRateRemaining limit to wait for new rate to apply + GithubLimitRateRemaining = 0 ) func init() { @@ -115,7 +117,7 @@ func (g *GithubDownloaderV3) SetContext(ctx context.Context) { } func (g *GithubDownloaderV3) sleep() { - for g.rate != nil && g.rate.Remaining <= 0 { + for g.rate != nil && g.rate.Remaining <= GithubLimitRateRemaining { timer := time.NewTimer(time.Until(g.rate.Reset.Time)) select { case <-g.ctx.Done(): @@ -124,13 +126,22 @@ func (g *GithubDownloaderV3) sleep() { case <-timer.C: } - rates, _, err := g.client.RateLimits(g.ctx) + err := g.RefreshRate() if err != nil { log.Error("g.client.RateLimits: %s", err) } + } +} - g.rate = rates.GetCore() +// RefreshRate update the current rate (doesn't count in rate limit) +func (g *GithubDownloaderV3) RefreshRate() error { + rates, _, err := g.client.RateLimits(g.ctx) + if err != nil { + return err } + + g.rate = rates.GetCore() + return nil } // GetRepoInfo returns a repository information diff --git a/modules/migrations/github_test.go b/modules/migrations/github_test.go index 10943e4019..9023e2ac4d 100644 --- a/modules/migrations/github_test.go +++ b/modules/migrations/github_test.go @@ -6,6 +6,7 @@ package migrations import ( + "os" "testing" "time" @@ -62,7 +63,11 @@ func assertLabelEqual(t *testing.T, name, color, description string, label *base } func TestGitHubDownloadRepo(t *testing.T) { - downloader := NewGithubDownloaderV3("", "", "go-gitea", "test_repo") + GithubLimitRateRemaining = 3 //Wait at 3 remaining since we could have 3 CI in // + downloader := NewGithubDownloaderV3(os.Getenv("GITHUB_READ_TOKEN"), "", "go-gitea", "test_repo") + err := downloader.RefreshRate() + assert.NoError(t, err) + repo, err := downloader.GetRepoInfo() assert.NoError(t, err) assert.EqualValues(t, &base.Repository{ |