Files
kubesphere/pkg/simple/client/monitoring/prometheus/promql_test.go
huanggze fc56333d3c monitoring: some bug fix
Signed-off-by: huanggze <loganhuang@yunify.com>
2020-04-24 21:00:59 +08:00

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)
}
})
}
}