mirror of
https://github.com/facebookincubator/mvfst.git
synced 2025-08-08 09:42:06 +03:00
Fix open source build
Summary: Fixing four issues in open source build. First, two missing changes to `CMakeLists.cpp` changes - `handshake/TokenGenerator.cpp`, added in D31673160 (7233c55d29
) - `state/AckEvent.cpp`, added in D31221302 (7a916869ff
) The two two issues are caused by inconsistencies between our build env and open source build env, including gtest versions. We should investigate getting open source gtest on same version. --- **[D31216724 (20c17a882b
)] We cannot use lambdas with `testing::ResultOf` for older versions of gtest and/or older compilers.** ``` gmock-matchers.h:2310:29: error: no type named 'result_type' in '(lambda at /data/sandcastle/temp/fbcode_builder_getdeps/shipit/mvfst/quic/api/test/QuicTransportTest.cpp:711:19)' ``` In particular, the `decltype(f(arg))` logic in the following code from gtest is going to fail on the lambda, since a lambda has no type. I believe it would need to be a `declval(decltype(f(arg)))` for the lambda to work. ``` template <typename Functor> struct CallableTraits { typedef Functor StorageType; static void CheckIsValid(Functor /* functor */) {} template <typename T> static auto Invoke(Functor f, const T& arg) -> decltype(f(arg)) { return f(arg); } }; ``` See this for details: https://stackoverflow.com/questions/4846540/c11-lambda-in-decltype ----- **[D32772165 (e784fafb10
)] `EXPECT_CALL` does not work with the formatting used for older versions of gtest and/or older compilers (again, unclear).** Specifically ``` EXPECT_CALL(handshakeFinishedCallback, onHandshakeFinished); ``` must instead be ``` EXPECT_CALL(handshakeFinishedCallback, onHandshakeFinished()); ``` Reviewed By: kvtsoy Differential Revision: D33026131 fbshipit-source-id: 886a6165f2e217cadbe479320195abbd4895eb7c
This commit is contained in:
committed by
Facebook GitHub Bot
parent
d036d520c7
commit
fa0aa9754e
@@ -702,22 +702,31 @@ TEST_F(QuicTransportTest, ObserverPacketsWrittenCycleCheckDetails) {
|
|||||||
// part 3.2, we write two ACK eliciting packets, then become app limited
|
// part 3.2, we write two ACK eliciting packets, then become app limited
|
||||||
// one of the ACK eliciting packets contains an ACK frame
|
// one of the ACK eliciting packets contains an ACK frame
|
||||||
{
|
{
|
||||||
|
// older versions of gtest do not seem to accept lambdas for ResultOf
|
||||||
|
// matcher, so define an std::function
|
||||||
|
std::function<uint64_t(const Observer::WriteEvent&)>
|
||||||
|
countPacketsWithAckFrames =
|
||||||
|
[](const Observer::WriteEvent& event) -> uint64_t {
|
||||||
|
uint64_t packetsWithAckFrames = 0;
|
||||||
|
for (auto& outstandingPacket : event.outstandingPackets) {
|
||||||
|
bool hasAckFrame = false;
|
||||||
|
for (auto& frame : outstandingPacket.packet.frames) {
|
||||||
|
if (frame.asWriteAckFrame()) {
|
||||||
|
hasAckFrame = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (hasAckFrame) {
|
||||||
|
packetsWithAckFrames++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return packetsWithAckFrames;
|
||||||
|
};
|
||||||
|
|
||||||
const auto writeEventMatcher = AllOf(
|
const auto writeEventMatcher = AllOf(
|
||||||
|
testing::ResultOf(countPacketsWithAckFrames, 1),
|
||||||
testing::Property(
|
testing::Property(
|
||||||
&Observer::WriteEvent::getOutstandingPackets, testing::SizeIs(9)),
|
&Observer::WriteEvent::getOutstandingPackets, testing::SizeIs(9)),
|
||||||
testing::Property(
|
|
||||||
&Observer::WriteEvent::getOutstandingPackets,
|
|
||||||
testing::Contains(testing::ResultOf(
|
|
||||||
[](auto& outstandingPacket) {
|
|
||||||
for (auto& frame : outstandingPacket.packet.frames) {
|
|
||||||
auto ackFrame = frame.asWriteAckFrame();
|
|
||||||
if (ackFrame) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
},
|
|
||||||
testing::Eq(true)))),
|
|
||||||
testing::Field(
|
testing::Field(
|
||||||
&Observer::WriteEvent::writeCount, testing::Eq(writeNum)));
|
&Observer::WriteEvent::writeCount, testing::Eq(writeNum)));
|
||||||
const auto packetsWrittenEventMatcher = AllOf(
|
const auto packetsWrittenEventMatcher = AllOf(
|
||||||
|
@@ -8,6 +8,7 @@ add_library(
|
|||||||
handshake/AppToken.cpp
|
handshake/AppToken.cpp
|
||||||
handshake/ServerHandshake.cpp
|
handshake/ServerHandshake.cpp
|
||||||
handshake/StatelessResetGenerator.cpp
|
handshake/StatelessResetGenerator.cpp
|
||||||
|
handshake/TokenGenerator.cpp
|
||||||
state/ServerStateMachine.cpp)
|
state/ServerStateMachine.cpp)
|
||||||
|
|
||||||
target_include_directories(
|
target_include_directories(
|
||||||
|
@@ -3063,7 +3063,7 @@ TEST_F(
|
|||||||
|
|
||||||
folly::SocketAddress newPeer("100.101.102.103", 23456);
|
folly::SocketAddress newPeer("100.101.102.103", 23456);
|
||||||
|
|
||||||
EXPECT_CALL(handshakeFinishedCallback, onHandshakeUnfinished);
|
EXPECT_CALL(handshakeFinishedCallback, onHandshakeUnfinished());
|
||||||
try {
|
try {
|
||||||
recvClientFinished(true, &newPeer);
|
recvClientFinished(true, &newPeer);
|
||||||
} catch (const std::runtime_error& ex) {
|
} catch (const std::runtime_error& ex) {
|
||||||
@@ -3097,7 +3097,7 @@ TEST_F(
|
|||||||
auto data = IOBuf::copyBuffer("bad data");
|
auto data = IOBuf::copyBuffer("bad data");
|
||||||
folly::SocketAddress newPeer("100.101.102.103", 23456);
|
folly::SocketAddress newPeer("100.101.102.103", 23456);
|
||||||
|
|
||||||
EXPECT_CALL(handshakeFinishedCallback, onHandshakeUnfinished);
|
EXPECT_CALL(handshakeFinishedCallback, onHandshakeUnfinished());
|
||||||
try {
|
try {
|
||||||
recvClientFinished(true, &newPeer);
|
recvClientFinished(true, &newPeer);
|
||||||
} catch (const std::runtime_error& ex) {
|
} catch (const std::runtime_error& ex) {
|
||||||
@@ -3296,7 +3296,7 @@ TEST_F(
|
|||||||
*server->getNonConstConn().writableBytesLimit,
|
*server->getNonConstConn().writableBytesLimit,
|
||||||
server->getConn().transportSettings.limitedCwndInMss * originalUdpSize);
|
server->getConn().transportSettings.limitedCwndInMss * originalUdpSize);
|
||||||
|
|
||||||
EXPECT_CALL(handshakeFinishedCallback, onHandshakeFinished);
|
EXPECT_CALL(handshakeFinishedCallback, onHandshakeFinished());
|
||||||
recvClientFinished();
|
recvClientFinished();
|
||||||
loopForWrites();
|
loopForWrites();
|
||||||
EXPECT_EQ(server->getConn().writableBytesLimit, folly::none);
|
EXPECT_EQ(server->getConn().writableBytesLimit, folly::none);
|
||||||
@@ -3317,7 +3317,7 @@ TEST_F(
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(QuicUnencryptedServerTransportTest, TestSendHandshakeDone) {
|
TEST_F(QuicUnencryptedServerTransportTest, TestSendHandshakeDone) {
|
||||||
EXPECT_CALL(handshakeFinishedCallback, onHandshakeFinished);
|
EXPECT_CALL(handshakeFinishedCallback, onHandshakeFinished());
|
||||||
getFakeHandshakeLayer()->allowZeroRttKeys();
|
getFakeHandshakeLayer()->allowZeroRttKeys();
|
||||||
setupClientReadCodec();
|
setupClientReadCodec();
|
||||||
recvClientHello(true, QuicVersion::QUIC_DRAFT);
|
recvClientHello(true, QuicVersion::QUIC_DRAFT);
|
||||||
@@ -3535,7 +3535,7 @@ TEST_F(QuicUnencryptedServerTransportTest, TestCloseWhileAsyncPending) {
|
|||||||
IOBufEqualTo eq;
|
IOBufEqualTo eq;
|
||||||
EXPECT_TRUE(eq(getCryptoStreamData(), IOBuf::copyBuffer("SHLO")));
|
EXPECT_TRUE(eq(getCryptoStreamData(), IOBuf::copyBuffer("SHLO")));
|
||||||
|
|
||||||
EXPECT_CALL(handshakeFinishedCallback, onHandshakeUnfinished);
|
EXPECT_CALL(handshakeFinishedCallback, onHandshakeUnfinished());
|
||||||
recvClientFinished();
|
recvClientFinished();
|
||||||
|
|
||||||
server->close(std::make_pair(
|
server->close(std::make_pair(
|
||||||
@@ -3661,7 +3661,7 @@ TEST_P(
|
|||||||
EXPECT_EQ(server->getConn().streamManager->streamCount(), 0);
|
EXPECT_EQ(server->getConn().streamManager->streamCount(), 0);
|
||||||
EXPECT_EQ(server->getConn().pendingOneRttData->size(), 1);
|
EXPECT_EQ(server->getConn().pendingOneRttData->size(), 1);
|
||||||
|
|
||||||
EXPECT_CALL(handshakeFinishedCallback, onHandshakeFinished);
|
EXPECT_CALL(handshakeFinishedCallback, onHandshakeFinished());
|
||||||
recvClientFinished();
|
recvClientFinished();
|
||||||
EXPECT_EQ(server->getConn().streamManager->streamCount(), 1);
|
EXPECT_EQ(server->getConn().streamManager->streamCount(), 1);
|
||||||
EXPECT_EQ(server->getConn().pendingZeroRttData, nullptr);
|
EXPECT_EQ(server->getConn().pendingZeroRttData, nullptr);
|
||||||
@@ -3721,7 +3721,7 @@ TEST_P(
|
|||||||
GetParam().acceptZeroRtt ? 1 : 0);
|
GetParam().acceptZeroRtt ? 1 : 0);
|
||||||
EXPECT_EQ(server->getConn().pendingOneRttData->size(), 1);
|
EXPECT_EQ(server->getConn().pendingOneRttData->size(), 1);
|
||||||
|
|
||||||
EXPECT_CALL(handshakeFinishedCallback, onHandshakeFinished);
|
EXPECT_CALL(handshakeFinishedCallback, onHandshakeFinished());
|
||||||
recvClientFinished();
|
recvClientFinished();
|
||||||
EXPECT_EQ(
|
EXPECT_EQ(
|
||||||
server->getConn().streamManager->streamCount(),
|
server->getConn().streamManager->streamCount(),
|
||||||
@@ -3839,7 +3839,7 @@ class QuicServerTransportHandshakeTest
|
|||||||
EXPECT_CALL(routingCallback, onConnectionIdBound(_));
|
EXPECT_CALL(routingCallback, onConnectionIdBound(_));
|
||||||
// NST is always written after CFIN is processed
|
// NST is always written after CFIN is processed
|
||||||
expectWriteNewSessionTicket();
|
expectWriteNewSessionTicket();
|
||||||
EXPECT_CALL(handshakeFinishedCallback, onHandshakeFinished);
|
EXPECT_CALL(handshakeFinishedCallback, onHandshakeFinished());
|
||||||
recvClientFinished();
|
recvClientFinished();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3902,7 +3902,7 @@ TEST_P(QuicServerTransportHandshakeTest, TestD6DStartCallback) {
|
|||||||
TEST_F(QuicUnencryptedServerTransportTest, DuplicateOneRttWriteCipher) {
|
TEST_F(QuicUnencryptedServerTransportTest, DuplicateOneRttWriteCipher) {
|
||||||
setupClientReadCodec();
|
setupClientReadCodec();
|
||||||
recvClientHello();
|
recvClientHello();
|
||||||
EXPECT_CALL(handshakeFinishedCallback, onHandshakeFinished);
|
EXPECT_CALL(handshakeFinishedCallback, onHandshakeFinished());
|
||||||
recvClientFinished();
|
recvClientFinished();
|
||||||
loopForWrites();
|
loopForWrites();
|
||||||
try {
|
try {
|
||||||
|
@@ -54,6 +54,7 @@ target_link_libraries(
|
|||||||
|
|
||||||
add_library(
|
add_library(
|
||||||
mvfst_state_ack_handler
|
mvfst_state_ack_handler
|
||||||
|
AckEvent.cpp
|
||||||
AckHandlers.cpp
|
AckHandlers.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user