summaryrefslogtreecommitdiffstats
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/migrations/github.go17
-rw-r--r--modules/migrations/github_test.go7
2 files changed, 20 insertions, 4 deletions
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{