Skip to content

Commit

Permalink
test: ensure rate calculations are not 1m
Browse files Browse the repository at this point in the history
  • Loading branch information
cgrinds committed Feb 2, 2023
1 parent 86790b9 commit a793a54
Showing 1 changed file with 37 additions and 15 deletions.
52 changes: 37 additions & 15 deletions cmd/tools/grafana/dashboard_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -347,21 +347,7 @@ func checkUnusedVariables(t *testing.T, path string, data []byte) {
return true
})

// collect all expressions
expressions := make([]string, 0)
gjson.GetBytes(data, "panels").ForEach(func(key, value gjson.Result) bool {
doExpr("", key, value, func(path string, expr string) {
expressions = append(expressions, expr)
})
value.Get("panels").ForEach(func(key2, value2 gjson.Result) bool {
pathPrefix := fmt.Sprintf("panels[%d].", key.Int())
doExpr(pathPrefix, key2, value2, func(path string, expr string) {
expressions = append(expressions, expr)
})
return true
})
return true
})
expressions := allExpressions(data)

// check that each variable is used in at least one expression
varLoop:
Expand All @@ -381,6 +367,24 @@ varLoop:
}
}

func allExpressions(data []byte) []string {
expressions := make([]string, 0)
gjson.GetBytes(data, "panels").ForEach(func(key, value gjson.Result) bool {
doExpr("", key, value, func(path string, expr string) {
expressions = append(expressions, expr)
})
value.Get("panels").ForEach(func(key2, value2 gjson.Result) bool {
pathPrefix := fmt.Sprintf("panels[%d].", key.Int())
doExpr(pathPrefix, key2, value2, func(path string, expr string) {
expressions = append(expressions, expr)
})
return true
})
return true
})
return expressions
}

func doExpr(pathPrefix string, key gjson.Result, value gjson.Result, exprFunc func(path string, expr string)) {
kind := value.Get("type").String()
if kind == "row" {
Expand Down Expand Up @@ -674,3 +678,21 @@ func checkPanelChildPanels(t *testing.T, path string, data []byte) {
return true
})
}

func TestRatesAreNot1m(t *testing.T) {
visitDashboards(
[]string{"../../../grafana/dashboards/cmode", "../../../grafana/dashboards/storagegrid"},
func(path string, data []byte) {
checkRate1m(t, shortPath(path), data)
},
)
}

func checkRate1m(t *testing.T, path string, data []byte) {
expressions := allExpressions(data)
for _, expr := range expressions {
if strings.Contains(expr, "[1m]") {
t.Errorf("dashboard=%s, expr should not use rate of [1m] expr=%s", path, expr)
}
}
}

0 comments on commit a793a54

Please sign in to comment.