Merge "init/epoll_test: Improve this test" am: 6314ba7f76

Original change: https://android-review.googlesource.com/c/platform/system/core/+/2258416

Change-Id: Ibad775cb5f940806abd24856d5718a6b5b542d33
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Treehugger Robot 2022-10-18 21:26:33 +00:00 committed by Automerger Merge Worker
commit 394cc04df5

View file

@ -21,6 +21,7 @@
#include <unordered_set>
#include <android-base/file.h>
#include <android-base/logging.h>
#include <gtest/gtest.h>
namespace android {
@ -30,14 +31,10 @@ std::unordered_set<void*> sValidObjects;
class CatchDtor final {
public:
CatchDtor() { sValidObjects.emplace(this); }
CatchDtor(const CatchDtor&) { sValidObjects.emplace(this); }
~CatchDtor() {
auto iter = sValidObjects.find(this);
if (iter != sValidObjects.end()) {
sValidObjects.erase(iter);
}
}
CatchDtor() { CHECK(sValidObjects.emplace(this).second); }
CatchDtor(const CatchDtor&) { CHECK(sValidObjects.emplace(this).second); }
CatchDtor(const CatchDtor&&) { CHECK(sValidObjects.emplace(this).second); }
~CatchDtor() { CHECK_EQ(sValidObjects.erase(this), size_t{1}); }
};
TEST(epoll, UnregisterHandler) {
@ -48,11 +45,13 @@ TEST(epoll, UnregisterHandler) {
ASSERT_EQ(pipe(fds), 0);
CatchDtor catch_dtor;
bool handler_invoked;
bool handler_invoked = false;
auto handler = [&, catch_dtor]() -> void {
auto result = epoll.UnregisterHandler(fds[0]);
ASSERT_EQ(result.ok(), !handler_invoked);
handler_invoked = true;
// The assert statement below verifies that the UnregisterHandler() call
// above did not destroy the current std::function<> instance.
ASSERT_NE(sValidObjects.find((void*)&catch_dtor), sValidObjects.end());
};