mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-26 12:27:06 +00:00 
			
		
		
		
	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:
		| @@ -122,6 +122,8 @@ steps: | |||||||
|     environment: |     environment: | ||||||
|       GOPROXY: off |       GOPROXY: off | ||||||
|       TAGS: bindata sqlite sqlite_unlock_notify |       TAGS: bindata sqlite sqlite_unlock_notify | ||||||
|  |       GITHUB_READ_TOKEN: | ||||||
|  |         from_secret: github_read_token | ||||||
|     when: |     when: | ||||||
|       branch: |       branch: | ||||||
|         - master |         - master | ||||||
|   | |||||||
| @@ -24,6 +24,8 @@ import ( | |||||||
| var ( | var ( | ||||||
| 	_ base.Downloader        = &GithubDownloaderV3{} | 	_ base.Downloader        = &GithubDownloaderV3{} | ||||||
| 	_ base.DownloaderFactory = &GithubDownloaderV3Factory{} | 	_ base.DownloaderFactory = &GithubDownloaderV3Factory{} | ||||||
|  | 	// GithubLimitRateRemaining limit to wait for new rate to apply | ||||||
|  | 	GithubLimitRateRemaining = 0 | ||||||
| ) | ) | ||||||
|  |  | ||||||
| func init() { | func init() { | ||||||
| @@ -115,7 +117,7 @@ func (g *GithubDownloaderV3) SetContext(ctx context.Context) { | |||||||
| } | } | ||||||
|  |  | ||||||
| func (g *GithubDownloaderV3) sleep() { | 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)) | 		timer := time.NewTimer(time.Until(g.rate.Reset.Time)) | ||||||
| 		select { | 		select { | ||||||
| 		case <-g.ctx.Done(): | 		case <-g.ctx.Done(): | ||||||
| @@ -124,15 +126,24 @@ func (g *GithubDownloaderV3) sleep() { | |||||||
| 		case <-timer.C: | 		case <-timer.C: | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
| 		rates, _, err := g.client.RateLimits(g.ctx) | 		err := g.RefreshRate() | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
| 			log.Error("g.client.RateLimits: %s", err) | 			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 | // GetRepoInfo returns a repository information | ||||||
| func (g *GithubDownloaderV3) GetRepoInfo() (*base.Repository, error) { | func (g *GithubDownloaderV3) GetRepoInfo() (*base.Repository, error) { | ||||||
| 	g.sleep() | 	g.sleep() | ||||||
|   | |||||||
| @@ -6,6 +6,7 @@ | |||||||
| package migrations | package migrations | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
|  | 	"os" | ||||||
| 	"testing" | 	"testing" | ||||||
| 	"time" | 	"time" | ||||||
|  |  | ||||||
| @@ -62,7 +63,11 @@ func assertLabelEqual(t *testing.T, name, color, description string, label *base | |||||||
| } | } | ||||||
|  |  | ||||||
| func TestGitHubDownloadRepo(t *testing.T) { | 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() | 	repo, err := downloader.GetRepoInfo() | ||||||
| 	assert.NoError(t, err) | 	assert.NoError(t, err) | ||||||
| 	assert.EqualValues(t, &base.Repository{ | 	assert.EqualValues(t, &base.Repository{ | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Antoine GIRARD
					Antoine GIRARD