github.com/dmaizel/tests@v0.0.0-20210728163746-cae6a2d9cee8/integration/pmem/pmem_test.sh (about) 1 #!/bin/bash 2 # 3 # Copyright (c) 2021 Intel Corporation 4 # 5 # SPDX-License-Identifier: Apache-2.0 6 # 7 8 set -o errexit 9 set -o nounset 10 set -o pipefail 11 set -o errtrace 12 13 dir_path=$(dirname "$0") 14 source "${dir_path}/../../lib/common.bash" 15 source "${dir_path}/../../.ci/lib.sh" 16 source /etc/os-release || source /usr/lib/os-release 17 TEST_INITRD="${TEST_INITRD:-no}" 18 experimental_qemu="${experimental_qemu:-false}" 19 arch=$("${dir_path}"/../../.ci/kata-arch.sh -d) 20 21 if [ "$TEST_INITRD" == "yes" ]; then 22 echo "Skip pmem test: nvdimm is disabled when initrd is used as rootfs" 23 exit 0 24 fi 25 26 if [ "$experimental_qemu" == "true" ]; then 27 echo "Skip pmem test: experimental qemu doesn't have libpmem support" 28 exit 0 29 fi 30 31 if [ "$arch" == "aarch64" ]; then 32 echo "Skip pmem test: $arch can't ensure data persistence for the lack of libpmem support" 33 exit 0 34 fi 35 36 if [ "${ID}" != "ubuntu" ]; then 37 echo "Skip pmem test: ${ID} distro is not supported" 38 exit 0 39 fi 40 41 init() { 42 ${dir_path}/../../integration/kubernetes/init.sh 43 docker run -d -p 5000:5000 --restart=always --name registry registry:2 44 } 45 46 cleanup() { 47 set +e 48 kubectl describe pod/my-csi-kata-app 49 kubectl get pod --all-namespaces 50 51 pushd pmem-csi 52 kubectl delete -f "deploy/common/pmem-kata-app.yaml" 53 kubectl delete -f "deploy/common/pmem-kata-pvc.yaml" 54 kubectl delete -f "deploy/common/pmem-storageclass-ext4-kata.yaml" 55 kubectl delete PmemCSIDeployment/pmem-csi.intel.com 56 kubectl delete -f "deploy/crd/pmem-csi.intel.com_pmemcsideployments.yaml" 57 kubectl delete -f "deploy/operator/pmem-csi-operator.yaml" 58 popd 59 rm -rf pmem-csi 60 61 ${dir_path}/../../integration/kubernetes/cleanup_env.sh 62 63 docker rm -f $(docker ps -aq) 64 rid=$(docker images -q registry:2) 65 docker rmi -f $(docker images -q | sed '/'$rid'/d') 66 } 67 68 run_test() { 69 kubectl exec pod/my-csi-kata-app -- df /data | grep pmem 70 kubectl exec pod/my-csi-kata-app -- mount | grep pmem | grep data | grep dax 71 } 72 73 setup_pmem_csi() { 74 git clone https://github.com/intel/pmem-csi/ 75 pushd pmem-csi 76 77 make build-images 78 make push-images 79 80 kubectl label node $(hostname) storage=pmem 81 kubectl label node $(hostname) katacontainers.io/kata-runtime=true 82 83 oper_yml="deploy/operator/pmem-csi-operator.yaml" 84 sed -i -e 's|image:.*|image: localhost:5000/pmem-csi-driver:canary|g' \ 85 -e 's|imagePullPolicy:.*|imagePullPolicy: Always|g' \ 86 ${oper_yml} 87 kubectl apply -f "${oper_yml}" 88 89 kubectl apply -f deploy/crd/pmem-csi.intel.com_pmemcsideployments.yaml 90 91 kubectl create -f - <<EOF 92 apiVersion: pmem-csi.intel.com/v1beta1 93 kind: PmemCSIDeployment 94 metadata: 95 name: pmem-csi.intel.com 96 spec: 97 deviceMode: direct 98 nodeSelector: 99 storage: pmem 100 EOF 101 102 stclass_yml="deploy/common/pmem-storageclass-ext4-kata.yaml" 103 kubectl apply -f "${stclass_yml}" 104 105 pvc_yml="deploy/common/pmem-kata-pvc.yaml" 106 kubectl apply -f "${pvc_yml}" 107 108 app_yml="deploy/common/pmem-kata-app.yaml" 109 sed -i -e 's|io.katacontainers.config.hypervisor.memory_offset:.*|io.katacontainers.config.hypervisor.memory_offset: "4294967296"|g' \ 110 -e 's|runtimeClassName:.*|runtimeClassName: kata|g' \ 111 "${app_yml}" 112 kubectl apply -f "${app_yml}" 113 popd 114 115 kubectl wait --for=condition=Ready --timeout=90s pod/my-csi-kata-app 116 sleep 5 117 } 118 119 main() { 120 trap cleanup EXIT QUIT KILL 121 init 122 setup_pmem_csi 123 run_test 124 } 125 126 main