From 87c8603713cdcbd0f2abad29c73d3909b3f4c417 Mon Sep 17 00:00:00 2001 From: xingweizheng Date: Tue, 24 Aug 2021 17:14:47 +0800 Subject: [PATCH 4/4] add integration test for saving one image with multiple tags --- Makefile | 1 + tests/lib/common.sh | 8 +++ ...gration_test_save_single_image_multiple_tags.sh | 58 ++++++++++++++++++++ tests/src/integration_test_set_new_root.sh | 62 ++++++++++++++++++++++ tests/src/test_integration_set_new_root.sh | 60 --------------------- tests/test.sh | 9 ++-- 6 files changed, 134 insertions(+), 64 deletions(-) create mode 100644 tests/src/integration_test_save_single_image_multiple_tags.sh create mode 100644 tests/src/integration_test_set_new_root.sh delete mode 100644 tests/src/test_integration_set_new_root.sh diff --git a/Makefile b/Makefile index a9d4c93..1d87625 100644 --- a/Makefile +++ b/Makefile @@ -91,6 +91,7 @@ test-unit: .PHONY: test-integration test-integration: @echo "Integration test starting..." + @./tests/test.sh base @./tests/test.sh integration @echo "Integration test done!" diff --git a/tests/lib/common.sh b/tests/lib/common.sh index f393ee1..5e4c208 100755 --- a/tests/lib/common.sh +++ b/tests/lib/common.sh @@ -219,3 +219,11 @@ function show_and_run_command() { fi echo "PASS" } + +function run_with_debug() { + if [ "${DEBUG:-0}" -eq 1 ]; then + $1 + else + $1 > /dev/null 2>&1 + fi +} \ No newline at end of file diff --git a/tests/src/integration_test_save_single_image_multiple_tags.sh b/tests/src/integration_test_save_single_image_multiple_tags.sh new file mode 100644 index 0000000..a25786a --- /dev/null +++ b/tests/src/integration_test_save_single_image_multiple_tags.sh @@ -0,0 +1,58 @@ +#!/bin/bash + +# Copyright (c) Huawei Technologies Co., Ltd. 2020. All rights reserved. +# isula-build licensed under the Mulan PSL v2. +# You can use this software according to the terms and conditions of the Mulan PSL v2. +# You may obtain a copy of Mulan PSL v2 at: +# http://license.coscl.org.cn/MulanPSL2 +# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR +# PURPOSE. +# See the Mulan PSL v2 for more details. +# Author: Weizheng Xing +# Create: 2021-08-24 +# Description: check if saving single image with multiple tags has been corrected + +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 + +function clean() +{ + systemctl stop isula-build + rm -rf "$temp_tar" +} + +function pre_test() +{ + temp_tar=$(mktemp -u --suffix=.tar) + systemctl restart isula-build +} + +function do_test() +{ + if ! run_with_debug "isula-build ctr-img build -t $image_name:latest $context_dir"; then + echo "FAIL" + fi + + if ! run_with_debug "isula-build ctr-img tag $image_name:latest $image_name:latest-child"; then + echo "FAIL" + fi + + if ! run_with_debug "isula-build ctr-img save -f docker $image_name:latest $image_name:latest-child -o $temp_tar"; then + echo "FAIL" + fi + + if ! run_with_debug "isula-build ctr-img rm $image_name:latest $image_name:latest-child"; then + echo "FAIL" + fi + + echo "PASS" +} + +pre_test +do_test +clean diff --git a/tests/src/integration_test_set_new_root.sh b/tests/src/integration_test_set_new_root.sh new file mode 100644 index 0000000..7238240 --- /dev/null +++ b/tests/src/integration_test_set_new_root.sh @@ -0,0 +1,62 @@ +#!/bin/bash + +# Copyright (c) Huawei Technologies Co., Ltd. 2020. All rights reserved. +# isula-build licensed under the Mulan PSL v2. +# You can use this software according to the terms and conditions of the Mulan PSL v2. +# You may obtain a copy of Mulan PSL v2 at: +# http://license.coscl.org.cn/MulanPSL2 +# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR +# PURPOSE. +# See the Mulan PSL v2 for more details. +# Author: Weizheng Xing +# Create: 2021-05-29 +# Description: test set new run and data root in configuration.toml + +top_dir=$(git rev-parse --show-toplevel) +# shellcheck disable=SC1091 +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" +base_image="hub.oepkgs.net/openeuler/openeuler:21.03" + +function clean() +{ + rm -f $config_file + mv "$config_file".bak $config_file + systemctl stop isula-build + rm -rf $run_root $data_root +} + +# change to new data and run root +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 + + systemctl restart isula-build +} + +# check if new resources are downloaded in new root +function do_test() +{ + tree_node_befor=$(tree -L 3 $data_root | wc -l) + run_with_debug "isula-build ctr-img pull $base_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 $base_image"; then + echo "PASS" + else + echo "Sets of run and data root are not effective" + clean + exit 1 + fi +} + +pre_test +do_test +clean diff --git a/tests/src/test_integration_set_new_root.sh b/tests/src/test_integration_set_new_root.sh deleted file mode 100644 index 85b724a..0000000 --- a/tests/src/test_integration_set_new_root.sh +++ /dev/null @@ -1,60 +0,0 @@ -#!/bin/bash - -# Copyright (c) Huawei Technologies Co., Ltd. 2020. All rights reserved. -# isula-build licensed under the Mulan PSL v2. -# You can use this software according to the terms and conditions of the Mulan PSL v2. -# You may obtain a copy of Mulan PSL v2 at: -# http://license.coscl.org.cn/MulanPSL2 -# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR -# PURPOSE. -# See the Mulan PSL v2 for more details. -# Author: Weizheng Xing -# Create: 2021-05-29 -# Description: test set new run and data root in configuration.toml - -run_root="/var/run/new-isula-build" -data_root="/var/lib/new-isula-build" -config_file="/etc/isula-build/configuration.toml" -base_image="hub.oepkgs.net/openeuler/openeuler:21.03" - -function clean() -{ - isula-build ctr-img rm $base_image >/dev/null 2>&1 - rm -f $config_file - mv "$config_file".bak $config_file - systemctl stop isula-build - rm -rf $run_root $data_root -} - -# change to new data and run root -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 - - systemctl restart isula-build -} - -# check if new resources are downloaded in new root -function do_test() -{ - tree_node_befor=$(tree -L 3 $data_root | wc -l) - isula-build ctr-img pull $base_image >/dev/null 2>&1 - tree_node_after=$(tree -L 3 $data_root | wc -l) - - if [ $(($tree_node_after - $tree_node_befor)) -eq 8 ]; then - echo "PASS" - else - echo "Sets of run and data root are not effective" - clean - exit 1 - fi -} - -# clean -pre_test -do_test -clean diff --git a/tests/test.sh b/tests/test.sh index e04cc96..01f0f31 100755 --- a/tests/test.sh +++ b/tests/test.sh @@ -33,18 +33,17 @@ function fuzz() { exit $failed } -# base test +# integration test function integration() { source "$top_dir"/tests/lib/common.sh - pre_check systemctl restart isula-build while IFS= read -r testfile; do - printf "%-45s" "test $(basename "$testfile"): " + printf "%-65s" "test $(basename "$testfile"): " if ! bash "$testfile"; then exit 1 fi - done < <(find "$top_dir"/tests/src -maxdepth 1 -name "test_integration*" -type f -print) + done < <(find "$top_dir"/tests/src -maxdepth 1 -name "integration_test*" -type f -print) } # main function to chose which kind of test @@ -67,4 +66,6 @@ function main() { } export "ISULABUILD_CLI_EXPERIMENTAL"="enabled" +export DEBUG=0 + main "$@" -- 1.8.3.1