Skip to content

Commit

Permalink
enforce consistent charts order
Browse files Browse the repository at this point in the history
  • Loading branch information
jotak committed Apr 8, 2024
1 parent 044d976 commit c7ad582
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 0 deletions.
3 changes: 3 additions & 0 deletions pkg/dashboards/dashboard.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package dashboards

import (
"fmt"
"sort"
"strings"

metricslatest "github.com/netobserv/network-observability-operator/apis/flowmetrics/v1alpha1"
Expand Down Expand Up @@ -91,6 +92,8 @@ func createFlowMetricsDashboard(dashboardName string, charts []chart) string {
func CreateFlowMetricsDashboards(metrics []metricslatest.FlowMetric) map[string]string {
dashboardsJSON := make(map[string]string)
chartsPerDashboard := make(map[string][]chart)
// Sort alphabetically to enforce consistent ordering
sort.Slice(metrics, func(i, j int) bool { return metrics[i].Name < metrics[j].Name })
for i := range metrics {
metric := &metrics[i]
for j := range metric.Spec.Charts {
Expand Down
41 changes: 41 additions & 0 deletions pkg/dashboards/dashboard_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (
metricslatest "github.com/netobserv/network-observability-operator/apis/flowmetrics/v1alpha1"
"github.com/netobserv/network-observability-operator/pkg/metrics"
"github.com/stretchr/testify/assert"
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)

func TestCreateFlowMetricsDashboard_All(t *testing.T) {
Expand Down Expand Up @@ -295,3 +296,43 @@ func TestCreateCustomDashboard(t *testing.T) {
},
}, r1.Panels[0])
}

func TestSortedCharts(t *testing.T) {
assert := assert.New(t)

var quickChart = func(title string) metricslatest.Chart {
return metricslatest.Chart{
DashboardName: "Main",
SectionName: "S0",
Title: title,
Type: metricslatest.ChartTypeSingleStat,
Queries: []metricslatest.Query{{PromQL: `(query)`, Legend: ""}},
}
}

js := CreateFlowMetricsDashboards([]metricslatest.FlowMetric{
{
ObjectMeta: v1.ObjectMeta{Name: "z"},
Spec: metricslatest.FlowMetricSpec{
Charts: []metricslatest.Chart{
quickChart("C0"),
quickChart("C1"),
},
},
},
{
ObjectMeta: v1.ObjectMeta{Name: "a"},
Spec: metricslatest.FlowMetricSpec{
Charts: []metricslatest.Chart{
quickChart("C2"),
},
},
},
})

d, err := FromBytes([]byte(js["Main"]))
assert.NoError(err)

r := d.FindRow("S0")
assert.Equal([]string{"C2", "C0", "C1"}, r.Titles())
}

0 comments on commit c7ad582

Please sign in to comment.