Skip to content

Commit

Permalink
test: Add pmem integration test
Browse files Browse the repository at this point in the history
This adds a pmem integration test for the kata containers CI.

Fixes kata-containers#2378

Signed-off-by: Gabriela Cervantes <[email protected]>
  • Loading branch information
GabyCT committed Apr 8, 2020
1 parent 690110f commit 22dc1ca
Show file tree
Hide file tree
Showing 8 changed files with 95 additions and 5 deletions.
2 changes: 1 addition & 1 deletion .ci/setup_env_centos.sh
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ declare -A packages=( \
[crio_dependencies]="libassuan-devel libgpg-error-devel device-mapper-libs util-linux libselinux-devel" \
[bison_binary]="bison" \
[libgudev1-dev]="libgudev1-devel" \
[general_dependencies]="gpgme-devel glib2-devel glibc-devel bzip2 m4 gettext-devel automake autoconf pixman-devel coreutils" \
[general_dependencies]="xfsprogs gpgme-devel glib2-devel glibc-devel bzip2 m4 gettext-devel automake autoconf pixman-devel coreutils" \
[build_tools]="python3 pkgconfig zlib-devel" \
[ostree]="ostree-devel" \
[metrics_dependencies]="jq" \
Expand Down
2 changes: 1 addition & 1 deletion .ci/setup_env_debian.sh
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ declare -A minimal_packages=( \
)

declare -A packages=( \
[general_dependencies]="curl git" \
[general_dependencies]="curl git xfsprogs" \
[kata_containers_dependencies]="libtool automake autotools-dev autoconf bc libpixman-1-dev coreutils parted" \
[qemu_dependencies]="libcap-dev libattr1-dev libcap-ng-dev librbd-dev libpmem-dev" \
[kernel_dependencies]="libelf-dev flex" \
Expand Down
2 changes: 1 addition & 1 deletion .ci/setup_env_fedora.sh
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ declare -A minimal_packages=( \
)

declare -A packages=( \
[general_dependencies]="dnf-plugins-core python pkgconfig util-linux libgpg-error-devel" \
[general_dependencies]="xfsprogs dnf-plugins-core python pkgconfig util-linux libgpg-error-devel" \
[kata_containers_dependencies]="libtool automake autoconf bc pixman numactl-libs" \
[qemu_dependencies]="libcap-devel libattr-devel libcap-ng-devel zlib-devel pixman-devel librbd-devel libpmem-devel" \
[kernel_dependencies]="elfutils-libelf-devel flex" \
Expand Down
5 changes: 5 additions & 0 deletions .ci/setup_env_opensuse.sh
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,11 @@ source "${cidir}/lib.sh"
echo "Remove openSUSE cloud repo"
sudo zypper rr openSUSE-Leap-Cloud-Tools

echo "Add filesystems repo"
filesystem_repo="https://download.opensuse.org/repositories/filesystems/openSUSE_Leap_${VERSION_ID}/filesystems.repo"
sudo -E zypper addrepo --no-gpgcheck "${filesystem_repo}"
sudo -E zypper -n install xfsprogs

echo "Install chronic"
sudo -E zypper -n install moreutils

Expand Down
5 changes: 5 additions & 0 deletions .ci/setup_env_sles.sh
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,11 @@ moreutils_repo="https://download.opensuse.org/repositories/utilities/SLE_${VERSI
sudo -E zypper addrepo --no-gpgcheck ${moreutils_repo}
sudo -E zypper refresh

echo "Add repo for filesystems"
filesystems_repo="https://download.opensuse.org/repositories/filesystems/SLE_${VERSION//-/_}/filesystems.repo"
sudo -E zypper refresh
sudo -E zypper -n install xfsprogs

echo "Add repo for hunspell and pandoc packages"
sudo -E SUSEConnect -p PackageHub/${VERSION_ID}/${arch}

Expand Down
2 changes: 1 addition & 1 deletion .ci/setup_env_ubuntu.sh
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ declare -A minimal_packages=( \
)

declare -A packages=( \
[kata_containers_dependencies]="libtool automake autotools-dev autoconf bc libpixman-1-dev coreutils" \
[kata_containers_dependencies]="xfsprogs libtool automake autotools-dev autoconf bc libpixman-1-dev coreutils" \
[qemu_dependencies]="libcap-dev libattr1-dev libcap-ng-dev librbd-dev" \
[kernel_dependencies]="libelf-dev flex" \
[crio_dependencies]="libglib2.0-dev libseccomp-dev libapparmor-dev libgpgme11-dev thin-provisioning-tools" \
Expand Down
7 changes: 6 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@ endif
# union for 'make test'
UNION := functional debug-console $(DOCKER_DEPENDENCY) openshift crio docker-compose network \
docker-stability oci netmon kubernetes swarm vm-factory \
entropy ramdisk shimv2 tracing time-drift compatibility vcpus $(PODMAN_DEPENDENCY)
entropy ramdisk shimv2 tracing time-drift compatibility vcpus \
$(PODMAN_DEPENDENCY) pmem

# filter scheme script for docker integration test suites
FILTER_FILE = .ci/filter/filter_docker_test.sh
Expand Down Expand Up @@ -219,6 +220,9 @@ vcpus:
ipv6:
bash -f integration/ipv6/ipv6.sh

pmem:
bash -f integration/pmem/pmem_test.sh

test: ${UNION}

check: checkcommits log-parser
Expand Down Expand Up @@ -255,6 +259,7 @@ help:
oci \
openshift \
pentest \
pmem \
sandbox-cgroup \
swarm \
netmon \
Expand Down
75 changes: 75 additions & 0 deletions integration/pmem/pmem_test.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
#!/bin/bash
#
# Copyright (c) 2020 Intel Corporation
#
# SPDX-License-Identifier: Apache-2.0
#

set -o errexit
set -o nounset
set -o pipefail
set -o errtrace

dir_path=$(dirname "$0")
source "${dir_path}/../../lib/common.bash"
source "${dir_path}/../../.ci/lib.sh"
source /etc/os-release || source /usr/lib/os-release
image="fedora"
payload="tail -f /dev/null"
container_name="test-pmem"
osbuilder_repository="github.com/kata-containers/osbuilder"
osbuilder_repository_path="${GOPATH}/src/${osbuilder_repository}"
test_directory_name="test_pmem1"
test_directory=$(mktemp -d --suffix="${test_directory_name}")
device_name=""
TEST_INITRD="${TEST_INITRD:-no}"
experimental_qemu="${experimental_qemu:-false}"

if [ "$ID" == "fedora" ] || [ "$TEST_INITRD" == "yes" ] || [ "$experimental_qemu" == "true" ]; then
issue="https://github.com/kata-containers/tests/issues/2437"
echo "Skip pmem test ${issue}"
exit 0
fi

function setup() {
clean_env
check_processes
if [ ! -d "${osbuilder_repository_path}" ]; then
go get -d "${osbuilder_repository}" || true
fi
}

function test_pmem {
# Create xfs
sudo dd if=/dev/zero of=xfs.img bs=1M count=128
device_name=$(sudo losetup --offset 2M --show -Pf xfs.img)
sudo mkfs.xfs "${device_name}"

size="2097152"
gcc "${osbuilder_repository_path}/image-builder/nsdax.gpl.c" -o nsdax
sudo ./nsdax "xfs.img" "${size}" "${size}"

sudo mount "${device_name}" "${test_directory}"

# Running container
docker run -d --name "${container_name}" --runtime kata-runtime -v "${test_directory}:/${test_directory_name}" "${image}" sh -c "${payload}"

# Check container
docker exec "${container_name}" sh -exc "mount | grep ${test_directory_name} | grep '/dev/pmem' | grep 'dax'"
}

function teardown() {
clean_env
check_processes
sudo umount "${test_directory}"
sudo losetup -d "${device_name}"
sudo rm -rf "${test_directory}"
}

trap teardown EXIT

echo "Running setup"
setup

echo "Running pmem test"
test_pmem

0 comments on commit 22dc1ca

Please sign in to comment.