diff options
Diffstat (limited to 'libs/binder/tests/binderLibTest.cpp')
-rw-r--r-- | libs/binder/tests/binderLibTest.cpp | 35 |
1 files changed, 21 insertions, 14 deletions
diff --git a/libs/binder/tests/binderLibTest.cpp b/libs/binder/tests/binderLibTest.cpp index 5612d1db66..64196ba30f 100644 --- a/libs/binder/tests/binderLibTest.cpp +++ b/libs/binder/tests/binderLibTest.cpp @@ -425,31 +425,30 @@ TEST_F(BinderLibTest, NopTransactionClear) { TEST_F(BinderLibTest, Freeze) { Parcel data, reply, replypid; - std::ifstream freezer_file("/sys/fs/cgroup/freezer/cgroup.freeze"); + std::ifstream freezer_file("/sys/fs/cgroup/uid_0/cgroup.freeze"); - //Pass test on devices where the freezer is not supported + // Pass test on devices where the cgroup v2 freezer is not supported if (freezer_file.fail()) { GTEST_SKIP(); return; } - std::string freezer_enabled; - std::getline(freezer_file, freezer_enabled); - - //Pass test on devices where the freezer is disabled - if (freezer_enabled != "1") { - GTEST_SKIP(); - return; - } - EXPECT_THAT(m_server->transact(BINDER_LIB_TEST_GETPID, data, &replypid), StatusEq(NO_ERROR)); int32_t pid = replypid.readInt32(); for (int i = 0; i < 10; i++) { EXPECT_EQ(NO_ERROR, m_server->transact(BINDER_LIB_TEST_NOP_TRANSACTION_WAIT, data, &reply, TF_ONE_WAY)); } - EXPECT_EQ(-EAGAIN, IPCThreadState::self()->freeze(pid, 1, 0)); - EXPECT_EQ(-EAGAIN, IPCThreadState::self()->freeze(pid, 1, 0)); - EXPECT_EQ(NO_ERROR, IPCThreadState::self()->freeze(pid, 1, 1000)); + + // Pass test on devices where BINDER_FREEZE ioctl is not supported + int ret = IPCThreadState::self()->freeze(pid, false, 0); + if (ret != 0) { + GTEST_SKIP(); + return; + } + + EXPECT_EQ(-EAGAIN, IPCThreadState::self()->freeze(pid, true, 0)); + EXPECT_EQ(-EAGAIN, IPCThreadState::self()->freeze(pid, true, 0)); + EXPECT_EQ(NO_ERROR, IPCThreadState::self()->freeze(pid, true, 1000)); EXPECT_EQ(FAILED_TRANSACTION, m_server->transact(BINDER_LIB_TEST_NOP_TRANSACTION, data, &reply)); bool sync_received, async_received; @@ -460,6 +459,14 @@ TEST_F(BinderLibTest, Freeze) { EXPECT_EQ(sync_received, 1); EXPECT_EQ(async_received, 0); + uint32_t sync_received2, async_received2; + + EXPECT_EQ(NO_ERROR, IPCThreadState::self()->getProcessFreezeInfo(pid, &sync_received2, + &async_received2)); + + EXPECT_EQ(sync_received2, 1); + EXPECT_EQ(async_received2, 0); + EXPECT_EQ(NO_ERROR, IPCThreadState::self()->freeze(pid, 0, 0)); EXPECT_EQ(NO_ERROR, m_server->transact(BINDER_LIB_TEST_NOP_TRANSACTION, data, &reply)); } |