From c69011fa711d60d5bf8196bd4bb9e45f325ca454 Mon Sep 17 00:00:00 2001 From: Daniele Di Proietto Date: Tue, 14 Mar 2023 17:37:40 +0000 Subject: [PATCH] stream_unittest: Fix build on windows On windows PlatformHandle is not an int. Let's use real `PlaformHandle`s for the unittest. Tested: build and run test on windows Change-Id: I4614c320fa65f5546077402aac4bc672e6fe564f --- src/base/threading/stream_unittest.cc | 36 ++++++++++++++++----------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/src/base/threading/stream_unittest.cc b/src/base/threading/stream_unittest.cc index 3036bd9877..a9ac9aaf37 100644 --- a/src/base/threading/stream_unittest.cc +++ b/src/base/threading/stream_unittest.cc @@ -18,7 +18,9 @@ #include +#include "perfetto/base/platform_handle.h" #include "perfetto/base/status.h" +#include "perfetto/ext/base/event_fd.h" #include "perfetto/ext/base/threading/future_combinators.h" #include "perfetto/ext/base/threading/poll.h" #include "test/gtest_and_gmock.h" @@ -30,6 +32,7 @@ namespace { using testing::_; using testing::ElementsAre; using testing::Return; +using testing::UnorderedElementsAre; template class MockPollable : public FuturePollable { @@ -258,10 +261,13 @@ TEST_F(StreamUnittest, OnDestroyStream) { } TEST_F(StreamUnittest, FlattenStreams) { + EventFd event_fd1, event_fd2, event_fd3, event_fd4; + const PlatformHandle fd1 = event_fd1.fd(), fd2 = event_fd2.fd(), + fd3 = event_fd3.fd(), fd4 = event_fd4.fd(); std::unique_ptr> a(new MockStreamPollable()); EXPECT_CALL(*a, PollNext(_)) - .WillOnce([](PollContext* ctx) { - ctx->RegisterInterested(1); + .WillOnce([fd1](PollContext* ctx) { + ctx->RegisterInterested(fd1); return PendingPollResult(); }) .WillOnce(Return(StreamPollResult(1))) @@ -269,12 +275,12 @@ TEST_F(StreamUnittest, FlattenStreams) { std::unique_ptr> b(new MockStreamPollable()); EXPECT_CALL(*b, PollNext(_)) - .WillOnce([](PollContext* ctx) { - ctx->RegisterInterested(2); + .WillOnce([fd2](PollContext* ctx) { + ctx->RegisterInterested(fd2); return PendingPollResult(); }) - .WillOnce([](PollContext* ctx) { - ctx->RegisterInterested(2); + .WillOnce([fd2](PollContext* ctx) { + ctx->RegisterInterested(fd2); return PendingPollResult(); }) .WillOnce(Return(StreamPollResult(2))) @@ -283,9 +289,9 @@ TEST_F(StreamUnittest, FlattenStreams) { std::unique_ptr> c(new MockStreamPollable()); EXPECT_CALL(*c, PollNext(_)) .WillOnce(Return(StreamPollResult(3))) - .WillOnce([](PollContext* ctx) { - ctx->RegisterInterested(3); - ctx->RegisterInterested(4); + .WillOnce([fd3, fd4](PollContext* ctx) { + ctx->RegisterInterested(fd3); + ctx->RegisterInterested(fd4); return PendingPollResult(); }) .WillOnce(Return(DonePollResult())); @@ -300,25 +306,25 @@ TEST_F(StreamUnittest, FlattenStreams) { ASSERT_THAT(interested_, ElementsAre()); ASSERT_TRUE(stream.PollNext(&ctx_).IsPending()); - ASSERT_THAT(interested_, ElementsAre(1, 2, 3, 4)); + ASSERT_THAT(interested_, UnorderedElementsAre(fd1, fd2, fd3, fd4)); interested_.clear(); ASSERT_TRUE(stream.PollNext(&ctx_).IsPending()); - ASSERT_THAT(interested_, ElementsAre(1, 2, 3, 4)); + ASSERT_THAT(interested_, UnorderedElementsAre(fd1, fd2, fd3, fd4)); interested_.clear(); - ready_ = {1}; + ready_ = {fd1}; ASSERT_EQ(stream.PollNext(&ctx_).item(), 1); ASSERT_TRUE(stream.PollNext(&ctx_).IsPending()); - ASSERT_THAT(interested_, ElementsAre(2, 3, 4)); + ASSERT_THAT(interested_, UnorderedElementsAre(fd2, fd3, fd4)); interested_.clear(); ready_ = {}; ASSERT_TRUE(stream.PollNext(&ctx_).IsPending()); - ASSERT_THAT(interested_, ElementsAre(2, 3, 4)); + ASSERT_THAT(interested_, ElementsAre(fd2, fd3, fd4)); interested_.clear(); - ready_ = {1, 2, 3}; + ready_ = {fd1, fd2, fd3}; ASSERT_TRUE(stream.PollNext(&ctx_).IsPending()); ASSERT_EQ(stream.PollNext(&ctx_).item(), 2); ASSERT_TRUE(stream.PollNext(&ctx_).IsDone());