validation_test.yaml 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391
  1. suite: service validation test
  2. templates:
  3. - common.yaml
  4. tests:
  5. - it: should fail without primary service
  6. set:
  7. service:
  8. service-name:
  9. enabled: true
  10. asserts:
  11. - failedTemplate:
  12. errorMessage: Service - At least one enabled service must be primary
  13. - it: should fail with more than one primary service
  14. set:
  15. service:
  16. service-name1:
  17. enabled: true
  18. primary: true
  19. service-name2:
  20. enabled: true
  21. primary: true
  22. asserts:
  23. - failedTemplate:
  24. errorMessage: Service - Only one service can be primary
  25. - it: should fail without primary port in service
  26. set:
  27. service:
  28. service-name1:
  29. enabled: true
  30. primary: true
  31. ports:
  32. port-name:
  33. enabled: true
  34. asserts:
  35. - failedTemplate:
  36. errorMessage: Service - At least one enabled port in service must be primary
  37. - it: should fail with more than one primary port in service
  38. set:
  39. service:
  40. service-name1:
  41. enabled: true
  42. primary: true
  43. ports:
  44. port-name1:
  45. enabled: true
  46. primary: true
  47. port-name2:
  48. enabled: true
  49. primary: true
  50. asserts:
  51. - failedTemplate:
  52. errorMessage: Service - Only one port per service can be primary
  53. - it: should fail with no enabled ports in enabled service
  54. set:
  55. service:
  56. service-name1:
  57. enabled: true
  58. primary: true
  59. ports:
  60. port-name1:
  61. enabled: true
  62. primary: true
  63. port-name2:
  64. enabled: true
  65. primary: true
  66. asserts:
  67. - failedTemplate:
  68. errorMessage: Service - Only one port per service can be primary
  69. - it: should fail with annotations not a dict
  70. set:
  71. service:
  72. service-name1:
  73. enabled: true
  74. primary: true
  75. annotations: not-a-dict
  76. ports:
  77. port-name1:
  78. enabled: true
  79. primary: true
  80. asserts:
  81. - failedTemplate:
  82. errorMessage: Service - Expected <annotations> to be a dictionary, but got [string]
  83. - it: should fail with labels not a dict
  84. set:
  85. service:
  86. service-name1:
  87. enabled: true
  88. primary: true
  89. labels: not-a-dict
  90. ports:
  91. port-name1:
  92. enabled: true
  93. primary: true
  94. asserts:
  95. - failedTemplate:
  96. errorMessage: Service - Expected <labels> to be a dictionary, but got [string]
  97. - it: should fail with pod targetSelector not a string
  98. set:
  99. service:
  100. service-name1:
  101. enabled: true
  102. primary: true
  103. targetSelector:
  104. pod: not-a-string
  105. ports:
  106. port-name1:
  107. enabled: true
  108. primary: true
  109. asserts:
  110. - failedTemplate:
  111. errorMessage: Service - Expected <targetSelector> to be [string], but got [map]
  112. - it: should fail with container targetSelector not a string
  113. set:
  114. service:
  115. service-name1:
  116. enabled: true
  117. primary: true
  118. ports:
  119. port-name1:
  120. enabled: true
  121. primary: true
  122. targetSelector:
  123. container: not-a-string
  124. asserts:
  125. - failedTemplate:
  126. errorMessage: Service - Expected <port.targetSelector> to be [string], but got [map]
  127. - it: should fail with selected pod not defined
  128. set:
  129. service:
  130. service-name1:
  131. enabled: true
  132. primary: true
  133. targetSelector: some-pod-name
  134. ports:
  135. port-name:
  136. enabled: true
  137. primary: true
  138. port: 12345
  139. workload:
  140. main:
  141. enabled: true
  142. primary: true
  143. type: Deployment
  144. podSpec: {}
  145. asserts:
  146. - failedTemplate:
  147. errorMessage: Service - Selected pod [some-pod-name] is not defined
  148. - it: should fail with selected pod not enabled
  149. set:
  150. service:
  151. service-name1:
  152. enabled: true
  153. primary: true
  154. targetSelector: some-pod-name
  155. ports:
  156. port-name:
  157. enabled: true
  158. primary: true
  159. port: 12345
  160. workload:
  161. some-pod-name:
  162. enabled: false
  163. primary: true
  164. type: Deployment
  165. podSpec: {}
  166. asserts:
  167. - failedTemplate:
  168. errorMessage: Service - Selected pod [some-pod-name] is not enabled
  169. - it: should fail with invalid port protocol
  170. set:
  171. service:
  172. service-name1:
  173. enabled: true
  174. primary: true
  175. ports:
  176. port-name1:
  177. enabled: true
  178. primary: true
  179. port: 12345
  180. protocol: not-a-protocol
  181. asserts:
  182. - failedTemplate:
  183. errorMessage: Service - Expected <port.protocol> to be one of [tcp, udp, http, https] but got [not-a-protocol]
  184. - it: should fail without port number
  185. set:
  186. service:
  187. service-name1:
  188. enabled: true
  189. primary: true
  190. ports:
  191. port-name1:
  192. enabled: true
  193. primary: true
  194. port:
  195. asserts:
  196. - failedTemplate:
  197. errorMessage: Service - Expected non-empty <port.port>
  198. - it: should fail with invalid service type
  199. set:
  200. service:
  201. service-name1:
  202. enabled: true
  203. primary: true
  204. type: not-a-type
  205. ports:
  206. port-name1:
  207. enabled: true
  208. primary: true
  209. asserts:
  210. - failedTemplate:
  211. errorMessage: Service - Expected <type> to be one of [ClusterIP, NodePort] but got [not-a-type]
  212. - it: should fail with invalid ipFamilyPolicy
  213. set:
  214. service:
  215. service-name1:
  216. enabled: true
  217. primary: true
  218. type: ClusterIP
  219. ipFamilyPolicy: not-a-policy
  220. ports:
  221. port-name1:
  222. enabled: true
  223. primary: true
  224. port: 12345
  225. workload:
  226. some-pod-name:
  227. enabled: true
  228. primary: true
  229. type: Deployment
  230. podSpec: {}
  231. asserts:
  232. - failedTemplate:
  233. errorMessage: Service - Expected <ipFamilyPolicy> to be one of [SingleStack, PreferDualStack, RequireDualStack], but got [not-a-policy]
  234. - it: should fail with ipFamilies not a list
  235. set:
  236. service:
  237. service-name1:
  238. enabled: true
  239. primary: true
  240. type: ClusterIP
  241. ipFamilies: not-a-list
  242. ports:
  243. port-name1:
  244. enabled: true
  245. primary: true
  246. port: 12345
  247. workload:
  248. some-pod-name:
  249. enabled: true
  250. primary: true
  251. type: Deployment
  252. podSpec: {}
  253. asserts:
  254. - failedTemplate:
  255. errorMessage: Service - Expected <ipFamilies> to be a list, but got a [string]
  256. - it: should fail with invalid ipFamilies
  257. set:
  258. service:
  259. service-name1:
  260. enabled: true
  261. primary: true
  262. type: ClusterIP
  263. ipFamilies:
  264. - not-a-family
  265. ports:
  266. port-name1:
  267. enabled: true
  268. primary: true
  269. port: 12345
  270. workload:
  271. some-pod-name:
  272. enabled: true
  273. primary: true
  274. type: Deployment
  275. podSpec: {}
  276. asserts:
  277. - failedTemplate:
  278. errorMessage: Service - Expected <ipFamilies> to be one of [IPv4, IPv6], but got [not-a-family]
  279. - it: should fail with invalid sessionAffinity
  280. set:
  281. service:
  282. service-name1:
  283. enabled: true
  284. primary: true
  285. type: ClusterIP
  286. sessionAffinity: not-an-affinity
  287. ports:
  288. port-name1:
  289. enabled: true
  290. primary: true
  291. port: 12345
  292. workload:
  293. some-pod-name:
  294. enabled: true
  295. primary: true
  296. type: Deployment
  297. podSpec: {}
  298. asserts:
  299. - failedTemplate:
  300. errorMessage: Service - Expected <sessionAffinity> to be one of [ClientIP, None], but got [not-an-affinity]
  301. - it: should fail with invalid timeoutSeconds in sessionAffinityConfig
  302. set:
  303. service:
  304. service-name1:
  305. enabled: true
  306. primary: true
  307. type: ClusterIP
  308. sessionAffinity: ClientIP
  309. sessionAffinityConfig:
  310. clientIP:
  311. timeoutSeconds: -1
  312. ports:
  313. port-name1:
  314. enabled: true
  315. primary: true
  316. port: 12345
  317. workload:
  318. some-pod-name:
  319. enabled: true
  320. primary: true
  321. type: Deployment
  322. podSpec: {}
  323. asserts:
  324. - failedTemplate:
  325. errorMessage: Service - Expected <sessionAffinityConfig.clientIP.timeoutSeconds> to be between [0 - 86400], but got [-1]
  326. - it: should fail without nodePort number on NodePort
  327. set:
  328. service:
  329. service-name1:
  330. enabled: true
  331. primary: true
  332. type: NodePort
  333. ports:
  334. port-name1:
  335. enabled: true
  336. primary: true
  337. port: 80
  338. nodePort:
  339. workload:
  340. some-pod-name:
  341. enabled: true
  342. primary: true
  343. type: Deployment
  344. podSpec: {}
  345. asserts:
  346. - failedTemplate:
  347. errorMessage: Service - Expected non-empty <nodePort> on NodePort service type
  348. - it: should fail with nodePort lower than the minimum on NodePort
  349. set:
  350. global:
  351. minNodePort: 10000
  352. service:
  353. service-name1:
  354. enabled: true
  355. primary: true
  356. type: NodePort
  357. ports:
  358. port-name1:
  359. enabled: true
  360. primary: true
  361. port: 80
  362. nodePort: 9999
  363. workload:
  364. some-pod-name:
  365. enabled: true
  366. primary: true
  367. type: Deployment
  368. podSpec: {}
  369. asserts:
  370. - failedTemplate:
  371. errorMessage: Service - Expected <nodePort> to be higher than [10000], but got [9999]