From 262707f0d14e7c42554875cab38fdef985c21acc Mon Sep 17 00:00:00 2001 From: zhongtao Date: Sat, 11 Jan 2025 15:04:54 +0800 Subject: [PATCH 183/198] add dt for cri v1 Signed-off-by: zhongtao --- CI/install_depends.sh | 5 +- .../container_cases/cri_default_namespace.sh | 39 ++++++------ .../container_cases/cri_exec_sync.sh | 40 ++++++------ CI/test_cases/container_cases/cri_pod_ip.sh | 51 +++++++-------- CI/test_cases/container_cases/cri_stream.sh | 45 +++++++------ CI/test_cases/container_cases/cri_test.sh | 40 ++++++------ CI/test_cases/critest.sh | 52 +++++++++------ CI/test_cases/helpers.sh | 63 +++++++++++++++++++ 8 files changed, 205 insertions(+), 130 deletions(-) diff --git a/CI/install_depends.sh b/CI/install_depends.sh index 8b7c7201..c7fb9563 100755 --- a/CI/install_depends.sh +++ b/CI/install_depends.sh @@ -44,9 +44,8 @@ function make_crictl() git clone https://gitee.com/duguhaotian/cri-tools.git go version cd cri-tools - # crictl v1.18 cannot recognise the SecurityProfile seccomp of LinuxSandboxSecurityContext - # and the LinuxContainerSecurityContext.has_seccomp() always false - git checkout v1.22.0 + # update crictl to 1.25, used to test cri v1 alpha and cri v1. + git checkout v1.25.0 make -j $nproc echo "make cri-tools: $?" cp ./build/bin/crictl ${builddir}/bin/ diff --git a/CI/test_cases/container_cases/cri_default_namespace.sh b/CI/test_cases/container_cases/cri_default_namespace.sh index d013c6fa..1f418947 100755 --- a/CI/test_cases/container_cases/cri_default_namespace.sh +++ b/CI/test_cases/container_cases/cri_default_namespace.sh @@ -18,17 +18,8 @@ function set_up() msg_info "${test} starting..." - cp /etc/isulad/daemon.json /etc/isulad/daemon.bak - sed -i "s#\"pod-sandbox-image\": \"\"#\"pod-sandbox-image\": \"mirrorgooglecontainers/pause-amd64:3.0\"#g" /etc/isulad/daemon.json - - check_valgrind_log - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to stop isulad" && return ${FAILURE} - - start_isulad_with_valgrind - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to start isulad" && return ${FAILURE} - - isula load -i ${pause_img_path}/pause.tar - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to load pause image" && return ${FAILURE} + init_cri_conf $1 + [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to init cri conf: ${1}" && return ${FAILURE} crictl pull ${image} [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to pull image: ${image}" && return ${FAILURE} @@ -92,20 +83,28 @@ function test_cri_default_namespace_in_pod_fun() function tear_down() { - cp -f /etc/isulad/daemon.bak /etc/isulad/daemon.json - check_valgrind_log - start_isulad_with_valgrind + local ret=0 + restore_cri_conf + [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to restore cri conf" && ((ret++)) + return $ret } declare -i ans=0 -set_up || ((ans++)) - -for element in ${RUNTIME_LIST[@]}; +for version in ${CRI_LIST[@]}; do - test_cri_default_namespace_in_pod_fun $element || ((ans++)) -done + test="test_cri_default_namespace_in_pod_fun, use cri version => (${version})" + msg_info "${test} starting..." + + set_up $version || ((ans++)) -tear_down + for element in ${RUNTIME_LIST[@]}; + do + test_cri_default_namespace_in_pod_fun $element || ((ans++)) + done + + tear_down || ((ans++)) + msg_info "${test} finished with return ${ans}..." +done show_result ${ans} "${curr_path}/${0}" diff --git a/CI/test_cases/container_cases/cri_exec_sync.sh b/CI/test_cases/container_cases/cri_exec_sync.sh index 97ea01ca..62352be5 100755 --- a/CI/test_cases/container_cases/cri_exec_sync.sh +++ b/CI/test_cases/container_cases/cri_exec_sync.sh @@ -33,17 +33,8 @@ function do_pre() msg_info "${test} starting..." - cp /etc/isulad/daemon.json /etc/isulad/daemon.bak - sed -i "s#\"pod-sandbox-image\": \"\"#\"pod-sandbox-image\": \"mirrorgooglecontainers/pause-amd64:3.0\"#g" /etc/isulad/daemon.json - - check_valgrind_log - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to stop isulad" && return ${FAILURE} - - start_isulad_with_valgrind - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to start isulad" && return ${FAILURE} - - isula load -i ${pause_img_path}/pause.tar - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to load pause image" && return ${FAILURE} + init_cri_conf $1 + [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to init cri conf: ${1}" && return ${FAILURE} crictl pull ${image} [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to pull image: ${image}" && return ${FAILURE} @@ -116,10 +107,10 @@ function tear_down() function do_post() { - cp -f /etc/isulad/daemon.bak /etc/isulad/daemon.json - - check_valgrind_log - start_isulad_with_valgrind + local ret=0 + restore_cri_conf + [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to restore cri conf" && ((ret++)) + return $ret } function do_test_t() @@ -142,13 +133,20 @@ function do_test_t() declare -i ans=0 -do_pre || ((ans++)) - -for element in ${RUNTIME_LIST[@]}; +for version in ${CRI_LIST[@]}; do - do_test_t $element || ((ans++)) -done + test="test_cri_exec_sync_fun, use cri version => (${version})" + msg_info "${test} starting..." -do_post + do_pre $version || ((ans++)) + + for element in ${RUNTIME_LIST[@]}; + do + do_test_t $element || ((ans++)) + done + + do_post || ((ans++)) + msg_info "${test} finished with return ${ans}..." +done show_result ${ans} "${curr_path}/${0}" diff --git a/CI/test_cases/container_cases/cri_pod_ip.sh b/CI/test_cases/container_cases/cri_pod_ip.sh index 7bf7833b..01c644f4 100755 --- a/CI/test_cases/container_cases/cri_pod_ip.sh +++ b/CI/test_cases/container_cases/cri_pod_ip.sh @@ -12,8 +12,8 @@ source ../helpers.sh function do_pre() { - cp /etc/isulad/daemon.json /etc/isulad/daemon.bak - sed -i "s#\"pod-sandbox-image\": \"\"#\"pod-sandbox-image\": \"mirrorgooglecontainers/pause-amd64:3.0\"#g" /etc/isulad/daemon.json + init_cri_conf $1 + [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to init cri conf: ${1}" && return ${FAILURE} init_cni_conf $data_path if [ $? -ne 0 ]; then @@ -21,21 +21,14 @@ function do_pre() TC_RET_T=$(($TC_RET_T+1)) return $TC_RET_T fi - - isula load -i ${pause_img_path}/pause.tar - if [ $? -ne 0 ]; then - msg_err "Failed to load pause image" - TC_RET_T=$(($TC_RET_T+1)) - return $TC_RET_T - fi - } function do_post() { - cp -f /etc/isulad/daemon.bak /etc/isulad/daemon.json - check_valgrind_log - start_isulad_with_valgrind + local ret=0 + restore_cri_conf + [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to restore cri conf" && ((ret++)) + return $ret } function do_test() @@ -104,21 +97,29 @@ function do_test() } -ret=0 +ans=0 -do_pre -if [ $? -ne 0 ];then - let "ret=$ret + 1" -fi - -for element in ${RUNTIME_LIST[@]}; +for version in ${CRI_LIST[@]}; do - do_test $element + test="test_cri_default_namespace_fun, use cri version => (${version})" + msg_info "${test} starting..." + + do_pre $version || ((ans++)) if [ $? -ne 0 ];then - let "ret=$ret + 1" + let "ans=$ans + 1" fi -done -do_post + for element in ${RUNTIME_LIST[@]}; + do + do_test $element + if [ $? -ne 0 ];then + let "ans=$ans + 1" + fi + done + + do_post || ((ans++)) + + msg_info "${test} finished with return ${ans}..." +done -show_result $ret "cni base test" +show_result $ans "cni base test" diff --git a/CI/test_cases/container_cases/cri_stream.sh b/CI/test_cases/container_cases/cri_stream.sh index 43ed3891..e4918c23 100755 --- a/CI/test_cases/container_cases/cri_stream.sh +++ b/CI/test_cases/container_cases/cri_stream.sh @@ -39,17 +39,8 @@ function do_pre() msg_info "${test} starting..." - cp /etc/isulad/daemon.json /etc/isulad/daemon.bak - sed -i "s#\"pod-sandbox-image\": \"\"#\"pod-sandbox-image\": \"mirrorgooglecontainers/pause-amd64:3.0\"#g" /etc/isulad/daemon.json - - check_valgrind_log - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to stop isulad" && return ${FAILURE} - - start_isulad_without_valgrind - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to start isulad" && return ${FAILURE} - - isula load -i ${pause_img_path}/pause.tar - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to load pause image" && return ${FAILURE} + init_cri_conf $1 "without_valgrind" + [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to init cri conf: ${1}" && return ${FAILURE} crictl pull ${image} [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to pull image: ${image}" && return ${FAILURE} @@ -130,13 +121,12 @@ function test_cri_attach local test="test_cri_attach => (${FUNCNAME[@]})" msg_info "${test} starting..." - nohup cricli attach -i ${cid} & + nohup cricli attach -ti ${cid} & pid=$! sleep 2 ps -T -p $(cat /var/run/isulad.pid) | grep IoCopy - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - residual IO copy thread in CRI attach operation" && ((ret++)) - + [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - attach failed, no IOCopy thread" && ((ret++)) kill -9 $pid sleep 2 @@ -169,10 +159,10 @@ function tear_down() function do_post() { - cp -f /etc/isulad/daemon.bak /etc/isulad/daemon.json - - stop_isulad_without_valgrind - start_isulad_with_valgrind + local ret=0 + restore_cri_conf "without_valgrind" + [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to restore cri conf" && ((ret++)) + return $ret } function do_test_t() @@ -198,13 +188,20 @@ function do_test_t() declare -i ans=0 -do_pre || ((ans++)) - -for element in ${RUNTIME_LIST[@]}; +for version in ${CRI_LIST[@]}; do - do_test_t $element || ((ans++)) -done + test="test_cri_stream_fun, use cri version => (${version})" + msg_info "${test} starting..." + + do_pre $version || ((ans++)) -do_post + for element in ${RUNTIME_LIST[@]}; + do + do_test_t $element || ((ans++)) + done + + do_post || ((ans++)) + msg_info "${test} finished with return ${ans}..." +done show_result ${ans} "${curr_path}/${0}" diff --git a/CI/test_cases/container_cases/cri_test.sh b/CI/test_cases/container_cases/cri_test.sh index 88420761..ed333a28 100755 --- a/CI/test_cases/container_cases/cri_test.sh +++ b/CI/test_cases/container_cases/cri_test.sh @@ -28,24 +28,21 @@ function do_pre() { sed -i "s#seccomp_localhost_ref#${data_path}/seccomp_localhost.json#g" ${data_path}/container-config-seccomp-localhost.json - cp /etc/isulad/daemon.json /etc/isulad/daemon.bak - sed -i "s#\"pod-sandbox-image\": \"\"#\"pod-sandbox-image\": \"mirrorgooglecontainers/pause-amd64:3.0\"#g" /etc/isulad/daemon.json - - check_valgrind_log - start_isulad_with_valgrind - - isula load -i ${pause_img_path}/pause.tar - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to load pause" && return ${FAILURE} - + init_cri_conf $1 "without_valgrind" + [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to init cri conf: ${1}" && return ${FAILURE} + isula pull busybox [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to pull busybox" && return ${FAILURE} + + return 0 } function do_post() { - cp -f /etc/isulad/daemon.bak /etc/isulad/daemon.json - check_valgrind_log - start_isulad_with_valgrind + local ret=0 + restore_cri_conf "without_valgrind" + [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to restore cri conf" && ((ret++)) + return $ret } function test_cri_seccomp() @@ -82,7 +79,7 @@ function test_cri_seccomp() [[ $? -eq 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - chmod should fail as it's blocked by seccomp" && ((ret++)) fi - isula rm -f `isula ps -a -q` + crictl rmp -f $(crictl pods -q) msg_info "${test} finished with return ${ret}..." return ${ret} @@ -90,13 +87,20 @@ function test_cri_seccomp() declare -i ans=0 -do_pre +for version in ${CRI_LIST[@]}; +do + test="test_cri_test_fun, use cri version => (${version})" + msg_info "${test} starting..." + + do_pre $version || ((ans++)) -test_cri_seccomp "default" || ((ans++)) -test_cri_seccomp "unconfined" || ((ans++)) -test_cri_seccomp "localhost" || ((ans++)) + test_cri_seccomp "default" || ((ans++)) + test_cri_seccomp "unconfined" || ((ans++)) + test_cri_seccomp "localhost" || ((ans++)) -do_post + do_post || ((ans++)) + msg_info "${test} finished with return ${ans}..." +done show_result ${ans} "${curr_path}/${0}" diff --git a/CI/test_cases/critest.sh b/CI/test_cases/critest.sh index f8d4975e..136594a0 100755 --- a/CI/test_cases/critest.sh +++ b/CI/test_cases/critest.sh @@ -62,8 +62,9 @@ function restore_selinux_environment() { function pre_test() { # build critest - local VERSION="v1.22.0" + local VERSION="v1.25.0" + rm -rf cri-tools git clone https://gitee.com/duguhaotian/cri-tools.git go version cd cri-tools @@ -75,15 +76,8 @@ function pre_test() { critest --version # config pause - cp /etc/isulad/daemon.json /etc/isulad/daemon.bak - sed -i "s#\"pod-sandbox-image\": \"\"#\"pod-sandbox-image\": \"mirrorgooglecontainers/pause-amd64:3.0\"#g" /etc/isulad/daemon.json - - isula load -i ${pause_img_path}/pause.tar - if [ $? -ne 0 ]; then - msg_err "Failed to load pause image" - TC_RET_T=$(($TC_RET_T + 1)) - return $TC_RET_T - fi + init_cri_conf $1 + [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to init cri conf: ${1}" && return ${FAILURE} # config cni init_cni_conf $data_path @@ -107,7 +101,9 @@ function post_test() { restore_selinux_environment rm -rf ./cri-tools rm /usr/local/bin/critest - cp -f /etc/isulad/daemon.bak /etc/isulad/daemon.json + + restore_cri_conf + [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to restore cri conf" && ((ret++)) # clear env isula rm -f `isula ps -qa` @@ -117,10 +113,8 @@ function post_test() { do isula pull ${image} done - - stop_isulad_without_valgrind - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - memory leak" && return ${FAILURE} - start_isulad_with_valgrind + + return ${ret} } function test_critest() { @@ -158,12 +152,32 @@ function do_test_t() { return $ret } -declare -i ans=0 +function do_critest_test_t() +{ + local cri_version=$1 + local ret=0 + local test="do_critest_test_t => (${cri_version})" + msg_info "${test} starting..." + + pre_test $cri_version || (ret++) -pre_test || (ans++) + do_test_t || ((ret++)) -do_test_t || ((ans++)) + post_test || (ret++) -post_test || (ans++) + msg_info "${test} finished with return ${ret}..." + + return $ret +} + +declare -i ans=0 + +for version in ${CRI_LIST[@]}; +do + do_critest_test_t $version + if [ $? -ne 0 ];then + let "ans=$ans + 1" + fi +done show_result ${ans} "${curr_path}/${0}" diff --git a/CI/test_cases/helpers.sh b/CI/test_cases/helpers.sh index 0288b4ea..111058e3 100755 --- a/CI/test_cases/helpers.sh +++ b/CI/test_cases/helpers.sh @@ -31,6 +31,8 @@ RUNTIME_LIST=(lcr runc) DEFAULT_RUNTIME=runc +CRI_LIST=(v1alpha v1) + testcase_data="/tmp/testcases_data" enable_native_network=0 @@ -321,4 +323,65 @@ function do_pretest() { msg_info "#####################" } +function init_cri_conf() { + local ret=0 + check_valgrind_log + if [ $? -ne 0 ]; then + echo "stop isulad failed" + ret=$(($ret+1)) + fi + + cp /etc/isulad/daemon.json /etc/isulad/daemon.bak + if [ "x$1" == "xv1" ]; then + echo "use cri v1" + sed -i '/"pod-sandbox-image": ""/i "enable-cri-v1": true,' /etc/isulad/daemon.json + fi + sed -i "s#\"pod-sandbox-image\": \"\"#\"pod-sandbox-image\": \"mirrorgooglecontainers/pause-amd64:3.0\"#g" /etc/isulad/daemon.json + + if [ "x$2" == "xwithout_valgrind" ]; then + start_isulad_without_valgrind + else + echo "start with valgrind" + start_isulad_with_valgrind + fi + if [ $? -ne 0 ]; then + echo "start failed" + ret=$(($ret+1)) + fi + + isula load -i ${pause_img_path}/pause.tar + if [ $? -ne 0 ]; then + msg_err "Failed to load pause image" + ret=$(($ret + 1)) + return $ret + fi + + return $ret +} + +function restore_cri_conf() { + local ret=0 + + if [ "x$1" == "xwithout_valgrind" ]; then + stop_isulad_without_valgrind + else + echo "stop with valgrind" + check_valgrind_log + fi + if [ $? -ne 0 ]; then + echo "stop isulad failed" + ret=$(($ret+1)) + fi + + cp /etc/isulad/daemon.bak /etc/isulad/daemon.json + + start_isulad_with_valgrind + if [ $? -ne 0 ]; then + echo "start failed" + ret=$(($ret+1)) + fi + + return $ret +} + do_pretest -- 2.34.1