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
This commit is contained in:
Jack Yu
2023-03-21 17:36:04 +08:00
parent 27ebbec30b
commit e9d5efb5b7

View File

@@ -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;
}