mirror of
https://github.com/TECHNOFAB11/zfs-localpv.git
synced 2025-12-12 22:40:12 +01:00
feat(e2e-test): Add e2e-tests for zfs-localpv (#298)
Signed-off-by: w3aman <aman.gupta@mayadata.io>
This commit is contained in:
parent
53f872fcf1
commit
4e73638b5a
137 changed files with 8745 additions and 0 deletions
|
|
@ -0,0 +1,5 @@
|
|||
{% if data_persistence is defined and data_persistence == 'mysql' %}
|
||||
consistencyutil: /e2e-tests/utils/applications/mysql/mysql_data_persistence.yml
|
||||
{% elif data_persistence is defined and data_persistence == 'busybox' %}
|
||||
consistencyutil: /e2e-tests/utils/applications/busybox/busybox_data_persistence.yml
|
||||
{% endif %}
|
||||
|
|
@ -0,0 +1,93 @@
|
|||
---
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: service-failure
|
||||
namespace: e2e
|
||||
data:
|
||||
parameters.yml: |
|
||||
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: node-password
|
||||
namespace: e2e
|
||||
type: Opaque
|
||||
data:
|
||||
password:
|
||||
|
||||
---
|
||||
apiVersion: batch/v1
|
||||
kind: Job
|
||||
metadata:
|
||||
generateName: service-failure-chaos-
|
||||
namespace: e2e
|
||||
spec:
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
name: service-failure-chaos
|
||||
spec:
|
||||
serviceAccountName: e2e
|
||||
restartPolicy: Never
|
||||
|
||||
#nodeSelector:
|
||||
# kubernetes.io/hostname:
|
||||
|
||||
tolerations:
|
||||
- key: "infra-aid"
|
||||
operator: "Equal"
|
||||
value: "observer"
|
||||
effect: "NoSchedule"
|
||||
|
||||
containers:
|
||||
- name: ansibletest
|
||||
image: openebs/zfs-localpv-e2e:ci
|
||||
imagePullPolicy: IfNotPresent
|
||||
env:
|
||||
- name: ANSIBLE_STDOUT_CALLBACK
|
||||
value: default
|
||||
|
||||
- name: ZFS_OPERATOR_NAMESPACE
|
||||
value: ""
|
||||
|
||||
- name: APP_NAMESPACE
|
||||
value: ""
|
||||
|
||||
- name: APP_LABEL
|
||||
value: ""
|
||||
|
||||
- name: APP_PVC
|
||||
value: ""
|
||||
|
||||
## specify the service type to perform chaos
|
||||
## for kubelet failure use value: kubelet
|
||||
## for container runtime failure use value: (docker,containerd,cri-o)
|
||||
- name: SVC_TYPE
|
||||
value: ""
|
||||
|
||||
- name: USERNAME
|
||||
value: ""
|
||||
|
||||
## To check data persistence against specific application provide value as below:
|
||||
## (For busybox value: "busybox" and For percona value: "mysql")
|
||||
- name: DATA_PERSISTENCE
|
||||
value: ""
|
||||
|
||||
- name: NODE_PASSWORD
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: node-password
|
||||
key: password
|
||||
|
||||
command: ["/bin/bash"]
|
||||
args: ["-c", "ANSIBLE_LOCAL_TEMP=$HOME/.ansible/tmp ANSIBLE_REMOTE_TEMP=$HOME/.ansible/tmp ansible-playbook ./e2e-tests/experiments/infra-chaos/service_failure/test.yml -i /etc/ansible/hosts -vv; exit 0"]
|
||||
|
||||
volumeMounts:
|
||||
- name: parameters
|
||||
mountPath: /mnt/
|
||||
volumes:
|
||||
- name: parameters
|
||||
configMap:
|
||||
name: service-failure
|
||||
83
e2e-tests/experiments/infra-chaos/service_failure/test.yml
Normal file
83
e2e-tests/experiments/infra-chaos/service_failure/test.yml
Normal file
|
|
@ -0,0 +1,83 @@
|
|||
---
|
||||
- hosts: localhost
|
||||
connection: local
|
||||
gather_facts: False
|
||||
|
||||
vars_files:
|
||||
- test_vars.yml
|
||||
- /mnt/parameters.yml
|
||||
|
||||
tasks:
|
||||
- block:
|
||||
|
||||
## Generating the testname for service failure chaos test
|
||||
- include_tasks: /e2e-tests/hack/create_testname.yml
|
||||
|
||||
## Record SOT (start of test) in e2e result e2e-cr (e2e-custom-resource)
|
||||
- include_tasks: /e2e-tests/hack/update_e2e_result_resource.yml
|
||||
vars:
|
||||
status: 'SOT'
|
||||
|
||||
- name: Identify the data consistency util to be invoked
|
||||
template:
|
||||
src: data_persistence.j2
|
||||
dest: data_persistence.yml
|
||||
|
||||
- include_vars:
|
||||
file: data_persistence.yml
|
||||
|
||||
- name: Record the data consistency util path
|
||||
set_fact:
|
||||
data_consistency_util_path: "{{ consistencyutil }}"
|
||||
when: data_persistence != ''
|
||||
|
||||
- name: Get the application pod name
|
||||
shell: >
|
||||
kubectl get pods -n {{ namespace }} -l {{ label }} --no-headers
|
||||
-o custom-columns=:.metadata.name
|
||||
args:
|
||||
executable: /bin/bash
|
||||
register: app_pod_name
|
||||
|
||||
- name: Create some test data
|
||||
include: "{{ data_consistency_util_path }}"
|
||||
vars:
|
||||
status: 'LOAD'
|
||||
ns: "{{ namespace }}"
|
||||
pod_name: "{{ app_pod_name.stdout }}"
|
||||
when: data_persistence != ''
|
||||
|
||||
- include_tasks: /e2e-tests/chaoslib/service_failure/service_chaos.yml
|
||||
vars:
|
||||
app_ns: "{{ namespace }}"
|
||||
app_label: "{{ label }}"
|
||||
action: "svc_stop"
|
||||
app_pod: "{{ app_pod_name.stdout }}"
|
||||
|
||||
- include_tasks: /e2e-tests/chaoslib/service_failure/service_chaos.yml
|
||||
vars:
|
||||
app_ns: "{{ namespace }}"
|
||||
app_label: "{{ label }}"
|
||||
action: "svc_start"
|
||||
app_pod: "{{ app_pod_name.stdout }}"
|
||||
|
||||
- name: Verify application data persistence
|
||||
include: "{{ data_consistency_util_path }}"
|
||||
vars:
|
||||
status: 'VERIFY'
|
||||
ns: "{{ namespace }}"
|
||||
pod_name: "{{ new_app_pod }}"
|
||||
when: data_persistence != ''
|
||||
|
||||
- set_fact:
|
||||
flag: "Pass"
|
||||
|
||||
rescue:
|
||||
- set_fact:
|
||||
flag: "Fail"
|
||||
|
||||
always:
|
||||
## RECORD END-OF-TEST IN e2e RESULT CR
|
||||
- include_tasks: /e2e-tests/hack/update_e2e_result_resource.yml
|
||||
vars:
|
||||
status: 'EOT'
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
test_name: "{{ svc_type }}-service-failure"
|
||||
namespace: "{{ lookup('env','APP_NAMESPACE') }}"
|
||||
label: "{{ lookup('env','APP_LABEL') }}"
|
||||
pvc: "{{ lookup('env','APP_PVC') }}"
|
||||
svc_type: "{{ lookup('env','SVC_TYPE') }}"
|
||||
zfs_operator_ns: "{{ lookup('env','ZFS_OPERATOR_NAMESPACE') }}"
|
||||
data_persistence: "{{ lookup('env','DATA_PERSISTENCE') }}"
|
||||
node_pwd: "{{ lookup('env','NODE_PASSWORD') }}"
|
||||
user: "{{ lookup('env','USERNAME') }}"
|
||||
Loading…
Add table
Add a link
Reference in a new issue