Chore: Fix flaky test (#81116)

* Chore: Fix flaky test
This commit is contained in:
Sofia Papagiannaki 2024-01-23 20:33:32 +02:00 committed by GitHub
parent 633c03d40d
commit 57effed70a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1,13 +1,11 @@
package folders
import (
"context"
"fmt"
"net/http"
"runtime"
"testing"
"time"
"github.com/grafana/dskit/concurrency"
"github.com/grafana/grafana-openapi-client-go/client/folders"
"github.com/grafana/grafana-openapi-client-go/models"
"github.com/grafana/grafana/pkg/services/accesscontrol/resourcepermissions"
@ -17,6 +15,7 @@ import (
"github.com/grafana/grafana/pkg/services/user"
"github.com/grafana/grafana/pkg/tests"
"github.com/grafana/grafana/pkg/tests/testinfra"
"github.com/grafana/grafana/pkg/util/retryer"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
@ -64,22 +63,36 @@ func TestGetFolders(t *testing.T) {
numberOfFolders := 5
indexWithoutPermission := 3
err := concurrency.ForEachJob(context.Background(), numberOfFolders, runtime.NumCPU(), func(_ context.Context, job int) error {
resp, err := adminClient.Folders.CreateFolder(&models.CreateFolderCommand{
Title: fmt.Sprintf("Folder %d", job),
UID: fmt.Sprintf("folder-%d", job),
})
if err != nil {
return err
for i := 0; i < numberOfFolders; i++ {
respCode := 0
folderUID := ""
retries := 0
maxRetries := 3
err := retryer.Retry(func() (retryer.RetrySignal, error) {
resp, err := adminClient.Folders.CreateFolder(&models.CreateFolderCommand{
Title: fmt.Sprintf("Folder %d", i),
UID: fmt.Sprintf("folder-%d", i),
})
if err != nil {
if retries == maxRetries {
return retryer.FuncError, err
}
retries++
return retryer.FuncFailure, nil
}
respCode = resp.Code()
folderUID = resp.Payload.UID
return retryer.FuncComplete, nil
}, maxRetries, time.Millisecond*time.Duration(10), time.Second)
require.NoError(t, err)
require.Equal(t, http.StatusOK, respCode)
if i == indexWithoutPermission {
tests.RemoveFolderPermission(t, permissionsStore, orgID, org.RoleViewer, folderUID)
t.Log("Removed viewer permission from folder", folderUID)
}
require.Equal(t, http.StatusOK, resp.Code())
if job == indexWithoutPermission {
tests.RemoveFolderPermission(t, permissionsStore, orgID, org.RoleViewer, resp.Payload.UID)
t.Log("Removed viewer permission from folder", resp.Payload.UID)
}
return nil
})
require.NoError(t, err)
}
t.Run("Admin can get all folders", func(t *testing.T) {
res, err := adminClient.Folders.GetFolders(folders.NewGetFoldersParams())