Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Updated unit tests in src/transport/raw/tests/ to use PW instead of NL. #33099

Merged
merged 27 commits into from
Apr 30, 2024
Merged
Changes from 1 commit
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
4645416
Updated unit tests in src/transport/tests/ to use PW instead of NL.
feasel0 Apr 22, 2024
69131f3
Updated unit tests in src/protocols/bdx/tests/ to use PW instead of NL
feasel0 Apr 22, 2024
da92b89
Updated unit tests in src/transport/raw/tests/ to use PW instead of NL.
feasel0 Apr 23, 2024
b9b1b96
Merge branch 'master' into feature/unittest-transport-raw-tests
feasel0 Apr 23, 2024
57b133c
Undid the accidental reformatting of the comments at the top.
feasel0 Apr 23, 2024
df65f8c
Update src/transport/raw/tests/TestTCP.cpp
feasel0 Apr 24, 2024
234d705
Update src/transport/raw/tests/TestUDP.cpp
feasel0 Apr 24, 2024
d175d3b
Changed some EXPECT_ to ASSERT_. Changed C-casts to unsigned literal…
feasel0 Apr 24, 2024
916faff
Merge branch 'feature/unittest-transport-raw-tests' of https://github…
feasel0 Apr 24, 2024
3a3ecc5
Resolved merge conflicts in test_components[_nl].txt
feasel0 Apr 24, 2024
d5090be
Merge branch 'master' into feature/unittest-transport-raw-tests
feasel0 Apr 24, 2024
cd84aa5
Added a destructor to TestUDP to delete the TestContext.
feasel0 Apr 25, 2024
130e766
Merge branch 'feature/unittest-transport-raw-tests' of https://github…
feasel0 Apr 25, 2024
400d0e5
Merge branch 'master' into feature/unittest-transport-raw-tests
feasel0 Apr 25, 2024
efd7808
Added destructor to TestTCP to delete the TestContext.
feasel0 Apr 25, 2024
27ac393
Merge branch 'feature/unittest-transport-raw-tests' of https://github…
feasel0 Apr 25, 2024
3490e83
Added destructor to TestTCP to delete TestContext.
feasel0 Apr 25, 2024
95bc984
Merge branch 'master' into feature/unittest-transport-raw-tests
feasel0 Apr 25, 2024
20408ba
Fixed issue with SystemLayerTests being listed multiple times.
feasel0 Apr 25, 2024
544888f
Merge branch 'master' into feature/unittest-transport-raw-tests
feasel0 Apr 25, 2024
603573a
Changed MemoryInit line to ASSERT instead of EXPECT. Added correspon…
feasel0 Apr 25, 2024
81f52e5
Merge branch 'feature/unittest-transport-raw-tests' of https://github…
feasel0 Apr 25, 2024
6b7af17
Inherited TCP test from IOContext so we don't have to create a new co…
feasel0 Apr 26, 2024
811f3b0
Moved ChckSimpleInitTest and CheckMessageTest into the test context c…
feasel0 Apr 29, 2024
11cc04c
Merge branch 'master' into feature/unittest-transport-raw-tests
feasel0 Apr 29, 2024
4681a06
Merge branch 'master' into feature/unittest-transport-raw-tests
feasel0 Apr 29, 2024
c13b7aa
Merge branch 'master' into feature/unittest-transport-raw-tests
feasel0 Apr 29, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Moved ChckSimpleInitTest and CheckMessageTest into the test context c…
…lass.
feasel0 committed Apr 29, 2024

Verified

This commit was signed with the committer’s verified signature.
pradyunsg Pradyun Gedam
commit 811f3b03b6f5138f1b0121a91643702c26db3c09
179 changes: 89 additions & 90 deletions src/transport/raw/tests/TestTCP.cpp
Original file line number Diff line number Diff line change
@@ -162,53 +162,53 @@ class MockTransportMgrDelegate : public chip::TransportMgrDelegate
class TestTCP : public ::testing::Test, public chip::Test::IOContext
{
protected:
void SetUp() { ASSERT_EQ(this->Init(), CHIP_NO_ERROR); }
void TearDown() { this->Shutdown(); }
};
void SetUp() { ASSERT_EQ(Init(), CHIP_NO_ERROR); }
void TearDown() { Shutdown(); }

