From c34a9b1025a6cda2c5b02c7e0ecd82084708e591 Mon Sep 17 00:00:00 2001 From: Kir Kolyshkin Date: Thu, 21 Jan 2021 12:35:57 -0800 Subject: [PATCH] tests/int/hooks.bats: don't use DEBIAN_BUNDLE 1. Do not depend on $DEBIAN_BUNDLE, instead use the current directory. 2. Simplify setup() by calling teardown(). 3. In teardown(), check that LIBPATH is set. 4. Move global variables into setup. Signed-off-by: Kir Kolyshkin --- tests/integration/hooks.bats | 32 ++++++++++++++------------------ 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/tests/integration/hooks.bats b/tests/integration/hooks.bats index b7d0ff4cb..bc11e09c1 100644 --- a/tests/integration/hooks.bats +++ b/tests/integration/hooks.bats @@ -2,27 +2,23 @@ load helpers -# CR = CreateRuntime -# CC = CreataContainer -HOOKLIBCR=librunc-hooks-create-runtime.so -HOOKLIBCC=librunc-hooks-create-container.so -LIBPATH="$DEBIAN_BUNDLE/rootfs/lib/" - function setup() { - umount "$LIBPATH"/$HOOKLIBCR.1.0.0 &>/dev/null || true - umount "$LIBPATH"/$HOOKLIBCC.1.0.0 &>/dev/null || true - requires root no_systemd - teardown_debian + teardown setup_debian + # CR = CreateRuntime, CC = CreataContainer + HOOKLIBCR=librunc-hooks-create-runtime.so + HOOKLIBCC=librunc-hooks-create-container.so + LIBPATH="$(pwd)/rootfs/lib/" } function teardown() { - umount "$LIBPATH"/$HOOKLIBCR.1.0.0 &>/dev/null || true - umount "$LIBPATH"/$HOOKLIBCC.1.0.0 &>/dev/null || true - - rm -f $HOOKLIBCR.1.0.0 $HOOKLIBCC.1.0.0 + if [ -n "$LIBPATH" ]; then + umount "$LIBPATH"/$HOOKLIBCR.1.0.0 &>/dev/null || true + umount "$LIBPATH"/$HOOKLIBCC.1.0.0 &>/dev/null || true + rm -f $HOOKLIBCR.1.0.0 $HOOKLIBCC.1.0.0 + fi teardown_debian } @@ -31,25 +27,25 @@ function teardown() { gcc -shared -Wl,-soname,librunc-hooks-create-runtime.so.1 -o "$HOOKLIBCR.1.0.0" gcc -shared -Wl,-soname,librunc-hooks-create-container.so.1 -o "$HOOKLIBCC.1.0.0" - current_pwd="$(pwd)" + bundle=$(pwd) # To mount $HOOKLIBCR we need to do that in the container namespace create_runtime_hook=$( cat <<-EOF pid=\$(cat - | jq -r '.pid') touch "$LIBPATH/$HOOKLIBCR.1.0.0" - nsenter -m \$ns -t \$pid mount --bind "$current_pwd/$HOOKLIBCR.1.0.0" "$LIBPATH/$HOOKLIBCR.1.0.0" + nsenter -m \$ns -t \$pid mount --bind "$bundle/$HOOKLIBCR.1.0.0" "$LIBPATH/$HOOKLIBCR.1.0.0" EOF ) - create_container_hook="touch ./lib/$HOOKLIBCC.1.0.0 && mount --bind $current_pwd/$HOOKLIBCC.1.0.0 ./lib/$HOOKLIBCC.1.0.0" + create_container_hook="touch ./lib/$HOOKLIBCC.1.0.0 && mount --bind $bundle/$HOOKLIBCC.1.0.0 ./lib/$HOOKLIBCC.1.0.0" CONFIG=$(jq --arg create_runtime_hook "$create_runtime_hook" --arg create_container_hook "$create_container_hook" ' .hooks |= . + {"createRuntime": [{"path": "/bin/sh", "args": ["/bin/sh", "-c", $create_runtime_hook]}]} | .hooks |= . + {"createContainer": [{"path": "/bin/sh", "args": ["/bin/sh", "-c", $create_container_hook]}]} | .hooks |= . + {"startContainer": [{"path": "/bin/sh", "args": ["/bin/sh", "-c", "ldconfig"]}]} | .root.readonly |= false | - .process.args = ["/bin/sh", "-c", "ldconfig -p | grep librunc"]' "$DEBIAN_BUNDLE"/config.json) + .process.args = ["/bin/sh", "-c", "ldconfig -p | grep librunc"]' "$bundle"/config.json) echo "${CONFIG}" >config.json runc run test_debian