658 lines
23 KiB
Diff
658 lines
23 KiB
Diff
From 513d78a2a90e0748e4a5394c8cbeac8cd67eb159 Mon Sep 17 00:00:00 2001
|
|
From: xingweizheng <xingweizheng@huawei.com>
|
|
Date: Mon, 10 Jan 2022 19:36:49 +0800
|
|
Subject: [PATCH 04/20] Refactor: integration test basic framework, and adapt
|
|
existing testcases to it
|
|
|
|
---
|
|
tests/lib/common.sh | 329 ++++++++++--------
|
|
...on_test_save_single_image_multiple_tags.sh | 86 ++---
|
|
tests/src/integration_test_set_new_root.sh | 31 +-
|
|
tests/test.sh | 30 +-
|
|
4 files changed, 243 insertions(+), 233 deletions(-)
|
|
|
|
diff --git a/tests/lib/common.sh b/tests/lib/common.sh
|
|
index 4dd34aa..3c031f9 100755
|
|
--- a/tests/lib/common.sh
|
|
+++ b/tests/lib/common.sh
|
|
@@ -18,7 +18,7 @@ declare -x pidofbuilder
|
|
|
|
# check if legacy builder exists
|
|
function pre_check() {
|
|
- if pgrep isula-builder > /dev/null 2>&1; then
|
|
+ if pgrep isula-builder >/dev/null 2>&1; then
|
|
echo "isula-builder is already running, please stop it first"
|
|
exit 1
|
|
fi
|
|
@@ -26,13 +26,13 @@ function pre_check() {
|
|
|
|
# start isula-builder
|
|
function start_isula_builder() {
|
|
- nohup isula-builder > /tmp/buildlog-daemon 2>&1 &
|
|
+ nohup isula-builder >/tmp/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" /tmp/buildlog-daemon >/dev/null 2>&1; then
|
|
sleep 0.1
|
|
continue
|
|
else
|
|
@@ -47,198 +47,233 @@ function start_isula_builder() {
|
|
}
|
|
|
|
function cleanup() {
|
|
- isula-build ctr-img rm -p > /dev/null 2>&1
|
|
- kill -15 "${pidofbuilder}" > /dev/null 2>&1
|
|
+ isula-build ctr-img rm -p >/dev/null 2>&1
|
|
+ kill -15 "${pidofbuilder}" >/dev/null 2>&1
|
|
rm -f /tmp/buildlog-*
|
|
}
|
|
|
|
# test build image without output with default docker format
|
|
function test_build_without_output() {
|
|
- if ! isula-build ctr-img build --format docker --tag "$1":latest "$2" > /tmp/buildlog-client 2>&1; then
|
|
- echo "FAIL"
|
|
- echo "LOG DIR:/tmp/buildlog-client and /tmp/buildlog-daemon (build with docker format without output)"
|
|
- kill -15 "${pidofbuilder}"
|
|
- exit 1
|
|
- fi
|
|
+ commands=(
|
|
+ "isula-build ctr-img build --format docker --tag $1:latest $2"
|
|
+ "isula-build ctr-img rm $1:latest"
|
|
+ )
|
|
|
|
- if ! isula-build ctr-img rm "$1":latest > /tmp/buildlog-client 2>&1; then
|
|
- echo "FAIL"
|
|
- echo "LOG DIR:/tmp/buildlog-client and /tmp/buildlog-daemon (build with docker format without output)"
|
|
- kill -15 "${pidofbuilder}"
|
|
- exit 1
|
|
- fi
|
|
+ for command in "${commands[@]}"; do show_and_run_command "$command"; done
|
|
}
|
|
|
|
# test build image without output with oci format
|
|
function test_build_without_output_with_oci_format() {
|
|
- if ! isula-build ctr-img build --format oci --tag "$1":latest "$2" > /tmp/buildlog-client 2>&1; then
|
|
- echo "FAIL"
|
|
- echo "LOG DIR:/tmp/buildlog-client and /tmp/buildlog-daemon (build with oci format without output)"
|
|
- kill -15 "${pidofbuilder}"
|
|
- exit 1
|
|
- fi
|
|
-
|
|
- if ! isula-build ctr-img rm "$1":latest > /tmp/buildlog-client 2>&1; then
|
|
- echo "FAIL"
|
|
- echo "LOG DIR:/tmp/buildlog-client and /tmp/buildlog-daemon (build with oci format without output)"
|
|
- kill -15 "${pidofbuilder}"
|
|
- exit 1
|
|
- fi
|
|
+ declare -a commands=(
|
|
+ "isula-build ctr-img build --format oci --tag $1:latest $2"
|
|
+ "isula-build ctr-img rm $1:latest"
|
|
+ )
|
|
+ for command in "${commands[@]}"; do show_and_run_command "$command"; done
|
|
}
|
|
|
|
# test build image with docker-archive output
|
|
function test_build_with_docker_archive_output() {
|
|
- if ! isula-build ctr-img build --output=docker-archive:/tmp/"$1".tar:"$1":latest "$2" > /tmp/buildlog-client 2>&1; then
|
|
- echo "FAIL"
|
|
- echo "LOG DIR:/tmp/buildlog-client and /tmp/buildlog-daemon (build with docker-archive output)"
|
|
- kill -15 "${pidofbuilder}"
|
|
- exit 1
|
|
- else
|
|
- rm -f /tmp/"$1".tar
|
|
- fi
|
|
-
|
|
- if ! isula-build ctr-img rm "$1":latest > /tmp/buildlog-client 2>&1; then
|
|
- echo "FAIL"
|
|
- echo "LOG DIR:/tmp/buildlog-client and /tmp/buildlog-daemon (build with docker-archive output)"
|
|
- kill -15 "${pidofbuilder}"
|
|
- exit 1
|
|
- fi
|
|
+ declare -a commands=(
|
|
+ "isula-build ctr-img build --output=docker-archive:/tmp/$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
|
|
}
|
|
|
|
# test build image with oci-archive output
|
|
function test_build_with_oci_archive_output() {
|
|
- if ! isula-build ctr-img build --output=oci-archive:/tmp/"$1".tar:"$1":latest "$2" > /tmp/buildlog-client 2>&1; then
|
|
- echo "FAIL"
|
|
- echo "LOG DIR:/tmp/buildlog-client and /tmp/buildlog-daemon (build with oci-archive output)"
|
|
- kill -15 "${pidofbuilder}"
|
|
- exit 1
|
|
- else
|
|
- rm -f /tmp/"$1".tar
|
|
- fi
|
|
-
|
|
- if ! isula-build ctr-img rm "$1":latest > /tmp/buildlog-client 2>&1; then
|
|
- echo "FAIL"
|
|
- echo "LOG DIR:/tmp/buildlog-client and /tmp/buildlog-daemon (build with oci-archive output)"
|
|
- kill -15 "${pidofbuilder}"
|
|
- exit 1
|
|
- fi
|
|
+ declare -a commands=(
|
|
+ "isula-build ctr-img build --output=oci-archive:/tmp/$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
|
|
}
|
|
|
|
# test build image with docker-daemon output
|
|
function test_build_with_docker_daemon_output() {
|
|
- if ! systemctl status docker > /dev/null 2>&1; then
|
|
+ if ! systemctl status docker >/dev/null 2>&1; then
|
|
return 0
|
|
fi
|
|
|
|
- if ! isula-build ctr-img build --output=docker-daemon:isula/"$1":latest "$2" > /tmp/buildlog-client 2>&1; then
|
|
- echo "FAIL"
|
|
- echo "LOG DIR:/tmp/buildlog-client and /tmp/buildlog-daemon (build with docker-daemon output)"
|
|
- kill -15 "${pidofbuilder}"
|
|
- exit 1
|
|
- else
|
|
- docker rmi isula/"$1" > /dev/null 2>&1
|
|
- fi
|
|
-
|
|
- if ! isula-build ctr-img rm isula/"$1":latest > /tmp/buildlog-client 2>&1; then
|
|
- echo "FAIL"
|
|
- echo "LOG DIR:/tmp/buildlog-client and /tmp/buildlog-daemon (build with docker-daemon output)"
|
|
- kill -15 "${pidofbuilder}"
|
|
- exit 1
|
|
- fi
|
|
+ declare -a commands=(
|
|
+ "isula-build ctr-img build --output=docker-daemon:isula/$1:latest $2"
|
|
+ "isula-build ctr-img rm isula/$1:latest"
|
|
+ )
|
|
+ for command in "${commands[@]}"; do show_and_run_command "$command"; done
|
|
+ docker rmi isula/"$1" >/dev/null 2>&1
|
|
}
|
|
|
|
# test build image with isulad output
|
|
-function test_build_with_isulad_output() {
|
|
- if ! systemctl status isulad > /dev/null 2>&1; then
|
|
+function test_build_with_isulad_output() {
|
|
+ if ! systemctl status isulad >/dev/null 2>&1; then
|
|
return 0
|
|
fi
|
|
|
|
- if ! isula-build ctr-img build --output=isulad:isula/"$1":latest "$2" > /tmp/buildlog-client 2>&1; then
|
|
- echo "FAIL"
|
|
- echo "LOG DIR:/tmp/buildlog-client and /tmp/buildlog-daemon (build with isulad output)"
|
|
- kill -15 "${pidofbuilder}"
|
|
- exit 1
|
|
- else
|
|
- isula rmi isula/"$1" > /dev/null 2>&1
|
|
- fi
|
|
-
|
|
- if ! isula-build ctr-img rm isula/"$1":latest > /tmp/buildlog-client 2>&1; then
|
|
- echo "FAIL"
|
|
- echo "LOG DIR:/tmp/buildlog-client and /tmp/buildlog-daemon (build with isulad output)"
|
|
- kill -15 "${pidofbuilder}"
|
|
- exit 1
|
|
- fi
|
|
+ declare -a commands=(
|
|
+ "isula-build ctr-img build --output=isulad:isula/$1:latest $2"
|
|
+ "isula-build ctr-img rm isula/$1:latest"
|
|
+ )
|
|
+ for command in "${commands[@]}"; do show_and_run_command "$command"; done
|
|
+ isula rmi isula/"$1" >/dev/null 2>&1
|
|
}
|
|
|
|
# test isula build base command
|
|
function test_isula_build_base_command() {
|
|
- show_and_run_command "Build docker format image:" \
|
|
- " isula-build ctr-img build --tag $1-docker:latest --output=docker-archive:/tmp/$1-docker.tar:$1-docker:latest $2"
|
|
+ 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"
|
|
+ ["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"
|
|
+ ["Remove images"]="isula-build ctr-img rm $1-docker:latest $1-oci:latest"
|
|
+ )
|
|
+ declare -a orders
|
|
+ orders+=("Build docker format image")
|
|
+ orders+=("Build oci format image")
|
|
+ orders+=("List all images")
|
|
+ orders+=("List docker format image")
|
|
+ orders+=("List oci format image")
|
|
+ orders+=("Save image with docker format")
|
|
+ orders+=("Save image with oci format")
|
|
+ orders+=("Load docker format images")
|
|
+ orders+=("Load oci format images")
|
|
+ orders+=("Save multipile images with docker format")
|
|
+ orders+=("Remove images")
|
|
+ for i in "${!orders[@]}"; do
|
|
+ show_and_run_command "${orders[$i]}" "${commands[${orders[$i]}]}"
|
|
+ done
|
|
|
|
- show_and_run_command "Build oci format image:" \
|
|
- "isula-build ctr-img build --tag $1-oci:latest --output=oci-archive:/tmp/$1-oci.tar:$1-oci:latest $2"
|
|
+ rm -f /tmp/*.tar
|
|
+}
|
|
|
|
- show_and_run_command "List all images:" \
|
|
- "isula-build ctr-img images"
|
|
-
|
|
- show_and_run_command "List docker format image:" \
|
|
- "isula-build ctr-img images $1-docker:latest"
|
|
+# print callstack of shell function
|
|
+function shell_print_callstack() {
|
|
+ echo "Shell Function Call Stack:"
|
|
+ for ((index = 1; index < ${#FUNCNAME[@]}; index++)); do
|
|
+ printf "\t%d - %s\n" "$((index - 1))" "${FUNCNAME[index]} (${BASH_SOURCE[index + 1]}:${BASH_LINENO[index]})"
|
|
+ done
|
|
+}
|
|
|
|
- show_and_run_command "List oci format image:" \
|
|
- "isula-build ctr-img images $1-oci:latest"
|
|
+# 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
|
|
+ echo "FAIL"
|
|
+ echo "Failed when running command: $command"
|
|
+ echo "LOG DIR:/tmp/buildlog-client and /tmp/buildlog-daemon"
|
|
+ kill -15 "${pidofbuilder}"
|
|
+ shell_print_callstack
|
|
+ exit 1
|
|
+ fi
|
|
+ }
|
|
+ if [ $# -eq 1 ]; then
|
|
+ local -r command="$1"
|
|
+ run_command
|
|
+ return 0
|
|
+ fi
|
|
+ local -r brief="$1"
|
|
+ local -r command="$2"
|
|
+ printf "%-45s" "$brief"":"
|
|
+ run_command
|
|
+ echo "PASS"
|
|
+}
|
|
|
|
- rm -f /tmp/"$1"-docker.tar /tmp/"$1"-oci.tar
|
|
+exit_flag=0
|
|
|
|
- show_and_run_command "Save image with docker format:" \
|
|
- "isula-build ctr-img save -f docker $1-docker:latest -o /tmp/$1-docker.tar"
|
|
+# run command when isula-builder running in systemd mode
|
|
+# $1 (concrete command)
|
|
+function systemd_run_command() {
|
|
+ local -r command="$1"
|
|
|
|
- show_and_run_command "Save image with oci format:" \
|
|
- "isula-build ctr-img save -f oci $1-oci:latest -o /tmp/$1-oci.tar"
|
|
+ start_time=$(date '+%Y-%m-%d %H:%M:%S')
|
|
+ if ! $command >/tmp/buildlog-client 2>&1; then
|
|
+ {
|
|
+ echo "Error from client:"
|
|
+ cat /tmp/buildlog-client
|
|
+ echo "Error from daemon:"
|
|
+ journalctl -u isula-build --since "$start_time" --no-pager
|
|
+ shell_print_callstack
|
|
+ } >>/tmp/buildlog-failed
|
|
|
|
- show_and_run_command "Load docker format images:" \
|
|
- "isula-build ctr-img load -i /tmp/$1-docker.tar"
|
|
+ ((exit_flag++))
|
|
+ fi
|
|
+}
|
|
|
|
- show_and_run_command "Load oci format images:" \
|
|
- "isula-build ctr-img load -i /tmp/$1-oci.tar"
|
|
+# run command and check its result
|
|
+# $1 (command)
|
|
+# $2 (expected command return value)
|
|
+function run_check_result() {
|
|
+ local -r command="$1"
|
|
+ local -r expected="$2"
|
|
+
|
|
+ eval "$command" >/dev/null 2>&1
|
|
+ result=$?
|
|
+ if [ "$result" != "$expected" ]; then
|
|
+ debug "expected $expected, get $result"
|
|
+ testcase_path="${BASH_SOURCE[1]}"
|
|
+ testcase="${testcase_path##/*/}"
|
|
+ echo "$testcase:${BASH_LINENO[0]}" "$command" >>/tmp/buildlog-failed
|
|
+ echo expected "$expected", get "$result" >>/tmp/buildlog-failed
|
|
+ ((exit_flag++))
|
|
+ fi
|
|
+}
|
|
|
|
- show_and_run_command "Save multipile images with docker format:" \
|
|
- "isula-build ctr-img save -f docker $1-docker:latest $1-oci:latest -o /tmp/$1-all.tar"
|
|
+# check actual result and expected value
|
|
+# $1 (result)
|
|
+# $2 (expected)
|
|
+function check_value() {
|
|
+ local -r result="$1"
|
|
+ local -r expected="$2"
|
|
+
|
|
+ if [ "$result" != "$expected" ]; then
|
|
+ debug "expected $expected, get $result"
|
|
+ testcase_path="${BASH_SOURCE[1]}"
|
|
+ testcase="${testcase_path##/*/}"
|
|
+ echo "TESTCASE: $testcase:${BASH_LINENO[0]}" "${FUNCNAME[0]}" >>/tmp/buildlog-failed
|
|
+ echo expected "$expected", get "$result" >>/tmp/buildlog-failed
|
|
+ ((exit_flag++))
|
|
+ fi
|
|
+}
|
|
|
|
- rm -f /tmp/"$1"-docker.tar /tmp/"$1"-oci.tar /tmp/"$1"-all.tar
|
|
+# print debug message
|
|
+# $1 (debug message)
|
|
+function debug() {
|
|
+ local -r message="$1"
|
|
|
|
- show_and_run_command "Remove images:" \
|
|
- "isula-build ctr-img rm $1-docker:latest $1-oci:latest"
|
|
+ if [ "$TEST_DEBUG" == "true" ]; then
|
|
+ printf "(%s %s) " "DEBUG:" "$message"
|
|
+ fi
|
|
}
|
|
|
|
-function show_and_run_command() {
|
|
- printf "%-45s" "$1"
|
|
- if ! $2 > /tmp/buildlog-client 2>&1; then
|
|
- echo "FAIL"
|
|
- echo "LOG DIR:/tmp/buildlog-client and /tmp/buildlog-daemon, failed when running command: $2"
|
|
- kill -15 "${pidofbuilder}"
|
|
- exit 1
|
|
- fi
|
|
- echo "PASS"
|
|
+run_root="/var/run/integration-isula-build"
|
|
+data_root="/var/lib/integration-isula-build"
|
|
+config_file="/etc/isula-build/configuration.toml"
|
|
+
|
|
+function pre_integration() {
|
|
+ rm -rf /tmp/buildlog-failed
|
|
+
|
|
+ cp $config_file "$config_file".integration
|
|
+ sed -i "/run_root/d;/data_root/d" $config_file
|
|
+ echo "run_root = \"${run_root}\"" >>$config_file
|
|
+ echo "data_root = \"${data_root}\"" >>$config_file
|
|
+
|
|
+ systemctl restart isula-build
|
|
}
|
|
|
|
-function run_with_debug() {
|
|
- function fail_and_exit(){
|
|
- echo "FAIL"
|
|
- echo "Run \"journalctl -xefu isula-build\" to get the log."
|
|
- systemctl stop isula-build
|
|
- exit 1
|
|
- }
|
|
+function after_integration() {
|
|
+ systemd_run_command "isula-build ctr-img rm -a"
|
|
|
|
- if [ "${DEBUG:-0}" -eq 0 ]; then
|
|
- if ! $1 > /dev/null 2>&1; then
|
|
- fail_and_exit
|
|
- fi
|
|
- return
|
|
- fi
|
|
- echo "$1"
|
|
- if ! $1; then
|
|
- fail_and_exit
|
|
- fi
|
|
- echo "------------command-delimiter-----------"
|
|
- echo " "
|
|
-}
|
|
\ No newline at end of file
|
|
+ rm -f $config_file
|
|
+ mv "$config_file".integration $config_file
|
|
+ systemctl stop isula-build
|
|
+ rm -rf $run_root $data_root
|
|
+}
|
|
diff --git a/tests/src/integration_test_save_single_image_multiple_tags.sh b/tests/src/integration_test_save_single_image_multiple_tags.sh
|
|
index 1eaeb8d..46df444 100644
|
|
--- a/tests/src/integration_test_save_single_image_multiple_tags.sh
|
|
+++ b/tests/src/integration_test_save_single_image_multiple_tags.sh
|
|
@@ -12,69 +12,49 @@
|
|
# Author: Weizheng Xing
|
|
# Create: 2021-08-24
|
|
# Description: check if saving single image with multiple tags has been corrected
|
|
+# 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=add-chown-basic
|
|
-context_dir="$top_dir"/tests/data/add-chown-basic
|
|
+image_name=build-from-scratch
|
|
+context_dir="$top_dir"/tests/data/build-from-scratch
|
|
|
|
-function clean()
|
|
-{
|
|
- isula-build ctr-img rm -p > /dev/null 2>&1
|
|
- systemctl stop isula-build
|
|
- rm -rf "$temp_tar"
|
|
-}
|
|
-
|
|
-function pre_test()
|
|
-{
|
|
+function pre_test() {
|
|
temp_tar=$(mktemp -u --suffix=.tar)
|
|
- systemctl restart isula-build
|
|
}
|
|
|
|
-function do_test()
|
|
-{
|
|
+function do_test() {
|
|
# get image id
|
|
- if ! image_id1=$(isula-build ctr-img build -t $image_name:latest "$context_dir"|grep "Build success with image id: "|cut -d ":" -f 2); then
|
|
- echo "FAIL"
|
|
- fi
|
|
- if ! image_id2=$(isula-build ctr-img build -t $image_name:latest2 "$context_dir"|grep "Build success with image id: "|cut -d ":" -f 2); then
|
|
- echo "FAIL"
|
|
- fi
|
|
-
|
|
- ! run_with_debug "isula-build ctr-img tag $image_name:latest $image_name:latest-child"
|
|
-
|
|
- # save with id + name
|
|
- ! run_with_debug "isula-build ctr-img save -f docker $image_id1 $image_name:latest-child -o $temp_tar"
|
|
- rm -rf "$temp_tar"
|
|
-
|
|
- # save with name + id
|
|
- ! run_with_debug "isula-build ctr-img save -f docker $image_name:latest-child $image_id1 -o $temp_tar"
|
|
- rm -rf "$temp_tar"
|
|
-
|
|
- # save with name + name
|
|
- ! run_with_debug "isula-build ctr-img save -f docker $image_name:latest $image_name:latest-child -o $temp_tar"
|
|
- rm -rf "$temp_tar"
|
|
-
|
|
- # save with different images id1 + id2
|
|
- ! run_with_debug "isula-build ctr-img save -f docker $image_id1 $image_id2 -o $temp_tar"
|
|
- rm -rf "$temp_tar"
|
|
-
|
|
- # save with different images "without latest tag" + id2
|
|
- ! run_with_debug "isula-build ctr-img save -f docker $image_name $image_id2 -o $temp_tar"
|
|
- rm -rf "$temp_tar"
|
|
-
|
|
- # save with id1 + id2 + name
|
|
- ! run_with_debug "isula-build ctr-img save -f docker $image_id1 $image_id2 $image_name:latest2 -o $temp_tar"
|
|
- rm -rf "$temp_tar"
|
|
-
|
|
- ! run_with_debug "isula-build ctr-img rm $image_name:latest $image_name:latest-child"
|
|
- ! run_with_debug "isula-build ctr-img rm $image_name:latest2"
|
|
-
|
|
- echo "PASS"
|
|
+ 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)
|
|
+
|
|
+ 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)
|
|
+
|
|
+ declare -a commands=(
|
|
+ "isula-build ctr-img tag $image_name:latest $image_name:latest-child"
|
|
+ # save with id + name
|
|
+ "isula-build ctr-img save -f docker $image_id1 $image_name:latest-child -o $temp_tar"
|
|
+ # save with name + id
|
|
+ "isula-build ctr-img save -f docker $image_name:latest-child $image_id1 -o $temp_tar"
|
|
+ # save with name + name
|
|
+ "isula-build ctr-img save -f docker $image_name:latest $image_name:latest-child -o $temp_tar"
|
|
+ # save with different images id1 + id2
|
|
+ "isula-build ctr-img save -f docker $image_id1 $image_id2 -o $temp_tar"
|
|
+ # save with different images "without latest tag" + id2
|
|
+ "isula-build ctr-img save -f docker $image_name $image_id2 -o $temp_tar"
|
|
+ # save with id1 + id2 + name
|
|
+ "isula-build ctr-img save -f docker $image_id1 $image_id2 $image_name:latest2 -o $temp_tar"
|
|
+ "isula-build ctr-img rm $image_name:latest $image_name:latest-child"
|
|
+ "isula-build ctr-img rm $image_name:latest2"
|
|
+ )
|
|
+ for command in "${commands[@]}"; do
|
|
+ systemd_run_command "$command"
|
|
+ rm -rf "$temp_tar"
|
|
+ done
|
|
}
|
|
|
|
pre_test
|
|
do_test
|
|
-clean
|
|
+exit "$exit_flag"
|
|
diff --git a/tests/src/integration_test_set_new_root.sh b/tests/src/integration_test_set_new_root.sh
|
|
index ae8d436..d2dfcf2 100644
|
|
--- a/tests/src/integration_test_set_new_root.sh
|
|
+++ b/tests/src/integration_test_set_new_root.sh
|
|
@@ -13,6 +13,7 @@
|
|
# Create: 2021-05-29
|
|
# Description: test set new run and data root in configuration.toml
|
|
# History: 2021-8-18 Xiang Li <lixiang172@huawei.com> use busyobx instead of openeuler base image to speed up test
|
|
+# 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
|
|
@@ -21,45 +22,37 @@ source "$top_dir"/tests/lib/common.sh
|
|
run_root="/var/run/new-isula-build"
|
|
data_root="/var/lib/new-isula-build"
|
|
config_file="/etc/isula-build/configuration.toml"
|
|
-image="hub.oepkgs.net/openeuler/busybox:latest"
|
|
+image="hub.oepkgs.net/library/busybox:latest"
|
|
|
|
-function clean()
|
|
-{
|
|
+function clean() {
|
|
rm -f $config_file
|
|
mv "$config_file".bak $config_file
|
|
|
|
- isula-build ctr-img rm -p > /dev/null 2>&1
|
|
- systemctl stop isula-build
|
|
+ systemctl restart isula-build
|
|
rm -rf $run_root $data_root
|
|
}
|
|
|
|
# change to new data and run root
|
|
-function pre_test()
|
|
-{
|
|
+function pre_test() {
|
|
cp $config_file "$config_file".bak
|
|
sed -i "/run_root/d;/data_root/d" $config_file
|
|
- echo "run_root = \"${run_root}\"" >> $config_file
|
|
- echo "data_root = \"${data_root}\"" >> $config_file
|
|
+ echo "run_root = \"${run_root}\"" >>$config_file
|
|
+ echo "data_root = \"${data_root}\"" >>$config_file
|
|
|
|
systemctl restart isula-build
|
|
}
|
|
|
|
# check if new resources are downloaded in new root
|
|
-function do_test()
|
|
-{
|
|
+function do_test() {
|
|
tree_node_befor=$(tree -L 3 $data_root | wc -l)
|
|
- run_with_debug "isula-build ctr-img pull $image"
|
|
+ systemd_run_command "isula-build ctr-img pull $image"
|
|
tree_node_after=$(tree -L 3 $data_root | wc -l)
|
|
|
|
- if [ $((tree_node_after - tree_node_befor)) -eq 8 ] && run_with_debug "isula-build ctr-img rm $image"; then
|
|
- echo "PASS"
|
|
- else
|
|
- echo "Sets of run and data root are not effective"
|
|
- clean
|
|
- exit 1
|
|
- fi
|
|
+ check_value $((tree_node_after - tree_node_befor)) 8
|
|
+ systemd_run_command "isula-build ctr-img rm $image"
|
|
}
|
|
|
|
pre_test
|
|
do_test
|
|
clean
|
|
+exit "$exit_flag"
|
|
diff --git a/tests/test.sh b/tests/test.sh
|
|
index 01f0f31..df29c22 100755
|
|
--- a/tests/test.sh
|
|
+++ b/tests/test.sh
|
|
@@ -36,36 +36,38 @@ function fuzz() {
|
|
# integration test
|
|
function integration() {
|
|
source "$top_dir"/tests/lib/common.sh
|
|
- systemctl restart isula-build
|
|
+ pre_integration
|
|
|
|
while IFS= read -r testfile; do
|
|
printf "%-65s" "test $(basename "$testfile"): "
|
|
if ! bash "$testfile"; then
|
|
- exit 1
|
|
+ echo "FAIL"
|
|
+ continue
|
|
fi
|
|
+ echo "PASS"
|
|
done < <(find "$top_dir"/tests/src -maxdepth 1 -name "integration_test*" -type f -print)
|
|
+ after_integration
|
|
}
|
|
|
|
# main function to chose which kind of test
|
|
function main() {
|
|
case "$1" in
|
|
- fuzz)
|
|
- fuzz "$2"
|
|
- ;;
|
|
- base)
|
|
- base
|
|
+ fuzz)
|
|
+ fuzz "$2"
|
|
;;
|
|
- integration)
|
|
- integration
|
|
+ base)
|
|
+ base
|
|
;;
|
|
- *)
|
|
- echo "Unknow test type."
|
|
- exit 1
|
|
+ integration)
|
|
+ integration
|
|
+ ;;
|
|
+ *)
|
|
+ echo "Unknow test type."
|
|
+ exit 1
|
|
;;
|
|
esac
|
|
}
|
|
|
|
-export "ISULABUILD_CLI_EXPERIMENTAL"="enabled"
|
|
-export DEBUG=0
|
|
+export ISULABUILD_CLI_EXPERIMENTAL="enabled"
|
|
|
|
main "$@"
|
|
--
|
|
2.27.0
|
|
|