123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272 |
- suite: container lifecycle test
- templates:
- - common.yaml
- tests:
- - it: should pass with lifecycle
- set:
- image: &image
- repository: nginx
- tag: 1.19.0
- pullPolicy: IfNotPresent
- workload:
- workload-name:
- enabled: true
- primary: true
- type: Deployment
- podSpec:
- containers:
- container-name1:
- enabled: true
- primary: true
- imageSelector: image
- probes: &probes
- liveness:
- enabled: false
- readiness:
- enabled: false
- startup:
- enabled: false
- lifecycle:
- postStart:
- type: exec
- command:
- - echo
- - hello
- preStop:
- type: http
- port: 80
- asserts:
- - documentIndex: &deploymentDoc 0
- isKind:
- of: Deployment
- - documentIndex: *deploymentDoc
- isAPIVersion:
- of: apps/v1
- - documentIndex: *deploymentDoc
- isSubset:
- path: spec.template.spec.containers[0]
- content:
- lifecycle:
- postStart:
- exec:
- command:
- - echo
- - hello
- preStop:
- httpGet:
- port: 80
- path: /
- scheme: HTTP
- - it: should pass with lifecycle
- set:
- image: *image
- some_command: ./some_command
- some_port: 80
- some_host: some_host
- some_path: /api/v1
- some_value: 123
- workload:
- workload-name:
- enabled: true
- primary: true
- type: Deployment
- podSpec:
- containers:
- container-name1:
- enabled: true
- primary: true
- imageSelector: image
- probes: *probes
- lifecycle:
- postStart:
- type: https
- port: "{{ .Values.some_port }}"
- host: "{{ .Values.some_host }}"
- path: "{{ .Values.some_path }}"
- httpHeaders:
- key: "{{ .Values.some_value }}"
- preStop:
- type: exec
- command: "{{ .Values.some_command }}"
- asserts:
- - documentIndex: &deploymentDoc 0
- isKind:
- of: Deployment
- - documentIndex: *deploymentDoc
- isAPIVersion:
- of: apps/v1
- - documentIndex: *deploymentDoc
- isSubset:
- path: spec.template.spec.containers[0]
- content:
- lifecycle:
- postStart:
- httpGet:
- port: 80
- path: /api/v1
- scheme: HTTPS
- host: some_host
- httpHeaders:
- - name: key
- value: "123"
- preStop:
- exec:
- command:
- - ./some_command
- # Failures
- - it: should fail with invalid lifecycle hook
- set:
- image: *image
- workload:
- workload-name:
- enabled: true
- primary: true
- type: Deployment
- podSpec:
- containers:
- container-name1:
- enabled: true
- primary: true
- probes: *probes
- imageSelector: image
- lifecycle:
- invalid: {}
- asserts:
- - failedTemplate:
- errorMessage: Container - Expected <lifecycle> <hook> to be one of [preStop, postStart], but got [invalid]
- - it: should fail with empty lifecycle type
- set:
- image: *image
- workload:
- workload-name:
- enabled: true
- primary: true
- type: Deployment
- podSpec:
- containers:
- container-name1:
- enabled: true
- primary: true
- imageSelector: image
- lifecycle:
- preStop:
- command: []
- asserts:
- - failedTemplate:
- errorMessage: Container - Expected non-empty <lifecycle> <type>
- - it: should fail with invalid lifecycle type
- set:
- image: *image
- workload:
- workload-name:
- enabled: true
- primary: true
- type: Deployment
- podSpec:
- containers:
- container-name1:
- enabled: true
- primary: true
- imageSelector: image
- lifecycle:
- preStop:
- type: invalid
- command: []
- asserts:
- - failedTemplate:
- errorMessage: Container - Expected <lifecycle> <type> to be one of [exec, http, https], but got [invalid]
- - it: should fail with empty command on exec lifecycle type
- set:
- image: *image
- workload:
- workload-name:
- enabled: true
- primary: true
- type: Deployment
- podSpec:
- containers:
- container-name1:
- enabled: true
- primary: true
- imageSelector: image
- lifecycle:
- preStop:
- type: exec
- command: []
- asserts:
- - failedTemplate:
- errorMessage: Container - Expected non-empty <lifecycle> <command> on [exec] type
- - it: should fail with empty port on http lifecycle type
- set:
- image: *image
- workload:
- workload-name:
- enabled: true
- primary: true
- type: Deployment
- podSpec:
- containers:
- container-name1:
- enabled: true
- primary: true
- imageSelector: image
- lifecycle:
- preStop:
- type: http
- port: ""
- asserts:
- - failedTemplate:
- errorMessage: Container - Expected non-empty <lifecycle> <port> on [http] type
- - it: should fail with path not starting with / on http lifecycle type
- set:
- image: *image
- workload:
- workload-name:
- enabled: true
- primary: true
- type: Deployment
- podSpec:
- containers:
- container-name1:
- enabled: true
- primary: true
- imageSelector: image
- lifecycle:
- preStop:
- type: http
- port: 80
- path: "api/v1"
- asserts:
- - failedTemplate:
- errorMessage: Container - Expected <lifecycle> <path> to start with a forward slash [/] on <http> type
- - it: should fail with empty value on httpHeaders on http lifecycle type
- set:
- image: *image
- workload:
- workload-name:
- enabled: true
- primary: true
- type: Deployment
- podSpec:
- containers:
- container-name1:
- enabled: true
- primary: true
- imageSelector: image
- lifecycle:
- preStop:
- type: http
- port: 80
- httpHeaders:
- key: ""
- asserts:
- - failedTemplate:
- errorMessage: Container - Expected non-empty <value> on <httpHeaders>
|