Commit da606bda authored by Yedidya Feldblum's avatar Yedidya Feldblum Committed by Facebook GitHub Bot

use only public gmock interface in transport/socket lifecycle observer

Summary: Internals are not portable between versions or across platforms.

Reviewed By: Orvid

Differential Revision: D27990286

fbshipit-source-id: b70d8d3f67a1e5262efa842f70817e3ae3972339
parent 92d8ef30
...@@ -5256,35 +5256,35 @@ TEST(AsyncSocket, LifecycleObserverDetachAndAttachEvb) { ...@@ -5256,35 +5256,35 @@ TEST(AsyncSocket, LifecycleObserverDetachAndAttachEvb) {
EventBase evb; EventBase evb;
EventBase evb2; EventBase evb2;
auto socket = AsyncSocket::UniquePtr(new AsyncSocket(&evb)); auto socket = AsyncSocket::UniquePtr(new AsyncSocket(&evb));
EXPECT_CALL(*cb, observerAttach(socket.get())); EXPECT_CALL(*cb, observerAttachMock(socket.get()));
socket->addLifecycleObserver(cb.get()); socket->addLifecycleObserver(cb.get());
EXPECT_THAT(socket->getLifecycleObservers(), UnorderedElementsAre(cb.get())); EXPECT_THAT(socket->getLifecycleObservers(), UnorderedElementsAre(cb.get()));
Mock::VerifyAndClearExpectations(cb.get()); Mock::VerifyAndClearExpectations(cb.get());
// Detach the evb and attach a new evb2 // Detach the evb and attach a new evb2
EXPECT_CALL(*cb, evbDetach(socket.get(), &evb)); EXPECT_CALL(*cb, evbDetachMock(socket.get(), &evb));
socket->detachEventBase(); socket->detachEventBase();
EXPECT_EQ(nullptr, socket->getEventBase()); EXPECT_EQ(nullptr, socket->getEventBase());
Mock::VerifyAndClearExpectations(cb.get()); Mock::VerifyAndClearExpectations(cb.get());
EXPECT_CALL(*cb, evbAttach(socket.get(), &evb2)); EXPECT_CALL(*cb, evbAttachMock(socket.get(), &evb2));
socket->attachEventBase(&evb2); socket->attachEventBase(&evb2);
EXPECT_EQ(&evb2, socket->getEventBase()); EXPECT_EQ(&evb2, socket->getEventBase());
Mock::VerifyAndClearExpectations(cb.get()); Mock::VerifyAndClearExpectations(cb.get());
// detach the new evb2 and re-attach the old evb. // detach the new evb2 and re-attach the old evb.
EXPECT_CALL(*cb, evbDetach(socket.get(), &evb2)); EXPECT_CALL(*cb, evbDetachMock(socket.get(), &evb2));
socket->detachEventBase(); socket->detachEventBase();
EXPECT_EQ(nullptr, socket->getEventBase()); EXPECT_EQ(nullptr, socket->getEventBase());
Mock::VerifyAndClearExpectations(cb.get()); Mock::VerifyAndClearExpectations(cb.get());
EXPECT_CALL(*cb, evbAttach(socket.get(), &evb)); EXPECT_CALL(*cb, evbAttachMock(socket.get(), &evb));
socket->attachEventBase(&evb); socket->attachEventBase(&evb);
EXPECT_EQ(&evb, socket->getEventBase()); EXPECT_EQ(&evb, socket->getEventBase());
Mock::VerifyAndClearExpectations(cb.get()); Mock::VerifyAndClearExpectations(cb.get());
InSequence s; InSequence s;
EXPECT_CALL(*cb, destroy(socket.get())); EXPECT_CALL(*cb, destroyMock(socket.get()));
socket = nullptr; socket = nullptr;
Mock::VerifyAndClearExpectations(cb.get()); Mock::VerifyAndClearExpectations(cb.get());
} }
...@@ -5295,19 +5295,19 @@ TEST(AsyncSocket, LifecycleObserverAttachThenDestroySocket) { ...@@ -5295,19 +5295,19 @@ TEST(AsyncSocket, LifecycleObserverAttachThenDestroySocket) {
EventBase evb; EventBase evb;
auto socket = AsyncSocket::UniquePtr(new AsyncSocket(&evb)); auto socket = AsyncSocket::UniquePtr(new AsyncSocket(&evb));
EXPECT_CALL(*cb, observerAttach(socket.get())); EXPECT_CALL(*cb, observerAttachMock(socket.get()));
socket->addLifecycleObserver(cb.get()); socket->addLifecycleObserver(cb.get());
EXPECT_THAT(socket->getLifecycleObservers(), UnorderedElementsAre(cb.get())); EXPECT_THAT(socket->getLifecycleObservers(), UnorderedElementsAre(cb.get()));
Mock::VerifyAndClearExpectations(cb.get()); Mock::VerifyAndClearExpectations(cb.get());
EXPECT_CALL(*cb, connect(socket.get())); EXPECT_CALL(*cb, connectMock(socket.get()));
socket->connect(nullptr, server.getAddress(), 30); socket->connect(nullptr, server.getAddress(), 30);
evb.loop(); evb.loop();
Mock::VerifyAndClearExpectations(cb.get()); Mock::VerifyAndClearExpectations(cb.get());
InSequence s; InSequence s;
EXPECT_CALL(*cb, close(socket.get())); EXPECT_CALL(*cb, closeMock(socket.get()));
EXPECT_CALL(*cb, destroy(socket.get())); EXPECT_CALL(*cb, destroyMock(socket.get()));
socket = nullptr; socket = nullptr;
Mock::VerifyAndClearExpectations(cb.get()); Mock::VerifyAndClearExpectations(cb.get());
} }
...@@ -5319,13 +5319,13 @@ TEST(AsyncSocket, LifecycleObserverMultipleAttachThenDestroySocket) { ...@@ -5319,13 +5319,13 @@ TEST(AsyncSocket, LifecycleObserverMultipleAttachThenDestroySocket) {
EventBase evb; EventBase evb;
auto socket = AsyncSocket::UniquePtr(new AsyncSocket(&evb)); auto socket = AsyncSocket::UniquePtr(new AsyncSocket(&evb));
EXPECT_CALL(*cb1, observerAttach(socket.get())); EXPECT_CALL(*cb1, observerAttachMock(socket.get()));
socket->addLifecycleObserver(cb1.get()); socket->addLifecycleObserver(cb1.get());
EXPECT_THAT(socket->getLifecycleObservers(), UnorderedElementsAre(cb1.get())); EXPECT_THAT(socket->getLifecycleObservers(), UnorderedElementsAre(cb1.get()));
Mock::VerifyAndClearExpectations(cb1.get()); Mock::VerifyAndClearExpectations(cb1.get());
Mock::VerifyAndClearExpectations(cb2.get()); Mock::VerifyAndClearExpectations(cb2.get());
EXPECT_CALL(*cb2, observerAttach(socket.get())); EXPECT_CALL(*cb2, observerAttachMock(socket.get()));
socket->addLifecycleObserver(cb2.get()); socket->addLifecycleObserver(cb2.get());
EXPECT_THAT( EXPECT_THAT(
socket->getLifecycleObservers(), socket->getLifecycleObservers(),
...@@ -5333,18 +5333,18 @@ TEST(AsyncSocket, LifecycleObserverMultipleAttachThenDestroySocket) { ...@@ -5333,18 +5333,18 @@ TEST(AsyncSocket, LifecycleObserverMultipleAttachThenDestroySocket) {
Mock::VerifyAndClearExpectations(cb1.get()); Mock::VerifyAndClearExpectations(cb1.get());
Mock::VerifyAndClearExpectations(cb2.get()); Mock::VerifyAndClearExpectations(cb2.get());
EXPECT_CALL(*cb1, connect(socket.get())); EXPECT_CALL(*cb1, connectMock(socket.get()));
EXPECT_CALL(*cb2, connect(socket.get())); EXPECT_CALL(*cb2, connectMock(socket.get()));
socket->connect(nullptr, server.getAddress(), 30); socket->connect(nullptr, server.getAddress(), 30);
evb.loop(); evb.loop();
Mock::VerifyAndClearExpectations(cb1.get()); Mock::VerifyAndClearExpectations(cb1.get());
Mock::VerifyAndClearExpectations(cb2.get()); Mock::VerifyAndClearExpectations(cb2.get());
InSequence s; InSequence s;
EXPECT_CALL(*cb1, close(socket.get())); EXPECT_CALL(*cb1, closeMock(socket.get()));
EXPECT_CALL(*cb2, close(socket.get())); EXPECT_CALL(*cb2, closeMock(socket.get()));
EXPECT_CALL(*cb1, destroy(socket.get())); EXPECT_CALL(*cb1, destroyMock(socket.get()));
EXPECT_CALL(*cb2, destroy(socket.get())); EXPECT_CALL(*cb2, destroyMock(socket.get()));
socket = nullptr; socket = nullptr;
Mock::VerifyAndClearExpectations(cb1.get()); Mock::VerifyAndClearExpectations(cb1.get());
Mock::VerifyAndClearExpectations(cb2.get()); Mock::VerifyAndClearExpectations(cb2.get());
...@@ -5354,12 +5354,12 @@ TEST(AsyncSocket, LifecycleObserverAttachRemove) { ...@@ -5354,12 +5354,12 @@ TEST(AsyncSocket, LifecycleObserverAttachRemove) {
auto cb = std::make_unique<StrictMock<MockAsyncSocketLifecycleObserver>>(); auto cb = std::make_unique<StrictMock<MockAsyncSocketLifecycleObserver>>();
EventBase evb; EventBase evb;
auto socket = AsyncSocket::UniquePtr(new AsyncSocket(&evb)); auto socket = AsyncSocket::UniquePtr(new AsyncSocket(&evb));
EXPECT_CALL(*cb, observerAttach(socket.get())); EXPECT_CALL(*cb, observerAttachMock(socket.get()));
socket->addLifecycleObserver(cb.get()); socket->addLifecycleObserver(cb.get());
Mock::VerifyAndClearExpectations(cb.get()); Mock::VerifyAndClearExpectations(cb.get());
EXPECT_THAT(socket->getLifecycleObservers(), UnorderedElementsAre(cb.get())); EXPECT_THAT(socket->getLifecycleObservers(), UnorderedElementsAre(cb.get()));
EXPECT_CALL(*cb, observerDetach(socket.get())); EXPECT_CALL(*cb, observerDetachMock(socket.get()));
EXPECT_TRUE(socket->removeLifecycleObserver(cb.get())); EXPECT_TRUE(socket->removeLifecycleObserver(cb.get()));
EXPECT_THAT(socket->getLifecycleObservers(), IsEmpty()); EXPECT_THAT(socket->getLifecycleObservers(), IsEmpty());
Mock::VerifyAndClearExpectations(cb.get()); Mock::VerifyAndClearExpectations(cb.get());
...@@ -5379,13 +5379,13 @@ TEST(AsyncSocket, LifecycleObserverMultipleAttachThenRemove) { ...@@ -5379,13 +5379,13 @@ TEST(AsyncSocket, LifecycleObserverMultipleAttachThenRemove) {
EventBase evb; EventBase evb;
auto socket = AsyncSocket::UniquePtr(new AsyncSocket(&evb)); auto socket = AsyncSocket::UniquePtr(new AsyncSocket(&evb));
EXPECT_CALL(*cb1, observerAttach(socket.get())); EXPECT_CALL(*cb1, observerAttachMock(socket.get()));
socket->addLifecycleObserver(cb1.get()); socket->addLifecycleObserver(cb1.get());
EXPECT_THAT(socket->getLifecycleObservers(), UnorderedElementsAre(cb1.get())); EXPECT_THAT(socket->getLifecycleObservers(), UnorderedElementsAre(cb1.get()));
Mock::VerifyAndClearExpectations(cb1.get()); Mock::VerifyAndClearExpectations(cb1.get());
Mock::VerifyAndClearExpectations(cb2.get()); Mock::VerifyAndClearExpectations(cb2.get());
EXPECT_CALL(*cb2, observerAttach(socket.get())); EXPECT_CALL(*cb2, observerAttachMock(socket.get()));
socket->addLifecycleObserver(cb2.get()); socket->addLifecycleObserver(cb2.get());
EXPECT_THAT( EXPECT_THAT(
socket->getLifecycleObservers(), socket->getLifecycleObservers(),
...@@ -5393,13 +5393,13 @@ TEST(AsyncSocket, LifecycleObserverMultipleAttachThenRemove) { ...@@ -5393,13 +5393,13 @@ TEST(AsyncSocket, LifecycleObserverMultipleAttachThenRemove) {
Mock::VerifyAndClearExpectations(cb1.get()); Mock::VerifyAndClearExpectations(cb1.get());
Mock::VerifyAndClearExpectations(cb2.get()); Mock::VerifyAndClearExpectations(cb2.get());
EXPECT_CALL(*cb2, observerDetach(socket.get())); EXPECT_CALL(*cb2, observerDetachMock(socket.get()));
EXPECT_TRUE(socket->removeLifecycleObserver(cb2.get())); EXPECT_TRUE(socket->removeLifecycleObserver(cb2.get()));
EXPECT_THAT(socket->getLifecycleObservers(), UnorderedElementsAre(cb1.get())); EXPECT_THAT(socket->getLifecycleObservers(), UnorderedElementsAre(cb1.get()));
Mock::VerifyAndClearExpectations(cb1.get()); Mock::VerifyAndClearExpectations(cb1.get());
Mock::VerifyAndClearExpectations(cb2.get()); Mock::VerifyAndClearExpectations(cb2.get());
EXPECT_CALL(*cb1, observerDetach(socket.get())); EXPECT_CALL(*cb1, observerDetachMock(socket.get()));
socket->removeLifecycleObserver(cb1.get()); socket->removeLifecycleObserver(cb1.get());
EXPECT_THAT(socket->getLifecycleObservers(), IsEmpty()); EXPECT_THAT(socket->getLifecycleObservers(), IsEmpty());
Mock::VerifyAndClearExpectations(cb1.get()); Mock::VerifyAndClearExpectations(cb1.get());
...@@ -5412,17 +5412,17 @@ TEST(AsyncSocket, LifecycleObserverDetach) { ...@@ -5412,17 +5412,17 @@ TEST(AsyncSocket, LifecycleObserverDetach) {
EventBase evb; EventBase evb;
auto socket1 = AsyncSocket::UniquePtr(new AsyncSocket(&evb)); auto socket1 = AsyncSocket::UniquePtr(new AsyncSocket(&evb));
EXPECT_CALL(*cb, observerAttach(socket1.get())); EXPECT_CALL(*cb, observerAttachMock(socket1.get()));
socket1->addLifecycleObserver(cb.get()); socket1->addLifecycleObserver(cb.get());
EXPECT_THAT(socket1->getLifecycleObservers(), UnorderedElementsAre(cb.get())); EXPECT_THAT(socket1->getLifecycleObservers(), UnorderedElementsAre(cb.get()));
Mock::VerifyAndClearExpectations(cb.get()); Mock::VerifyAndClearExpectations(cb.get());
EXPECT_CALL(*cb, connect(socket1.get())); EXPECT_CALL(*cb, connectMock(socket1.get()));
socket1->connect(nullptr, server.getAddress(), 30); socket1->connect(nullptr, server.getAddress(), 30);
evb.loop(); evb.loop();
Mock::VerifyAndClearExpectations(cb.get()); Mock::VerifyAndClearExpectations(cb.get());
EXPECT_CALL(*cb, fdDetach(socket1.get())); EXPECT_CALL(*cb, fdDetachMock(socket1.get()));
auto fd = socket1->detachNetworkSocket(); auto fd = socket1->detachNetworkSocket();
Mock::VerifyAndClearExpectations(cb.get()); Mock::VerifyAndClearExpectations(cb.get());
...@@ -5431,7 +5431,7 @@ TEST(AsyncSocket, LifecycleObserverDetach) { ...@@ -5431,7 +5431,7 @@ TEST(AsyncSocket, LifecycleObserverDetach) {
socket2 = nullptr; socket2 = nullptr;
// finally, destroy socket1 // finally, destroy socket1
EXPECT_CALL(*cb, destroy(socket1.get())); EXPECT_CALL(*cb, destroyMock(socket1.get()));
} }
TEST(AsyncSocket, LifecycleObserverMoveResubscribe) { TEST(AsyncSocket, LifecycleObserverMoveResubscribe) {
...@@ -5440,12 +5440,12 @@ TEST(AsyncSocket, LifecycleObserverMoveResubscribe) { ...@@ -5440,12 +5440,12 @@ TEST(AsyncSocket, LifecycleObserverMoveResubscribe) {
EventBase evb; EventBase evb;
auto socket1 = AsyncSocket::UniquePtr(new AsyncSocket(&evb)); auto socket1 = AsyncSocket::UniquePtr(new AsyncSocket(&evb));
EXPECT_CALL(*cb, observerAttach(socket1.get())); EXPECT_CALL(*cb, observerAttachMock(socket1.get()));
socket1->addLifecycleObserver(cb.get()); socket1->addLifecycleObserver(cb.get());
EXPECT_THAT(socket1->getLifecycleObservers(), UnorderedElementsAre(cb.get())); EXPECT_THAT(socket1->getLifecycleObservers(), UnorderedElementsAre(cb.get()));
Mock::VerifyAndClearExpectations(cb.get()); Mock::VerifyAndClearExpectations(cb.get());
EXPECT_CALL(*cb, connect(socket1.get())); EXPECT_CALL(*cb, connectMock(socket1.get()));
socket1->connect(nullptr, server.getAddress(), 30); socket1->connect(nullptr, server.getAddress(), 30);
evb.loop(); evb.loop();
Mock::VerifyAndClearExpectations(cb.get()); Mock::VerifyAndClearExpectations(cb.get());
...@@ -5453,13 +5453,13 @@ TEST(AsyncSocket, LifecycleObserverMoveResubscribe) { ...@@ -5453,13 +5453,13 @@ TEST(AsyncSocket, LifecycleObserverMoveResubscribe) {
AsyncSocket* socket2PtrCapturedmoved = nullptr; AsyncSocket* socket2PtrCapturedmoved = nullptr;
{ {
InSequence s; InSequence s;
EXPECT_CALL(*cb, fdDetach(socket1.get())); EXPECT_CALL(*cb, fdDetachMock(socket1.get()));
EXPECT_CALL(*cb, move(socket1.get(), Not(socket1.get()))) EXPECT_CALL(*cb, moveMock(socket1.get(), Not(socket1.get())))
.WillOnce(Invoke( .WillOnce(Invoke(
[&socket2PtrCapturedmoved, &cb](auto oldSocket, auto newSocket) { [&socket2PtrCapturedmoved, &cb](auto oldSocket, auto newSocket) {
socket2PtrCapturedmoved = newSocket; socket2PtrCapturedmoved = newSocket;
EXPECT_CALL(*cb, observerDetach(oldSocket)); EXPECT_CALL(*cb, observerDetachMock(oldSocket));
EXPECT_CALL(*cb, observerAttach(newSocket)); EXPECT_CALL(*cb, observerAttachMock(newSocket));
EXPECT_TRUE(oldSocket->removeLifecycleObserver(cb.get())); EXPECT_TRUE(oldSocket->removeLifecycleObserver(cb.get()));
EXPECT_THAT(oldSocket->getLifecycleObservers(), IsEmpty()); EXPECT_THAT(oldSocket->getLifecycleObservers(), IsEmpty());
newSocket->addLifecycleObserver(cb.get()); newSocket->addLifecycleObserver(cb.get());
...@@ -5474,8 +5474,8 @@ TEST(AsyncSocket, LifecycleObserverMoveResubscribe) { ...@@ -5474,8 +5474,8 @@ TEST(AsyncSocket, LifecycleObserverMoveResubscribe) {
{ {
InSequence s; InSequence s;
EXPECT_CALL(*cb, close(socket2.get())); EXPECT_CALL(*cb, closeMock(socket2.get()));
EXPECT_CALL(*cb, destroy(socket2.get())); EXPECT_CALL(*cb, destroyMock(socket2.get()));
} }
socket2 = nullptr; socket2 = nullptr;
} }
...@@ -5486,12 +5486,12 @@ TEST(AsyncSocket, LifecycleObserverMoveDoNotResubscribe) { ...@@ -5486,12 +5486,12 @@ TEST(AsyncSocket, LifecycleObserverMoveDoNotResubscribe) {
EventBase evb; EventBase evb;
auto socket1 = AsyncSocket::UniquePtr(new AsyncSocket(&evb)); auto socket1 = AsyncSocket::UniquePtr(new AsyncSocket(&evb));
EXPECT_CALL(*cb, observerAttach(socket1.get())); EXPECT_CALL(*cb, observerAttachMock(socket1.get()));
socket1->addLifecycleObserver(cb.get()); socket1->addLifecycleObserver(cb.get());
EXPECT_THAT(socket1->getLifecycleObservers(), UnorderedElementsAre(cb.get())); EXPECT_THAT(socket1->getLifecycleObservers(), UnorderedElementsAre(cb.get()));
Mock::VerifyAndClearExpectations(cb.get()); Mock::VerifyAndClearExpectations(cb.get());
EXPECT_CALL(*cb, connect(socket1.get())); EXPECT_CALL(*cb, connectMock(socket1.get()));
socket1->connect(nullptr, server.getAddress(), 30); socket1->connect(nullptr, server.getAddress(), 30);
evb.loop(); evb.loop();
Mock::VerifyAndClearExpectations(cb.get()); Mock::VerifyAndClearExpectations(cb.get());
...@@ -5499,13 +5499,13 @@ TEST(AsyncSocket, LifecycleObserverMoveDoNotResubscribe) { ...@@ -5499,13 +5499,13 @@ TEST(AsyncSocket, LifecycleObserverMoveDoNotResubscribe) {
// close will not be called on socket1 because the fd is detached // close will not be called on socket1 because the fd is detached
AsyncSocket* socket2PtrCapturedMoved = nullptr; AsyncSocket* socket2PtrCapturedMoved = nullptr;
InSequence s; InSequence s;
EXPECT_CALL(*cb, fdDetach(socket1.get())); EXPECT_CALL(*cb, fdDetachMock(socket1.get()));
EXPECT_CALL(*cb, move(socket1.get(), Not(socket1.get()))) EXPECT_CALL(*cb, moveMock(socket1.get(), Not(socket1.get())))
.WillOnce(Invoke( .WillOnce(Invoke(
[&socket2PtrCapturedMoved](auto /* oldSocket */, auto newSocket) { [&socket2PtrCapturedMoved](auto /* oldSocket */, auto newSocket) {
socket2PtrCapturedMoved = newSocket; socket2PtrCapturedMoved = newSocket;
})); }));
EXPECT_CALL(*cb, destroy(socket1.get())); EXPECT_CALL(*cb, destroyMock(socket1.get()));
auto socket2 = AsyncSocket::UniquePtr(new AsyncSocket(std::move(socket1))); auto socket2 = AsyncSocket::UniquePtr(new AsyncSocket(std::move(socket1)));
Mock::VerifyAndClearExpectations(cb.get()); Mock::VerifyAndClearExpectations(cb.get());
EXPECT_EQ(socket2.get(), socket2PtrCapturedMoved); EXPECT_EQ(socket2.get(), socket2PtrCapturedMoved);
...@@ -5517,12 +5517,12 @@ TEST(AsyncSocket, LifecycleObserverDetachCallbackImmediately) { ...@@ -5517,12 +5517,12 @@ TEST(AsyncSocket, LifecycleObserverDetachCallbackImmediately) {
EventBase evb; EventBase evb;
std::shared_ptr<AsyncSocket> socket = AsyncSocket::newSocket(&evb); std::shared_ptr<AsyncSocket> socket = AsyncSocket::newSocket(&evb);
EXPECT_CALL(*cb, observerAttach(socket.get())); EXPECT_CALL(*cb, observerAttachMock(socket.get()));
socket->addLifecycleObserver(cb.get()); socket->addLifecycleObserver(cb.get());
EXPECT_THAT(socket->getLifecycleObservers(), UnorderedElementsAre(cb.get())); EXPECT_THAT(socket->getLifecycleObservers(), UnorderedElementsAre(cb.get()));
Mock::VerifyAndClearExpectations(cb.get()); Mock::VerifyAndClearExpectations(cb.get());
EXPECT_CALL(*cb, observerDetach(socket.get())); EXPECT_CALL(*cb, observerDetachMock(socket.get()));
EXPECT_TRUE(socket->removeLifecycleObserver(cb.get())); EXPECT_TRUE(socket->removeLifecycleObserver(cb.get()));
EXPECT_THAT(socket->getLifecycleObservers(), IsEmpty()); EXPECT_THAT(socket->getLifecycleObservers(), IsEmpty());
Mock::VerifyAndClearExpectations(cb.get()); Mock::VerifyAndClearExpectations(cb.get());
...@@ -5538,16 +5538,16 @@ TEST(AsyncSocket, LifecycleObserverDetachCallbackAfterConnect) { ...@@ -5538,16 +5538,16 @@ TEST(AsyncSocket, LifecycleObserverDetachCallbackAfterConnect) {
EventBase evb; EventBase evb;
std::shared_ptr<AsyncSocket> socket = AsyncSocket::newSocket(&evb); std::shared_ptr<AsyncSocket> socket = AsyncSocket::newSocket(&evb);
EXPECT_CALL(*cb, observerAttach(socket.get())); EXPECT_CALL(*cb, observerAttachMock(socket.get()));
socket->addLifecycleObserver(cb.get()); socket->addLifecycleObserver(cb.get());
Mock::VerifyAndClearExpectations(cb.get()); Mock::VerifyAndClearExpectations(cb.get());
EXPECT_CALL(*cb, connect(socket.get())); EXPECT_CALL(*cb, connectMock(socket.get()));
socket->connect(nullptr, server.getAddress(), 30); socket->connect(nullptr, server.getAddress(), 30);
evb.loop(); evb.loop();
Mock::VerifyAndClearExpectations(cb.get()); Mock::VerifyAndClearExpectations(cb.get());
EXPECT_CALL(*cb, observerDetach(socket.get())); EXPECT_CALL(*cb, observerDetachMock(socket.get()));
EXPECT_TRUE(socket->removeLifecycleObserver(cb.get())); EXPECT_TRUE(socket->removeLifecycleObserver(cb.get()));
Mock::VerifyAndClearExpectations(cb.get()); Mock::VerifyAndClearExpectations(cb.get());
} }
...@@ -5558,20 +5558,20 @@ TEST(AsyncSocket, LifecycleObserverDetachCallbackAfterClose) { ...@@ -5558,20 +5558,20 @@ TEST(AsyncSocket, LifecycleObserverDetachCallbackAfterClose) {
EventBase evb; EventBase evb;
std::shared_ptr<AsyncSocket> socket = AsyncSocket::newSocket(&evb); std::shared_ptr<AsyncSocket> socket = AsyncSocket::newSocket(&evb);
EXPECT_CALL(*cb, observerAttach(socket.get())); EXPECT_CALL(*cb, observerAttachMock(socket.get()));
socket->addLifecycleObserver(cb.get()); socket->addLifecycleObserver(cb.get());
Mock::VerifyAndClearExpectations(cb.get()); Mock::VerifyAndClearExpectations(cb.get());
EXPECT_CALL(*cb, connect(socket.get())); EXPECT_CALL(*cb, connectMock(socket.get()));
socket->connect(nullptr, server.getAddress(), 30); socket->connect(nullptr, server.getAddress(), 30);
evb.loop(); evb.loop();
Mock::VerifyAndClearExpectations(cb.get()); Mock::VerifyAndClearExpectations(cb.get());
EXPECT_CALL(*cb, close(socket.get())); EXPECT_CALL(*cb, closeMock(socket.get()));
socket->closeNow(); socket->closeNow();
Mock::VerifyAndClearExpectations(cb.get()); Mock::VerifyAndClearExpectations(cb.get());
EXPECT_CALL(*cb, observerDetach(socket.get())); EXPECT_CALL(*cb, observerDetachMock(socket.get()));
EXPECT_TRUE(socket->removeLifecycleObserver(cb.get())); EXPECT_TRUE(socket->removeLifecycleObserver(cb.get()));
Mock::VerifyAndClearExpectations(cb.get()); Mock::VerifyAndClearExpectations(cb.get());
} }
...@@ -5582,21 +5582,21 @@ TEST(AsyncSocket, LifecycleObserverDetachCallbackcloseDuringDestroy) { ...@@ -5582,21 +5582,21 @@ TEST(AsyncSocket, LifecycleObserverDetachCallbackcloseDuringDestroy) {
EventBase evb; EventBase evb;
std::shared_ptr<AsyncSocket> socket = AsyncSocket::newSocket(&evb); std::shared_ptr<AsyncSocket> socket = AsyncSocket::newSocket(&evb);
EXPECT_CALL(*cb, observerAttach(socket.get())); EXPECT_CALL(*cb, observerAttachMock(socket.get()));
socket->addLifecycleObserver(cb.get()); socket->addLifecycleObserver(cb.get());
Mock::VerifyAndClearExpectations(cb.get()); Mock::VerifyAndClearExpectations(cb.get());
EXPECT_CALL(*cb, connect(socket.get())); EXPECT_CALL(*cb, connectMock(socket.get()));
socket->connect(nullptr, server.getAddress(), 30); socket->connect(nullptr, server.getAddress(), 30);
evb.loop(); evb.loop();
Mock::VerifyAndClearExpectations(cb.get()); Mock::VerifyAndClearExpectations(cb.get());
InSequence s; InSequence s;
EXPECT_CALL(*cb, close(socket.get())) EXPECT_CALL(*cb, closeMock(socket.get()))
.WillOnce(Invoke([&cb](auto callbackSocket) { .WillOnce(Invoke([&cb](auto callbackSocket) {
EXPECT_TRUE(callbackSocket->removeLifecycleObserver(cb.get())); EXPECT_TRUE(callbackSocket->removeLifecycleObserver(cb.get()));
})); }));
EXPECT_CALL(*cb, observerDetach(socket.get())); EXPECT_CALL(*cb, observerDetachMock(socket.get()));
socket = nullptr; socket = nullptr;
Mock::VerifyAndClearExpectations(cb.get()); Mock::VerifyAndClearExpectations(cb.get());
} }
...@@ -5609,18 +5609,18 @@ TEST(AsyncSocket, LifecycleObserverBaseClassMoveNoCrash) { ...@@ -5609,18 +5609,18 @@ TEST(AsyncSocket, LifecycleObserverBaseClassMoveNoCrash) {
EventBase evb; EventBase evb;
auto socket1 = AsyncSocket::UniquePtr(new AsyncSocket(&evb)); auto socket1 = AsyncSocket::UniquePtr(new AsyncSocket(&evb));
EXPECT_CALL(*cb, observerAttach(socket1.get())); EXPECT_CALL(*cb, observerAttachMock(socket1.get()));
socket1->addLifecycleObserver(cb.get()); socket1->addLifecycleObserver(cb.get());
EXPECT_THAT(socket1->getLifecycleObservers(), UnorderedElementsAre(cb.get())); EXPECT_THAT(socket1->getLifecycleObservers(), UnorderedElementsAre(cb.get()));
Mock::VerifyAndClearExpectations(cb.get()); Mock::VerifyAndClearExpectations(cb.get());
EXPECT_CALL(*cb, connect(socket1.get())); EXPECT_CALL(*cb, connectMock(socket1.get()));
socket1->connect(nullptr, server.getAddress(), 30); socket1->connect(nullptr, server.getAddress(), 30);
evb.loop(); evb.loop();
Mock::VerifyAndClearExpectations(cb.get()); Mock::VerifyAndClearExpectations(cb.get());
// we'll see socket1 get destroyed, but nothing else // we'll see socket1 get destroyed, but nothing else
EXPECT_CALL(*cb, destroy(socket1.get())); EXPECT_CALL(*cb, destroyMock(socket1.get()));
auto socket2 = AsyncSocket::UniquePtr(new AsyncSocket(std::move(socket1))); auto socket2 = AsyncSocket::UniquePtr(new AsyncSocket(std::move(socket1)));
Mock::VerifyAndClearExpectations(cb.get()); Mock::VerifyAndClearExpectations(cb.get());
} }
......
...@@ -32,30 +32,56 @@ namespace test { ...@@ -32,30 +32,56 @@ namespace test {
class MockAsyncSocketLifecycleObserver : public AsyncSocket::LifecycleObserver { class MockAsyncSocketLifecycleObserver : public AsyncSocket::LifecycleObserver {
public: public:
using AsyncSocket::LifecycleObserver::LifecycleObserver; using AsyncSocket::LifecycleObserver::LifecycleObserver;
GMOCK_METHOD1_(, noexcept, , observerAttach, void(AsyncTransport*)); MOCK_METHOD1(observerAttachMock, void(AsyncTransport*));
GMOCK_METHOD1_(, noexcept, , observerDetach, void(AsyncTransport*)); MOCK_METHOD1(observerDetachMock, void(AsyncTransport*));
GMOCK_METHOD1_(, noexcept, , destroy, void(AsyncTransport*)); MOCK_METHOD1(destroyMock, void(AsyncTransport*));
GMOCK_METHOD1_(, noexcept, , close, void(AsyncTransport*)); MOCK_METHOD1(closeMock, void(AsyncTransport*));
GMOCK_METHOD1_(, noexcept, , connect, void(AsyncTransport*)); MOCK_METHOD1(connectMock, void(AsyncTransport*));
GMOCK_METHOD2_(, noexcept, , evbAttach, void(AsyncTransport*, EventBase*)); MOCK_METHOD2(evbAttachMock, void(AsyncTransport*, EventBase*));
GMOCK_METHOD2_(, noexcept, , evbDetach, void(AsyncTransport*, EventBase*)); MOCK_METHOD2(evbDetachMock, void(AsyncTransport*, EventBase*));
GMOCK_METHOD2_( MOCK_METHOD2(
, byteEventMock, void(AsyncTransport*, const AsyncTransport::ByteEvent&));
noexcept, MOCK_METHOD1(byteEventsEnabledMock, void(AsyncTransport*));
, MOCK_METHOD2(
byteEvent, byteEventsUnavailableMock,
void(AsyncTransport*, const AsyncTransport::ByteEvent&));
GMOCK_METHOD1_(, noexcept, , byteEventsEnabled, void(AsyncTransport*));
GMOCK_METHOD2_(
,
noexcept,
,
byteEventsUnavailable,
void(AsyncTransport*, const AsyncSocketException&)); void(AsyncTransport*, const AsyncSocketException&));
// additional handlers specific to AsyncSocket::LifecycleObserver // additional handlers specific to AsyncSocket::LifecycleObserver
GMOCK_METHOD1_(, noexcept, , fdDetach, void(AsyncSocket*)); MOCK_METHOD1(fdDetachMock, void(AsyncSocket*));
GMOCK_METHOD2_(, noexcept, , move, void(AsyncSocket*, AsyncSocket*)); MOCK_METHOD2(moveMock, void(AsyncSocket*, AsyncSocket*));
private:
void observerAttach(AsyncTransport* trans) noexcept override {
observerAttachMock(trans);
}
void observerDetach(AsyncTransport* trans) noexcept override {
observerDetachMock(trans);
}
void destroy(AsyncTransport* trans) noexcept override { destroyMock(trans); }
void close(AsyncTransport* trans) noexcept override { closeMock(trans); }
void connect(AsyncTransport* trans) noexcept override { connectMock(trans); }
void evbAttach(AsyncTransport* trans, EventBase* eb) noexcept override {
evbAttachMock(trans, eb);
}
void evbDetach(AsyncTransport* trans, EventBase* eb) noexcept override {
evbDetachMock(trans, eb);
}
void byteEvent(
AsyncTransport* trans,
const AsyncTransport::ByteEvent& ev) noexcept override {
byteEventMock(trans, ev);
}
void byteEventsEnabled(AsyncTransport* trans) noexcept override {
byteEventsEnabledMock(trans);
}
void byteEventsUnavailable(
AsyncTransport* trans, const AsyncSocketException& ex) noexcept override {
byteEventsUnavailableMock(trans, ex);
}
void fdDetach(AsyncSocket* sock) noexcept override { fdDetachMock(sock); }
void move(AsyncSocket* olds, AsyncSocket* news) noexcept override {
moveMock(olds, news);
}
}; };
} // namespace test } // namespace test
......
...@@ -27,26 +27,48 @@ class MockAsyncTransportLifecycleObserver ...@@ -27,26 +27,48 @@ class MockAsyncTransportLifecycleObserver
: public AsyncTransport::LifecycleObserver { : public AsyncTransport::LifecycleObserver {
public: public:
using AsyncTransport::LifecycleObserver::LifecycleObserver; using AsyncTransport::LifecycleObserver::LifecycleObserver;
GMOCK_METHOD1_(, noexcept, , observerAttach, void(AsyncTransport*)); MOCK_METHOD1(observerAttachMock, void(AsyncTransport*));
GMOCK_METHOD1_(, noexcept, , observerDetach, void(AsyncTransport*)); MOCK_METHOD1(observerDetachMock, void(AsyncTransport*));
GMOCK_METHOD1_(, noexcept, , destroy, void(AsyncTransport*)); MOCK_METHOD1(destroyMock, void(AsyncTransport*));
GMOCK_METHOD1_(, noexcept, , close, void(AsyncTransport*)); MOCK_METHOD1(closeMock, void(AsyncTransport*));
GMOCK_METHOD1_(, noexcept, , connect, void(AsyncTransport*)); MOCK_METHOD1(connectMock, void(AsyncTransport*));
GMOCK_METHOD2_(, noexcept, , evbAttach, void(AsyncTransport*, EventBase*)); MOCK_METHOD2(evbAttachMock, void(AsyncTransport*, EventBase*));
GMOCK_METHOD2_(, noexcept, , evbDetach, void(AsyncTransport*, EventBase*)); MOCK_METHOD2(evbDetachMock, void(AsyncTransport*, EventBase*));
GMOCK_METHOD2_( MOCK_METHOD2(
, byteEventMock, void(AsyncTransport*, const AsyncTransport::ByteEvent&));
noexcept, MOCK_METHOD1(byteEventsEnabledMock, void(AsyncTransport*));
, MOCK_METHOD2(
byteEvent, byteEventsUnavailableMock,
void(AsyncTransport*, const AsyncTransport::ByteEvent&));
GMOCK_METHOD1_(, noexcept, , byteEventsEnabled, void(AsyncTransport*));
GMOCK_METHOD2_(
,
noexcept,
,
byteEventsUnavailable,
void(AsyncTransport*, const AsyncSocketException&)); void(AsyncTransport*, const AsyncSocketException&));
private:
void observerAttach(AsyncTransport* trans) noexcept override {
observerAttachMock(trans);
}
void observerDetach(AsyncTransport* trans) noexcept override {
observerDetachMock(trans);
}
void destroy(AsyncTransport* trans) noexcept override { destroyMock(trans); }
void close(AsyncTransport* trans) noexcept override { closeMock(trans); }
void connect(AsyncTransport* trans) noexcept override { connectMock(trans); }
void evbAttach(AsyncTransport* trans, EventBase* eb) noexcept override {
evbAttachMock(trans, eb);
}
void evbDetach(AsyncTransport* trans, EventBase* eb) noexcept override {
evbDetachMock(trans, eb);
}
void byteEvent(
AsyncTransport* trans,
const AsyncTransport::ByteEvent& ev) noexcept override {
byteEventMock(trans, ev);
}
void byteEventsEnabled(AsyncTransport* trans) noexcept override {
byteEventsEnabledMock(trans);
}
void byteEventsUnavailable(
AsyncTransport* trans, const AsyncSocketException& ex) noexcept override {
byteEventsUnavailableMock(trans, ex);
}
}; };
/** /**
...@@ -60,7 +82,7 @@ class MockAsyncTransportObserverForByteEvents ...@@ -60,7 +82,7 @@ class MockAsyncTransportObserverForByteEvents
const MockAsyncTransportObserverForByteEvents::Config& observerConfig) const MockAsyncTransportObserverForByteEvents::Config& observerConfig)
: MockAsyncTransportLifecycleObserver(observerConfig), : MockAsyncTransportLifecycleObserver(observerConfig),
transport_(transport) { transport_(transport) {
ON_CALL(*this, byteEvent(testing::_, testing::_)) ON_CALL(*this, byteEventMock(testing::_, testing::_))
.WillByDefault( .WillByDefault(
testing::Invoke([this]( testing::Invoke([this](
AsyncTransport* transport, AsyncTransport* transport,
...@@ -68,13 +90,13 @@ class MockAsyncTransportObserverForByteEvents ...@@ -68,13 +90,13 @@ class MockAsyncTransportObserverForByteEvents
CHECK_EQ(this->transport_, transport); CHECK_EQ(this->transport_, transport);
byteEvents_.emplace_back(event); byteEvents_.emplace_back(event);
})); }));
ON_CALL(*this, byteEventsEnabled(testing::_)) ON_CALL(*this, byteEventsEnabledMock(testing::_))
.WillByDefault(testing::Invoke([this](AsyncTransport* transport) { .WillByDefault(testing::Invoke([this](AsyncTransport* transport) {
CHECK_EQ(this->transport_, transport); CHECK_EQ(this->transport_, transport);
byteEventsEnabledCalled_++; byteEventsEnabledCalled_++;
})); }));
ON_CALL(*this, byteEventsUnavailable(testing::_, testing::_)) ON_CALL(*this, byteEventsUnavailableMock(testing::_, testing::_))
.WillByDefault(testing::Invoke( .WillByDefault(testing::Invoke(
[this](AsyncTransport* transport, const AsyncSocketException& ex) { [this](AsyncTransport* transport, const AsyncSocketException& ex) {
CHECK_EQ(this->transport_, transport); CHECK_EQ(this->transport_, transport);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment