276 lines
7.5 KiB
YAML
276 lines
7.5 KiB
YAML
suite: container lifecycle test
|
|
templates:
|
|
- common.yaml
|
|
release:
|
|
name: test-release-name
|
|
namespace: test-release-namespace
|
|
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]
|