void CheckSimpleInitTest(TestContext * ctx, Inet::IPAddressType type)
{
TCPImpl tcp;
void CheckSimpleInitTest(Inet::IPAddressType type)
{
TCPImpl tcp;

CHIP_ERROR err = tcp.Init(Transport::TcpListenParameters(ctx->GetTCPEndPointManager()).SetAddressType(type));
CHIP_ERROR err = tcp.Init(Transport::TcpListenParameters(GetTCPEndPointManager()).SetAddressType(type));

EXPECT_EQ(err, CHIP_NO_ERROR);
}
EXPECT_EQ(err, CHIP_NO_ERROR);
}

void CheckMessageTest(TestContext * ctx, const IPAddress & addr)
{
TCPImpl tcp;
void CheckMessageTest(const IPAddress & addr)
{
TCPImpl tcp;

MockTransportMgrDelegate gMockTransportMgrDelegate(ctx);
gMockTransportMgrDelegate.InitializeMessageTest(tcp, addr);
gMockTransportMgrDelegate.SingleMessageTest(tcp, addr);
gMockTransportMgrDelegate.FinalizeMessageTest(tcp, addr);
}
MockTransportMgrDelegate gMockTransportMgrDelegate(this);
gMockTransportMgrDelegate.InitializeMessageTest(tcp, addr);
gMockTransportMgrDelegate.SingleMessageTest(tcp, addr);
gMockTransportMgrDelegate.FinalizeMessageTest(tcp, addr);
}
};

#if INET_CONFIG_ENABLE_IPV4
TEST_F(TestTCP, CheckSimpleInitTest4)
{
CheckSimpleInitTest(this, IPAddressType::kIPv4);
CheckSimpleInitTest(IPAddressType::kIPv4);
}

TEST_F(TestTCP, CheckMessageTest4)
{
IPAddress addr;
IPAddress::FromString("127.0.0.1", addr);
CheckMessageTest(this, addr);
CheckMessageTest(addr);
}
#endif

TEST_F(TestTCP, CheckSimpleInitTest6)
{
CheckSimpleInitTest(this, IPAddressType::kIPv6);
CheckSimpleInitTest(IPAddressType::kIPv6);
}

TEST_F(TestTCP, CheckMessageTest6)
{
IPAddress addr;
IPAddress::FromString("::1", addr);
CheckMessageTest(this, addr);
CheckMessageTest(addr);
}

