From 262707f0d14e7c42554875cab38fdef985c21acc Mon Sep 17 00:00:00 2001
From: zhongtao <zhongtao17@huawei.com>
Date: Sat, 11 Jan 2025 15:04:54 +0800
Subject: [PATCH 183/198] add dt for cri v1

Signed-off-by: zhongtao <zhongtao17@huawei.com>
---
 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

