[unit-test] enhance TestMessage() to cover different reserved lengths (#12224)

This commit enhances the `TestMessage()` unit test by parameterizing
it to run with various reserved length values. The test is now
executed in a loop with a set of different headroom reservation
values.

This change improves test coverage for the `Message` class by
verifying that all its core operations function correctly when
messages are allocated with various initial reserved header lengths.
This commit is contained in:
Abtin Keshavarzian
2025-12-17 20:00:38 -08:00
committed by GitHub
parent 7bbff74893
commit dbdb2be2d1
+13 -7
View File
@@ -37,7 +37,7 @@
namespace ot { namespace ot {
void TestMessage(void) void TestMessage(uint16_t aReservedLength)
{ {
static constexpr uint16_t kMaxSize = (Buffer::kSize * 3 + 24); static constexpr uint16_t kMaxSize = (Buffer::kSize * 3 + 24);
static constexpr uint16_t kOffsetStep = 101; static constexpr uint16_t kOffsetStep = 101;
@@ -52,7 +52,7 @@ void TestMessage(void)
uint8_t readBuffer[kMaxSize]; uint8_t readBuffer[kMaxSize];
uint8_t zeroBuffer[kMaxSize]; uint8_t zeroBuffer[kMaxSize];
printf("TestMessage\n"); printf("TestMessage(aReservedLength: %u)\n", aReservedLength);
memset(zeroBuffer, 0, sizeof(zeroBuffer)); memset(zeroBuffer, 0, sizeof(zeroBuffer));
@@ -63,7 +63,7 @@ void TestMessage(void)
Random::NonCrypto::FillBuffer(writeBuffer, kMaxSize); Random::NonCrypto::FillBuffer(writeBuffer, kMaxSize);
VerifyOrQuit((message = messagePool->Allocate(Message::kTypeIp6)) != nullptr); VerifyOrQuit((message = messagePool->Allocate(Message::kTypeIp6, aReservedLength)) != nullptr);
message->SetLinkSecurityEnabled(kWithLinkSecurity); message->SetLinkSecurityEnabled(kWithLinkSecurity);
SuccessOrQuit(message->SetPriority(Message::Priority::kPriorityNet)); SuccessOrQuit(message->SetPriority(Message::Priority::kPriorityNet));
message->SetType(Message::Type::kType6lowpan); message->SetType(Message::Type::kType6lowpan);
@@ -187,7 +187,7 @@ void TestMessage(void)
// Test `WriteBytesFromMessage()` behavior copying between different // Test `WriteBytesFromMessage()` behavior copying between different
// messages. // messages.
VerifyOrQuit((message2 = messagePool->Allocate(Message::kTypeIp6)) != nullptr); VerifyOrQuit((message2 = messagePool->Allocate(Message::kTypeIp6, aReservedLength)) != nullptr);
SuccessOrQuit(message2->SetLength(kMaxSize)); SuccessOrQuit(message2->SetLength(kMaxSize));
for (uint16_t readOffset = 0; readOffset < kMaxSize; readOffset += kOffsetStep) for (uint16_t readOffset = 0; readOffset < kMaxSize; readOffset += kOffsetStep)
@@ -319,7 +319,7 @@ void TestMessage(void)
{ {
for (uint16_t length = 0; length <= kMaxSize - offset; length += kLengthStep) for (uint16_t length = 0; length <= kMaxSize - offset; length += kLengthStep)
{ {
VerifyOrQuit((message = messagePool->Allocate(Message::kTypeIp6)) != nullptr); VerifyOrQuit((message = messagePool->Allocate(Message::kTypeIp6, aReservedLength)) != nullptr);
SuccessOrQuit(message->AppendBytes(writeBuffer, kMaxSize)); SuccessOrQuit(message->AppendBytes(writeBuffer, kMaxSize));
message->RemoveHeader(offset, length); message->RemoveHeader(offset, length);
@@ -340,7 +340,7 @@ void TestMessage(void)
{ {
for (uint16_t length = 0; length <= kMaxSize; length += kLengthStep) for (uint16_t length = 0; length <= kMaxSize; length += kLengthStep)
{ {
VerifyOrQuit((message = messagePool->Allocate(Message::kTypeIp6)) != nullptr); VerifyOrQuit((message = messagePool->Allocate(Message::kTypeIp6, aReservedLength)) != nullptr);
SuccessOrQuit(message->AppendBytes(writeBuffer, kMaxSize)); SuccessOrQuit(message->AppendBytes(writeBuffer, kMaxSize));
SuccessOrQuit(message->InsertHeader(offset, length)); SuccessOrQuit(message->InsertHeader(offset, length));
@@ -452,7 +452,13 @@ void TestAppender(void)
int main(void) int main(void)
{ {
ot::TestMessage(); static const uint16_t kReserveLengths[] = {0, 33, 400};
for (uint16_t reservedLength : kReserveLengths)
{
ot::TestMessage(reservedLength);
}
ot::TestAppender(); ot::TestAppender();
printf("All tests passed\n"); printf("All tests passed\n");
return 0; return 0;