175 lines
4.1 KiB
Go
175 lines
4.1 KiB
Go
package prometheus
|
|
|
|
import (
|
|
"github.com/google/go-cmp/cmp"
|
|
"kubesphere.io/kubesphere/pkg/simple/client/monitoring"
|
|
"kubesphere.io/kubesphere/pkg/simple/client/monitoring/prometheus/testdata"
|
|
"testing"
|
|
)
|
|
|
|
func TestMakeExpr(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
opts monitoring.QueryOptions
|
|
}{
|
|
{
|
|
name: "cluster_cpu_utilisation",
|
|
opts: monitoring.QueryOptions{
|
|
Level: monitoring.LevelCluster,
|
|
},
|
|
},
|
|
{
|
|
name: "node_cpu_utilisation",
|
|
opts: monitoring.QueryOptions{
|
|
Level: monitoring.LevelNode,
|
|
NodeName: "i-2dazc1d6",
|
|
},
|
|
},
|
|
{
|
|
name: "node_cpu_total",
|
|
opts: monitoring.QueryOptions{
|
|
Level: monitoring.LevelNode,
|
|
ResourceFilter: "i-2dazc1d6|i-ezjb7gsk",
|
|
},
|
|
},
|
|
{
|
|
name: "workspace_cpu_usage",
|
|
opts: monitoring.QueryOptions{
|
|
Level: monitoring.LevelWorkspace,
|
|
WorkspaceName: "system-workspace",
|
|
},
|
|
},
|
|
{
|
|
name: "workspace_memory_usage",
|
|
opts: monitoring.QueryOptions{
|
|
Level: monitoring.LevelWorkspace,
|
|
ResourceFilter: "system-workspace|demo",
|
|
},
|
|
},
|
|
{
|
|
name: "namespace_cpu_usage",
|
|
opts: monitoring.QueryOptions{
|
|
Level: monitoring.LevelNamespace,
|
|
NamespaceName: "kube-system",
|
|
},
|
|
},
|
|
{
|
|
name: "namespace_memory_usage",
|
|
opts: monitoring.QueryOptions{
|
|
Level: monitoring.LevelNamespace,
|
|
ResourceFilter: "kube-system|default",
|
|
},
|
|
},
|
|
{
|
|
name: "namespace_memory_usage_wo_cache",
|
|
opts: monitoring.QueryOptions{
|
|
Level: monitoring.LevelNamespace,
|
|
WorkspaceName: "system-workspace",
|
|
ResourceFilter: "kube-system|default",
|
|
},
|
|
},
|
|
{
|
|
name: "workload_cpu_usage",
|
|
opts: monitoring.QueryOptions{
|
|
Level: monitoring.LevelWorkload,
|
|
WorkloadKind: "deployment",
|
|
NamespaceName: "default",
|
|
ResourceFilter: "apiserver|coredns",
|
|
},
|
|
},
|
|
{
|
|
name: "workload_deployment_replica_available",
|
|
opts: monitoring.QueryOptions{
|
|
Level: monitoring.LevelWorkload,
|
|
WorkloadKind: ".*",
|
|
NamespaceName: "default",
|
|
ResourceFilter: "apiserver|coredns",
|
|
},
|
|
},
|
|
{
|
|
name: "pod_cpu_usage",
|
|
opts: monitoring.QueryOptions{
|
|
Level: monitoring.LevelPod,
|
|
NamespaceName: "default",
|
|
WorkloadKind: "deployment",
|
|
WorkloadName: "elasticsearch",
|
|
ResourceFilter: "elasticsearch-0",
|
|
},
|
|
},
|
|
{
|
|
name: "pod_memory_usage",
|
|
opts: monitoring.QueryOptions{
|
|
Level: monitoring.LevelPod,
|
|
NamespaceName: "default",
|
|
PodName: "elasticsearch-12345",
|
|
},
|
|
},
|
|
{
|
|
name: "pod_memory_usage_wo_cache",
|
|
opts: monitoring.QueryOptions{
|
|
Level: monitoring.LevelPod,
|
|
NodeName: "i-2dazc1d6",
|
|
PodName: "elasticsearch-12345",
|
|
},
|
|
},
|
|
{
|
|
name: "container_cpu_usage",
|
|
opts: monitoring.QueryOptions{
|
|
Level: monitoring.LevelContainer,
|
|
NamespaceName: "default",
|
|
PodName: "elasticsearch-12345",
|
|
ContainerName: "syscall",
|
|
},
|
|
},
|
|
{
|
|
name: "container_memory_usage",
|
|
opts: monitoring.QueryOptions{
|
|
Level: monitoring.LevelContainer,
|
|
NamespaceName: "default",
|
|
PodName: "elasticsearch-12345",
|
|
ResourceFilter: "syscall",
|
|
},
|
|
},
|
|
{
|
|
name: "pvc_inodes_available",
|
|
opts: monitoring.QueryOptions{
|
|
Level: monitoring.LevelPVC,
|
|
NamespaceName: "default",
|
|
PersistentVolumeClaimName: "db-123",
|
|
},
|
|
},
|
|
{
|
|
name: "pvc_inodes_used",
|
|
opts: monitoring.QueryOptions{
|
|
Level: monitoring.LevelPVC,
|
|
NamespaceName: "default",
|
|
ResourceFilter: "db-123",
|
|
},
|
|
},
|
|
{
|
|
name: "pvc_inodes_total",
|
|
opts: monitoring.QueryOptions{
|
|
Level: monitoring.LevelPVC,
|
|
StorageClassName: "default",
|
|
ResourceFilter: "db-123",
|
|
},
|
|
},
|
|
{
|
|
name: "etcd_server_list",
|
|
opts: monitoring.QueryOptions{
|
|
Level: monitoring.LevelComponent,
|
|
},
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
expected := testdata.PromQLs[tt.name]
|
|
result := makeExpr(tt.name, tt.opts)
|
|
if diff := cmp.Diff(result, expected); diff != "" {
|
|
t.Fatalf("%T differ (-got, +want): %s", expected, diff)
|
|
}
|
|
})
|
|
}
|
|
}
|