mirror of
https://github.com/grafana/grafana.git
synced 2025-08-01 01:51:49 +08:00
Fix flaky test. Sort records and only test the important fields (#49120)
This commit is contained in:
@ -7,6 +7,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"sort"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@ -671,58 +672,16 @@ func TestPrometheusRulesPermissions(t *testing.T) {
|
|||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.Equal(t, 200, resp.StatusCode)
|
require.Equal(t, 200, resp.StatusCode)
|
||||||
|
|
||||||
require.JSONEq(t, `
|
body := asJson(t, b)
|
||||||
{
|
// Sort, for test consistency.
|
||||||
"status": "success",
|
sort.Slice(body.Data.Groups, func(i, j int) bool { return body.Data.Groups[i].File < body.Data.Groups[j].File })
|
||||||
"data": {
|
require.Equal(t, "success", body.Status)
|
||||||
"groups": [{
|
// The request should see both groups, and all rules underneath.
|
||||||
"name": "arulegroup",
|
require.Len(t, body.Data.Groups, 2)
|
||||||
"file": "folder1",
|
require.Len(t, body.Data.Groups[0].Rules, 1)
|
||||||
"rules": [{
|
require.Len(t, body.Data.Groups[1].Rules, 1)
|
||||||
"state": "inactive",
|
require.Equal(t, "folder1", body.Data.Groups[0].File)
|
||||||
"name": "rule under folder folder1",
|
require.Equal(t, "folder2", body.Data.Groups[1].File)
|
||||||
"query": "[{\"refId\":\"A\",\"queryType\":\"\",\"relativeTimeRange\":{\"from\":18000,\"to\":10800},\"datasourceUid\":\"-100\",\"model\":{\"expression\":\"2 + 3 \\u003e 1\",\"intervalMs\":1000,\"maxDataPoints\":43200,\"type\":\"math\"}}]",
|
|
||||||
"duration": 120,
|
|
||||||
"annotations": {
|
|
||||||
"annotation1": "val1"
|
|
||||||
},
|
|
||||||
"labels": {
|
|
||||||
"label1": "val1"
|
|
||||||
},
|
|
||||||
"health": "ok",
|
|
||||||
"type": "alerting",
|
|
||||||
"lastEvaluation": "0001-01-01T00:00:00Z",
|
|
||||||
"evaluationTime": 0
|
|
||||||
}],
|
|
||||||
"interval": 60,
|
|
||||||
"lastEvaluation": "0001-01-01T00:00:00Z",
|
|
||||||
"evaluationTime": 0
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "arulegroup",
|
|
||||||
"file": "folder2",
|
|
||||||
"rules": [{
|
|
||||||
"state": "inactive",
|
|
||||||
"name": "rule under folder folder2",
|
|
||||||
"query": "[{\"refId\":\"A\",\"queryType\":\"\",\"relativeTimeRange\":{\"from\":18000,\"to\":10800},\"datasourceUid\":\"-100\",\"model\":{\"expression\":\"2 + 3 \\u003e 1\",\"intervalMs\":1000,\"maxDataPoints\":43200,\"type\":\"math\"}}]",
|
|
||||||
"duration": 120,
|
|
||||||
"annotations": {
|
|
||||||
"annotation1": "val1"
|
|
||||||
},
|
|
||||||
"labels": {
|
|
||||||
"label1": "val1"
|
|
||||||
},
|
|
||||||
"health": "ok",
|
|
||||||
"type": "alerting",
|
|
||||||
"lastEvaluation": "0001-01-01T00:00:00Z",
|
|
||||||
"evaluationTime": 0
|
|
||||||
}],
|
|
||||||
"interval": 60,
|
|
||||||
"lastEvaluation": "0001-01-01T00:00:00Z",
|
|
||||||
"evaluationTime": 0
|
|
||||||
}]
|
|
||||||
}
|
|
||||||
}`, string(b))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// remove permissions from folder2
|
// remove permissions from folder2
|
||||||
@ -743,35 +702,11 @@ func TestPrometheusRulesPermissions(t *testing.T) {
|
|||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.Equal(t, 200, resp.StatusCode)
|
require.Equal(t, 200, resp.StatusCode)
|
||||||
|
|
||||||
require.JSONEq(t, `
|
body := asJson(t, b)
|
||||||
{
|
require.Equal(t, "success", body.Status)
|
||||||
"status": "success",
|
require.Len(t, body.Data.Groups, 1)
|
||||||
"data": {
|
require.Len(t, body.Data.Groups[0].Rules, 1)
|
||||||
"groups": [{
|
require.Equal(t, "folder1", body.Data.Groups[0].File)
|
||||||
"name": "arulegroup",
|
|
||||||
"file": "folder1",
|
|
||||||
"rules": [{
|
|
||||||
"state": "inactive",
|
|
||||||
"name": "rule under folder folder1",
|
|
||||||
"query": "[{\"refId\":\"A\",\"queryType\":\"\",\"relativeTimeRange\":{\"from\":18000,\"to\":10800},\"datasourceUid\":\"-100\",\"model\":{\"expression\":\"2 + 3 \\u003e 1\",\"intervalMs\":1000,\"maxDataPoints\":43200,\"type\":\"math\"}}]",
|
|
||||||
"duration": 120,
|
|
||||||
"annotations": {
|
|
||||||
"annotation1": "val1"
|
|
||||||
},
|
|
||||||
"labels": {
|
|
||||||
"label1": "val1"
|
|
||||||
},
|
|
||||||
"health": "ok",
|
|
||||||
"type": "alerting",
|
|
||||||
"lastEvaluation": "0001-01-01T00:00:00Z",
|
|
||||||
"evaluationTime": 0
|
|
||||||
}],
|
|
||||||
"interval": 60,
|
|
||||||
"lastEvaluation": "0001-01-01T00:00:00Z",
|
|
||||||
"evaluationTime": 0
|
|
||||||
}]
|
|
||||||
}
|
|
||||||
}`, string(b))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// remove permissions from folder1
|
// remove permissions from folder1
|
||||||
@ -840,3 +775,25 @@ func removeFolderPermission(t *testing.T, store *acdb.AccessControlStore, orgID,
|
|||||||
}, nil)
|
}, nil)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func asJson(t *testing.T, blob []byte) rulesResponse {
|
||||||
|
t.Helper()
|
||||||
|
var r rulesResponse
|
||||||
|
require.NoError(t, json.Unmarshal(blob, &r))
|
||||||
|
return r
|
||||||
|
}
|
||||||
|
|
||||||
|
type rulesResponse struct {
|
||||||
|
Status string
|
||||||
|
Data rulesData
|
||||||
|
}
|
||||||
|
|
||||||
|
type rulesData struct {
|
||||||
|
Groups []groupData
|
||||||
|
}
|
||||||
|
|
||||||
|
type groupData struct {
|
||||||
|
Name string
|
||||||
|
File string
|
||||||
|
Rules []interface{}
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user