// Generates a packet buffer or a chain of packet buffers for a single message.
@@ -367,78 +367,77 @@ namespace Transport {
class TCPTest
{
public:
static void CheckProcessReceivedBuffer(TestContext * ctx);
static void CheckProcessReceivedBuffer(TestContext * ctx)
{
TCPImpl tcp;

IPAddress addr;
IPAddress::FromString("::1", addr);

MockTransportMgrDelegate gMockTransportMgrDelegate(ctx);
gMockTransportMgrDelegate.InitializeMessageTest(tcp, addr);

// Send a packet to get TCP going, so that we can find a TCPEndPoint to pass to ProcessReceivedBuffer.
// (The current TCPEndPoint implementation is not effectively mockable.)
gMockTransportMgrDelegate.SingleMessageTest(tcp, addr);

Transport::PeerAddress lPeerAddress = Transport::PeerAddress::TCP(addr);
TCPBase::ActiveConnectionState * state = tcp.FindActiveConnection(lPeerAddress);
ASSERT_NE(state, nullptr);
Inet::TCPEndPoint * lEndPoint = state->mEndPoint;
ASSERT_NE(lEndPoint, nullptr);

CHIP_ERROR err = CHIP_NO_ERROR;
TestData testData[2];
gMockTransportMgrDelegate.SetCallback(TestDataCallbackCheck, testData);

// Test a single packet buffer.
gMockTransportMgrDelegate.mReceiveHandlerCallCount = 0;
EXPECT_TRUE(testData[0].Init((const uint16_t[]){ 111, 0 }));
err = tcp.ProcessReceivedBuffer(lEndPoint, lPeerAddress, std::move(testData[0].mHandle));
EXPECT_EQ(err, CHIP_NO_ERROR);
EXPECT_EQ(gMockTransportMgrDelegate.mReceiveHandlerCallCount, 1);

// Test a message in a chain of three packet buffers. The message length is split across buffers.
gMockTransportMgrDelegate.mReceiveHandlerCallCount = 0;
EXPECT_TRUE(testData[0].Init((const uint16_t[]){ 1, 122, 123, 0 }));
err = tcp.ProcessReceivedBuffer(lEndPoint, lPeerAddress, std::move(testData[0].mHandle));
EXPECT_EQ(err, CHIP_NO_ERROR);
EXPECT_EQ(gMockTransportMgrDelegate.mReceiveHandlerCallCount, 1);

// Test two messages in a chain.
gMockTransportMgrDelegate.mReceiveHandlerCallCount = 0;
EXPECT_TRUE(testData[0].Init((const uint16_t[]){ 131, 0 }));
EXPECT_TRUE(testData[1].Init((const uint16_t[]){ 132, 0 }));
testData[0].mHandle->AddToEnd(std::move(testData[1].mHandle));
err = tcp.ProcessReceivedBuffer(lEndPoint, lPeerAddress, std::move(testData[0].mHandle));
EXPECT_EQ(err, CHIP_NO_ERROR);
EXPECT_EQ(gMockTransportMgrDelegate.mReceiveHandlerCallCount, 2);

// Test a chain of two messages, each a chain.
gMockTransportMgrDelegate.mReceiveHandlerCallCount = 0;
EXPECT_TRUE(testData[0].Init((const uint16_t[]){ 141, 142, 0 }));
EXPECT_TRUE(testData[1].Init((const uint16_t[]){ 143, 144, 0 }));
testData[0].mHandle->AddToEnd(std::move(testData[1].mHandle));
err = tcp.ProcessReceivedBuffer(lEndPoint, lPeerAddress, std::move(testData[0].mHandle));
EXPECT_EQ(err, CHIP_NO_ERROR);
EXPECT_EQ(gMockTransportMgrDelegate.mReceiveHandlerCallCount, 2);

// Test a message that is too large to coalesce into a single packet buffer.
gMockTransportMgrDelegate.mReceiveHandlerCallCount = 0;
gMockTransportMgrDelegate.SetCallback(TestDataCallbackCheck, &testData[1]);
EXPECT_TRUE(testData[0].Init((const uint16_t[]){ 51, System::PacketBuffer::kMaxSizeWithoutReserve, 0 }));
// Sending only the first buffer of the long chain. This should be enough to trigger the error.
System::PacketBufferHandle head = testData[0].mHandle.PopHead();
err = tcp.ProcessReceivedBuffer(lEndPoint, lPeerAddress, std::move(head));
EXPECT_EQ(err, CHIP_ERROR_MESSAGE_TOO_LONG);
EXPECT_EQ(gMockTransportMgrDelegate.mReceiveHandlerCallCount, 0);

gMockTransportMgrDelegate.FinalizeMessageTest(tcp, addr);
}
};
} // namespace Transport
} // namespace chip
void chip::Transport::TCPTest::CheckProcessReceivedBuffer(TestContext * ctx)
{
TCPImpl tcp;

IPAddress addr;
IPAddress::FromString("::1", addr);

MockTransportMgrDelegate gMockTransportMgrDelegate(ctx);
gMockTransportMgrDelegate.InitializeMessageTest(tcp, addr);

// Send a packet to get TCP going, so that we can find a TCPEndPoint to pass to ProcessReceivedBuffer.
// (The current TCPEndPoint implementation is not effectively mockable.)
gMockTransportMgrDelegate.SingleMessageTest(tcp, addr);

Transport::PeerAddress lPeerAddress = Transport::PeerAddress::TCP(addr);
TCPBase::ActiveConnectionState * state = tcp.FindActiveConnection(lPeerAddress);
ASSERT_NE(state, nullptr);
Inet::TCPEndPoint * lEndPoint = state->mEndPoint;
ASSERT_NE(lEndPoint, nullptr);

CHIP_ERROR err = CHIP_NO_ERROR;
TestData testData[2];
gMockTransportMgrDelegate.SetCallback(TestDataCallbackCheck, testData);

// Test a single packet buffer.
gMockTransportMgrDelegate.mReceiveHandlerCallCount = 0;
EXPECT_TRUE(testData[0].Init((const uint16_t[]){ 111, 0 }));
err = tcp.ProcessReceivedBuffer(lEndPoint, lPeerAddress, std::move(testData[0].mHandle));
EXPECT_EQ(err, CHIP_NO_ERROR);
EXPECT_EQ(gMockTransportMgrDelegate.mReceiveHandlerCallCount, 1);

// Test a message in a chain of three packet buffers. The message length is split across buffers.
gMockTransportMgrDelegate.mReceiveHandlerCallCount = 0;
EXPECT_TRUE(testData[0].Init((const uint16_t[]){ 1, 122, 123, 0 }));
err = tcp.ProcessReceivedBuffer(lEndPoint, lPeerAddress, std::move(testData[0].mHandle));
EXPECT_EQ(err, CHIP_NO_ERROR);
EXPECT_EQ(gMockTransportMgrDelegate.mReceiveHandlerCallCount, 1);

// Test two messages in a chain.
gMockTransportMgrDelegate.mReceiveHandlerCallCount = 0;
EXPECT_TRUE(testData[0].Init((const uint16_t[]){ 131, 0 }));
EXPECT_TRUE(testData[1].Init((const uint16_t[]){ 132, 0 }));
testData[0].mHandle->AddToEnd(std::move(testData[1].mHandle));
err = tcp.ProcessReceivedBuffer(lEndPoint, lPeerAddress, std::move(testData[0].mHandle));
EXPECT_EQ(err, CHIP_NO_ERROR);
EXPECT_EQ(gMockTransportMgrDelegate.mReceiveHandlerCallCount, 2);

// Test a chain of two messages, each a chain.
gMockTransportMgrDelegate.mReceiveHandlerCallCount = 0;
EXPECT_TRUE(testData[0].Init((const uint16_t[]){ 141, 142, 0 }));
EXPECT_TRUE(testData[1].Init((const uint16_t[]){ 143, 144, 0 }));
testData[0].mHandle->AddToEnd(std::move(testData[1].mHandle));
err = tcp.ProcessReceivedBuffer(lEndPoint, lPeerAddress, std::move(testData[0].mHandle));
EXPECT_EQ(err, CHIP_NO_ERROR);
EXPECT_EQ(gMockTransportMgrDelegate.mReceiveHandlerCallCount, 2);

// Test a message that is too large to coalesce into a single packet buffer.
gMockTransportMgrDelegate.mReceiveHandlerCallCount = 0;
gMockTransportMgrDelegate.SetCallback(TestDataCallbackCheck, &testData[1]);
EXPECT_TRUE(testData[0].Init((const uint16_t[]){ 51, System::PacketBuffer::kMaxSizeWithoutReserve, 0 }));
// Sending only the first buffer of the long chain. This should be enough to trigger the error.
System::PacketBufferHandle head = testData[0].mHandle.PopHead();
err = tcp.ProcessReceivedBuffer(lEndPoint, lPeerAddress, std::move(head));
EXPECT_EQ(err, CHIP_ERROR_MESSAGE_TOO_LONG);
EXPECT_EQ(gMockTransportMgrDelegate.mReceiveHandlerCallCount, 0);

gMockTransportMgrDelegate.FinalizeMessageTest(tcp, addr);
}

TEST_F(TestTCP, CheckProcessReceivedBuffer)
{