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

Commit e9d5efb5 authored by Jack Yu's avatar Jack Yu
Browse files

secure_element/aidl: add state checking in TearDown()

For some secure elements, reset() may takes more than 2.5 seconds.
- Extend timeout duration
- In TearDown(), wait until reset() is completed.

Bug: 273872072
Test: atest VtsHalSecureElementTargetTest
Change-Id: I345e1ac28e87423cfcbecd07aa049034fa28c40f
parent 27ebbec3
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -83,10 +83,15 @@ class MySecureElementCallback : public BnSecureElementCallback {

    void expectCallbackHistory(std::vector<bool>&& want) {
        std::unique_lock<std::mutex> l(m);
        cv.wait_for(l, 2s, [&]() { return history.size() >= want.size(); });
        cv.wait_for(l, 5s, [&]() { return history.size() >= want.size(); });
        EXPECT_THAT(history, ElementsAreArray(want));
    }

    void resetCallbackHistory() {
        std::unique_lock<std::mutex> l(m);
        history.clear();
    }

  private:
    std::mutex m;  // guards history
    std::condition_variable cv;
@@ -118,7 +123,9 @@ class SecureElementAidl : public ::testing::TestWithParam<std::string> {
    }

    void TearDown() override {
        secure_element_callback_->resetCallbackHistory();
        EXPECT_OK(secure_element_->reset());
        secure_element_callback_->expectCallbackHistory({false, true});
        secure_element_ = nullptr;
        secure_element_callback_ = nullptr;
    }