* 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.ymltags/v1.10.5
@@ -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 |
@@ -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 |
@@ -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{ |