aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAntoine GIRARD <sapk@users.noreply.github.com>2020-01-16 16:15:44 +0100
committerGitHub <noreply@github.com>2020-01-16 16:15:44 +0100
commit11885daaa0397d02d7acd559234b098dfd239d49 (patch)
tree84743e7845f27124acf9045a0797ccafda51e2e9
parentfdb32ab0f82843f333969487d1207db7e085caaa (diff)
downloadgitea-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.yml2
-rw-r--r--modules/migrations/github.go17
-rw-r--r--modules/migrations/github_test.go7
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{