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
304
e2e-tests/experiments/functional/zfspv-custom-topology/test.yml
Normal file
304
e2e-tests/experiments/functional/zfspv-custom-topology/test.yml
Normal file
|
|
@ -0,0 +1,304 @@
|
|||
- hosts: localhost
|
||||
connection: local
|
||||
gather_facts: False
|
||||
|
||||
vars_files:
|
||||
- test_vars.yml
|
||||
|
||||
tasks:
|
||||
- block:
|
||||
|
||||
## Generating the testname for zfspv custom-topology support 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: Get any of the two nodes from cluster which are not having `noSchedule` taints
|
||||
shell: >
|
||||
kubectl get nodes --no-headers -o custom-columns=:.metadata.name,:.spec.taints |
|
||||
grep -v NoSchedule | shuf -n 2 | awk '{print $1}'
|
||||
args:
|
||||
executable: /bin/bash
|
||||
register: node_list
|
||||
|
||||
- name: Label the nodes with custom labels
|
||||
shell: >
|
||||
kubectl label node {{ item }} {{ node_label }}
|
||||
args:
|
||||
executable: /bin/bash
|
||||
register: status
|
||||
failed_when: "status.rc != 0"
|
||||
with_items: "{{ node_list.stdout_lines }}"
|
||||
|
||||
- name: Split the node label into key and values
|
||||
set_fact:
|
||||
lkey: "{{ node_label.split('=')[0] }}"
|
||||
lvalue: "{{ node_label.split('=')[1] }}"
|
||||
|
||||
- name: Update the storage_class template with test specific values
|
||||
template:
|
||||
src: storage_class.j2
|
||||
dest: storage_class.yml
|
||||
|
||||
- name: Create the storage class yaml
|
||||
shell: kubectl create -f storage_class.yml
|
||||
args:
|
||||
executable: /bin/bash
|
||||
register: status
|
||||
failed_when: "status.rc != 0"
|
||||
|
||||
- name: Create namespace
|
||||
shell: kubectl create ns {{ app_ns }}-immediate
|
||||
args:
|
||||
executable: /bin/bash
|
||||
|
||||
- name: Apply the script for generating multiple busybox application yamls
|
||||
shell: bash app_gen_immediate.sh
|
||||
args:
|
||||
executable: /bin/bash
|
||||
|
||||
- name: Apply the busybox yamls
|
||||
shell: >
|
||||
kubectl apply -f app_yamls_immediate/ -n {{ app_ns}}-immediate
|
||||
args:
|
||||
executable: /bin/bash
|
||||
register: status
|
||||
failed_when: "status.rc != 0"
|
||||
|
||||
- name: Get the pvc list
|
||||
shell: kubectl get pvc -n {{ app_ns }}-immediate --no-headers -o custom-columns=:.metadata.name
|
||||
args:
|
||||
executable: /bin/bash
|
||||
register: pvc_list
|
||||
|
||||
- name: Check the PVC status.
|
||||
shell: kubectl get pvc {{ item }} -n {{ app_ns }}-immediate --no-headers -o custom-columns=:.status.phase
|
||||
args:
|
||||
executable: /bin/bash
|
||||
register: pvc_status
|
||||
with_items: "{{ pvc_list.stdout_lines }}"
|
||||
until: " pvc_status.stdout == 'Bound'"
|
||||
delay: 5
|
||||
retries: 30
|
||||
|
||||
- name: Get the application pod list
|
||||
shell: kubectl get pods -n {{ app_ns }}-immediate -l test=zfspv-custom-topology --no-headers -o custom-columns=:.metadata.name
|
||||
args:
|
||||
executable: /bin/bash
|
||||
register: app_pod_list
|
||||
|
||||
- name: Check the application pod status
|
||||
shell: >
|
||||
kubectl get pods {{ item }} -n {{ app_ns }}-immediate --no-headers -o custom-columns=:.status.phase
|
||||
args:
|
||||
executable: /bin/bash
|
||||
register: app_pod_status
|
||||
with_items: "{{ app_pod_list.stdout_lines }}"
|
||||
until: "app_pod_status.stdout == 'Running'"
|
||||
delay: 5
|
||||
retries: 20
|
||||
|
||||
- name: Check the container status
|
||||
shell: >
|
||||
kubectl get pods {{ item }} -n {{ app_ns }}-immediate --no-headers -o custom-columns=:.status.containerStatuses[*].state
|
||||
args:
|
||||
executable: /bin/bash
|
||||
register: container_status
|
||||
with_items: "{{ app_pod_list.stdout_lines }}"
|
||||
until: "'running' in container_status.stdout"
|
||||
delay: 2
|
||||
retries: 30
|
||||
|
||||
- name: Verify that application pod is scheduled on node on which custom label is applied
|
||||
shell: kubectl get pods {{ item }} -n {{ app_ns }}-immediate --no-headers -o custom-columns=:.spec.nodeName
|
||||
args:
|
||||
executable: /bin/bash
|
||||
register: node_name
|
||||
with_items: "{{ app_pod_list.stdout_lines }}"
|
||||
failed_when: "'{{ node_name.stdout }}' not in node_list.stdout"
|
||||
|
||||
- name: Deprovision the application
|
||||
shell: kubectl delete -f app_yamls_immediate/ -n {{ app_ns}}-immediate
|
||||
args:
|
||||
executable: /bin/bash
|
||||
register: deprovision_status
|
||||
failed_when: "deprovision_status.rc != 0"
|
||||
|
||||
- name: Delete the namespace
|
||||
shell: kubectl delete ns {{ app_ns }}-immediate
|
||||
args:
|
||||
executable: /bin/bash
|
||||
register: namespace_status
|
||||
failed_when: "namespace_status.rc != 0"
|
||||
|
||||
- name: Create namespace
|
||||
shell: kubectl create ns {{ app_ns}}-wfc
|
||||
args:
|
||||
executable: /bin/bash
|
||||
|
||||
- name: Apply the script for generating multiple busybox application yamls
|
||||
shell: bash app_gen_wfc.sh
|
||||
args:
|
||||
executable: /bin/bash
|
||||
|
||||
- name: Apply the busybox yamls
|
||||
shell: >
|
||||
kubectl apply -f app_yamls_wfc/ -n {{ app_ns }}-wfc
|
||||
args:
|
||||
executable: /bin/bash
|
||||
register: status
|
||||
failed_when: "status.rc != 0"
|
||||
|
||||
## Restart of node-agent pods is required to get aware of node_labels
|
||||
## Meanwhile PVC will be remain in pending state.
|
||||
|
||||
- name: Check all the pvc is in pending state.
|
||||
shell: kubectl get pvc -n {{ app_ns }}-wfc --no-headers -o custom-columns=:.status.phase | sort | uniq
|
||||
args:
|
||||
executable: /bin/bash
|
||||
register: pvc_status
|
||||
failed_when: "pvc_status.stdout != 'Pending'"
|
||||
|
||||
- name: Restart the zfs node-agent pods in kube-system namespace
|
||||
shell: kubectl delete pods -n kube-system -l app=openebs-zfs-node
|
||||
args:
|
||||
executable: /bin/bash
|
||||
|
||||
- name: Wait for 10 sec
|
||||
shell:
|
||||
sleep 10
|
||||
|
||||
- name: Check for the zfs node-agent pods to come into Running state
|
||||
shell: >
|
||||
kubectl get pods -n kube-system -l app=openebs-zfs-node
|
||||
--no-headers -o custom-columns=:.status.phase | sort | uniq
|
||||
args:
|
||||
executable: /bin/bash
|
||||
register: zfs_node_pod_status
|
||||
until: "zfs_node_pod_status.stdout == 'Running'"
|
||||
delay: 5
|
||||
retries: 20
|
||||
|
||||
- name: Verify new topology key is now available in csi_nodes
|
||||
shell: kubectl get csinode {{ item }} --no-headers -o custom-columns=:.spec.drivers[*].topologyKeys
|
||||
args:
|
||||
executable: /bin/bash
|
||||
register: csi_node_keys
|
||||
until: "'{{ lkey }}' in csi_node_keys.stdout"
|
||||
delay: 2
|
||||
retries: 20
|
||||
with_items: "{{ node_list.stdout_lines }}"
|
||||
|
||||
- name: Get the pvc list
|
||||
shell: kubectl get pvc -n {{ app_ns }}-wfc --no-headers -o custom-columns=:.metadata.name
|
||||
args:
|
||||
executable: /bin/bash
|
||||
register: pvc_list
|
||||
|
||||
- name: Check the status of pvc
|
||||
shell: kubectl get pvc {{ item }} -n {{ app_ns }}-wfc --no-headers -o custom-columns=:.status.phase
|
||||
args:
|
||||
executable: /bin/bash
|
||||
register: pvc_status
|
||||
with_items: "{{ pvc_list.stdout_lines }}"
|
||||
until: "pvc_status.stdout == 'Bound'"
|
||||
delay: 2
|
||||
retries: 30
|
||||
|
||||
- name: Get the application pod list
|
||||
shell: kubectl get pods -n {{ app_ns }}-wfc -l test=zfspv-custom-topology --no-headers -o custom-columns=:.metadata.name
|
||||
args:
|
||||
executable: /bin/bash
|
||||
register: app_pod_list
|
||||
|
||||
- name: Check the application pod status
|
||||
shell: >
|
||||
kubectl get pods {{ item }} -n {{ app_ns }}-wfc --no-headers -o custom-columns=:.status.phase
|
||||
args:
|
||||
executable: /bin/bash
|
||||
register: app_pod_status
|
||||
with_items: "{{ app_pod_list.stdout_lines }}"
|
||||
until: "app_pod_status.stdout == 'Running'"
|
||||
delay: 5
|
||||
retries: 20
|
||||
|
||||
- name: Check the container status
|
||||
shell: >
|
||||
kubectl get pods {{ item }} -n {{ app_ns }}-wfc --no-headers -o custom-columns=:.status.containerStatuses[*].state
|
||||
args:
|
||||
executable: /bin/bash
|
||||
register: container_status
|
||||
with_items: "{{ app_pod_list.stdout_lines }}"
|
||||
until: "'running' in container_status.stdout"
|
||||
delay: 2
|
||||
retries: 30
|
||||
|
||||
- name: Verify that application pod is scheduled on node on which custom label is applied
|
||||
shell: kubectl get pods {{ item }} -n {{ app_ns }}-wfc --no-headers -o custom-columns=:.spec.nodeName
|
||||
args:
|
||||
executable: /bin/bash
|
||||
register: node_name
|
||||
with_items: "{{ app_pod_list.stdout_lines }}"
|
||||
failed_when: "'{{ node_name.stdout }}' not in node_list.stdout"
|
||||
|
||||
- name: Deprovision the application
|
||||
shell: kubectl delete -f app_yamls_wfc/ -n {{ app_ns}}-wfc
|
||||
args:
|
||||
executable: /bin/bash
|
||||
register: deprovision_status
|
||||
failed_when: "deprovision_status.rc != 0"
|
||||
|
||||
- name: Delete the namespace
|
||||
shell: kubectl delete ns {{ app_ns }}-wfc
|
||||
args:
|
||||
executable: /bin/bash
|
||||
register: namespace_status
|
||||
failed_when: "namespace_status.rc != 0"
|
||||
|
||||
- set_fact:
|
||||
flag: "Pass"
|
||||
|
||||
rescue:
|
||||
- set_fact:
|
||||
flag: "Fail"
|
||||
|
||||
always:
|
||||
|
||||
- name: Remove the labels from node after end of test
|
||||
shell: kubectl label node {{ item }} {{ lkey }}-
|
||||
args:
|
||||
executable: /bin/bash
|
||||
register: label_status
|
||||
with_items: "{{ node_list.stdout_lines }}"
|
||||
failed_when: "label_status.rc != 0"
|
||||
|
||||
- name: Restart the zfs node-agent pods in kube-system namespace to remove label from csi-nodes
|
||||
shell: kubectl delete pods -n kube-system -l app=openebs-zfs-node
|
||||
args:
|
||||
executable: /bin/bash
|
||||
|
||||
- name: Check for the zfs node-agent pods to come into Running state
|
||||
shell: >
|
||||
kubectl get pods -n kube-system -l app=openebs-zfs-node
|
||||
--no-headers -o custom-columns=:.status.phase | sort | uniq
|
||||
args:
|
||||
executable: /bin/bash
|
||||
register: zfs_node_pod_status
|
||||
until: "zfs_node_pod_status.stdout == 'Running'"
|
||||
delay: 5
|
||||
retries: 20
|
||||
|
||||
- name: Delete the storage class
|
||||
shell: kubectl delete -f storage_class.yml
|
||||
args:
|
||||
executable: /bin/bash
|
||||
register: status
|
||||
failed_when: "status.rc != 0"
|
||||
|
||||
# RECORD END-OF-TEST IN e2e RESULT CR
|
||||
- include_tasks: /e2e-tests/hack/update_e2e_result_resource.yml
|
||||
vars:
|
||||
status: 'EOT'
|
||||
Loading…
Add table
Add a link
Reference in a new issue