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
This commit is contained in:
		
							parent
							
								
									fdb32ab0f8
								
							
						
					
					
						commit
						11885daaa0
					
				
					 3 changed files with 23 additions and 5 deletions
				
			
		|  | @ -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,15 +126,24 @@ 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
 | ||||
| func (g *GithubDownloaderV3) GetRepoInfo() (*base.Repository, error) { | ||||
| 	g.sleep() | ||||
|  |  | |||
|  | @ -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{ | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue