From c0d86490ba53bf9a33f7569dc31c4ec1ba54f073 Mon Sep 17 00:00:00 2001
From: zhongtao <zhongtao17@huawei.com>
Date: Tue, 21 Nov 2023 21:32:08 +0800
Subject: [PATCH 31/65] modify CI for default runtime to runc

Signed-off-by: zhongtao <zhongtao17@huawei.com>
---
 CI/test_cases/container_cases/cni_test.sh     | 103 ++++++++++--------
 .../container_cases/exec_additional_gids.sh   |  26 +++--
 CI/test_cases/container_cases/export.sh       |  10 +-
 .../hook_ignore_poststart_error.sh            |  10 +-
 .../container_cases/hook_spec_test.sh         |  12 +-
 ...igdata_stream.sh => lcr_bigdata_stream.sh} |  32 +-----
 .../container_cases/{exec.sh => lcr_exec.sh}  |   2 +-
 CI/test_cases/container_cases/nano_cpus.sh    |   8 +-
 CI/test_cases/container_cases/restart.sh      |  14 ++-
 CI/test_cases/container_cases/run.sh          |  49 +++++----
 ..._stream_runc.sh => runc_bigdata_stream.sh} |   0
 .../{exec_runc.sh => runc_exec.sh}            |   0
 CI/test_cases/container_cases/seccomp.sh      |  12 +-
 CI/test_cases/container_cases/stop.sh         |  19 +++-
 CI/test_cases/critest.sh                      |   6 +-
 15 files changed, 166 insertions(+), 137 deletions(-)
 rename CI/test_cases/container_cases/{bigdata_stream.sh => lcr_bigdata_stream.sh} (93%)
 rename CI/test_cases/container_cases/{exec.sh => lcr_exec.sh} (97%)
 rename CI/test_cases/container_cases/{bigdata_stream_runc.sh => runc_bigdata_stream.sh} (100%)
 rename CI/test_cases/container_cases/{exec_runc.sh => runc_exec.sh} (100%)

diff --git a/CI/test_cases/container_cases/cni_test.sh b/CI/test_cases/container_cases/cni_test.sh
index bbc381dd..114cf2a3 100755
--- a/CI/test_cases/container_cases/cni_test.sh
+++ b/CI/test_cases/container_cases/cni_test.sh
@@ -37,6 +37,10 @@ function do_post()
     start_isulad_with_valgrind
 }
 
