isula-build/patch/0108-integration-test-use-TMPDIR.patch
2022-06-15 15:42:51 +08:00

301 lines
12 KiB
Diff

From fbe5b10f83fa060ca2c2e2c3a6dc943dc9a878a2 Mon Sep 17 00:00:00 2001
From: xingweizheng <xingweizheng@huawei.com>
Date: Tue, 11 Jan 2022 15:59:18 +0800
Subject: [PATCH 07/20] integration test use TMPDIR
---
tests/lib/base_commonlib.sh | 33 ++++++++++---------
tests/lib/common.sh | 21 ++++++++----
tests/lib/integration_commonlib.sh | 2 +-
tests/src/isula_build_base_command.sh | 0
.../test_image_name_conflict_with_image_id.sh | 12 +++----
.../test_save_single_image_multiple_tags.sh | 5 +--
tests/src/test_set_new_root.sh | 0
tests/test.sh | 8 +++--
8 files changed, 46 insertions(+), 35 deletions(-)
mode change 100644 => 100755 tests/src/isula_build_base_command.sh
mode change 100644 => 100755 tests/src/test_image_name_conflict_with_image_id.sh
mode change 100644 => 100755 tests/src/test_save_single_image_multiple_tags.sh
mode change 100644 => 100755 tests/src/test_set_new_root.sh
diff --git a/tests/lib/base_commonlib.sh b/tests/lib/base_commonlib.sh
index 996fcdd..8893894 100644
--- a/tests/lib/base_commonlib.sh
+++ b/tests/lib/base_commonlib.sh
@@ -30,13 +30,13 @@ function pre_check() {
# start isula-builder
function start_isula_builder() {
- nohup isula-builder >/tmp/buildlog-daemon 2>&1 &
+ nohup isula-builder >"$TMPDIR"/buildlog-daemon 2>&1 &
pidofbuilder=$!
# check if isula-builder is started
builder_started=0
for _ in $(seq 1 30); do
- if ! grep -i "is listening on" /tmp/buildlog-daemon >/dev/null 2>&1; then
+ if ! grep -i "is listening on" "$TMPDIR"/buildlog-daemon >/dev/null 2>&1; then
sleep 0.1
continue
else
@@ -45,7 +45,8 @@ function start_isula_builder() {
fi
done
if [ "${builder_started}" -eq 0 ]; then
- echo "isula-builder start failed, log dir /tmp/buildlog-daemon"
+ echo "isula-builder start failed, log dir $TMPDIR/buildlog-daemon"
+ cat "$TMPDIR"/buildlog-daemon
exit 1
fi
}
@@ -53,7 +54,7 @@ function start_isula_builder() {
function cleanup() {
isula-build ctr-img rm -p >/dev/null 2>&1
kill -15 "${pidofbuilder}" >/dev/null 2>&1
- rm -f /tmp/buildlog-*
+ rm -rf "$TMPDIR"
}
# isula-build builds with different output
@@ -97,21 +98,21 @@ function test_build_without_output_with_oci_format() {
# test build image with docker-archive output
function test_build_with_docker_archive_output() {
declare -a commands=(
- "isula-build ctr-img build --output=docker-archive:/tmp/$1.tar:$1:latest $2"
+ "isula-build ctr-img build --output=docker-archive:$TMPDIR/$1.tar:$1:latest $2"
"isula-build ctr-img rm $1:latest"
)
for command in "${commands[@]}"; do show_and_run_command "$command"; done
- rm -f /tmp/"$1".tar
+ rm -f "$TMPDIR"/"$1".tar
}
# test build image with oci-archive output
function test_build_with_oci_archive_output() {
declare -a commands=(
- "isula-build ctr-img build --output=oci-archive:/tmp/$1.tar:$1:latest $2"
+ "isula-build ctr-img build --output=oci-archive:$TMPDIR/$1.tar:$1:latest $2"
"isula-build ctr-img rm $1:latest"
)
for command in "${commands[@]}"; do show_and_run_command "$command"; done
- rm -f /tmp/"$1".tar
+ rm -f "$TMPDIR"/"$1".tar
}
# test build image with docker-daemon output
@@ -145,16 +146,16 @@ function test_build_with_isulad_output() {
# test isula build base command
function test_isula_build_base_command() {
declare -A commands=(
- ["Build docker format image"]="isula-build ctr-img build --tag $1-docker:latest --output=docker-archive:/tmp/$1-docker.tar:$1-docker:latest $2"
- ["Build oci format image"]="isula-build ctr-img build --tag $1-oci:latest --output=oci-archive:/tmp/$1-oci.tar:$1-oci:latest $2"
+ ["Build docker format image"]="isula-build ctr-img build --tag $1-docker:latest --output=docker-archive:$TMPDIR/$1-docker.tar:$1-docker:latest $2"
+ ["Build oci format image"]="isula-build ctr-img build --tag $1-oci:latest --output=oci-archive:$TMPDIR/$1-oci.tar:$1-oci:latest $2"
["List all images"]="isula-build ctr-img images"
["List docker format image"]="isula-build ctr-img images $1-docker:latest"
["List oci format image"]="isula-build ctr-img images $1-oci:latest"
- ["Save image with docker format"]="isula-build ctr-img save -f docker $1-docker:latest -o /tmp/$1-save-docker.tar"
- ["Save image with oci format"]="isula-build ctr-img save -f oci $1-oci:latest -o /tmp/$1-save-oci.tar"
- ["Load docker format images"]="isula-build ctr-img load -i /tmp/$1-docker.tar"
- ["Load oci format images"]="isula-build ctr-img load -i /tmp/$1-oci.tar"
- ["Save multipile images with docker format"]="isula-build ctr-img save -f docker $1-docker:latest $1-oci:latest -o /tmp/$1-all.tar"
+ ["Save image with docker format"]="isula-build ctr-img save -f docker $1-docker:latest -o $TMPDIR/$1-save-docker.tar"
+ ["Save image with oci format"]="isula-build ctr-img save -f oci $1-oci:latest -o $TMPDIR/$1-save-oci.tar"
+ ["Load docker format images"]="isula-build ctr-img load -i $TMPDIR/$1-docker.tar"
+ ["Load oci format images"]="isula-build ctr-img load -i $TMPDIR/$1-oci.tar"
+ ["Save multipile images with docker format"]="isula-build ctr-img save -f docker $1-docker:latest $1-oci:latest -o $TMPDIR/$1-all.tar"
["Remove images"]="isula-build ctr-img rm $1-docker:latest $1-oci:latest"
)
declare -a orders
@@ -173,5 +174,5 @@ function test_isula_build_base_command() {
show_and_run_command "${orders[$i]}" "${commands[${orders[$i]}]}"
done
- rm -f /tmp/*.tar
+ rm -f "$TMPDIR"/*.tar
}
diff --git a/tests/lib/common.sh b/tests/lib/common.sh
index 3710f62..c600616 100755
--- a/tests/lib/common.sh
+++ b/tests/lib/common.sh
@@ -16,16 +16,23 @@
# exit_flag for a testcase, which will be added one when check or command goes something wrong
exit_flag=0
+# TMPDIR use in all base or integration test process
+declare -x TMPDIR
+
+# only run once for create a temp dir
+function create_tmp_dir() {
+ TMPDIR=$(mktemp -d)
+}
# show command brief and run
# $1 (command brief)
# $2 (concrete command)
function show_and_run_command() {
function run_command() {
- if ! $command >/tmp/buildlog-client 2>&1; then
+ if ! $command >"$TMPDIR"/buildlog-client 2>&1; then
echo "FAIL"
echo "Failed when running command: $command"
- echo "LOG DIR:/tmp/buildlog-client and /tmp/buildlog-daemon"
+ echo "LOG DIR:$TMPDIR/buildlog-client and $TMPDIR/buildlog-daemon"
kill -15 "${pidofbuilder}"
shell_print_callstack
exit 1
@@ -49,14 +56,14 @@ function systemd_run_command() {
local -r command="$1"
start_time=$(date '+%Y-%m-%d %H:%M:%S')
- if ! $command >/tmp/buildlog-client 2>&1; then
+ if ! $command >"$TMPDIR"/buildlog-client 2>&1; then
{
echo "Error from client:"
- cat /tmp/buildlog-client
+ cat "$TMPDIR"/buildlog-client
echo "Error from daemon:"
journalctl -u isula-build --since "$start_time" --no-pager
shell_print_callstack
- } >>/tmp/buildlog-failed
+ } >>"$TMPDIR"/buildlog-failed
((exit_flag++))
fi
@@ -78,7 +85,7 @@ function run_check_result() {
{
echo "$testcase:${BASH_LINENO[0]}" "$command"
echo expected "$expected", get "$result"
- } >>/tmp/buildlog-failed
+ } >>"$TMPDIR"/buildlog-failed
((exit_flag++))
fi
}
@@ -97,7 +104,7 @@ function check_value() {
{
echo "TESTCASE: $testcase:${BASH_LINENO[0]}" "${FUNCNAME[0]}"
echo expected "$expected", get "$result"
- } >>/tmp/buildlog-failed
+ } >>"$TMPDIR"/buildlog-failed
((exit_flag++))
fi
}
diff --git a/tests/lib/integration_commonlib.sh b/tests/lib/integration_commonlib.sh
index 9dcc415..44f186f 100644
--- a/tests/lib/integration_commonlib.sh
+++ b/tests/lib/integration_commonlib.sh
@@ -22,7 +22,7 @@ data_root="/var/lib/integration-isula-build"
config_file="/etc/isula-build/configuration.toml"
function pre_integration() {
- rm -f /tmp/buildlog-failed
+ rm -f "$TMPDIR"/buildlog-failed
cp $config_file "$config_file".integration
sed -i "/run_root/d;/data_root/d" $config_file
diff --git a/tests/src/isula_build_base_command.sh b/tests/src/isula_build_base_command.sh
old mode 100644
new mode 100755
diff --git a/tests/src/test_image_name_conflict_with_image_id.sh b/tests/src/test_image_name_conflict_with_image_id.sh
old mode 100644
new mode 100755
index 2c436a0..cbcc353
--- a/tests/src/test_image_name_conflict_with_image_id.sh
+++ b/tests/src/test_image_name_conflict_with_image_id.sh
@@ -35,7 +35,7 @@ function clean() {
function do_test() {
systemd_run_command "isula-build ctr-img build -t $image_name:latest1 $context_dir"
systemd_run_command "isula-build ctr-img build -t $image_name:latest2 $context_dir"
- image_id2=$(grep </tmp/buildlog-client "Build success with image id: " | cut -d ":" -f 2)
+ image_id2=$(grep <"$TMPDIR"/buildlog-client "Build success with image id: " | cut -d ":" -f 2)
short_id2=${image_id2:0:12}
double_short_id2=${short_id2:0:6}
@@ -51,11 +51,11 @@ function do_test() {
# analyse it
declare -a commands=(
- "cat /tmp/buildlog-client |grep $short_id2"
- "tar -xvf $temp_tar_short -C /tmp manifest.json"
- "cat /tmp/manifest.json | grep $short_id2:latest"
- "tar -xvf $temp_tar_double_short -C /tmp manifest.json"
- "cat /tmp/manifest.json | grep $image_id2"
+ "cat $TMPDIR/buildlog-client |grep $short_id2"
+ "tar -xvf $temp_tar_short -C $TMPDIR manifest.json"
+ "cat $TMPDIR/manifest.json | grep $short_id2:latest"
+ "tar -xvf $temp_tar_double_short -C $TMPDIR manifest.json"
+ "cat $TMPDIR/manifest.json | grep $image_id2"
)
for command in "${commands[@]}"; do run_check_result "$command" 0; done
}
diff --git a/tests/src/test_save_single_image_multiple_tags.sh b/tests/src/test_save_single_image_multiple_tags.sh
old mode 100644
new mode 100755
index 46df444..7e8491e
--- a/tests/src/test_save_single_image_multiple_tags.sh
+++ b/tests/src/test_save_single_image_multiple_tags.sh
@@ -15,6 +15,7 @@
# History: 2022-01-10 Weizheng Xing <xingweizheng@huawei.com> Refactor: use systemd_run_command common function
top_dir=$(git rev-parse --show-toplevel)
+# shellcheck disable=SC1091
source "$top_dir"/tests/lib/common.sh
image_name=build-from-scratch
@@ -27,10 +28,10 @@ function pre_test() {
function do_test() {
# get image id
systemd_run_command "isula-build ctr-img build -t $image_name:latest $context_dir"
- image_id1=$(grep </tmp/buildlog-client "Build success with image id: " | cut -d ":" -f 2)
+ image_id1=$(grep <"$TMPDIR"/buildlog-client "Build success with image id: " | cut -d ":" -f 2)
systemd_run_command "isula-build ctr-img build -t $image_name:latest2 $context_dir"
- image_id2=$(grep </tmp/buildlog-client "Build success with image id: " | cut -d ":" -f 2)
+ image_id2=$(grep <"$TMPDIR"/buildlog-client "Build success with image id: " | cut -d ":" -f 2)
declare -a commands=(
"isula-build ctr-img tag $image_name:latest $image_name:latest-child"
diff --git a/tests/src/test_set_new_root.sh b/tests/src/test_set_new_root.sh
old mode 100644
new mode 100755
diff --git a/tests/test.sh b/tests/test.sh
index 6cf78c9..3f2785b 100755
--- a/tests/test.sh
+++ b/tests/test.sh
@@ -1,11 +1,12 @@
#!/bin/bash
-
+# shellcheck disable=SC1091
top_dir=$(git rev-parse --show-toplevel)
# base test
function base() {
source "$top_dir"/tests/lib/base_commonlib.sh
pre_check
+ create_tmp_dir
start_isula_builder
while IFS= read -r testfile; do
@@ -22,8 +23,8 @@ function base() {
function fuzz() {
failed=0
while IFS= read -r testfile; do
- printf "%-45s" "test $(basename "$testfile"): " | tee -a ${top_dir}/tests/fuzz.log
- bash "$testfile" "$1" | tee -a ${top_dir}/tests/fuzz.log
+ printf "%-45s" "test $(basename "$testfile"): " | tee -a "$top_dir"/tests/fuzz.log
+ bash "$testfile" "$1" | tee -a "$top_dir"/tests/fuzz.log
if [ $PIPESTATUS -ne 0 ]; then
failed=1
fi
@@ -36,6 +37,7 @@ function fuzz() {
# integration test
function integration() {
source "$top_dir"/tests/lib/integration_commonlib.sh
+ create_tmp_dir
pre_integration
while IFS= read -r testfile; do
--
2.27.0