302 lines
8 KiB
YAML
302 lines
8 KiB
YAML
|
suite: Test spark operator deployment
|
||
|
|
||
|
templates:
|
||
|
- deployment.yaml
|
||
|
|
||
|
release:
|
||
|
name: spark-operator
|
||
|
|
||
|
tests:
|
||
|
- it: Should contain namespace arg when sparkJobNamespaces is equal to 1
|
||
|
set:
|
||
|
sparkJobNamespaces:
|
||
|
- ns1
|
||
|
asserts:
|
||
|
- contains:
|
||
|
path: spec.template.spec.containers[0].args
|
||
|
content: -namespace=ns1
|
||
|
|
||
|
- it: Should add pod annotations if podAnnotations is set
|
||
|
set:
|
||
|
podAnnotations:
|
||
|
key1: value1
|
||
|
key2: value2
|
||
|
asserts:
|
||
|
- equal:
|
||
|
path: spec.template.metadata.annotations.key1
|
||
|
value: value1
|
||
|
- equal:
|
||
|
path: spec.template.metadata.annotations.key2
|
||
|
value: value2
|
||
|
|
||
|
- it: Should add prometheus annotations if metrics.enable is true
|
||
|
set:
|
||
|
metrics:
|
||
|
enable: true
|
||
|
port: 10254
|
||
|
endpoint: /metrics
|
||
|
asserts:
|
||
|
- equal:
|
||
|
path: spec.template.metadata.annotations["prometheus.io/scrape"]
|
||
|
value: "true"
|
||
|
- equal:
|
||
|
path: spec.template.metadata.annotations["prometheus.io/port"]
|
||
|
value: "10254"
|
||
|
- equal:
|
||
|
path: spec.template.metadata.annotations["prometheus.io/path"]
|
||
|
value: /metrics
|
||
|
|
||
|
- it: Should add secrets if imagePullSecrets is set
|
||
|
set:
|
||
|
imagePullSecrets:
|
||
|
- name: test-secret1
|
||
|
- name: test-secret2
|
||
|
asserts:
|
||
|
- equal:
|
||
|
path: spec.template.spec.imagePullSecrets[0].name
|
||
|
value: test-secret1
|
||
|
- equal:
|
||
|
path: spec.template.spec.imagePullSecrets[1].name
|
||
|
value: test-secret2
|
||
|
|
||
|
- it: Should add pod securityContext if podSecurityContext is set
|
||
|
set:
|
||
|
podSecurityContext:
|
||
|
runAsUser: 1000
|
||
|
runAsGroup: 2000
|
||
|
fsGroup: 3000
|
||
|
asserts:
|
||
|
- equal:
|
||
|
path: spec.template.spec.securityContext.runAsUser
|
||
|
value: 1000
|
||
|
- equal:
|
||
|
path: spec.template.spec.securityContext.runAsGroup
|
||
|
value: 2000
|
||
|
- equal:
|
||
|
path: spec.template.spec.securityContext.fsGroup
|
||
|
value: 3000
|
||
|
|
||
|
- it: Should use the specified image repository if image.repository and image.tag is set
|
||
|
set:
|
||
|
image:
|
||
|
repository: test-repository
|
||
|
tag: test-tag
|
||
|
asserts:
|
||
|
- equal:
|
||
|
path: spec.template.spec.containers[0].image
|
||
|
value: test-repository:test-tag
|
||
|
|
||
|
- it: Should use the specified image pull policy if image.pullPolicy is set
|
||
|
set:
|
||
|
image:
|
||
|
pullPolicy: Always
|
||
|
asserts:
|
||
|
- equal:
|
||
|
path: spec.template.spec.containers[0].imagePullPolicy
|
||
|
value: Always
|
||
|
|
||
|
- it: Should add container securityContext if securityContext is set
|
||
|
set:
|
||
|
securityContext:
|
||
|
runAsUser: 1000
|
||
|
runAsGroup: 2000
|
||
|
fsGroup: 3000
|
||
|
asserts:
|
||
|
- equal:
|
||
|
path: spec.template.spec.containers[0].securityContext.runAsUser
|
||
|
value: 1000
|
||
|
- equal:
|
||
|
path: spec.template.spec.containers[0].securityContext.runAsGroup
|
||
|
value: 2000
|
||
|
- equal:
|
||
|
path: spec.template.spec.containers[0].securityContext.fsGroup
|
||
|
value: 3000
|
||
|
|
||
|
- it: Should add metric ports if metrics.enable is true
|
||
|
set:
|
||
|
metrics:
|
||
|
enable: true
|
||
|
port: 10254
|
||
|
portName: metrics
|
||
|
asserts:
|
||
|
- contains:
|
||
|
path: spec.template.spec.containers[0].ports
|
||
|
content:
|
||
|
name: metrics
|
||
|
containerPort: 10254
|
||
|
count: 1
|
||
|
|
||
|
- it: Should add webhook ports if webhook.enable is true
|
||
|
set:
|
||
|
webhook:
|
||
|
enable: true
|
||
|
port: 8080
|
||
|
portName: webhook
|
||
|
asserts:
|
||
|
- contains:
|
||
|
path: spec.template.spec.containers[0].ports
|
||
|
content:
|
||
|
name: webhook
|
||
|
containerPort: 8080
|
||
|
count: 1
|
||
|
|
||
|
- it: Should add resources if resources is set
|
||
|
set:
|
||
|
resources:
|
||
|
requests:
|
||
|
memory: "64Mi"
|
||
|
cpu: "250m"
|
||
|
limits:
|
||
|
memory: "128Mi"
|
||
|
cpu: "500m"
|
||
|
asserts:
|
||
|
- equal:
|
||
|
path: spec.template.spec.containers[0].resources
|
||
|
value:
|
||
|
requests:
|
||
|
memory: "64Mi"
|
||
|
cpu: "250m"
|
||
|
limits:
|
||
|
memory: "128Mi"
|
||
|
cpu: "500m"
|
||
|
|
||
|
- it: Should add sidecars if sidecars is set
|
||
|
set:
|
||
|
sidecars:
|
||
|
- name: sidecar1
|
||
|
image: sidecar-image1
|
||
|
- name: sidecar2
|
||
|
image: sidecar-image2
|
||
|
asserts:
|
||
|
- contains:
|
||
|
path: spec.template.spec.containers
|
||
|
content:
|
||
|
name: sidecar1
|
||
|
image: sidecar-image1
|
||
|
count: 1
|
||
|
- contains:
|
||
|
path: spec.template.spec.containers
|
||
|
content:
|
||
|
name: sidecar2
|
||
|
image: sidecar-image2
|
||
|
count: 1
|
||
|
|
||
|
- it: Should add volumes if volumes is set
|
||
|
set:
|
||
|
volumes:
|
||
|
- name: volume1
|
||
|
emptyDir: {}
|
||
|
- name: volume2
|
||
|
emptyDir: {}
|
||
|
asserts:
|
||
|
- contains:
|
||
|
path: spec.template.spec.volumes
|
||
|
content:
|
||
|
name: volume1
|
||
|
emptyDir: {}
|
||
|
count: 1
|
||
|
- contains:
|
||
|
path: spec.template.spec.volumes
|
||
|
content:
|
||
|
name: volume2
|
||
|
emptyDir: {}
|
||
|
count: 1
|
||
|
|
||
|
- it: Should add volume mounts if volumeMounts is set
|
||
|
set:
|
||
|
volumeMounts:
|
||
|
- name: volume1
|
||
|
mountPath: /volume1
|
||
|
- name: volume2
|
||
|
mountPath: /volume2
|
||
|
asserts:
|
||
|
- contains:
|
||
|
path: spec.template.spec.containers[0].volumeMounts
|
||
|
content:
|
||
|
name: volume1
|
||
|
mountPath: /volume1
|
||
|
count: 1
|
||
|
- contains:
|
||
|
path: spec.template.spec.containers[0].volumeMounts
|
||
|
content:
|
||
|
name: volume2
|
||
|
mountPath: /volume2
|
||
|
count: 1
|
||
|
|
||
|
- it: Should add nodeSelector if nodeSelector is set
|
||
|
set:
|
||
|
nodeSelector:
|
||
|
key1: value1
|
||
|
key2: value2
|
||
|
asserts:
|
||
|
- equal:
|
||
|
path: spec.template.spec.nodeSelector.key1
|
||
|
value: value1
|
||
|
- equal:
|
||
|
path: spec.template.spec.nodeSelector.key2
|
||
|
value: value2
|
||
|
|
||
|
- it: Should add affinity if affinity is set
|
||
|
set:
|
||
|
affinity:
|
||
|
nodeAffinity:
|
||
|
requiredDuringSchedulingIgnoredDuringExecution:
|
||
|
nodeSelectorTerms:
|
||
|
- matchExpressions:
|
||
|
- key: topology.kubernetes.io/zone
|
||
|
operator: In
|
||
|
values:
|
||
|
- antarctica-east1
|
||
|
- antarctica-west1
|
||
|
preferredDuringSchedulingIgnoredDuringExecution:
|
||
|
- weight: 1
|
||
|
preference:
|
||
|
matchExpressions:
|
||
|
- key: another-node-label-key
|
||
|
operator: In
|
||
|
values:
|
||
|
- another-node-label-value
|
||
|
asserts:
|
||
|
- equal:
|
||
|
path: spec.template.spec.affinity
|
||
|
value:
|
||
|
nodeAffinity:
|
||
|
requiredDuringSchedulingIgnoredDuringExecution:
|
||
|
nodeSelectorTerms:
|
||
|
- matchExpressions:
|
||
|
- key: topology.kubernetes.io/zone
|
||
|
operator: In
|
||
|
values:
|
||
|
- antarctica-east1
|
||
|
- antarctica-west1
|
||
|
preferredDuringSchedulingIgnoredDuringExecution:
|
||
|
- weight: 1
|
||
|
preference:
|
||
|
matchExpressions:
|
||
|
- key: another-node-label-key
|
||
|
operator: In
|
||
|
values:
|
||
|
- another-node-label-value
|
||
|
|
||
|
- it: Should add tolerations if tolerations is set
|
||
|
set:
|
||
|
tolerations:
|
||
|
- key: key1
|
||
|
operator: Equal
|
||
|
value: value1
|
||
|
effect: NoSchedule
|
||
|
- key: key2
|
||
|
operator: Exists
|
||
|
effect: NoSchedule
|
||
|
asserts:
|
||
|
- equal:
|
||
|
path: spec.template.spec.tolerations
|
||
|
value:
|
||
|
- key: key1
|
||
|
operator: Equal
|
||
|
value: value1
|
||
|
effect: NoSchedule
|
||
|
- key: key2
|
||
|
operator: Exists
|
||
|
effect: NoSchedule
|