Skip to content

Commit

Permalink
cgroup_enable
Browse files Browse the repository at this point in the history
  • Loading branch information
EricYangIBM committed May 25, 2022
1 parent d4db4f0 commit c3adfdb
Showing 1 changed file with 63 additions and 5 deletions.
68 changes: 63 additions & 5 deletions fvtest/porttest/si.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2378,13 +2378,11 @@ class CgroupTest : public ::testing::Test {
const static std::map<std::string, uint64_t> supportedSubsystems;
constexpr static char CGROUP_MOUNT_POINT[] = "/sys/fs/cgroup";
static uint64_t available;
#endif /* defined(LINUX) */

/* Initialize static vars. */
static void
SetUpTestCase()
{
#if defined(LINUX)
isV1Available = isCgroupV1Available();
isV2Available = isCgroupV2Available();
ASSERT_TRUE(isV1Available != isV2Available);
Expand Down Expand Up @@ -2441,10 +2439,8 @@ class CgroupTest : public ::testing::Test {
}
}
}
#endif /* defined(LINUX) */
}

#if defined(LINUX)
static bool
isCgroupV1Available(void)
{
Expand Down Expand Up @@ -2476,7 +2472,6 @@ class CgroupTest : public ::testing::Test {
return result;
}
#endif /* defined(LINUX) */

};

#if defined(LINUX)
Expand Down Expand Up @@ -2583,6 +2578,69 @@ TEST_F(CgroupTest, sysinfo_cgroup_are_subsystems_available)
return;
}

/**
* Test omrsysinfo_cgroup_get_enabled_subsystems, omrsysinfo_cgroup_enable_subsystems,
* and omrsysinfo_cgroup_are_subsystems_enabled.
*/
TEST_F(CgroupTest, sysinfo_cgroup_enable)
{
OMRPORT_ACCESS_FROM_OMRPORT(portTestEnv->getPortLibrary());
const char *testName = "sysinfo_cgroup_enable";

reportTestEntry(OMRPORTLIB, testName);

#if defined(LINUX)
uint64_t enabled = 0;
/* Clear enabled subsystems. */
ASSERT_EQ(omrsysinfo_cgroup_enable_subsystems(0), (uint64_t)0);
ASSERT_EQ(omrsysinfo_cgroup_get_enabled_subsystems(), (uint64_t)0);
ASSERT_EQ(
omrsysinfo_cgroup_are_subsystems_enabled(OMR_CGROUP_SUBSYSTEM_CPU | OMR_CGROUP_SUBSYSTEM_MEMORY | OMR_CGROUP_SUBSYSTEM_CPUSET),
(uint64_t)0);

enabled = CgroupTest::available & OMR_CGROUP_SUBSYSTEM_CPU;
EXPECT_EQ(omrsysinfo_cgroup_enable_subsystems(OMR_CGROUP_SUBSYSTEM_CPU), enabled);
EXPECT_EQ(omrsysinfo_cgroup_get_enabled_subsystems(), enabled);
EXPECT_EQ(omrsysinfo_cgroup_are_subsystems_enabled(OMR_CGROUP_SUBSYSTEM_CPU), enabled);
EXPECT_NE(omrsysinfo_cgroup_are_subsystems_enabled(OMR_CGROUP_SUBSYSTEM_MEMORY), OMR_CGROUP_SUBSYSTEM_MEMORY);
EXPECT_EQ(
omrsysinfo_cgroup_are_subsystems_enabled(OMR_CGROUP_SUBSYSTEM_CPU | OMR_CGROUP_SUBSYSTEM_CPUSET),
enabled);

/* This disables cpu subsystem. */
enabled = CgroupTest::available & (OMR_CGROUP_SUBSYSTEM_MEMORY | OMR_CGROUP_SUBSYSTEM_CPUSET);
EXPECT_EQ(
omrsysinfo_cgroup_enable_subsystems(OMR_CGROUP_SUBSYSTEM_MEMORY | OMR_CGROUP_SUBSYSTEM_CPUSET),
enabled);
EXPECT_EQ(
omrsysinfo_cgroup_get_enabled_subsystems(),
enabled);
EXPECT_EQ(omrsysinfo_cgroup_are_subsystems_enabled(OMR_CGROUP_SUBSYSTEM_MEMORY), CgroupTest::available & OMR_CGROUP_SUBSYSTEM_MEMORY);
EXPECT_EQ(
omrsysinfo_cgroup_are_subsystems_enabled(OMR_CGROUP_SUBSYSTEM_CPU | OMR_CGROUP_SUBSYSTEM_MEMORY | OMR_CGROUP_SUBSYSTEM_CPUSET),
enabled);

/* This disables cpu and memory subsystems. */
enabled = CgroupTest::available & OMR_CGROUP_SUBSYSTEM_CPUSET;
EXPECT_EQ(omrsysinfo_cgroup_enable_subsystems(OMR_CGROUP_SUBSYSTEM_CPUSET), enabled);
EXPECT_EQ(omrsysinfo_cgroup_get_enabled_subsystems(), enabled);
EXPECT_EQ(omrsysinfo_cgroup_are_subsystems_enabled(OMR_CGROUP_SUBSYSTEM_CPUSET), enabled);
EXPECT_NE(omrsysinfo_cgroup_are_subsystems_enabled(OMR_CGROUP_SUBSYSTEM_MEMORY), OMR_CGROUP_SUBSYSTEM_MEMORY);
EXPECT_EQ(
omrsysinfo_cgroup_are_subsystems_enabled(OMR_CGROUP_SUBSYSTEM_CPU | OMR_CGROUP_SUBSYSTEM_CPUSET),
enabled);
#else /* defined(LINUX) */
ASSERT_EQ(omrsysinfo_cgroup_get_enabled_subsystems(), (uint64_t)0);
ASSERT_EQ(omrsysinfo_cgroup_enable_subsystems(0x7), (uint64_t)0);
ASSERT_EQ(
omrsysinfo_cgroup_are_subsystems_enabled(OMR_CGROUP_SUBSYSTEM_CPU | OMR_CGROUP_SUBSYSTEM_MEMORY | OMR_CGROUP_SUBSYSTEM_CPUSET),
(uint64_t)0);
#endif /* defined(LINUX) */

reportTestExit(OMRPORTLIB, testName);
return;
}

/**
* Test omrsysinfo_cgroup_get_memlimit.
*/
Expand Down

0 comments on commit c3adfdb

Please sign in to comment.