nodematcher_test.go 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. package opencost
  2. import (
  3. "testing"
  4. "github.com/opencost/opencost/core/pkg/filter/ast"
  5. "github.com/opencost/opencost/core/pkg/filter/node"
  6. )
  7. func TestNodeMatcher(t *testing.T) {
  8. var n *Node
  9. var id ast.Identifier
  10. var act string
  11. var actMap map[string]string
  12. var err error
  13. n = &Node{
  14. Properties: &AssetProperties{
  15. Cluster: "cluster",
  16. ProviderID: "providerid",
  17. Provider: "provider",
  18. Name: "name",
  19. },
  20. Labels: AssetLabels{
  21. "nodegroup": "ng",
  22. "os": "linux",
  23. },
  24. NodeType: "nodetype",
  25. }
  26. // test nodeFieldMap
  27. id = ast.Identifier{
  28. Field: &ast.Field{Name: string(node.FieldProviderID)},
  29. }
  30. act, err = nodeFieldMap(nil, id)
  31. if act != "" || err == nil {
  32. t.Errorf("expected error for nil node")
  33. }
  34. act, err = nodeFieldMap(n, id)
  35. if err != nil {
  36. t.Errorf("unexpected error for non-nil node")
  37. }
  38. if act != "providerid" {
  39. t.Errorf("expected %s; received %s", "providerid", act)
  40. }
  41. id = ast.Identifier{
  42. Field: &ast.Field{Name: string(node.FieldClusterID)},
  43. }
  44. act, err = nodeFieldMap(nil, id)
  45. if act != "" || err == nil {
  46. t.Errorf("expected error for nil node")
  47. }
  48. act, err = nodeFieldMap(n, id)
  49. if err != nil {
  50. t.Errorf("unexpected error for non-nil node")
  51. }
  52. if act != "cluster" {
  53. t.Errorf("expected %s; received %s", "cluster", act)
  54. }
  55. id = ast.Identifier{
  56. Field: &ast.Field{Name: string(node.FieldName)},
  57. }
  58. act, err = nodeFieldMap(nil, id)
  59. if act != "" || err == nil {
  60. t.Errorf("expected error for nil node")
  61. }
  62. act, err = nodeFieldMap(n, id)
  63. if err != nil {
  64. t.Errorf("unexpected error for non-nil node")
  65. }
  66. if act != "name" {
  67. t.Errorf("expected %s; received %s", "name", act)
  68. }
  69. id = ast.Identifier{
  70. Field: &ast.Field{Name: string(node.FieldNodeType)},
  71. }
  72. act, err = nodeFieldMap(nil, id)
  73. if act != "" || err == nil {
  74. t.Errorf("expected error for nil node")
  75. }
  76. act, err = nodeFieldMap(n, id)
  77. if err != nil {
  78. t.Errorf("unexpected error for non-nil node")
  79. }
  80. if act != "nodetype" {
  81. t.Errorf("expected %s; received %s", "nodetype", act)
  82. }
  83. id = ast.Identifier{
  84. Field: &ast.Field{Name: string(node.FieldProvider)},
  85. }
  86. act, err = nodeFieldMap(nil, id)
  87. if act != "" || err == nil {
  88. t.Errorf("expected error for nil node")
  89. }
  90. act, err = nodeFieldMap(n, id)
  91. if err != nil {
  92. t.Errorf("unexpected error for non-nil node")
  93. }
  94. if act != "provider" {
  95. t.Errorf("expected %s; received %s", "provider", act)
  96. }
  97. id = ast.Identifier{
  98. Field: &ast.Field{Name: string(node.FieldLabel)},
  99. Key: "nodegroup",
  100. }
  101. act, err = nodeFieldMap(nil, id)
  102. if act != "" || err == nil {
  103. t.Errorf("expected error for nil node")
  104. }
  105. act, err = nodeFieldMap(n, id)
  106. if err != nil {
  107. t.Errorf("unexpected error for non-nil node")
  108. }
  109. if act != "ng" {
  110. t.Errorf("expected %s; received %s", "ng", act)
  111. }
  112. // test nodeSliceFieldMap
  113. id = ast.Identifier{}
  114. _, err = nodeSliceFieldMap(nil, id)
  115. if err == nil {
  116. t.Errorf("expected error for slice")
  117. }
  118. _, err = nodeSliceFieldMap(n, id)
  119. if err == nil {
  120. t.Errorf("expected error for slice")
  121. }
  122. // test nodeMapFieldMap
  123. id = ast.Identifier{
  124. Field: &ast.Field{Name: string(node.FieldLabel)},
  125. }
  126. actMap, err = nodeMapFieldMap(nil, id)
  127. if err == nil {
  128. t.Errorf("expected error for nil node")
  129. }
  130. actMap, err = nodeMapFieldMap(n, id)
  131. if len(actMap) != 2 || err != nil {
  132. t.Errorf("unexpected error for map")
  133. }
  134. }