feat(e2e-test): Add e2e-tests for zfs-localpv (#298)

Signed-off-by: w3aman <aman.gupta@mayadata.io>
This commit is contained in:
Aman Gupta 2021-06-09 21:21:39 +05:30 committed by GitHub
parent 53f872fcf1
commit 4e73638b5a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
137 changed files with 8745 additions and 0 deletions

View file

@ -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 %}

View file

@ -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

View 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'

View file

@ -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') }}"