summaryrefslogtreecommitdiff
path: root/0025-add-ci-cases-for-systemd-cgroup-driver.patch
diff options
context:
space:
mode:
Diffstat (limited to '0025-add-ci-cases-for-systemd-cgroup-driver.patch')
-rw-r--r--0025-add-ci-cases-for-systemd-cgroup-driver.patch219
1 files changed, 219 insertions, 0 deletions
diff --git a/0025-add-ci-cases-for-systemd-cgroup-driver.patch b/0025-add-ci-cases-for-systemd-cgroup-driver.patch
new file mode 100644
index 0000000..2d2ac71
--- /dev/null
+++ b/0025-add-ci-cases-for-systemd-cgroup-driver.patch
@@ -0,0 +1,219 @@
+From f5f100f5b244be2debebe815aaed3afad8950daf Mon Sep 17 00:00:00 2001
+From: jikai <jikai11@huawei.com>
+Date: Tue, 6 Feb 2024 17:33:17 +0800
+Subject: [PATCH 25/43] add ci cases for systemd cgroup driver
+
+Signed-off-by: jikai <jikai11@huawei.com>
+---
+ .../container_cases/systemd_cgroup.sh | 80 +++++++++++++++++++
+ test/mocks/isulad_config_mock.cc | 8 ++
+ test/mocks/isulad_config_mock.h | 1 +
+ test/specs/specs/specs_ut.cc | 49 ++++++++++++
+ 4 files changed, 138 insertions(+)
+ create mode 100755 CI/test_cases/container_cases/systemd_cgroup.sh
+
+diff --git a/CI/test_cases/container_cases/systemd_cgroup.sh b/CI/test_cases/container_cases/systemd_cgroup.sh
+new file mode 100755
+index 00000000..ac1288e1
+--- /dev/null
++++ b/CI/test_cases/container_cases/systemd_cgroup.sh
+@@ -0,0 +1,80 @@
++#!/bin/bash
++#
++# attributes: isulad systemd cgroup run
++# concurrent: NO
++# spend time: 18
++
++#######################################################################
++##- Copyright (c) Huawei Technologies Co., Ltd. 2020. All rights reserved.
++# - iSulad 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.
++##- @Description:CI
++##- @Author: jikai
++##- @Create: 2024-02-05
++#######################################################################
++
++curr_path=$(dirname $(readlink -f "$0"))
++data_path=$(realpath $curr_path/../data)
++source ../helpers.sh
++
++function test_systemd_cgroup()
++{
++ local ret=0
++ local runtime=$1
++ local image="busybox"
++
++ local test="systemd cgroup driver test with (${runtime})=> (${FUNCNAME[@]})"
++ msg_info "${test} starting..."
++
++ check_valgrind_log
++ [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - stop isulad failed" && ((ret++))
++
++ start_isulad_with_valgrind --systemd-cgroup
++ [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - start isulad failed" && ((ret++))
++
++ cid1=$(isula run -tid --runtime $runtime -m 10M $image /bin/sh)
++ [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - start container failed" && ((ret++))
++ cat /sys/fs/cgroup/memory/system.slice/isulad-$cid1.scope/memory.limit_in_bytes | grep ^10485760$
++ [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - check memory limit failed" && ((ret++))
++
++ cid2=$(isula run -tid --runtime $runtime --cgroup-parent /test $image /bin/sh)
++ [[ $? -eq 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - start container failed" && ((ret++))
++
++ cid3=$(isula run -tid --runtime $runtime -m 10M --cgroup-parent test-a-b.slice $image /bin/sh)
++ [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - start container failed" && ((ret++))
++ cat /sys/fs/cgroup/memory/test.slice/test-a.slice/test-a-b.slice/isulad-$cid3.scope/memory.limit_in_bytes | grep ^10485760$
++ [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - check memory limit failed" && ((ret++))
++
++ isula rm -f $cid1 $cid2 $cid3
++ [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - rm container failed" && ((ret++))
++
++ check_valgrind_log
++ [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - stop isulad failed" && ((ret++))
++
++ start_isulad_with_valgrind
++ [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - start isulad failed" && ((ret++))
++
++ rm -rf $ulimitlog
++
++ msg_info "${test} finished with return ${ret}..."
++ return ${ret}
++}
++
++declare -i ans=0
++
++for element in ${RUNTIME_LIST[@]};
++do
++ # lcr does not support systemd cgroup driver
++ if [ "$element" == "lcr" ];then
++ continue
++ fi
++ test_systemd_cgroup $element || ((ans++))
++done
++
++show_result ${ans} "${curr_path}/${0}"
+diff --git a/test/mocks/isulad_config_mock.cc b/test/mocks/isulad_config_mock.cc
+index 7ba4fa57..65b00563 100644
+--- a/test/mocks/isulad_config_mock.cc
++++ b/test/mocks/isulad_config_mock.cc
+@@ -210,3 +210,11 @@ char *conf_get_isulad_loglevel(void)
+ }
+ return nullptr;
+ }
++
++bool conf_get_systemd_cgroup(void)
++{
++ if (g_isulad_conf_mock != nullptr) {
++ return g_isulad_conf_mock->ConfGetSystemdCgroup();
++ }
++ return false;
++}
+diff --git a/test/mocks/isulad_config_mock.h b/test/mocks/isulad_config_mock.h
+index 6793fa51..d59c5938 100644
+--- a/test/mocks/isulad_config_mock.h
++++ b/test/mocks/isulad_config_mock.h
+@@ -45,6 +45,7 @@ public:
+ MOCK_METHOD0(ConfGetSandboxStatePath, char *(void));
+ MOCK_METHOD0(ConfGetEngineLogFile, char *(void));
+ MOCK_METHOD0(ConfGetIsuladLogLevel, char *(void));
++ MOCK_METHOD0(ConfGetSystemdCgroup, bool(void));
+ };
+
+ void MockIsuladConf_SetMock(MockIsuladConf *mock);
+diff --git a/test/specs/specs/specs_ut.cc b/test/specs/specs/specs_ut.cc
+index 47e4ca6e..6c42216d 100644
+--- a/test/specs/specs/specs_ut.cc
++++ b/test/specs/specs/specs_ut.cc
+@@ -319,6 +319,7 @@ TEST_F(SpecsUnitTest, test_merge_container_cgroups_path_2)
+ ASSERT_TRUE(host_spec != nullptr);
+
+ EXPECT_CALL(m_isulad_conf, GetCgroupParent()).WillRepeatedly(Invoke(invoke_conf_get_isulad_cgroup_parent_null));
++ EXPECT_CALL(m_isulad_conf, ConfGetSystemdCgroup()).WillRepeatedly(Return(false));
+
+ merged_cp = merge_container_cgroups_path("123", host_spec);
+ ASSERT_NE(merged_cp, nullptr);
+@@ -347,6 +348,7 @@ TEST_F(SpecsUnitTest, test_merge_container_cgroups_path_3)
+ host_spec->cgroup_parent = util_strdup_s("/test");
+
+ EXPECT_CALL(m_isulad_conf, GetCgroupParent()).WillRepeatedly(Invoke(invoke_conf_get_isulad_cgroup_parent_null));
++ EXPECT_CALL(m_isulad_conf, ConfGetSystemdCgroup()).WillRepeatedly(Return(false));
+
+ merged_cp = merge_container_cgroups_path("123", host_spec);
+ ASSERT_NE(merged_cp, nullptr);
+@@ -373,6 +375,7 @@ TEST_F(SpecsUnitTest, test_merge_container_cgroups_path_4)
+ ASSERT_TRUE(host_spec != nullptr);
+
+ EXPECT_CALL(m_isulad_conf, GetCgroupParent()).WillRepeatedly(Invoke(invoke_conf_get_isulad_cgroup_parent));
++ EXPECT_CALL(m_isulad_conf, ConfGetSystemdCgroup()).WillRepeatedly(Return(false));
+
+ merged_cp = merge_container_cgroups_path("123", host_spec);
+ ASSERT_NE(merged_cp, nullptr);
+@@ -401,6 +404,7 @@ TEST_F(SpecsUnitTest, test_merge_container_cgroups_path_5)
+ host_spec->cgroup_parent = util_strdup_s("/test");
+
+ EXPECT_CALL(m_isulad_conf, GetCgroupParent()).WillRepeatedly(Invoke(invoke_conf_get_isulad_cgroup_parent));
++ EXPECT_CALL(m_isulad_conf, ConfGetSystemdCgroup()).WillRepeatedly(Return(false));
+
+ merged_cp = merge_container_cgroups_path("123", host_spec);
+ ASSERT_NE(merged_cp, nullptr);
+@@ -414,6 +418,51 @@ TEST_F(SpecsUnitTest, test_merge_container_cgroups_path_5)
+ testing::Mock::VerifyAndClearExpectations(&m_isulad_conf);
+ }
+
++// systemd cgroup test
++TEST_F(SpecsUnitTest, test_merge_container_cgroups_path_6)
++{
++ oci_runtime_spec *oci_spec = nullptr;
++ host_config *host_spec = nullptr;
++ char *merged_cp = nullptr;
++
++ oci_spec = (oci_runtime_spec *)util_common_calloc_s(sizeof(oci_runtime_spec));
++ ASSERT_TRUE(oci_spec != nullptr);
++
++ host_spec = (host_config *)util_common_calloc_s(sizeof(host_config));
++ ASSERT_TRUE(host_spec != nullptr);
++
++ EXPECT_CALL(m_isulad_conf, GetCgroupParent()).WillRepeatedly(Invoke(invoke_conf_get_isulad_cgroup_parent_null));
++ EXPECT_CALL(m_isulad_conf, ConfGetSystemdCgroup()).WillRepeatedly(Return(true));
++
++ merged_cp = merge_container_cgroups_path("123", host_spec);
++ ASSERT_NE(merged_cp, nullptr);
++ ASSERT_STREQ(merged_cp, "system.slice:isulad:123");
++ free(merged_cp);
++
++ host_spec->cgroup_parent = util_strdup_s("/test");
++ merged_cp = merge_container_cgroups_path("123", host_spec);
++ ASSERT_EQ(merged_cp, nullptr);
++ free(host_spec->cgroup_parent);
++
++ host_spec->cgroup_parent = util_strdup_s("test.slice");
++ merged_cp = merge_container_cgroups_path("123", host_spec);
++ ASSERT_NE(merged_cp, nullptr);
++ ASSERT_STREQ(merged_cp, "test.slice:isulad:123");
++ free(merged_cp);
++ free(host_spec->cgroup_parent);
++
++ host_spec->cgroup_parent = util_strdup_s("test/test-a/test-a-b.slice");
++ merged_cp = merge_container_cgroups_path("123", host_spec);
++ ASSERT_NE(merged_cp, nullptr);
++ ASSERT_STREQ(merged_cp, "test-a-b.slice:isulad:123");
++
++ free_oci_runtime_spec(oci_spec);
++ free_host_config(host_spec);
++ free(merged_cp);
++
++ testing::Mock::VerifyAndClearExpectations(&m_isulad_conf);
++}
++
+ TEST_F(SpecsUnitTest, test_update_oci_container_cgroups_path)
+ {
+ parser_error err = nullptr;
+--
+2.34.1
+