mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Chore: Fix test to retry fetching provisioned dashboard until is in place (#85408)
Retry fetching provisioned dashboard until is in place
This commit is contained in:
parent
2fd6bc65c7
commit
88be09420c
@ -11,6 +11,7 @@ import (
|
||||
"os"
|
||||
"path/filepath"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
@ -33,6 +34,7 @@ import (
|
||||
"github.com/grafana/grafana/pkg/tests/testinfra"
|
||||
"github.com/grafana/grafana/pkg/tests/testsuite"
|
||||
"github.com/grafana/grafana/pkg/util"
|
||||
"github.com/grafana/grafana/pkg/util/retryer"
|
||||
)
|
||||
|
||||
func TestMain(m *testing.M) {
|
||||
@ -172,21 +174,37 @@ providers:
|
||||
|
||||
t.Run("when provisioned directory is not empty, dashboard should be created", func(t *testing.T) {
|
||||
title := "Grafana Dev Overview & Home"
|
||||
u := fmt.Sprintf("http://admin:admin@%s/api/search?query=%s", grafanaListedAddr, url.QueryEscape(title))
|
||||
// nolint:gosec
|
||||
resp, err := http.Get(u)
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, http.StatusOK, resp.StatusCode)
|
||||
t.Cleanup(func() {
|
||||
err := resp.Body.Close()
|
||||
require.NoError(t, err)
|
||||
})
|
||||
b, err := io.ReadAll(resp.Body)
|
||||
require.NoError(t, err)
|
||||
dashboardList := &model.HitList{}
|
||||
err = json.Unmarshal(b, dashboardList)
|
||||
|
||||
retry := 0
|
||||
retries := 5
|
||||
// retry until the provisioned dashboard is ready
|
||||
err := retryer.Retry(func() (retryer.RetrySignal, error) {
|
||||
retry++
|
||||
u := fmt.Sprintf("http://admin:admin@%s/api/search?query=%s", grafanaListedAddr, url.QueryEscape(title))
|
||||
// nolint:gosec
|
||||
resp, err := http.Get(u)
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, http.StatusOK, resp.StatusCode)
|
||||
t.Cleanup(func() {
|
||||
err := resp.Body.Close()
|
||||
require.NoError(t, err)
|
||||
})
|
||||
b, err := io.ReadAll(resp.Body)
|
||||
require.NoError(t, err)
|
||||
err = json.Unmarshal(b, dashboardList)
|
||||
require.NoError(t, err)
|
||||
if dashboardList.Len() == 0 {
|
||||
if retry >= retries {
|
||||
return retryer.FuncError, fmt.Errorf("max retries exceeded")
|
||||
}
|
||||
t.Log("Dashboard is not ready", "retry", retry)
|
||||
return retryer.FuncFailure, nil
|
||||
}
|
||||
return retryer.FuncComplete, nil
|
||||
}, retries, time.Millisecond*time.Duration(10), time.Second)
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, 1, dashboardList.Len())
|
||||
|
||||
var dashboardUID string
|
||||
var dashboardID int64
|
||||
for _, d := range *dashboardList {
|
||||
|
Loading…
Reference in New Issue
Block a user