+# $1: pod runtime;
+# $2: pod config;
+# $3: eth0 ip;
+# $4: eth1 ip;
 function do_test_help()
 {
     msg_info "this is $0 do_test"
@@ -53,7 +57,7 @@ function do_test_help()
         TC_RET_T=$(($TC_RET_T+1))
     fi
 
-    sid=`crictl runp ${data_path}/$1`
+    sid=`crictl runp --runtime $1 ${data_path}/$2`
     if [ $? -ne 0 ]; then
         msg_err "Failed to run sandbox"
         TC_RET_T=$(($TC_RET_T+1))
@@ -61,7 +65,7 @@ function do_test_help()
 
     cnt=`ls /var/lib/cni/results/* | wc -l`
     target_cnt=1
-    if [ "x$3" != "x" ];then
+    if [ "x$4" != "x" ];then
         target_cnt=2
     fi
 
@@ -77,7 +81,7 @@ function do_test_help()
         TC_RET_T=$(($TC_RET_T+1))
     fi
 
-    cid=`crictl create $sid ${data_path}/container-config.json ${data_path}/$1`
+    cid=`crictl create $sid ${data_path}/container-config.json ${data_path}/$2`
     if [ $? -ne 0 ];then
         msg_err "create container failed"
         TC_RET_T=$(($TC_RET_T+1))
@@ -107,29 +111,29 @@ function do_test_help()
         nsenter -t $con_pid -n ifconfig eth0
         TC_RET_T=$(($TC_RET_T+1))
     fi
-    nsenter -t $pod_pid -n ifconfig eth0 | grep "$2"
+    nsenter -t $pod_pid -n ifconfig eth0 | grep "$3"
     if [ $? -ne 0 ];then
-        msg_err "expect ip: $1, get: "
+        msg_err "expect ip: $3, get: "
         nsenter -t $pod_pid -n ifconfig eth0
         TC_RET_T=$(($TC_RET_T+1))
     fi
-    crictl inspectp $sid | grep "$2"
+    crictl inspectp $sid | grep "$3"
     if [ $? -ne 0 ];then
-        msg_err "inspectp: expect ip: $1, get: "
+        msg_err "inspectp: expect ip: $3, get: "
         crictl inspectp $sid
         TC_RET_T=$(($TC_RET_T+1))
     fi
 
-    if [ "x$3" != "x" ];then
-        nsenter -t $pod_pid -n ifconfig eth1 | grep "$3"
+    if [ "x$4" != "x" ];then
+        nsenter -t $pod_pid -n ifconfig eth1 | grep "$4"
         if [ $? -ne 0 ];then
-            msg_err "expect ip: $2, get: "
+            msg_err "expect ip: $4, get: "
             nsenter -t $pod_pid -n ifconfig eth1
             TC_RET_T=$(($TC_RET_T+1))
         fi
-        crictl inspectp $sid | grep "$3"
+        crictl inspectp $sid | grep "$4"
         if [ $? -ne 0 ];then
-            msg_err "inspectp expect ip: $2, get: "
+            msg_err "inspectp expect ip: $4, get: "
             crictl inspectp $sid
             TC_RET_T=$(($TC_RET_T+1))
         fi
@@ -170,7 +174,7 @@ function do_test_help()
 
 function default_cni_config()
 {
-    do_test_help "sandbox-config.json" "10\.1\."
+    do_test_help $1 "sandbox-config.json" "10\.1\."
 }
 
 function new_cni_config()
@@ -189,12 +193,12 @@ function new_cni_config()
         fi
     done
     tail $ISUALD_LOG
-    do_test_help "mutlnet_pod.json" "10\.2\." "10\.1\."
+    do_test_help $1 "mutlnet_pod.json" "10\.2\." "10\.1\."
 }
 
 function check_annotation_extension()
 {
-    sid=`crictl runp ${data_path}/sandbox-config.json`
+    sid=`crictl runp --runtime $1 ${data_path}/sandbox-config.json`
     if [ $? -ne 0 ]; then
         msg_err "Failed to run sandbox"
         TC_RET_T=$(($TC_RET_T+1))
@@ -253,7 +257,7 @@ function check_rollback()
     done
     tail $ISUALD_LOG
 
-    crictl runp ${data_path}/mutl_wrong_net_pod.json
+    crictl runp --runtime $1 ${data_path}/mutl_wrong_net_pod.json
     if [ $? -eq 0 ]; then
         msg_err "Run sandbox success with invalid cni configs"
         TC_RET_T=$(($TC_RET_T+1))
@@ -302,13 +306,14 @@ function check_rollback()
 # $2: expect ingress rate;
 # $3: input egress rate;
 # $4: expect egress rate;
+# $5: pod runtime;
 function check_annotation_valid_bandwidth()
 {
     rm bandwidth.json
     cp ${data_path}/mock_sandbox.json bandwidth.json
     sed -i "s#ingressholder#$1#g" bandwidth.json
     sed -i "s#engressholder#$3#g" bandwidth.json
-    sid=`crictl runp bandwidth.json`
+    sid=`crictl runp --runtime $5 bandwidth.json`
     if [ $? -ne 0 ]; then
         msg_err "Failed to run sandbox"
         TC_RET_T=$(($TC_RET_T+1))
@@ -345,6 +350,7 @@ function check_annotation_valid_bandwidth()
     return $TC_RET_T
 }
 
+# function not called
 function check_annotation_invalid_bandwidth()
 {
     rm bandwidth.json
@@ -386,44 +392,51 @@ function check_annotation()
     done
     tail $ISUALD_LOG
 
-    check_annotation_extension
+    check_annotation_extension $1
 
-    check_annotation_valid_bandwidth "10.24k" "10240" "-1.024k" "-1024"
-    check_annotation_valid_bandwidth "1024m" "2" "-1024m" "-1"
-    check_annotation_valid_bandwidth "1.000001Ki" "1025" "-1.00001Ki" "-1024"
-    check_annotation_valid_bandwidth "0.1Mi" "104858" "-0.01Mi" "-10485"
-    check_annotation_valid_bandwidth "1.00001e2" "101" "-1.0001e2" "-100"
+    check_annotation_valid_bandwidth "10.24k" "10240" "-1.024k" "-1024" $1
+    check_annotation_valid_bandwidth "1024m" "2" "-1024m" "-1" $1
+    check_annotation_valid_bandwidth "1.000001Ki" "1025" "-1.00001Ki" "-1024" $1
+    check_annotation_valid_bandwidth "0.1Mi" "104858" "-0.01Mi" "-10485" $1
+    check_annotation_valid_bandwidth "1.00001e2" "101" "-1.0001e2" "-100" $1
 
     return $TC_RET_T
 }
 
-ret=0
+function do_test_t()
+{
+    local ret=0
+    local runtime=$1
+    local test="cni_test => (${runtime})"
+    msg_info "${test} starting..."
+
+    default_cni_config $runtime || ((ret++))
+
+    new_cni_config $runtime || ((ret++))
+
+    check_annotation $runtime || ((ret++))
 
-do_pre
-if [ $? -ne 0 ];then
-    let "ret=$ret + 1"
-fi
+    check_rollback $runtime || ((ret++))
 
-default_cni_config
-if [ $? -ne 0 ];then
-    let "ret=$ret + 1"
-fi
+    msg_info "${test} finished with return ${ret}..."
 
-new_cni_config
-if [ $? -ne 0 ];then
-    let "ret=$ret + 1"
-fi
+    return $ret
+}
 
-check_annotation
-if [ $? -ne 0 ];then
-    let "ret=$ret + 1"
-fi
+ret=0
 
-check_rollback
-if [ $? -ne 0 ];then
-    let "ret=$ret + 1"
-fi
+for element in ${RUNTIME_LIST[@]};
+do
+    do_pre
+    if [ $? -ne 0 ];then
+        let "ret=$ret + 1"
+    fi
 
-do_post
+    do_test_t $element
+    if [ $? -ne 0 ];then
+        let "ret=$ret + 1"
+    fi
+    do_post
+done
 
 show_result $ret "cni base test"
diff --git a/CI/test_cases/container_cases/exec_additional_gids.sh b/CI/test_cases/container_cases/exec_additional_gids.sh
index f24678d3..2edfd750 100755
--- a/CI/test_cases/container_cases/exec_additional_gids.sh
+++ b/CI/test_cases/container_cases/exec_additional_gids.sh
@@ -22,7 +22,6 @@
 curr_path=$(dirname $(readlink -f "$0"))
 data_path=$(realpath $curr_path/../data)
 source ../helpers.sh
-test="exec additional gids test => test_exec_additional_gids"
 test_log=$(mktemp /tmp/additional_gids_test_XXX)
 
 USERNAME="user"
@@ -37,10 +36,14 @@ file_info="Keep it secret, keep it safe"
 function additional_gids_test()
 {
     local ret=0
+    local runtime=$1
+    test="exec additional gids test => test_exec_additional_gids => $runtime"
+
+    msg_info "${test} starting..."
 
     isula rm -f `isula ps -a -q`
 
-    isula run -tid -n $cont_name ubuntu bash
+    isula run -tid --runtime $runtime -n $cont_name ubuntu bash
     [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to run container" && ((ret++))
 
     isula exec $cont_name bash -c "groupadd --gid $USER_GID $USERNAME \
@@ -52,10 +55,13 @@ function additional_gids_test()
         && chmod 606 /app/sekrit.txt"
     [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - create user and group failed" && ((ret++))
 
+    # runc is not support exec --workdir
     /usr/bin/expect <<- EOF > ${test_log} 2>&1
 set timeout 10
-spawn isula exec -it --workdir /app -u $USERNAME $cont_name bash
+spawn isula exec -it -u $USERNAME $cont_name bash
 expect "${USERNAME}*"
+send "cd /app\n"
+expect "*"
 send "newgrp ${ADDITIONAL_GROUP}\n"
 expect "*"
 send "groups\n"
@@ -75,18 +81,18 @@ EOF
     [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - read error message failed" && ((ret++))
 
     isula rm -f `isula ps -a -q`
+    rm -rf ${test_log}
+
+    msg_info "${test} finished with return ${ret}..."
 
     return ${ret}
 }
 
 declare -i ans=0
 
-msg_info "${test} starting..."
-
-additional_gids_test || ((ans++))
-
-rm -rf ${test_log}
-
-msg_info "${test} finished with return ${ret}..."
+for element in ${RUNTIME_LIST[@]};
+do
+    additional_gids_test $element || ((ans++))
+done
 
 show_result ${ans} "${curr_path}/${0}"
diff --git a/CI/test_cases/container_cases/export.sh b/CI/test_cases/container_cases/export.sh
index eeef2809..1cff873d 100755
--- a/CI/test_cases/container_cases/export.sh
+++ b/CI/test_cases/container_cases/export.sh
@@ -26,7 +26,8 @@ function test_image_export()
 {
   local ret=0
   local image="busybox"
-  local test="export container test => (${FUNCNAME[@]})"
+  local runtime=$1
+  local test="export container test => (${FUNCNAME[@]}) => $runtime"
 
   msg_info "${test} starting..."
 
@@ -36,7 +37,7 @@ function test_image_export()
   isula images | grep busybox
   [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - missing list image: ${image}" && ((ret++))
 
-  CONT=`isula run -itd busybox`
+  CONT=`isula run --runtime $runtime -itd busybox`
   [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to run container with image: ${image}" && ((ret++))
 
   isula export -o export.tar ${CONT}
@@ -55,6 +56,9 @@ function test_image_export()
 
 declare -i ans=0
 
-test_image_export || ((ans++))
+for element in ${RUNTIME_LIST[@]};
+do
+  test_image_export $element || ((ans++))
+done
 
 show_result ${ans} "${curr_path}/${0}"
diff --git a/CI/test_cases/container_cases/hook_ignore_poststart_error.sh b/CI/test_cases/container_cases/hook_ignore_poststart_error.sh
index 5c86a4c1..8c636f7e 100755
--- a/CI/test_cases/container_cases/hook_ignore_poststart_error.sh
+++ b/CI/test_cases/container_cases/hook_ignore_poststart_error.sh
@@ -28,7 +28,8 @@ function test_hook_ignore_poststart_error_spec()
 {
     local ret=0
     local image="busybox"
-    local test="container hook test => (${FUNCNAME[@]})"
+    local runtime=$1
+    local test="container hook test => (${FUNCNAME[@]}) => $runtime"
     CONT=test_hook_spec
     cp ${test_data_path}/poststart.sh /tmp/
 
@@ -40,7 +41,7 @@ function test_hook_ignore_poststart_error_spec()
     isula images | grep busybox
     [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - missing list image: ${image}" && ((ret++))
 
-    isula run -n $CONT -itd --hook-spec ${test_data_path}/oci_hook_poststart_check.json ${image} &
+    isula run -n $CONT -itd --runtime $runtime --hook-spec ${test_data_path}/oci_hook_poststart_check.json ${image} &
 
     for a in `seq 20`
     do
@@ -74,6 +75,9 @@ function test_hook_ignore_poststart_error_spec()
 
 declare -i ans=0
 
-test_hook_ignore_poststart_error_spec || ((ans++))
+for element in ${RUNTIME_LIST[@]};
+do
+    test_hook_ignore_poststart_error_spec $1 || ((ans++))
+done
 
 show_result ${ans} "${curr_path}/${0}"
diff --git a/CI/test_cases/container_cases/hook_spec_test.sh b/CI/test_cases/container_cases/hook_spec_test.sh
index c88ed340..33b7c2e5 100755
--- a/CI/test_cases/container_cases/hook_spec_test.sh
+++ b/CI/test_cases/container_cases/hook_spec_test.sh
@@ -28,7 +28,8 @@ function test_hook_spec()
 {
     local ret=0
     local image="busybox"
-    local test="container hook test => (${FUNCNAME[@]})"
+    local runtime=$1
+    local test="container hook test => (${FUNCNAME[@]}) => $runtime"
     msg_info "${test} starting..."
 
     isula pull ${image}
@@ -37,7 +38,7 @@ function test_hook_spec()
     isula images | grep busybox
     [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - missing list image: ${image}" && ((ret++))
 
-    CONT=`isula run -itd --hook-spec ${test_data_path}/test-hookspec.json ${image}`
+    CONT=`isula run -itd --runtime $runtime --hook-spec ${test_data_path}/test-hookspec.json ${image}`
     [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to run container with image: ${image}" && ((ret++))
 
     isula stop -t 0 ${CONT}
@@ -51,7 +52,7 @@ function test_hook_spec()
     isula run -n $no_permission_container -itd --hook-spec ${test_data_path}/no_permission.json ${image} > $runlog 2>&1
     [[ $? -ne 126 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to check exit code container with image: ${image}" && ((ret++))
 
-    cat $runlog | grep "Permission denied"
+    cat $runlog | grep -i "Permission denied"
     [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to get no_permission output: ${image}" && ((ret++))
 
     isula rm -f $no_permission_container
@@ -95,6 +96,9 @@ EOF
 
 declare -i ans=0
 
-test_hook_spec || ((ans++))
+for element in ${RUNTIME_LIST[@]};
+do
+    test_hook_spec $element || ((ans++))
+done
 
 show_result ${ans} "${curr_path}/${0}"
diff --git a/CI/test_cases/container_cases/bigdata_stream.sh b/CI/test_cases/container_cases/lcr_bigdata_stream.sh
similarity index 93%
rename from CI/test_cases/container_cases/bigdata_stream.sh
rename to CI/test_cases/container_cases/lcr_bigdata_stream.sh
index 3bfc2d50..c8ecc48a 100755
--- a/CI/test_cases/container_cases/bigdata_stream.sh
+++ b/CI/test_cases/container_cases/lcr_bigdata_stream.sh
@@ -40,7 +40,7 @@ function set_up()
     isula images | grep busybox
     [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - missing list image: ${image}" && ((ret++))
 
-    CID=$(isula run -itd ${image} sh)
+    CID=$(isula run --runtime lcr  -itd ${image} sh)
     [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to run container with image: ${image}" && ((ret++))
 
     isula exec -it $CID dd if=/dev/zero of=test_500M bs=1M count=500
@@ -389,33 +389,6 @@ function test_stream_with_kill_isulad()
     return ${ret}
 }
 
-function test_stream_with_runc()
-{
-    local ret=0
-    local image="busybox"
-    local test="test_stream_with_runc => (${FUNCNAME[@]})"
-    msg_info "${test} starting..."
-
-    RUNCID=$(isula run -itd --runtime runc ${image} sh)
-    isula exec -it $RUNCID dd if=/dev/zero of=test_500M bs=1M count=500
-    [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to create bigdata" && ((ret++))
-
-    isula exec -it $RUNCID cat test_500M > /home/iocopy_stream_data_500M
-    [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to cat bigdata" && ((ret++))
-
-    sync && sync
-    total_size=$(stat -c"%s" /home/iocopy_stream_data_500M)
-    [[ $total_size -ne 524288000 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - stream iocopy loss data" && ((ret++))
-
-    isula rm -f $RUNCID
-    [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to rm container" && ((ret++))
-
-    rm -rf /home/iocopy_stream_data_500M
-
-    msg_info "${test} finished with return ${ret}..."
-    return ${ret}
-}
-
 function tear_down()
 {
     local ret=0
@@ -438,7 +411,7 @@ function test_memory_leak_with_bigdata_stream()
 
     start_isulad_with_valgrind
 
-    CID=$(isula run -itd ${image} sh)
+    CID=$(isula run --runtime lcr -itd ${image} sh)
 
     isula exec -it $CID dd if=/dev/zero of=test_100M bs=1M count=100
     [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to create bigdata" && ((ret++))
@@ -477,7 +450,6 @@ test_stream_with_stop_lxc_monitor || ((ans++))
 test_stream_with_kill_lxc_monitor || ((ans++))
 test_stream_with_stop_isulad || ((ans++))
 test_stream_with_kill_isulad || ((ans++))
-test_stream_with_runc || ((ans++))
 tear_down || ((ans++))
 
 test_memory_leak_with_bigdata_stream || ((ans++))
diff --git a/CI/test_cases/container_cases/exec.sh b/CI/test_cases/container_cases/lcr_exec.sh
similarity index 97%
rename from CI/test_cases/container_cases/exec.sh
rename to CI/test_cases/container_cases/lcr_exec.sh
index 96ceb884..4f51773d 100755
--- a/CI/test_cases/container_cases/exec.sh
+++ b/CI/test_cases/container_cases/lcr_exec.sh
@@ -30,7 +30,7 @@ function exec_workdir()
 
     isula rm -f `isula ps -a -q`
 
-    isula run -tid -n cont_workdir busybox sh
+    isula run -tid --runtime lcr -n cont_workdir busybox sh
     [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to run container with --workdir" && ((ret++))
 
     isula exec -ti --workdir /workdir cont_workdir pwd | grep "/workdir"
diff --git a/CI/test_cases/container_cases/nano_cpus.sh b/CI/test_cases/container_cases/nano_cpus.sh
index c679958d..85223038 100755
--- a/CI/test_cases/container_cases/nano_cpus.sh
+++ b/CI/test_cases/container_cases/nano_cpus.sh
@@ -26,7 +26,8 @@ function test_cpu_nano_spec()
 {
     local ret=0
     local image="busybox"
-    local test="container blkio nano test => (${FUNCNAME[@]})"
+    local runtime=$1
+    local test="container blkio nano test => (${FUNCNAME[@]}) => $runtime"
 
     msg_info "${test} starting..."
 
@@ -108,6 +109,9 @@ function test_cpu_nano_spec()
 
 declare -i ans=0
 
-test_cpu_nano_spec || ((ans++))
+for element in ${RUNTIME_LIST[@]};
+do
+    test_cpu_nano_spec $element || ((ans++))
+done
 
 show_result ${ans} "${curr_path}/${0}"
diff --git a/CI/test_cases/container_cases/restart.sh b/CI/test_cases/container_cases/restart.sh
index 5902af06..fddee1f7 100755
--- a/CI/test_cases/container_cases/restart.sh
+++ b/CI/test_cases/container_cases/restart.sh
@@ -26,7 +26,8 @@ source ../helpers.sh
 function do_test_t()
 {
     containername=test_restart
-    isula run --name $containername -td busybox
+
+    isula run --runtime $1 --name $containername -td busybox
     fn_check_eq "$?" "0" "run failed"
     testcontainer $containername running
 
@@ -46,9 +47,12 @@ function do_test_t()
 
 ret=0
 
-do_test_t
-if [ $? -ne 0 ];then
-    let "ret=$ret + 1"
-fi
+for element in ${RUNTIME_LIST[@]};
+do
+    do_test_t $element
+    if [ $? -ne 0 ];then
+        let "ret=$ret + 1"
+    fi
+done
 
 show_result $ret "basic restart"
diff --git a/CI/test_cases/container_cases/run.sh b/CI/test_cases/container_cases/run.sh
index ad449402..8ea3e514 100755
--- a/CI/test_cases/container_cases/run.sh
+++ b/CI/test_cases/container_cases/run.sh
@@ -25,7 +25,7 @@ source ../helpers.sh
 
 function do_test_t()
 {
-    tid=`isula run -tid --name hostname busybox`
+    tid=`isula run --runtime $1 -tid --name hostname busybox`
     chostname=`isula exec -it $tid hostname`
     fn_check_eq "$chostname" "${tid:0:12}" "default hostname is id of container"
     isula exec -it hostname env | grep HOSTNAME
@@ -37,7 +37,7 @@ function do_test_t()
     containername=test_basic_run
     containername2=container_to_join
 
-    isula run --name $containername  -td busybox
+    isula run --runtime $1 --name $containername  -td busybox
     fn_check_eq "$?" "0" "run failed"
     testcontainer $containername running
 
@@ -48,7 +48,7 @@ function do_test_t()
     isula rm $containername
     fn_check_eq "$?" "0" "rm failed"
 
-    isula run --name $containername -td -v /dev/shm:/dev/shm busybox
+    isula run --runtime $1 --name $containername -td -v /dev/shm:/dev/shm busybox
     fn_check_eq "$?" "0" "run failed"
     testcontainer $containername running
 
@@ -61,7 +61,7 @@ function do_test_t()
 
     echo AA > /tmp/test_run_env
 
-    isula run --name $containername -itd --user 100:100 -e AAA=BB -e BAA --env-file /tmp/test_run_env busybox
+    isula run --runtime $1 --name $containername -itd --user 100:100 -e AAA=BB -e BAA --env-file /tmp/test_run_env busybox
     fn_check_eq "$?" "0" "run failed"
     testcontainer $containername running
 
@@ -72,18 +72,21 @@ function do_test_t()
     isula rm $containername
     fn_check_eq "$?" "0" "rm failed"
 
-    isula run --name $containername -itd --external-rootfs / --read-only none sh
-    fn_check_eq "$?" "0" "run container with host rootfs failed"
-    testcontainer $containername running
+    # runc directly uses the root directory as external rootfs and will report the error pivot_root .: device or resource busy
+    if [ $runtime == "lcr" ]; then
+        isula run --runtime $1 --name $containername -itd --external-rootfs / --read-only none sh
+        fn_check_eq "$?" "0" "run container with host rootfs failed"
+        testcontainer $containername running
 
-    isula stop -t 0 $containername
-    fn_check_eq "$?" "0" "stop failed"
-    testcontainer $containername exited
+        isula stop -t 0 $containername
+        fn_check_eq "$?" "0" "stop failed"
+        testcontainer $containername exited
 
-    isula rm $containername
-    fn_check_eq "$?" "0" "rm failed"
+        isula rm $containername
+        fn_check_eq "$?" "0" "rm failed"
+    fi
 
-    isula run --name $containername -itd --net=host --pid=host --ipc=host --uts=host busybox
+    isula run --runtime $1 --name $containername -itd --net=host --pid=host --ipc=host --uts=host busybox
     fn_check_eq "$?" "0" "run failed"
     testcontainer $containername running
 
@@ -94,7 +97,7 @@ function do_test_t()
     isula rm $containername
     fn_check_eq "$?" "0" "rm failed"
 
-    isula run --name $containername -itd --net=none --pid=none --ipc=none --uts=none busybox
+    isula run --runtime $1 --name $containername -itd --net=none --pid=none --ipc=none --uts=none busybox
     fn_check_eq "$?" "0" "run failed"
     testcontainer $containername running
 
@@ -105,11 +108,11 @@ function do_test_t()
     isula rm $containername
     fn_check_eq "$?" "0" "rm failed"
 
-    isula run --name $containername2 -itd busybox
+    isula run --runtime $1 --name $containername2 -itd busybox
     fn_check_eq "$?" "0" "run failed"
     testcontainer $containername2 running
 
-    isula run --name $containername -itd --net=container:$containername2 --pid=container:$containername2 --ipc=container:$containername2 --uts=container:$containername2 busybox
+    isula run --runtime $1 --name $containername -itd --net=container:$containername2 --pid=container:$containername2 --ipc=container:$containername2 --uts=container:$containername2 busybox
     fn_check_eq "$?" "0" "run failed"
     testcontainer $containername running
 
@@ -135,7 +138,7 @@ function do_run_remote_test_t()
     local ret=0
     local image="busybox"
     local config='tcp://127.0.0.1:2890'
-    local test="container start with --attach remote test => (${FUNCNAME[@]})"
+    local test="container start with --attach remote test => (${FUNCNAME[@]}) => $1"
 
     check_valgrind_log
     [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - stop isulad failed" && ((ret++))
@@ -144,13 +147,13 @@ function do_run_remote_test_t()
 
     containername=run_remote
 
-    isula run -ti -H "$config" --name $containername busybox xxx
+    isula run --runtime $1 -ti -H "$config" --name $containername busybox xxx
     [[ $? -eq 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed check invalid run ${containername} remote" && ((ret++))
     testcontainer $containername exited
     isula rm -f -H "$config" $containername
     [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to rm container remote" && ((ret++))
 
-    isula run -ti -H "$config" --name $containername busybox /bin/sh -c 'echo "hello"' | grep hello
+    isula run --runtime $1 -ti -H "$config" --name $containername busybox /bin/sh -c 'echo "hello"' | grep hello
     [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to run ${containername} remote" && ((ret++))
     testcontainer $containername exited
 
@@ -169,8 +172,10 @@ function do_run_remote_test_t()
 
 declare -i ans=0
 
-do_test_t || ((ans++))
-
-do_run_remote_test_t || ((ans++))
+for element in ${RUNTIME_LIST[@]};
+do
+    do_test_t $element || ((ans++))
+    do_run_remote_test_t $element || ((ans++))
+done
 
 show_result ${ans} "${curr_path}/${0}"
diff --git a/CI/test_cases/container_cases/bigdata_stream_runc.sh b/CI/test_cases/container_cases/runc_bigdata_stream.sh
similarity index 100%
rename from CI/test_cases/container_cases/bigdata_stream_runc.sh
rename to CI/test_cases/container_cases/runc_bigdata_stream.sh
diff --git a/CI/test_cases/container_cases/exec_runc.sh b/CI/test_cases/container_cases/runc_exec.sh
similarity index 100%
rename from CI/test_cases/container_cases/exec_runc.sh
rename to CI/test_cases/container_cases/runc_exec.sh
diff --git a/CI/test_cases/container_cases/seccomp.sh b/CI/test_cases/container_cases/seccomp.sh
index 9e886d10..3cb08d84 100755
--- a/CI/test_cases/container_cases/seccomp.sh
+++ b/CI/test_cases/container_cases/seccomp.sh
@@ -39,8 +39,9 @@ function do_pre() {
 
 function do_test() {
     local ret=0
-
-    msg_info "this is $0 do_test"
+    local runtime=$1
+    local test="seccomp test => (${runtime})"
+    msg_info "${test} starting..."
 
     cid1=$(isula run -tid --security-opt seccomp=/etc/isulad/seccomp_default.json busybox sh)
     [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - Failed to run container with the default seccomp profile" && ((ret++))
@@ -52,7 +53,7 @@ function do_test() {
         --security-opt seccomp=${test_data_path}/seccomp_profile_without_archmap.json busybox sh)
     [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - Failed to run container with multiple seccomp profiles" && ((ret++))
 
-    isula stop "${cid1}" "${cid2}" "${cid3}"
+    isula stop -t 0 "${cid1}" "${cid2}" "${cid3}"
 
     isula rm -f $(isula ps -qa)
 
@@ -69,7 +70,10 @@ declare -i ans=0
 
 do_pre || ((ans++))
 
-do_test || ((ans++))
+for element in ${RUNTIME_LIST[@]};
+do
+    do_test $element || ((ans++))
+done
 
 do_post
 
diff --git a/CI/test_cases/container_cases/stop.sh b/CI/test_cases/container_cases/stop.sh
index 962e72f3..13292710 100755
--- a/CI/test_cases/container_cases/stop.sh
+++ b/CI/test_cases/container_cases/stop.sh
@@ -25,8 +25,12 @@ source ../helpers.sh
 
 function do_test_t()
 {
+    local runtime=$1
+    local test="start_test => (${runtime})"
+    msg_info "${test} starting..."
+
     containername=test_stop
-    isula run --name $containername -td busybox
+    isula run --runtime $runtime --name $containername -td busybox
     fn_check_eq "$?" "0" "run failed"
     testcontainer $containername running
 
@@ -61,14 +65,19 @@ function do_test_t()
     isula rm $containername
     fn_check_eq "$?" "0" "rm failed"
 
+    msg_info "${test} finished with return ${ret}..."
+
     return $TC_RET_T
 }
 
 ret=0
 
-do_test_t
-if [ $? -ne 0 ];then
-    let "ret=$ret + 1"
-fi
+for element in ${RUNTIME_LIST[@]};
+do
+    do_test_t $element
+    if [ $? -ne 0 ];then
+        let "ret=$ret + 1"
+    fi
+done
 
 show_result $ret "basic stop"
diff --git a/CI/test_cases/critest.sh b/CI/test_cases/critest.sh
index 044ce2ed..f8d4975e 100755
--- a/CI/test_cases/critest.sh
+++ b/CI/test_cases/critest.sh
@@ -130,7 +130,7 @@ function test_critest() {
 function do_test_t() {
     local ret=0
 
-    local runtime="lcr"
+    local runtime="runc"
     local test="critest => $runtime"
     msg_info "${test} starting..."
     echo "${test}" >> ${testcase_data}/critest.log
@@ -143,11 +143,11 @@ function do_test_t() {
     [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - stop isulad failed" && ((ret++))
 
     # replace default runtime
-    sed -i 's/"default-runtime": "lcr"/"default-runtime": "runc"/g' /etc/isulad/daemon.json
+    sed -i 's/"default-runtime": "runc"/"default-runtime": "lcr"/g' /etc/isulad/daemon.json
     start_isulad_without_valgrind --selinux-enabled --network-plugin cni
     [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - start isulad with selinux and cni failed" && ((ret++))
     
-    runtime=runc
+    runtime=lcr
     test="critest => $runtime"
     msg_info "${test} starting..."
     echo "${test}" >> ${testcase_data}/critest.log
-- 
2.42.0

