relation_test.go 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274
  1. package grapher_test
  2. import (
  3. "io/ioutil"
  4. "testing"
  5. "github.com/porter-dev/porter/internal/helm/grapher"
  6. )
  7. var c7 = grapher.Object{
  8. Kind: "StatefulSet",
  9. Relations: grapher.Relations{
  10. ControlRels: []grapher.ControlRel{
  11. grapher.ControlRel{
  12. Relation: grapher.Relation{
  13. Source: 3,
  14. Target: 4,
  15. },
  16. Replicas: 2,
  17. },
  18. grapher.ControlRel{
  19. Relation: grapher.Relation{
  20. Source: 3,
  21. Target: 5,
  22. },
  23. Replicas: 2,
  24. },
  25. },
  26. LabelRels: []grapher.LabelRel{
  27. grapher.LabelRel{
  28. Relation: grapher.Relation{
  29. Source: 3,
  30. Target: 4,
  31. },
  32. },
  33. grapher.LabelRel{
  34. Relation: grapher.Relation{
  35. Source: 3,
  36. Target: 5,
  37. },
  38. },
  39. },
  40. },
  41. }
  42. var c5 = grapher.Object{
  43. Kind: "Pod",
  44. Relations: grapher.Relations{
  45. ControlRels: []grapher.ControlRel{
  46. grapher.ControlRel{
  47. Relation: grapher.Relation{
  48. Source: 3,
  49. Target: 4,
  50. },
  51. Replicas: 2,
  52. },
  53. },
  54. LabelRels: []grapher.LabelRel{
  55. grapher.LabelRel{
  56. Relation: grapher.Relation{
  57. Source: 1,
  58. Target: 4,
  59. },
  60. },
  61. grapher.LabelRel{
  62. Relation: grapher.Relation{
  63. Source: 2,
  64. Target: 4,
  65. },
  66. },
  67. grapher.LabelRel{
  68. Relation: grapher.Relation{
  69. Source: 3,
  70. Target: 4,
  71. },
  72. },
  73. },
  74. },
  75. }
  76. var c6 = grapher.Object{
  77. Kind: "Pod",
  78. Relations: grapher.Relations{
  79. ControlRels: []grapher.ControlRel{
  80. grapher.ControlRel{
  81. Relation: grapher.Relation{
  82. Source: 3,
  83. Target: 5,
  84. },
  85. Replicas: 2,
  86. },
  87. },
  88. LabelRels: []grapher.LabelRel{
  89. grapher.LabelRel{
  90. Relation: grapher.Relation{
  91. Source: 1,
  92. Target: 5,
  93. },
  94. },
  95. grapher.LabelRel{
  96. Relation: grapher.Relation{
  97. Source: 2,
  98. Target: 5,
  99. },
  100. },
  101. grapher.LabelRel{
  102. Relation: grapher.Relation{
  103. Source: 3,
  104. Target: 5,
  105. },
  106. },
  107. },
  108. },
  109. }
  110. var expControlRels1 = []grapher.Object{
  111. c1, c2, c3, c7, c5, c6,
  112. }
  113. type test struct {
  114. Expected []grapher.Object
  115. FilePath string
  116. }
  117. func TestControlRels(t *testing.T) {
  118. ts := []test{
  119. test{
  120. Expected: expControlRels1,
  121. FilePath: "./test_yaml/cassandra.yaml",
  122. },
  123. }
  124. for _, r := range ts {
  125. // Load in yaml from test files
  126. file, err := ioutil.ReadFile(r.FilePath)
  127. if err != nil {
  128. t.Errorf("Error reading file %s", r.FilePath)
  129. }
  130. yamlArr := grapher.ImportMultiDocYAML(file)
  131. objects := grapher.ParseObjs(yamlArr, "default")
  132. parsed := grapher.ParsedObjs{
  133. Objects: objects,
  134. }
  135. parsed.GetControlRel()
  136. for i, o := range parsed.Objects {
  137. e := r.Expected[i]
  138. if len(e.Relations.ControlRels) != len(o.Relations.ControlRels) {
  139. t.Errorf("Number of ControlRel differs for %s of type %s. Expected %d. Got %d",
  140. e.Name, e.Kind, len(e.Relations.ControlRels), len(o.Relations.ControlRels))
  141. }
  142. for j, crel := range o.Relations.ControlRels {
  143. expCrel := e.Relations.ControlRels[j]
  144. if expCrel.Relation.Source != crel.Relation.Source {
  145. t.Errorf("Source in ControlRel differs for %s of type %s. Expected %d. Got %d",
  146. o.Name, o.Kind, expCrel.Relation.Source, crel.Relation.Source)
  147. }
  148. if expCrel.Relation.Target != crel.Relation.Target {
  149. t.Errorf("Target in ControlRel differs for %s of type %s. Expected %d. Got %d",
  150. o.Name, o.Kind, expCrel.Relation.Target, crel.Relation.Target)
  151. }
  152. if expCrel.Replicas != crel.Replicas {
  153. t.Errorf("Number of replicas in ControlRel differs for %s of type %s. Expected %d. Got %d",
  154. o.Name, o.Kind, expCrel.Replicas, crel.Replicas)
  155. }
  156. }
  157. }
  158. }
  159. }
  160. func TestLabelRels(t *testing.T) {
  161. ts := []test{
  162. test{
  163. Expected: expControlRels1,
  164. FilePath: "./test_yaml/cassandra.yaml",
  165. },
  166. }
  167. for _, r := range ts {
  168. // Load in yaml from test files
  169. file, err := ioutil.ReadFile(r.FilePath)
  170. if err != nil {
  171. t.Errorf("Error reading file %s", r.FilePath)
  172. }
  173. yamlArr := grapher.ImportMultiDocYAML(file)
  174. objects := grapher.ParseObjs(yamlArr, "default")
  175. parsed := grapher.ParsedObjs{
  176. Objects: objects,
  177. }
  178. parsed.GetControlRel()
  179. parsed.GetLabelRel()
  180. for i, o := range parsed.Objects {
  181. e := r.Expected[i]
  182. if len(e.Relations.LabelRels) != len(o.Relations.LabelRels) {
  183. t.Errorf("Number of LabelRel differs for %s of type %s. Expected %d. Got %d",
  184. e.Name, e.Kind, len(e.Relations.LabelRels), len(o.Relations.LabelRels))
  185. }
  186. for j, rrel := range o.Relations.LabelRels {
  187. expRrel := e.Relations.LabelRels[j]
  188. if expRrel.Relation.Source != rrel.Relation.Source {
  189. t.Errorf("Source in ControlRel differs for %s of type %s. Expected %d. Got %d",
  190. o.Name, o.Kind, expRrel.Relation.Source, rrel.Relation.Source)
  191. }
  192. if expRrel.Relation.Target != rrel.Relation.Target {
  193. t.Errorf("Target in ControlRel differs for %s of type %s. Expected %d. Got %d",
  194. o.Name, o.Kind, expRrel.Relation.Target, rrel.Relation.Target)
  195. }
  196. }
  197. }
  198. }
  199. }
  200. func TestSpecRels(t *testing.T) {
  201. ts := []test{
  202. test{
  203. Expected: expControlRels1,
  204. FilePath: "./test_yaml/ingress.yaml",
  205. },
  206. }
  207. for _, r := range ts {
  208. // Load in yaml from test files
  209. file, err := ioutil.ReadFile(r.FilePath)
  210. if err != nil {
  211. t.Errorf("Error reading file %s", r.FilePath)
  212. }
  213. yamlArr := grapher.ImportMultiDocYAML(file)
  214. objects := grapher.ParseObjs(yamlArr, "default")
  215. parsed := grapher.ParsedObjs{
  216. Objects: objects,
  217. }
  218. parsed.GetControlRel()
  219. parsed.GetSpecRel()
  220. // for i, o := range parsed.Objects {
  221. // e := r.Expected[i]
  222. // if len(e.Relations.SpecRels) != len(o.Relations.SpecRels) {
  223. // t.Errorf("Number of SpecRel differs for %s of type %s. Expected %d. Got %d",
  224. // e.Name, e.Kind, len(e.Relations.SpecRels), len(o.Relations.SpecRels))
  225. // }
  226. // for j, rrel := range o.Relations.SpecRels {
  227. // expRrel := e.Relations.SpecRels[j]
  228. // if expRrel.Relation.Source != rrel.Relation.Source {
  229. // t.Errorf("Source in ControlRel differs for %s of type %s. Expected %d. Got %d",
  230. // o.Name, o.Kind, expRrel.Relation.Source, rrel.Relation.Source)
  231. // }
  232. // if expRrel.Relation.Target != rrel.Relation.Target {
  233. // t.Errorf("Target in ControlRel differs for %s of type %s. Expected %d. Got %d",
  234. // o.Name, o.Kind, expRrel.Relation.Target, rrel.Relation.Target)
  235. // }
  236. // }
  237. // }
  238. }
  239. }