master
go 38 lines 1.03 KB
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 package vsphere
4
5 import (
6 "testing"
7
8 "github.com/stretchr/testify/require"
9
10 "github.com/netdata/netdata/go/plugins/plugin/framework/chartengine"
11 "github.com/netdata/netdata/go/plugins/plugin/framework/charttpl"
12 "github.com/netdata/netdata/go/plugins/plugin/go.d/pkg/collecttest"
13 )
14
15 func TestCollector_ChartTemplateYAML(t *testing.T) {
16 collecttest.AssertChartTemplateSchema(t, chartTemplateYAML)
17
18 spec, err := charttpl.DecodeYAML([]byte(chartTemplateYAML))
19 require.NoError(t, err)
20 assertUniqueChartPriorities(t, spec)
21
22 _, err = chartengine.Compile(spec, 1)
23 require.NoError(t, err)
24 }
25
26 func assertUniqueChartPriorities(t *testing.T, spec *charttpl.Spec) {
27 t.Helper()
28
29 seen := make(map[int]string)
30 for _, group := range spec.Groups {
31 for _, chart := range group.Charts {
32 if other, ok := seen[chart.Priority]; ok {
33 require.Failf(t, "duplicate chart priority", "priority %d is used by %s and %s", chart.Priority, other, chart.Context)
34 }
35 seen[chart.Priority] = chart.Context
36 }
37 }
38 }