mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Alerting: Marshal incoming json.RawMessage in diff (#84692)
This will ensure the encoding is correct when comparing to the existing rule.
This commit is contained in:
parent
8336f1fc1e
commit
6d16cf2699
@ -346,7 +346,11 @@ func (alertRule *AlertRule) Diff(rule *AlertRule, ignore ...string) cmputil.Diff
|
|||||||
|
|
||||||
// json.RawMessage is a slice of bytes and therefore cmp's default behavior is to compare it by byte, which is not really useful
|
// json.RawMessage is a slice of bytes and therefore cmp's default behavior is to compare it by byte, which is not really useful
|
||||||
var jsonCmp = cmp.Transformer("", func(in json.RawMessage) string {
|
var jsonCmp = cmp.Transformer("", func(in json.RawMessage) string {
|
||||||
return string(in)
|
b, err := json.Marshal(in)
|
||||||
|
if err != nil {
|
||||||
|
return string(in)
|
||||||
|
}
|
||||||
|
return string(b)
|
||||||
})
|
})
|
||||||
ops = append(
|
ops = append(
|
||||||
ops,
|
ops,
|
||||||
|
@ -656,6 +656,21 @@ func TestDiff(t *testing.T) {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
t.Run("should correctly detect no change with '<' and '>' in query", func(t *testing.T) {
|
||||||
|
old := query1
|
||||||
|
new := query1
|
||||||
|
old.Model = json.RawMessage(`{"field1": "$A \u003c 1"}`)
|
||||||
|
new.Model = json.RawMessage(`{"field1": "$A < 1"}`)
|
||||||
|
rule1.Data = []AlertQuery{old}
|
||||||
|
rule2.Data = []AlertQuery{new}
|
||||||
|
|
||||||
|
diff := rule1.Diff(rule2)
|
||||||
|
assert.Nil(t, diff)
|
||||||
|
|
||||||
|
// reset rule1
|
||||||
|
rule1.Data = []AlertQuery{query1}
|
||||||
|
})
|
||||||
|
|
||||||
t.Run("should detect new changes in array if too many fields changed", func(t *testing.T) {
|
t.Run("should detect new changes in array if too many fields changed", func(t *testing.T) {
|
||||||
query2 := query1
|
query2 := query1
|
||||||
query2.QueryType = "test"
|
query2.QueryType = "test"
|
||||||
|
Loading…
Reference in New Issue
Block a user