|
|
@@ -0,0 +1,147 @@
|
|
|
+package opencost
|
|
|
+
|
|
|
+import (
|
|
|
+ "testing"
|
|
|
+
|
|
|
+ "github.com/opencost/opencost/core/pkg/filter/ast"
|
|
|
+ "github.com/opencost/opencost/core/pkg/filter/node"
|
|
|
+)
|
|
|
+
|
|
|
+func TestNodeMatcher(t *testing.T) {
|
|
|
+ var n *Node
|
|
|
+ var id ast.Identifier
|
|
|
+ var act string
|
|
|
+ var actMap map[string]string
|
|
|
+ var err error
|
|
|
+
|
|
|
+ n = &Node{
|
|
|
+ Properties: &AssetProperties{
|
|
|
+ Cluster: "cluster",
|
|
|
+ ProviderID: "providerid",
|
|
|
+ Provider: "provider",
|
|
|
+ Name: "name",
|
|
|
+ },
|
|
|
+ Labels: AssetLabels{
|
|
|
+ "nodegroup": "ng",
|
|
|
+ "os": "linux",
|
|
|
+ },
|
|
|
+ NodeType: "nodetype",
|
|
|
+ }
|
|
|
+
|
|
|
+ // test nodeFieldMap
|
|
|
+ id = ast.Identifier{
|
|
|
+ Field: &ast.Field{Name: string(node.FieldProviderID)},
|
|
|
+ }
|
|
|
+ act, err = nodeFieldMap(nil, id)
|
|
|
+ if act != "" || err == nil {
|
|
|
+ t.Errorf("expected error for nil node")
|
|
|
+ }
|
|
|
+
|
|
|
+ act, err = nodeFieldMap(n, id)
|
|
|
+ if err != nil {
|
|
|
+ t.Errorf("unexpected error for non-nil node")
|
|
|
+ }
|
|
|
+ if act != "providerid" {
|
|
|
+ t.Errorf("expected %s; received %s", "providerid", act)
|
|
|
+ }
|
|
|
+
|
|
|
+ id = ast.Identifier{
|
|
|
+ Field: &ast.Field{Name: string(node.FieldClusterID)},
|
|
|
+ }
|
|
|
+ act, err = nodeFieldMap(nil, id)
|
|
|
+ if act != "" || err == nil {
|
|
|
+ t.Errorf("expected error for nil node")
|
|
|
+ }
|
|
|
+ act, err = nodeFieldMap(n, id)
|
|
|
+ if err != nil {
|
|
|
+ t.Errorf("unexpected error for non-nil node")
|
|
|
+ }
|
|
|
+ if act != "cluster" {
|
|
|
+ t.Errorf("expected %s; received %s", "cluster", act)
|
|
|
+ }
|
|
|
+
|
|
|
+ id = ast.Identifier{
|
|
|
+ Field: &ast.Field{Name: string(node.FieldName)},
|
|
|
+ }
|
|
|
+ act, err = nodeFieldMap(nil, id)
|
|
|
+ if act != "" || err == nil {
|
|
|
+ t.Errorf("expected error for nil node")
|
|
|
+ }
|
|
|
+ act, err = nodeFieldMap(n, id)
|
|
|
+ if err != nil {
|
|
|
+ t.Errorf("unexpected error for non-nil node")
|
|
|
+ }
|
|
|
+ if act != "name" {
|
|
|
+ t.Errorf("expected %s; received %s", "name", act)
|
|
|
+ }
|
|
|
+
|
|
|
+ id = ast.Identifier{
|
|
|
+ Field: &ast.Field{Name: string(node.FieldNodeType)},
|
|
|
+ }
|
|
|
+ act, err = nodeFieldMap(nil, id)
|
|
|
+ if act != "" || err == nil {
|
|
|
+ t.Errorf("expected error for nil node")
|
|
|
+ }
|
|
|
+ act, err = nodeFieldMap(n, id)
|
|
|
+ if err != nil {
|
|
|
+ t.Errorf("unexpected error for non-nil node")
|
|
|
+ }
|
|
|
+ if act != "nodetype" {
|
|
|
+ t.Errorf("expected %s; received %s", "nodetype", act)
|
|
|
+ }
|
|
|
+
|
|
|
+ id = ast.Identifier{
|
|
|
+ Field: &ast.Field{Name: string(node.FieldProvider)},
|
|
|
+ }
|
|
|
+ act, err = nodeFieldMap(nil, id)
|
|
|
+ if act != "" || err == nil {
|
|
|
+ t.Errorf("expected error for nil node")
|
|
|
+ }
|
|
|
+ act, err = nodeFieldMap(n, id)
|
|
|
+ if err != nil {
|
|
|
+ t.Errorf("unexpected error for non-nil node")
|
|
|
+ }
|
|
|
+ if act != "provider" {
|
|
|
+ t.Errorf("expected %s; received %s", "provider", act)
|
|
|
+ }
|
|
|
+
|
|
|
+ id = ast.Identifier{
|
|
|
+ Field: &ast.Field{Name: string(node.FieldLabel)},
|
|
|
+ Key: "nodegroup",
|
|
|
+ }
|
|
|
+ act, err = nodeFieldMap(nil, id)
|
|
|
+ if act != "" || err == nil {
|
|
|
+ t.Errorf("expected error for nil node")
|
|
|
+ }
|
|
|
+ act, err = nodeFieldMap(n, id)
|
|
|
+ if err != nil {
|
|
|
+ t.Errorf("unexpected error for non-nil node")
|
|
|
+ }
|
|
|
+ if act != "ng" {
|
|
|
+ t.Errorf("expected %s; received %s", "ng", act)
|
|
|
+ }
|
|
|
+
|
|
|
+ // test nodeSliceFieldMap
|
|
|
+ id = ast.Identifier{}
|
|
|
+ _, err = nodeSliceFieldMap(nil, id)
|
|
|
+ if err == nil {
|
|
|
+ t.Errorf("expected error for slice")
|
|
|
+ }
|
|
|
+ _, err = nodeSliceFieldMap(n, id)
|
|
|
+ if err == nil {
|
|
|
+ t.Errorf("expected error for slice")
|
|
|
+ }
|
|
|
+
|
|
|
+ // test nodeMapFieldMap
|
|
|
+ id = ast.Identifier{
|
|
|
+ Field: &ast.Field{Name: string(node.FieldLabel)},
|
|
|
+ }
|
|
|
+ actMap, err = nodeMapFieldMap(nil, id)
|
|
|
+ if err == nil {
|
|
|
+ t.Errorf("expected error for nil node")
|
|
|
+ }
|
|
|
+ actMap, err = nodeMapFieldMap(n, id)
|
|
|
+ if len(actMap) != 2 || err != nil {
|
|
|
+ t.Errorf("unexpected error for map")
|
|
|
+ }
|
|
|
+}
|