Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a3c8a600 authored by Lais Andrade's avatar Lais Andrade
Browse files

Fix flaky IThermalListenerTest

Lock mutex before triggering the operation so listener will always be
processed after the call to mCondition.wait_for.

Bug: 167843342
Test: atest libpowermanager_test
Change-Id: I0b1a87f14f8d0efe52c6927b1b3a00d5bb7ed8a1
parent ad321cd9
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -86,12 +86,14 @@ void IThermalServiceTest::SetUp() {
    EXPECT_NE(binder, nullptr);
    mThermalSvc = interface_cast<IThermalService>(binder);
    EXPECT_NE(mThermalSvc, nullptr);
    // Lock mutex for operation, so listener will only be processed after wait_for is called
    std::unique_lock<std::mutex> lock(mMutex);
    bool success = false;
    binder::Status ret = mThermalSvc->registerThermalStatusListener(this, &success);
    // Check the result
    ASSERT_TRUE(success);
    ASSERT_TRUE(ret.isOk());
    // Wait for listener called after registration, shouldn't timeout
    std::unique_lock<std::mutex> lock(mMutex);
    EXPECT_NE(mCondition.wait_for(lock, 1s), std::cv_status::timeout);
}

@@ -111,6 +113,7 @@ class IThermalListenerTest : public IThermalServiceTest, public testing::WithPar

TEST_P(IThermalListenerTest, TestListener) {
    int level = GetParam();
    // Lock mutex for operation, so listener will only be processed after wait_for is called
    std::unique_lock<std::mutex> lock(mMutex);
    // Set the override thermal status
    setThermalOverride(level);