From bafa47abbac1f1607756fc9d25cdb24de7a4bf63 Mon Sep 17 00:00:00 2001 From: Jeff Feasel Date: Sun, 21 Apr 2024 17:57:41 -0400 Subject: [PATCH 1/6] Updated unit tests in src/protocols/bdx/tests/ to use PW instead of NL. --- src/protocols/bdx/tests/BUILD.gn | 6 +- src/protocols/bdx/tests/TestBdxMessages.cpp | 117 ++---- .../bdx/tests/TestBdxTransferSession.cpp | 357 ++++++++---------- src/protocols/bdx/tests/TestBdxUri.cpp | 63 ++-- 4 files changed, 212 insertions(+), 331 deletions(-) diff --git a/src/protocols/bdx/tests/BUILD.gn b/src/protocols/bdx/tests/BUILD.gn index 59d5f01d35a9c1..9e415b7012c3c0 100644 --- a/src/protocols/bdx/tests/BUILD.gn +++ b/src/protocols/bdx/tests/BUILD.gn @@ -14,11 +14,11 @@ import("//build_overrides/build.gni") import("//build_overrides/chip.gni") -import("//build_overrides/nlunit_test.gni") +import("//build_overrides/pigweed.gni") import("${chip_root}/build/chip/chip_test_suite.gni") -chip_test_suite_using_nltest("tests") { +chip_test_suite("tests") { output_name = "libBDXTests" test_sources = [ @@ -30,9 +30,7 @@ chip_test_suite_using_nltest("tests") { public_deps = [ "${chip_root}/src/lib/core", "${chip_root}/src/lib/support", - "${chip_root}/src/lib/support:testing_nlunit", "${chip_root}/src/protocols/bdx", - "${nlunit_test_root}:nlunit-test", ] cflags = [ "-Wconversion" ] diff --git a/src/protocols/bdx/tests/TestBdxMessages.cpp b/src/protocols/bdx/tests/TestBdxMessages.cpp index 1a6d2c4643fb2e..932d4704bd71f9 100644 --- a/src/protocols/bdx/tests/TestBdxMessages.cpp +++ b/src/protocols/bdx/tests/TestBdxMessages.cpp @@ -1,11 +1,10 @@ #include -#include +#include #include #include #include -#include #include @@ -17,29 +16,43 @@ using namespace chip::bdx; * is identical to the origianl. */ template -void TestHelperWrittenAndParsedMatch(nlTestSuite * inSuite, void * inContext, MsgType & testMsg) +void TestHelperWrittenAndParsedMatch(MsgType & testMsg) { CHIP_ERROR err = CHIP_NO_ERROR; size_t msgSize = testMsg.MessageSize(); Encoding::LittleEndian::PacketBufferWriter bbuf(System::PacketBufferHandle::New(msgSize)); - NL_TEST_ASSERT(inSuite, !bbuf.IsNull()); + EXPECT_FALSE(bbuf.IsNull()); testMsg.WriteToBuffer(bbuf); - NL_TEST_ASSERT(inSuite, bbuf.Fit()); + EXPECT_TRUE(bbuf.Fit()); System::PacketBufferHandle msgBuf = bbuf.Finalize(); - NL_TEST_ASSERT(inSuite, !msgBuf.IsNull()); + EXPECT_FALSE(msgBuf.IsNull()); System::PacketBufferHandle rcvBuf = System::PacketBufferHandle::NewWithData(msgBuf->Start(), msgSize); - NL_TEST_ASSERT(inSuite, !rcvBuf.IsNull()); + EXPECT_FALSE(rcvBuf.IsNull()); MsgType testMsgRcvd; err = testMsgRcvd.Parse(std::move(rcvBuf)); - NL_TEST_ASSERT(inSuite, err == CHIP_NO_ERROR); - NL_TEST_ASSERT(inSuite, testMsgRcvd == testMsg); + EXPECT_EQ(err, CHIP_NO_ERROR); + EXPECT_EQ(testMsgRcvd, testMsg); } -void TestTransferInitMessage(nlTestSuite * inSuite, void * inContext) +struct TestBdxMessages : public ::testing::Test +{ + static void SetUpTestSuite() + { + CHIP_ERROR error = chip::Platform::MemoryInit(); + EXPECT_EQ(error, CHIP_NO_ERROR); + } + + static void TearDownTestSuite() + { + chip::Platform::MemoryShutdown(); + } +}; + +TEST_F(TestBdxMessages, TestTransferInitMessage) { TransferInit testMsg; @@ -60,10 +73,10 @@ void TestTransferInitMessage(nlTestSuite * inSuite, void * inContext) testMsg.MetadataLength = 5; testMsg.Metadata = reinterpret_cast(fakeData); - TestHelperWrittenAndParsedMatch(inSuite, inContext, testMsg); + TestHelperWrittenAndParsedMatch(testMsg); } -void TestSendAcceptMessage(nlTestSuite * inSuite, void * inContext) +TEST_F(TestBdxMessages, TestSendAcceptMessage) { SendAccept testMsg; @@ -75,10 +88,10 @@ void TestSendAcceptMessage(nlTestSuite * inSuite, void * inContext) testMsg.MetadataLength = 5; testMsg.Metadata = reinterpret_cast(fakeData); - TestHelperWrittenAndParsedMatch(inSuite, inContext, testMsg); + TestHelperWrittenAndParsedMatch(testMsg); } -void TestReceiveAcceptMessage(nlTestSuite * inSuite, void * inContext) +TEST_F(TestBdxMessages, TestReceiveAcceptMessage) { ReceiveAccept testMsg; @@ -95,19 +108,19 @@ void TestReceiveAcceptMessage(nlTestSuite * inSuite, void * inContext) testMsg.MetadataLength = 5; testMsg.Metadata = reinterpret_cast(fakeData); - TestHelperWrittenAndParsedMatch(inSuite, inContext, testMsg); + TestHelperWrittenAndParsedMatch(testMsg); } -void TestCounterMessage(nlTestSuite * inSuite, void * inContext) +TEST_F(TestBdxMessages, TestCounterMessage) { CounterMessage testMsg; testMsg.BlockCounter = 4; - TestHelperWrittenAndParsedMatch(inSuite, inContext, testMsg); + TestHelperWrittenAndParsedMatch(testMsg); } -void TestDataBlockMessage(nlTestSuite * inSuite, void * inContext) +TEST_F(TestBdxMessages, TestDataBlockMessage) { DataBlock testMsg; @@ -116,77 +129,15 @@ void TestDataBlockMessage(nlTestSuite * inSuite, void * inContext) testMsg.DataLength = 5; testMsg.Data = reinterpret_cast(fakeData); - TestHelperWrittenAndParsedMatch(inSuite, inContext, testMsg); + TestHelperWrittenAndParsedMatch(testMsg); } -void TestBlockQueryWithSkipMessage(nlTestSuite * inSuite, void * inContext) +TEST_F(TestBdxMessages, TestBlockQueryWithSkipMessage) { BlockQueryWithSkip testMsg; testMsg.BlockCounter = 5; testMsg.BytesToSkip = 16; - TestHelperWrittenAndParsedMatch(inSuite, inContext, testMsg); + TestHelperWrittenAndParsedMatch(testMsg); } - -// Test Suite - -/** - * Test Suite that lists all the test functions. - */ -// clang-format off -static const nlTest sTests[] = -{ - NL_TEST_DEF("TestTransferInitMessage", TestTransferInitMessage), - NL_TEST_DEF("TestSendAcceptMessage", TestSendAcceptMessage), - NL_TEST_DEF("TestReceiveAcceptMessage", TestReceiveAcceptMessage), - NL_TEST_DEF("TestCounterMessage", TestCounterMessage), - NL_TEST_DEF("TestDataBlockMessage", TestDataBlockMessage), - NL_TEST_DEF("TestBlockQueryWithSkipMessage", TestBlockQueryWithSkipMessage), - - NL_TEST_SENTINEL() -}; -// clang-format on - -/** - * Set up the test suite. - */ -static int TestSetup(void * inContext) -{ - CHIP_ERROR error = chip::Platform::MemoryInit(); - if (error != CHIP_NO_ERROR) - return FAILURE; - return SUCCESS; -} - -/** - * Tear down the test suite. - */ -static int TestTeardown(void * inContext) -{ - chip::Platform::MemoryShutdown(); - return SUCCESS; -} - -// clang-format off -static nlTestSuite sSuite = -{ - "Test-CHIP-BdxMessages", - &sTests[0], - TestSetup, - TestTeardown, -}; -// clang-format on - -/** - * Main - */ -int TestBdxMessages() -{ - // Run test suit against one context - nlTestRunner(&sSuite, nullptr); - - return (nlTestRunnerStats(&sSuite)); -} - -CHIP_REGISTER_TEST_SUITE(TestBdxMessages) diff --git a/src/protocols/bdx/tests/TestBdxTransferSession.cpp b/src/protocols/bdx/tests/TestBdxTransferSession.cpp index 9be2d7f5ffc885..de7f3a351522eb 100644 --- a/src/protocols/bdx/tests/TestBdxTransferSession.cpp +++ b/src/protocols/bdx/tests/TestBdxTransferSession.cpp @@ -4,13 +4,12 @@ #include -#include +#include #include #include #include #include -#include #include #include #include @@ -48,7 +47,7 @@ CHIP_ERROR WriteTLVString(uint8_t * buf, uint32_t bufLen, const char * data, uin } // Helper method: read a TLV structure with a single tag and string and verify it matches expected string. -CHIP_ERROR ReadAndVerifyTLVString(nlTestSuite * inSuite, void * inContext, const uint8_t * dataStart, uint32_t len, +CHIP_ERROR ReadAndVerifyTLVString(const uint8_t * dataStart, uint32_t len, const char * expected, size_t expectedLen) { TLV::TLVReader reader; @@ -91,53 +90,53 @@ CHIP_ERROR AttachHeaderAndSend(TransferSession::MessageTypeData typeData, chip:: } // Helper method for verifying that a PacketBufferHandle contains a valid BDX header and message type matches expected. -void VerifyBdxMessageToSend(nlTestSuite * inSuite, void * inContext, const TransferSession::OutputEvent & outEvent, +void VerifyBdxMessageToSend(const TransferSession::OutputEvent & outEvent, MessageType expected) { static_assert(std::is_same, uint8_t>::value, "Cast is not safe"); - NL_TEST_ASSERT(inSuite, outEvent.EventType == TransferSession::OutputEventType::kMsgToSend); - NL_TEST_ASSERT(inSuite, !outEvent.MsgData.IsNull()); - NL_TEST_ASSERT(inSuite, outEvent.msgTypeData.ProtocolId == Protocols::BDX::Id); - NL_TEST_ASSERT(inSuite, outEvent.msgTypeData.MessageType == static_cast(expected)); + EXPECT_EQ(outEvent.EventType, TransferSession::OutputEventType::kMsgToSend); + EXPECT_FALSE(outEvent.MsgData.IsNull()); + EXPECT_EQ(outEvent.msgTypeData.ProtocolId, Protocols::BDX::Id); + EXPECT_EQ(outEvent.msgTypeData.MessageType, static_cast(expected)); } // Helper method for verifying that a PacketBufferHandle contains a valid StatusReport message and contains a specific StatusCode. // The msg argument is expected to begin at the message data start, not at the PayloadHeader. -void VerifyStatusReport(nlTestSuite * inSuite, void * inContext, const System::PacketBufferHandle & msg, StatusCode expectedCode) +void VerifyStatusReport(const System::PacketBufferHandle & msg, StatusCode expectedCode) { CHIP_ERROR err = CHIP_NO_ERROR; if (msg.IsNull()) { - NL_TEST_ASSERT(inSuite, false); + EXPECT_TRUE(false); return; } System::PacketBufferHandle msgCopy = msg.CloneData(); if (msgCopy.IsNull()) { - NL_TEST_ASSERT(inSuite, false); + EXPECT_TRUE(false); return; } SecureChannel::StatusReport report; err = report.Parse(std::move(msgCopy)); - NL_TEST_ASSERT(inSuite, err == CHIP_NO_ERROR); - NL_TEST_ASSERT(inSuite, report.GetGeneralCode() == SecureChannel::GeneralStatusCode::kFailure); - NL_TEST_ASSERT(inSuite, report.GetProtocolId() == Protocols::BDX::Id); - NL_TEST_ASSERT(inSuite, report.GetProtocolCode() == static_cast(expectedCode)); + EXPECT_EQ(err, CHIP_NO_ERROR); + EXPECT_EQ(report.GetGeneralCode(), SecureChannel::GeneralStatusCode::kFailure); + EXPECT_EQ(report.GetProtocolId(), Protocols::BDX::Id); + EXPECT_EQ(report.GetProtocolCode(), static_cast(expectedCode)); } -void VerifyNoMoreOutput(nlTestSuite * inSuite, void * inContext, TransferSession & transferSession) +void VerifyNoMoreOutput(TransferSession & transferSession) { TransferSession::OutputEvent event; transferSession.PollOutput(event, kNoAdvanceTime); - NL_TEST_ASSERT(inSuite, event.EventType == TransferSession::OutputEventType::kNone); + EXPECT_EQ(event.EventType, TransferSession::OutputEventType::kNone); } // Helper method for initializing two TransferSession objects, generating a TransferInit message, and passing it to a responding // TransferSession. -void SendAndVerifyTransferInit(nlTestSuite * inSuite, void * inContext, TransferSession::OutputEvent & outEvent, +void SendAndVerifyTransferInit(TransferSession::OutputEvent & outEvent, System::Clock::Timeout timeout, TransferSession & initiator, TransferRole initiatorRole, TransferSession::TransferInitData initData, TransferSession & responder, BitFlags & responderControlOpts, uint16_t responderMaxBlock) @@ -148,39 +147,37 @@ void SendAndVerifyTransferInit(nlTestSuite * inSuite, void * inContext, Transfer // Initializer responder to wait for transfer err = responder.WaitForTransfer(responderRole, responderControlOpts, responderMaxBlock, timeout); - NL_TEST_ASSERT(inSuite, err == CHIP_NO_ERROR); - VerifyNoMoreOutput(inSuite, inContext, responder); + EXPECT_EQ(err, CHIP_NO_ERROR); + VerifyNoMoreOutput(responder); // Verify initiator outputs respective Init message (depending on role) after StartTransfer() err = initiator.StartTransfer(initiatorRole, initData, timeout); - NL_TEST_ASSERT(inSuite, err == CHIP_NO_ERROR); + EXPECT_EQ(err, CHIP_NO_ERROR); initiator.PollOutput(outEvent, kNoAdvanceTime); - NL_TEST_ASSERT(inSuite, outEvent.EventType == TransferSession::OutputEventType::kMsgToSend); - VerifyBdxMessageToSend(inSuite, inContext, outEvent, expectedInitMsg); - VerifyNoMoreOutput(inSuite, inContext, initiator); + EXPECT_EQ(outEvent.EventType, TransferSession::OutputEventType::kMsgToSend); + VerifyBdxMessageToSend(outEvent, expectedInitMsg); + VerifyNoMoreOutput(initiator); // Verify that all parsed TransferInit fields match what was sent by the initiator err = AttachHeaderAndSend(outEvent.msgTypeData, std::move(outEvent.MsgData), responder); - NL_TEST_ASSERT(inSuite, err == CHIP_NO_ERROR); + EXPECT_EQ(err, CHIP_NO_ERROR); responder.PollOutput(outEvent, kNoAdvanceTime); - VerifyNoMoreOutput(inSuite, inContext, responder); - NL_TEST_ASSERT(inSuite, outEvent.EventType == TransferSession::OutputEventType::kInitReceived); - NL_TEST_ASSERT(inSuite, outEvent.transferInitData.TransferCtlFlags == initData.TransferCtlFlags); - NL_TEST_ASSERT(inSuite, outEvent.transferInitData.MaxBlockSize == initData.MaxBlockSize); - NL_TEST_ASSERT(inSuite, outEvent.transferInitData.StartOffset == initData.StartOffset); - NL_TEST_ASSERT(inSuite, outEvent.transferInitData.Length == initData.Length); - NL_TEST_ASSERT(inSuite, outEvent.transferInitData.FileDesignator != nullptr); - NL_TEST_ASSERT(inSuite, outEvent.transferInitData.FileDesLength == initData.FileDesLength); + VerifyNoMoreOutput(responder); + EXPECT_EQ(outEvent.EventType, TransferSession::OutputEventType::kInitReceived); + EXPECT_EQ(outEvent.transferInitData.TransferCtlFlags, initData.TransferCtlFlags); + EXPECT_EQ(outEvent.transferInitData.MaxBlockSize, initData.MaxBlockSize); + EXPECT_EQ(outEvent.transferInitData.StartOffset, initData.StartOffset); + EXPECT_EQ(outEvent.transferInitData.Length, initData.Length); + EXPECT_NE(outEvent.transferInitData.FileDesignator, nullptr); + EXPECT_EQ(outEvent.transferInitData.FileDesLength, initData.FileDesLength); if (outEvent.EventType == TransferSession::OutputEventType::kInitReceived && outEvent.transferInitData.FileDesignator != nullptr) { - NL_TEST_ASSERT( - inSuite, - !memcmp(initData.FileDesignator, outEvent.transferInitData.FileDesignator, outEvent.transferInitData.FileDesLength)); + EXPECT_EQ(0, memcmp(initData.FileDesignator, outEvent.transferInitData.FileDesignator, outEvent.transferInitData.FileDesLength)); } if (outEvent.transferInitData.Metadata != nullptr) { - NL_TEST_ASSERT(inSuite, outEvent.transferInitData.MetadataLength == initData.MetadataLength); + EXPECT_EQ(outEvent.transferInitData.MetadataLength, initData.MetadataLength); if (outEvent.transferInitData.MetadataLength == initData.MetadataLength) { // Even if initData.MetadataLength is 0, it is still technically undefined behaviour to call memcmp with a null @@ -189,14 +186,12 @@ void SendAndVerifyTransferInit(nlTestSuite * inSuite, void * inContext, Transfer { // Only check that metadata buffers match. The OutputEvent can still be inspected when this function returns to // parse the metadata and verify that it matches. - NL_TEST_ASSERT( - inSuite, - !memcmp(initData.Metadata, outEvent.transferInitData.Metadata, outEvent.transferInitData.MetadataLength)); + EXPECT_EQ(0, memcmp(initData.Metadata, outEvent.transferInitData.Metadata, outEvent.transferInitData.MetadataLength)); } } else { - NL_TEST_ASSERT(inSuite, false); // Metadata length mismatch + EXPECT_TRUE(false); // Metadata length mismatch } } } @@ -207,7 +202,7 @@ void SendAndVerifyTransferInit(nlTestSuite * inSuite, void * inContext, Transfer // receiver should emit a StatusCode event instead. // // The acceptSender is the node that is sending the Accept message (not necessarily the same node that will send Blocks). -void SendAndVerifyAcceptMsg(nlTestSuite * inSuite, void * inContext, TransferSession::OutputEvent & outEvent, +void SendAndVerifyAcceptMsg(TransferSession::OutputEvent & outEvent, TransferSession & acceptSender, TransferRole acceptSenderRole, TransferSession::TransferAcceptData acceptData, TransferSession & acceptReceiver, TransferSession::TransferInitData initData) @@ -218,31 +213,31 @@ void SendAndVerifyAcceptMsg(nlTestSuite * inSuite, void * inContext, TransferSes MessageType expectedMsg = (acceptSenderRole == TransferRole::kSender) ? MessageType::ReceiveAccept : MessageType::SendAccept; err = acceptSender.AcceptTransfer(acceptData); - NL_TEST_ASSERT(inSuite, err == CHIP_NO_ERROR); + EXPECT_EQ(err, CHIP_NO_ERROR); // Verify Sender emits ReceiveAccept message for sending acceptSender.PollOutput(outEvent, kNoAdvanceTime); - VerifyNoMoreOutput(inSuite, inContext, acceptSender); - NL_TEST_ASSERT(inSuite, outEvent.EventType == TransferSession::OutputEventType::kMsgToSend); - VerifyBdxMessageToSend(inSuite, inContext, outEvent, expectedMsg); + VerifyNoMoreOutput(acceptSender); + EXPECT_EQ(outEvent.EventType, TransferSession::OutputEventType::kMsgToSend); + VerifyBdxMessageToSend(outEvent, expectedMsg); // Pass Accept message to acceptReceiver err = AttachHeaderAndSend(outEvent.msgTypeData, std::move(outEvent.MsgData), acceptReceiver); - NL_TEST_ASSERT(inSuite, err == CHIP_NO_ERROR); + EXPECT_EQ(err, CHIP_NO_ERROR); // Verify received ReceiveAccept. // Client may want to inspect TransferControl, MaxBlockSize, StartOffset, Length, and Metadata, and may choose to reject the // Transfer at this point. acceptReceiver.PollOutput(outEvent, kNoAdvanceTime); - VerifyNoMoreOutput(inSuite, inContext, acceptReceiver); - NL_TEST_ASSERT(inSuite, outEvent.EventType == TransferSession::OutputEventType::kAcceptReceived); - NL_TEST_ASSERT(inSuite, outEvent.transferAcceptData.ControlMode == acceptData.ControlMode); - NL_TEST_ASSERT(inSuite, outEvent.transferAcceptData.MaxBlockSize == acceptData.MaxBlockSize); - NL_TEST_ASSERT(inSuite, outEvent.transferAcceptData.StartOffset == acceptData.StartOffset); - NL_TEST_ASSERT(inSuite, outEvent.transferAcceptData.Length == acceptData.Length); + VerifyNoMoreOutput(acceptReceiver); + EXPECT_EQ(outEvent.EventType, TransferSession::OutputEventType::kAcceptReceived); + EXPECT_EQ(outEvent.transferAcceptData.ControlMode, acceptData.ControlMode); + EXPECT_EQ(outEvent.transferAcceptData.MaxBlockSize, acceptData.MaxBlockSize); + EXPECT_EQ(outEvent.transferAcceptData.StartOffset, acceptData.StartOffset); + EXPECT_EQ(outEvent.transferAcceptData.Length, acceptData.Length); if (outEvent.transferAcceptData.Metadata != nullptr) { - NL_TEST_ASSERT(inSuite, outEvent.transferAcceptData.MetadataLength == acceptData.MetadataLength); + EXPECT_EQ(outEvent.transferAcceptData.MetadataLength, acceptData.MetadataLength); if (outEvent.transferAcceptData.MetadataLength == acceptData.MetadataLength) { // Even if acceptData.MetadataLength is 0, it is still technically undefined behaviour to call memcmp with a null @@ -251,55 +246,53 @@ void SendAndVerifyAcceptMsg(nlTestSuite * inSuite, void * inContext, TransferSes { // Only check that metadata buffers match. The OutputEvent can still be inspected when this function returns to // parse the metadata and verify that it matches. - NL_TEST_ASSERT( - inSuite, - !memcmp(acceptData.Metadata, outEvent.transferAcceptData.Metadata, outEvent.transferAcceptData.MetadataLength)); + EXPECT_EQ(0, memcmp(acceptData.Metadata, outEvent.transferAcceptData.Metadata, outEvent.transferAcceptData.MetadataLength)); } } else { - NL_TEST_ASSERT(inSuite, false); // Metadata length mismatch + EXPECT_TRUE(false); // Metadata length mismatch } } // Verify that MaxBlockSize was set appropriately - NL_TEST_ASSERT(inSuite, acceptReceiver.GetTransferBlockSize() <= initData.MaxBlockSize); + EXPECT_LE(acceptReceiver.GetTransferBlockSize(), initData.MaxBlockSize); } // Helper method for preparing a sending a BlockQuery message between two TransferSession objects. -void SendAndVerifyQuery(nlTestSuite * inSuite, void * inContext, TransferSession & queryReceiver, TransferSession & querySender, +void SendAndVerifyQuery(TransferSession & queryReceiver, TransferSession & querySender, TransferSession::OutputEvent & outEvent) { // Verify that querySender emits BlockQuery message CHIP_ERROR err = querySender.PrepareBlockQuery(); - NL_TEST_ASSERT(inSuite, err == CHIP_NO_ERROR); + EXPECT_EQ(err, CHIP_NO_ERROR); querySender.PollOutput(outEvent, kNoAdvanceTime); - NL_TEST_ASSERT(inSuite, outEvent.EventType == TransferSession::OutputEventType::kMsgToSend); - VerifyBdxMessageToSend(inSuite, inContext, outEvent, MessageType::BlockQuery); - VerifyNoMoreOutput(inSuite, inContext, querySender); + EXPECT_EQ(outEvent.EventType, TransferSession::OutputEventType::kMsgToSend); + VerifyBdxMessageToSend(outEvent, MessageType::BlockQuery); + VerifyNoMoreOutput(querySender); // Pass BlockQuery to queryReceiver and verify queryReceiver emits QueryReceived event err = AttachHeaderAndSend(outEvent.msgTypeData, std::move(outEvent.MsgData), queryReceiver); - NL_TEST_ASSERT(inSuite, err == CHIP_NO_ERROR); + EXPECT_EQ(err, CHIP_NO_ERROR); queryReceiver.PollOutput(outEvent, kNoAdvanceTime); - NL_TEST_ASSERT(inSuite, outEvent.EventType == TransferSession::OutputEventType::kQueryReceived); - VerifyNoMoreOutput(inSuite, inContext, queryReceiver); + EXPECT_EQ(outEvent.EventType, TransferSession::OutputEventType::kQueryReceived); + VerifyNoMoreOutput(queryReceiver); } // Helper method for preparing a sending a Block message between two TransferSession objects. The sender refers to the node that is // sending Blocks. Uses a static counter incremented with each call. Also verifies that block data received matches what was sent. -void SendAndVerifyArbitraryBlock(nlTestSuite * inSuite, void * inContext, TransferSession & sender, TransferSession & receiver, +void SendAndVerifyArbitraryBlock(TransferSession & sender, TransferSession & receiver, TransferSession::OutputEvent & outEvent, bool isEof, uint32_t inBlockCounter) { CHIP_ERROR err = CHIP_NO_ERROR; static uint8_t dataCount = 0; uint16_t maxBlockSize = sender.GetTransferBlockSize(); - NL_TEST_ASSERT(inSuite, maxBlockSize > 0); + EXPECT_GT(maxBlockSize, 0); System::PacketBufferHandle fakeDataBuf = System::PacketBufferHandle::New(maxBlockSize); if (fakeDataBuf.IsNull()) { - NL_TEST_ASSERT(inSuite, false); + EXPECT_TRUE(false); return; } @@ -315,28 +308,28 @@ void SendAndVerifyArbitraryBlock(nlTestSuite * inSuite, void * inContext, Transf // Provide Block data and verify sender emits Block message err = sender.PrepareBlock(blockData); - NL_TEST_ASSERT(inSuite, err == CHIP_NO_ERROR); + EXPECT_EQ(err, CHIP_NO_ERROR); sender.PollOutput(outEvent, kNoAdvanceTime); - NL_TEST_ASSERT(inSuite, outEvent.EventType == TransferSession::OutputEventType::kMsgToSend); - VerifyBdxMessageToSend(inSuite, inContext, outEvent, expected); - VerifyNoMoreOutput(inSuite, inContext, sender); + EXPECT_EQ(outEvent.EventType, TransferSession::OutputEventType::kMsgToSend); + VerifyBdxMessageToSend(outEvent, expected); + VerifyNoMoreOutput(sender); // Pass Block message to receiver and verify matching Block is received err = AttachHeaderAndSend(outEvent.msgTypeData, std::move(outEvent.MsgData), receiver); - NL_TEST_ASSERT(inSuite, err == CHIP_NO_ERROR); + EXPECT_EQ(err, CHIP_NO_ERROR); receiver.PollOutput(outEvent, kNoAdvanceTime); - NL_TEST_ASSERT(inSuite, outEvent.EventType == TransferSession::OutputEventType::kBlockReceived); - NL_TEST_ASSERT(inSuite, outEvent.blockdata.Data != nullptr); + EXPECT_EQ(outEvent.EventType, TransferSession::OutputEventType::kBlockReceived); + EXPECT_NE(outEvent.blockdata.Data, nullptr); if (outEvent.EventType == TransferSession::OutputEventType::kBlockReceived && outEvent.blockdata.Data != nullptr) { - NL_TEST_ASSERT(inSuite, !memcmp(fakeBlockData, outEvent.blockdata.Data, outEvent.blockdata.Length)); - NL_TEST_ASSERT(inSuite, outEvent.blockdata.BlockCounter == inBlockCounter); + EXPECT_EQ(0, memcmp(fakeBlockData, outEvent.blockdata.Data, outEvent.blockdata.Length)); + EXPECT_EQ(outEvent.blockdata.BlockCounter, inBlockCounter); } - VerifyNoMoreOutput(inSuite, inContext, receiver); + VerifyNoMoreOutput(receiver); } // Helper method for sending a BlockAck or BlockAckEOF, depending on the state of the receiver. -void SendAndVerifyBlockAck(nlTestSuite * inSuite, void * inContext, TransferSession & ackReceiver, TransferSession & ackSender, +void SendAndVerifyBlockAck(TransferSession & ackReceiver, TransferSession & ackSender, TransferSession::OutputEvent & outEvent, bool expectEOF) { TransferSession::OutputEventType expectedEventType = @@ -345,22 +338,36 @@ void SendAndVerifyBlockAck(nlTestSuite * inSuite, void * inContext, TransferSess // Verify PrepareBlockAck() outputs message to send CHIP_ERROR err = ackSender.PrepareBlockAck(); - NL_TEST_ASSERT(inSuite, err == CHIP_NO_ERROR); + EXPECT_EQ(err, CHIP_NO_ERROR); ackSender.PollOutput(outEvent, kNoAdvanceTime); - NL_TEST_ASSERT(inSuite, outEvent.EventType == TransferSession::OutputEventType::kMsgToSend); - VerifyBdxMessageToSend(inSuite, inContext, outEvent, expectedMsgType); - VerifyNoMoreOutput(inSuite, inContext, ackSender); + EXPECT_EQ(outEvent.EventType, TransferSession::OutputEventType::kMsgToSend); + VerifyBdxMessageToSend(outEvent, expectedMsgType); + VerifyNoMoreOutput(ackSender); // Pass BlockAck to ackReceiver and verify it was received err = AttachHeaderAndSend(outEvent.msgTypeData, std::move(outEvent.MsgData), ackReceiver); - NL_TEST_ASSERT(inSuite, err == CHIP_NO_ERROR); + EXPECT_EQ(err, CHIP_NO_ERROR); ackReceiver.PollOutput(outEvent, kNoAdvanceTime); - NL_TEST_ASSERT(inSuite, outEvent.EventType == expectedEventType); - VerifyNoMoreOutput(inSuite, inContext, ackReceiver); + EXPECT_EQ(outEvent.EventType, expectedEventType); + VerifyNoMoreOutput(ackReceiver); } +struct TestBdxTransferSession : public ::testing::Test +{ + static void SetUpTestSuite() + { + CHIP_ERROR error = chip::Platform::MemoryInit(); + EXPECT_EQ(error, CHIP_NO_ERROR); + } + + static void TearDownTestSuite() + { + chip::Platform::MemoryShutdown(); + } +}; + // Test a full transfer using a responding receiver and an initiating sender, receiver drive. -void TestInitiatingReceiverReceiverDrive(nlTestSuite * inSuite, void * inContext) +TEST_F(TestBdxTransferSession, TestInitiatingReceiverReceiverDrive) { CHIP_ERROR err = CHIP_NO_ERROR; TransferSession::OutputEvent outEvent; @@ -391,7 +398,7 @@ void TestInitiatingReceiverReceiverDrive(nlTestSuite * inSuite, void * inContext BitFlags senderOpts; senderOpts.Set(driveMode); - SendAndVerifyTransferInit(inSuite, inContext, outEvent, timeout, initiatingReceiver, TransferRole::kReceiver, initOptions, + SendAndVerifyTransferInit(outEvent, timeout, initiatingReceiver, TransferRole::kReceiver, initOptions, respondingSender, senderOpts, proposedBlockSize); // Test metadata for Accept message @@ -399,7 +406,7 @@ void TestInitiatingReceiverReceiverDrive(nlTestSuite * inSuite, void * inContext char metadataStr[11] = { "hi_dad.txt" }; uint32_t bytesWritten = 0; err = WriteTLVString(tlvBuf, sizeof(tlvBuf), metadataStr, bytesWritten); - NL_TEST_ASSERT(inSuite, err == CHIP_NO_ERROR); + EXPECT_EQ(err, CHIP_NO_ERROR); uint16_t metadataSize = static_cast(bytesWritten & 0x0000FFFF); // Compose ReceiveAccept parameters struct and give to respondingSender @@ -411,22 +418,22 @@ void TestInitiatingReceiverReceiverDrive(nlTestSuite * inSuite, void * inContext acceptData.Metadata = tlvBuf; acceptData.MetadataLength = metadataSize; - SendAndVerifyAcceptMsg(inSuite, inContext, outEvent, respondingSender, TransferRole::kSender, acceptData, initiatingReceiver, + SendAndVerifyAcceptMsg(outEvent, respondingSender, TransferRole::kSender, acceptData, initiatingReceiver, initOptions); // Verify that MaxBlockSize was chosen correctly - NL_TEST_ASSERT(inSuite, respondingSender.GetTransferBlockSize() == testSmallerBlockSize); - NL_TEST_ASSERT(inSuite, respondingSender.GetTransferBlockSize() == initiatingReceiver.GetTransferBlockSize()); + EXPECT_EQ(respondingSender.GetTransferBlockSize(), testSmallerBlockSize); + EXPECT_EQ(respondingSender.GetTransferBlockSize(), initiatingReceiver.GetTransferBlockSize()); // Verify parsed TLV metadata matches the original - err = ReadAndVerifyTLVString(inSuite, inContext, outEvent.transferAcceptData.Metadata, + err = ReadAndVerifyTLVString(outEvent.transferAcceptData.Metadata, static_cast(outEvent.transferAcceptData.MetadataLength), metadataStr, static_cast(strlen(metadataStr))); - NL_TEST_ASSERT(inSuite, err == CHIP_NO_ERROR); + EXPECT_EQ(err, CHIP_NO_ERROR); // Test BlockQuery -> Block -> BlockAck - SendAndVerifyQuery(inSuite, inContext, respondingSender, initiatingReceiver, outEvent); - SendAndVerifyArbitraryBlock(inSuite, inContext, respondingSender, initiatingReceiver, outEvent, false, numBlocksSent); + SendAndVerifyQuery(respondingSender, initiatingReceiver, outEvent); + SendAndVerifyArbitraryBlock(respondingSender, initiatingReceiver, outEvent, false, numBlocksSent); numBlocksSent++; // Test only one block can be prepared at a time, without receiving a response to the first @@ -434,37 +441,37 @@ void TestInitiatingReceiverReceiverDrive(nlTestSuite * inSuite, void * inContext TransferSession::BlockData prematureBlock; if (fakeBuf.IsNull()) { - NL_TEST_ASSERT(inSuite, false); + EXPECT_TRUE(false); return; } prematureBlock.Data = fakeBuf->Start(); prematureBlock.Length = testSmallerBlockSize; prematureBlock.IsEof = false; err = respondingSender.PrepareBlock(prematureBlock); - NL_TEST_ASSERT(inSuite, err != CHIP_NO_ERROR); - VerifyNoMoreOutput(inSuite, inContext, respondingSender); + EXPECT_NE(err, CHIP_NO_ERROR); + VerifyNoMoreOutput(respondingSender); // Test Ack -> Query -> Block - SendAndVerifyBlockAck(inSuite, inContext, respondingSender, initiatingReceiver, outEvent, false); + SendAndVerifyBlockAck(respondingSender, initiatingReceiver, outEvent, false); // Test multiple Blocks sent and received (last Block is BlockEOF) while (numBlocksSent < numBlockSends) { bool isEof = (numBlocksSent == numBlockSends - 1); - SendAndVerifyQuery(inSuite, inContext, respondingSender, initiatingReceiver, outEvent); - SendAndVerifyArbitraryBlock(inSuite, inContext, respondingSender, initiatingReceiver, outEvent, isEof, numBlocksSent); + SendAndVerifyQuery(respondingSender, initiatingReceiver, outEvent); + SendAndVerifyArbitraryBlock(respondingSender, initiatingReceiver, outEvent, isEof, numBlocksSent); numBlocksSent++; } // Verify last block was BlockEOF, then verify response BlockAckEOF message - NL_TEST_ASSERT(inSuite, outEvent.blockdata.IsEof == true); - SendAndVerifyBlockAck(inSuite, inContext, respondingSender, initiatingReceiver, outEvent, true); + EXPECT_TRUE(outEvent.blockdata.IsEof); + SendAndVerifyBlockAck(respondingSender, initiatingReceiver, outEvent, true); } // Partial transfer test using Sender Drive to specifically test Block -> BlockAck -> Block sequence -void TestInitiatingSenderSenderDrive(nlTestSuite * inSuite, void * inContext) +TEST_F(TestBdxTransferSession, TestInitiatingSenderSenderDrive) { CHIP_ERROR err = CHIP_NO_ERROR; TransferSession::OutputEvent outEvent; @@ -486,7 +493,7 @@ void TestInitiatingSenderSenderDrive(nlTestSuite * inSuite, void * inContext) char metadataStr[11] = { "hi_dad.txt" }; uint32_t bytesWritten = 0; err = WriteTLVString(tlvBuf, sizeof(tlvBuf), metadataStr, bytesWritten); - NL_TEST_ASSERT(inSuite, err == CHIP_NO_ERROR); + EXPECT_EQ(err, CHIP_NO_ERROR); uint16_t metadataSize = static_cast(bytesWritten & 0x0000FFFF); // Initialize struct with TransferInit parameters @@ -499,14 +506,14 @@ void TestInitiatingSenderSenderDrive(nlTestSuite * inSuite, void * inContext) initOptions.Metadata = tlvBuf; initOptions.MetadataLength = metadataSize; - SendAndVerifyTransferInit(inSuite, inContext, outEvent, timeout, initiatingSender, TransferRole::kSender, initOptions, + SendAndVerifyTransferInit(outEvent, timeout, initiatingSender, TransferRole::kSender, initOptions, respondingReceiver, receiverOpts, transferBlockSize); // Verify parsed TLV metadata matches the original - err = ReadAndVerifyTLVString(inSuite, inContext, outEvent.transferInitData.Metadata, + err = ReadAndVerifyTLVString(outEvent.transferInitData.Metadata, static_cast(outEvent.transferInitData.MetadataLength), metadataStr, static_cast(strlen(metadataStr))); - NL_TEST_ASSERT(inSuite, err == CHIP_NO_ERROR); + EXPECT_EQ(err, CHIP_NO_ERROR); // Compose SendAccept parameters struct and give to respondingSender uint16_t proposedBlockSize = transferBlockSize; @@ -518,24 +525,24 @@ void TestInitiatingSenderSenderDrive(nlTestSuite * inSuite, void * inContext) acceptData.Metadata = nullptr; acceptData.MetadataLength = 0; - SendAndVerifyAcceptMsg(inSuite, inContext, outEvent, respondingReceiver, TransferRole::kReceiver, acceptData, initiatingSender, + SendAndVerifyAcceptMsg(outEvent, respondingReceiver, TransferRole::kReceiver, acceptData, initiatingSender, initOptions); uint32_t numBlocksSent = 0; // Test multiple Block -> BlockAck -> Block for (int i = 0; i < 3; i++) { - SendAndVerifyArbitraryBlock(inSuite, inContext, initiatingSender, respondingReceiver, outEvent, false, numBlocksSent); - SendAndVerifyBlockAck(inSuite, inContext, initiatingSender, respondingReceiver, outEvent, false); + SendAndVerifyArbitraryBlock(initiatingSender, respondingReceiver, outEvent, false, numBlocksSent); + SendAndVerifyBlockAck(initiatingSender, respondingReceiver, outEvent, false); numBlocksSent++; } - SendAndVerifyArbitraryBlock(inSuite, inContext, initiatingSender, respondingReceiver, outEvent, true, numBlocksSent); - SendAndVerifyBlockAck(inSuite, inContext, initiatingSender, respondingReceiver, outEvent, true); + SendAndVerifyArbitraryBlock(initiatingSender, respondingReceiver, outEvent, true, numBlocksSent); + SendAndVerifyBlockAck(initiatingSender, respondingReceiver, outEvent, true); } // Test that calls to AcceptTransfer() with bad parameters result in an error. -void TestBadAcceptMessageFields(nlTestSuite * inSuite, void * inContext) +TEST_F(TestBdxTransferSession, TestBadAcceptMessageFields) { CHIP_ERROR err = CHIP_NO_ERROR; TransferSession::OutputEvent outEvent; @@ -564,7 +571,7 @@ void TestBadAcceptMessageFields(nlTestSuite * inSuite, void * inContext) BitFlags responderControl; responderControl.Set(driveMode); - SendAndVerifyTransferInit(inSuite, inContext, outEvent, timeout, initiatingReceiver, TransferRole::kReceiver, initOptions, + SendAndVerifyTransferInit(outEvent, timeout, initiatingReceiver, TransferRole::kReceiver, initOptions, respondingSender, responderControl, maxBlockSize); // Verify AcceptTransfer() returns error for choosing larger max block size @@ -574,7 +581,7 @@ void TestBadAcceptMessageFields(nlTestSuite * inSuite, void * inContext) acceptData.StartOffset = commonOffset; acceptData.Length = commonLength; err = respondingSender.AcceptTransfer(acceptData); - NL_TEST_ASSERT(inSuite, err != CHIP_NO_ERROR); + EXPECT_NE(err, CHIP_NO_ERROR); // Verify AcceptTransfer() returns error for choosing unsupported transfer control mode TransferSession::TransferAcceptData acceptData2; @@ -584,11 +591,11 @@ void TestBadAcceptMessageFields(nlTestSuite * inSuite, void * inContext) acceptData2.StartOffset = commonOffset; acceptData2.Length = commonLength; err = respondingSender.AcceptTransfer(acceptData2); - NL_TEST_ASSERT(inSuite, err != CHIP_NO_ERROR); + EXPECT_NE(err, CHIP_NO_ERROR); } // Test that a TransferSession will emit kTransferTimeout if the specified timeout is exceeded while waiting for a response. -void TestTimeout(nlTestSuite * inSuite, void * inContext) +TEST_F(TestBdxTransferSession, TestTimeout) { CHIP_ERROR err = CHIP_NO_ERROR; TransferSession initiator; @@ -614,22 +621,22 @@ void TestTimeout(nlTestSuite * inSuite, void * inContext) // Verify initiator outputs respective Init message (depending on role) after StartTransfer() err = initiator.StartTransfer(role, initOptions, timeout); - NL_TEST_ASSERT(inSuite, err == CHIP_NO_ERROR); + EXPECT_EQ(err, CHIP_NO_ERROR); // First PollOutput() should output the TransferInit message initiator.PollOutput(outEvent, startTime); - NL_TEST_ASSERT(inSuite, outEvent.EventType == TransferSession::OutputEventType::kMsgToSend); + EXPECT_EQ(outEvent.EventType, TransferSession::OutputEventType::kMsgToSend); MessageType expectedInitMsg = (role == TransferRole::kSender) ? MessageType::SendInit : MessageType::ReceiveInit; - VerifyBdxMessageToSend(inSuite, inContext, outEvent, expectedInitMsg); + VerifyBdxMessageToSend(outEvent, expectedInitMsg); // Second PollOutput() with no call to HandleMessageReceived() should result in a timeout. initiator.PollOutput(outEvent, endTime); - NL_TEST_ASSERT(inSuite, outEvent.EventType == TransferSession::OutputEventType::kTransferTimeout); + EXPECT_EQ(outEvent.EventType, TransferSession::OutputEventType::kTransferTimeout); } // Test that sending the same block twice (with same block counter) results in a StatusReport message with BadBlockCounter. Also // test that receiving the StatusReport ends the transfer on the other node. -void TestDuplicateBlockError(nlTestSuite * inSuite, void * inContext) +TEST_F(TestBdxTransferSession, TestDuplicateBlockError) { CHIP_ERROR err = CHIP_NO_ERROR; TransferSession::OutputEvent outEvent; @@ -661,7 +668,7 @@ void TestDuplicateBlockError(nlTestSuite * inSuite, void * inContext) BitFlags senderOpts; senderOpts.Set(driveMode); - SendAndVerifyTransferInit(inSuite, inContext, outEvent, timeout, initiatingReceiver, TransferRole::kReceiver, initOptions, + SendAndVerifyTransferInit(outEvent, timeout, initiatingReceiver, TransferRole::kReceiver, initOptions, respondingSender, senderOpts, blockSize); // Compose ReceiveAccept parameters struct and give to respondingSender @@ -673,10 +680,10 @@ void TestDuplicateBlockError(nlTestSuite * inSuite, void * inContext) acceptData.Metadata = nullptr; acceptData.MetadataLength = 0; - SendAndVerifyAcceptMsg(inSuite, inContext, outEvent, respondingSender, TransferRole::kSender, acceptData, initiatingReceiver, + SendAndVerifyAcceptMsg(outEvent, respondingSender, TransferRole::kSender, acceptData, initiatingReceiver, initOptions); - SendAndVerifyQuery(inSuite, inContext, respondingSender, initiatingReceiver, outEvent); + SendAndVerifyQuery(respondingSender, initiatingReceiver, outEvent); TransferSession::BlockData blockData; blockData.Data = fakeData; @@ -685,106 +692,52 @@ void TestDuplicateBlockError(nlTestSuite * inSuite, void * inContext) // Provide Block data and verify sender emits Block message err = respondingSender.PrepareBlock(blockData); - NL_TEST_ASSERT(inSuite, err == CHIP_NO_ERROR); + EXPECT_EQ(err, CHIP_NO_ERROR); respondingSender.PollOutput(eventWithBlock, kNoAdvanceTime); - NL_TEST_ASSERT(inSuite, eventWithBlock.EventType == TransferSession::OutputEventType::kMsgToSend); - VerifyBdxMessageToSend(inSuite, inContext, eventWithBlock, MessageType::Block); - VerifyNoMoreOutput(inSuite, inContext, respondingSender); + EXPECT_EQ(eventWithBlock.EventType, TransferSession::OutputEventType::kMsgToSend); + VerifyBdxMessageToSend(eventWithBlock, MessageType::Block); + VerifyNoMoreOutput(respondingSender); System::PacketBufferHandle blockCopy = System::PacketBufferHandle::NewWithData(eventWithBlock.MsgData->Start(), eventWithBlock.MsgData->DataLength()); // Pass Block message to receiver and verify matching Block is received err = AttachHeaderAndSend(eventWithBlock.msgTypeData, std::move(eventWithBlock.MsgData), initiatingReceiver); - NL_TEST_ASSERT(inSuite, err == CHIP_NO_ERROR); + EXPECT_EQ(err, CHIP_NO_ERROR); initiatingReceiver.PollOutput(outEvent, kNoAdvanceTime); - NL_TEST_ASSERT(inSuite, outEvent.EventType == TransferSession::OutputEventType::kBlockReceived); - NL_TEST_ASSERT(inSuite, outEvent.blockdata.Data != nullptr); - VerifyNoMoreOutput(inSuite, inContext, initiatingReceiver); + EXPECT_EQ(outEvent.EventType, TransferSession::OutputEventType::kBlockReceived); + EXPECT_NE(outEvent.blockdata.Data, nullptr); + VerifyNoMoreOutput(initiatingReceiver); - SendAndVerifyQuery(inSuite, inContext, respondingSender, initiatingReceiver, outEvent); + SendAndVerifyQuery(respondingSender, initiatingReceiver, outEvent); // Verify receiving same Block twice fails and results in StatusReport event, and then InternalError event err = AttachHeaderAndSend(eventWithBlock.msgTypeData, std::move(blockCopy), initiatingReceiver); - NL_TEST_ASSERT(inSuite, err == CHIP_NO_ERROR); + EXPECT_EQ(err, CHIP_NO_ERROR); initiatingReceiver.PollOutput(outEvent, kNoAdvanceTime); - NL_TEST_ASSERT(inSuite, outEvent.EventType == TransferSession::OutputEventType::kMsgToSend); + EXPECT_EQ(outEvent.EventType, TransferSession::OutputEventType::kMsgToSend); System::PacketBufferHandle statusReportMsg = outEvent.MsgData.Retain(); TransferSession::MessageTypeData statusReportMsgTypeData = outEvent.msgTypeData; - VerifyStatusReport(inSuite, inContext, std::move(outEvent.MsgData), StatusCode::kBadBlockCounter); + VerifyStatusReport(std::move(outEvent.MsgData), StatusCode::kBadBlockCounter); // All subsequent PollOutput() calls should return kInternalError for (int i = 0; i < 5; ++i) { initiatingReceiver.PollOutput(outEvent, kNoAdvanceTime); - NL_TEST_ASSERT(inSuite, outEvent.EventType == TransferSession::OutputEventType::kInternalError); - NL_TEST_ASSERT(inSuite, outEvent.statusData.statusCode == StatusCode::kBadBlockCounter); + EXPECT_EQ(outEvent.EventType, TransferSession::OutputEventType::kInternalError); + EXPECT_EQ(outEvent.statusData.statusCode, StatusCode::kBadBlockCounter); } err = AttachHeaderAndSend(statusReportMsgTypeData, std::move(statusReportMsg), respondingSender); - NL_TEST_ASSERT(inSuite, err == CHIP_NO_ERROR); + EXPECT_EQ(err, CHIP_NO_ERROR); respondingSender.PollOutput(outEvent, kNoAdvanceTime); - NL_TEST_ASSERT(inSuite, outEvent.EventType == TransferSession::OutputEventType::kStatusReceived); - NL_TEST_ASSERT(inSuite, outEvent.statusData.statusCode == StatusCode::kBadBlockCounter); + EXPECT_EQ(outEvent.EventType, TransferSession::OutputEventType::kStatusReceived); + EXPECT_EQ(outEvent.statusData.statusCode, StatusCode::kBadBlockCounter); // All subsequent PollOutput() calls should return kInternalError for (int i = 0; i < 5; ++i) { respondingSender.PollOutput(outEvent, kNoAdvanceTime); - NL_TEST_ASSERT(inSuite, outEvent.EventType == TransferSession::OutputEventType::kInternalError); - NL_TEST_ASSERT(inSuite, outEvent.statusData.statusCode == StatusCode::kBadBlockCounter); + EXPECT_EQ(outEvent.EventType, TransferSession::OutputEventType::kInternalError); + EXPECT_EQ(outEvent.statusData.statusCode, StatusCode::kBadBlockCounter); } } - -// Test Suite - -/** - * Test Suite that lists all the test functions. - */ -// clang-format off -static const nlTest sTests[] = -{ - NL_TEST_DEF("TestInitiatingReceiverReceiverDrive", TestInitiatingReceiverReceiverDrive), - NL_TEST_DEF("TestInitiatingSenderSenderDrive", TestInitiatingSenderSenderDrive), - NL_TEST_DEF("TestBadAcceptMessageFields", TestBadAcceptMessageFields), - NL_TEST_DEF("TestTimeout", TestTimeout), - NL_TEST_DEF("TestDuplicateBlockError", TestDuplicateBlockError), - NL_TEST_SENTINEL() -}; -// clang-format on - -int TestBdxTransferSession_Setup(void * inContext) -{ - CHIP_ERROR error = chip::Platform::MemoryInit(); - if (error != CHIP_NO_ERROR) - return FAILURE; - return SUCCESS; -} - -int TestBdxTransferSession_Teardown(void * inContext) -{ - chip::Platform::MemoryShutdown(); - return SUCCESS; -} - -// clang-format off -static nlTestSuite sSuite = -{ - "Test-CHIP-TransferSession", - &sTests[0], - TestBdxTransferSession_Setup, - TestBdxTransferSession_Teardown -}; -// clang-format on - -/** - * Main - */ -int TestBdxTransferSession() -{ - // Run test suit against one context - nlTestRunner(&sSuite, nullptr); - - return (nlTestRunnerStats(&sSuite)); -} - -CHIP_REGISTER_TEST_SUITE(TestBdxTransferSession) diff --git a/src/protocols/bdx/tests/TestBdxUri.cpp b/src/protocols/bdx/tests/TestBdxUri.cpp index 8641ee1d4524a6..e94b88ec0d9f21 100644 --- a/src/protocols/bdx/tests/TestBdxUri.cpp +++ b/src/protocols/bdx/tests/TestBdxUri.cpp @@ -15,11 +15,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -#include #include #include -#include +#include using namespace ::chip; @@ -30,7 +29,7 @@ CharSpan ToSpan(const char * str) return CharSpan::fromCharString(str); } -void TestParseURI(nlTestSuite * inSuite, void * inContext) +TEST(TestBdxUri, TestParseURI) { NodeId nodeId; CharSpan file; @@ -38,75 +37,55 @@ void TestParseURI(nlTestSuite * inSuite, void * inContext) const auto parse = [&](const char * uri) { return bdx::ParseURI(ToSpan(uri), nodeId, file); }; // Happy path - NL_TEST_ASSERT(inSuite, parse("bdx://1234567890ABCDEF/file_name") == CHIP_NO_ERROR); - NL_TEST_ASSERT(inSuite, nodeId == 0x1234567890ABCDEFULL); - NL_TEST_ASSERT(inSuite, file.data_equal(ToSpan("file_name"))); + EXPECT_EQ(parse("bdx://1234567890ABCDEF/file_name"), CHIP_NO_ERROR); + EXPECT_EQ(nodeId, 0x1234567890ABCDEFULL); + EXPECT_TRUE(file.data_equal(ToSpan("file_name"))); // File designator may contain slashes - NL_TEST_ASSERT(inSuite, parse("bdx://1234567890ABCDEF/file/na/me") == CHIP_NO_ERROR); - NL_TEST_ASSERT(inSuite, nodeId == 0x1234567890ABCDEFULL); - NL_TEST_ASSERT(inSuite, file.data_equal(ToSpan("file/na/me"))); + EXPECT_EQ(parse("bdx://1234567890ABCDEF/file/na/me"), CHIP_NO_ERROR); + EXPECT_EQ(nodeId, 0x1234567890ABCDEFULL); + EXPECT_TRUE(file.data_equal(ToSpan("file/na/me"))); // Wrong scheme - NL_TEST_ASSERT(inSuite, parse("bdy://1234567890ABCDEF/file_name") == CHIP_ERROR_INVALID_SCHEME_PREFIX); + EXPECT_EQ(parse("bdy://1234567890ABCDEF/file_name"), CHIP_ERROR_INVALID_SCHEME_PREFIX); // Node ID contains non-hex digit - NL_TEST_ASSERT(inSuite, parse("bdx://1234567890ABCDEG/file_name") == CHIP_ERROR_INVALID_DESTINATION_NODE_ID); + EXPECT_EQ(parse("bdx://1234567890ABCDEG/file_name"), CHIP_ERROR_INVALID_DESTINATION_NODE_ID); // Node ID too short - NL_TEST_ASSERT(inSuite, parse("bdx://1234567890ABCDE/file_name") == CHIP_ERROR_INVALID_DESTINATION_NODE_ID); + EXPECT_EQ(parse("bdx://1234567890ABCDE/file_name"), CHIP_ERROR_INVALID_DESTINATION_NODE_ID); // Node ID too long - NL_TEST_ASSERT(inSuite, parse("bdx://1234567890ABCDEFEF/file_name") == CHIP_ERROR_MISSING_URI_SEPARATOR); + EXPECT_EQ(parse("bdx://1234567890ABCDEFEF/file_name"), CHIP_ERROR_MISSING_URI_SEPARATOR); // Node ID to non-operational - NL_TEST_ASSERT(inSuite, parse("bdx://FFFFFFFFFFFFFFFF/file_name") == CHIP_ERROR_INVALID_DESTINATION_NODE_ID); + EXPECT_EQ(parse("bdx://FFFFFFFFFFFFFFFF/file_name"), CHIP_ERROR_INVALID_DESTINATION_NODE_ID); // No file designator - NL_TEST_ASSERT(inSuite, parse("bdx://1234567890ABCDEF/") == CHIP_ERROR_INVALID_STRING_LENGTH); + EXPECT_EQ(parse("bdx://1234567890ABCDEF/"), CHIP_ERROR_INVALID_STRING_LENGTH); } -void TestMakeURI(nlTestSuite * inSuite, void * inContext) +TEST(TestBdxUri, TestMakeURI) { char uriBuffer[128]; MutableCharSpan uri(uriBuffer); // Happy path - NL_TEST_ASSERT(inSuite, bdx::MakeURI(0xFEDCBA0987654321ULL, ToSpan("file_name"), uri) == CHIP_NO_ERROR); - NL_TEST_ASSERT(inSuite, uri.data_equal(ToSpan("bdx://FEDCBA0987654321/file_name"))); + EXPECT_EQ(bdx::MakeURI(0xFEDCBA0987654321ULL, ToSpan("file_name"), uri), CHIP_NO_ERROR); + EXPECT_TRUE(uri.data_equal(ToSpan("bdx://FEDCBA0987654321/file_name"))); // File designator with slashes uri = MutableCharSpan(uriBuffer); - NL_TEST_ASSERT(inSuite, bdx::MakeURI(0xFEDCBA0987654321ULL, ToSpan("file/na/me"), uri) == CHIP_NO_ERROR); - NL_TEST_ASSERT(inSuite, uri.data_equal(ToSpan("bdx://FEDCBA0987654321/file/na/me"))); + EXPECT_EQ(bdx::MakeURI(0xFEDCBA0987654321ULL, ToSpan("file/na/me"), uri), CHIP_NO_ERROR); + EXPECT_TRUE(uri.data_equal(ToSpan("bdx://FEDCBA0987654321/file/na/me"))); // Empty file designator uri = MutableCharSpan(uriBuffer); - NL_TEST_ASSERT(inSuite, bdx::MakeURI(0xFEDCBA0987654321ULL, CharSpan(), uri) != CHIP_NO_ERROR); + EXPECT_NE(bdx::MakeURI(0xFEDCBA0987654321ULL, CharSpan(), uri), CHIP_NO_ERROR); // Too small buffer uri = MutableCharSpan(uriBuffer, 31); - NL_TEST_ASSERT(inSuite, bdx::MakeURI(0xFEDCBA0987654321ULL, CharSpan(), uri) != CHIP_NO_ERROR); + EXPECT_NE(bdx::MakeURI(0xFEDCBA0987654321ULL, CharSpan(), uri), CHIP_NO_ERROR); } -// clang-format off -const nlTest sTests[] = -{ - NL_TEST_DEF("TestParseURI", TestParseURI), - NL_TEST_DEF("TestMakeURI", TestMakeURI), - NL_TEST_SENTINEL() -}; -// clang-format on - -nlTestSuite sSuite = { "Test BDX URI", &sTests[0], nullptr, nullptr }; } // namespace - -int TestBdxUri() -{ - // Run test suit against one context - nlTestRunner(&sSuite, nullptr); - - return (nlTestRunnerStats(&sSuite)); -} - -CHIP_REGISTER_TEST_SUITE(TestBdxUri) From bddc3c99ac3f28bf2c90efbe9e71d753c3409917 Mon Sep 17 00:00:00 2001 From: Jeff Feasel Date: Mon, 22 Apr 2024 21:41:14 -0400 Subject: [PATCH 2/6] Fixed clang and GN formatting. Moved BDXTests from test_components_nl.txt to test_components.txt. --- src/protocols/bdx/tests/TestBdxMessages.cpp | 5 +- .../bdx/tests/TestBdxTransferSession.cpp | 71 +++++++++---------- .../openiotsdk/unit-tests/test_components.txt | 1 + .../unit-tests/test_components_nl.txt | 1 - 4 files changed, 34 insertions(+), 44 deletions(-) diff --git a/src/protocols/bdx/tests/TestBdxMessages.cpp b/src/protocols/bdx/tests/TestBdxMessages.cpp index 932d4704bd71f9..e53888472f2396 100644 --- a/src/protocols/bdx/tests/TestBdxMessages.cpp +++ b/src/protocols/bdx/tests/TestBdxMessages.cpp @@ -46,10 +46,7 @@ struct TestBdxMessages : public ::testing::Test EXPECT_EQ(error, CHIP_NO_ERROR); } - static void TearDownTestSuite() - { - chip::Platform::MemoryShutdown(); - } + static void TearDownTestSuite() { chip::Platform::MemoryShutdown(); } }; TEST_F(TestBdxMessages, TestTransferInitMessage) diff --git a/src/protocols/bdx/tests/TestBdxTransferSession.cpp b/src/protocols/bdx/tests/TestBdxTransferSession.cpp index de7f3a351522eb..4c3e0097aba7ec 100644 --- a/src/protocols/bdx/tests/TestBdxTransferSession.cpp +++ b/src/protocols/bdx/tests/TestBdxTransferSession.cpp @@ -47,8 +47,7 @@ CHIP_ERROR WriteTLVString(uint8_t * buf, uint32_t bufLen, const char * data, uin } // Helper method: read a TLV structure with a single tag and string and verify it matches expected string. -CHIP_ERROR ReadAndVerifyTLVString(const uint8_t * dataStart, uint32_t len, - const char * expected, size_t expectedLen) +CHIP_ERROR ReadAndVerifyTLVString(const uint8_t * dataStart, uint32_t len, const char * expected, size_t expectedLen) { TLV::TLVReader reader; char tmp[64] = { 0 }; @@ -90,8 +89,7 @@ CHIP_ERROR AttachHeaderAndSend(TransferSession::MessageTypeData typeData, chip:: } // Helper method for verifying that a PacketBufferHandle contains a valid BDX header and message type matches expected. -void VerifyBdxMessageToSend(const TransferSession::OutputEvent & outEvent, - MessageType expected) +void VerifyBdxMessageToSend(const TransferSession::OutputEvent & outEvent, MessageType expected) { static_assert(std::is_same, uint8_t>::value, "Cast is not safe"); EXPECT_EQ(outEvent.EventType, TransferSession::OutputEventType::kMsgToSend); @@ -136,9 +134,8 @@ void VerifyNoMoreOutput(TransferSession & transferSession) // Helper method for initializing two TransferSession objects, generating a TransferInit message, and passing it to a responding // TransferSession. -void SendAndVerifyTransferInit(TransferSession::OutputEvent & outEvent, - System::Clock::Timeout timeout, TransferSession & initiator, TransferRole initiatorRole, - TransferSession::TransferInitData initData, TransferSession & responder, +void SendAndVerifyTransferInit(TransferSession::OutputEvent & outEvent, System::Clock::Timeout timeout, TransferSession & initiator, + TransferRole initiatorRole, TransferSession::TransferInitData initData, TransferSession & responder, BitFlags & responderControlOpts, uint16_t responderMaxBlock) { CHIP_ERROR err = CHIP_NO_ERROR; @@ -173,7 +170,8 @@ void SendAndVerifyTransferInit(TransferSession::OutputEvent & outEvent, if (outEvent.EventType == TransferSession::OutputEventType::kInitReceived && outEvent.transferInitData.FileDesignator != nullptr) { - EXPECT_EQ(0, memcmp(initData.FileDesignator, outEvent.transferInitData.FileDesignator, outEvent.transferInitData.FileDesLength)); + EXPECT_EQ( + 0, memcmp(initData.FileDesignator, outEvent.transferInitData.FileDesignator, outEvent.transferInitData.FileDesLength)); } if (outEvent.transferInitData.Metadata != nullptr) { @@ -186,7 +184,8 @@ void SendAndVerifyTransferInit(TransferSession::OutputEvent & outEvent, { // Only check that metadata buffers match. The OutputEvent can still be inspected when this function returns to // parse the metadata and verify that it matches. - EXPECT_EQ(0, memcmp(initData.Metadata, outEvent.transferInitData.Metadata, outEvent.transferInitData.MetadataLength)); + EXPECT_EQ(0, + memcmp(initData.Metadata, outEvent.transferInitData.Metadata, outEvent.transferInitData.MetadataLength)); } } else @@ -202,8 +201,7 @@ void SendAndVerifyTransferInit(TransferSession::OutputEvent & outEvent, // receiver should emit a StatusCode event instead. // // The acceptSender is the node that is sending the Accept message (not necessarily the same node that will send Blocks). -void SendAndVerifyAcceptMsg(TransferSession::OutputEvent & outEvent, - TransferSession & acceptSender, TransferRole acceptSenderRole, +void SendAndVerifyAcceptMsg(TransferSession::OutputEvent & outEvent, TransferSession & acceptSender, TransferRole acceptSenderRole, TransferSession::TransferAcceptData acceptData, TransferSession & acceptReceiver, TransferSession::TransferInitData initData) { @@ -246,7 +244,9 @@ void SendAndVerifyAcceptMsg(TransferSession::OutputEvent & outEvent, { // Only check that metadata buffers match. The OutputEvent can still be inspected when this function returns to // parse the metadata and verify that it matches. - EXPECT_EQ(0, memcmp(acceptData.Metadata, outEvent.transferAcceptData.Metadata, outEvent.transferAcceptData.MetadataLength)); + EXPECT_EQ( + 0, + memcmp(acceptData.Metadata, outEvent.transferAcceptData.Metadata, outEvent.transferAcceptData.MetadataLength)); } } else @@ -260,8 +260,7 @@ void SendAndVerifyAcceptMsg(TransferSession::OutputEvent & outEvent, } // Helper method for preparing a sending a BlockQuery message between two TransferSession objects. -void SendAndVerifyQuery(TransferSession & queryReceiver, TransferSession & querySender, - TransferSession::OutputEvent & outEvent) +void SendAndVerifyQuery(TransferSession & queryReceiver, TransferSession & querySender, TransferSession::OutputEvent & outEvent) { // Verify that querySender emits BlockQuery message CHIP_ERROR err = querySender.PrepareBlockQuery(); @@ -281,8 +280,8 @@ void SendAndVerifyQuery(TransferSession & queryReceiver, TransferSession & query // Helper method for preparing a sending a Block message between two TransferSession objects. The sender refers to the node that is // sending Blocks. Uses a static counter incremented with each call. Also verifies that block data received matches what was sent. -void SendAndVerifyArbitraryBlock(TransferSession & sender, TransferSession & receiver, - TransferSession::OutputEvent & outEvent, bool isEof, uint32_t inBlockCounter) +void SendAndVerifyArbitraryBlock(TransferSession & sender, TransferSession & receiver, TransferSession::OutputEvent & outEvent, + bool isEof, uint32_t inBlockCounter) { CHIP_ERROR err = CHIP_NO_ERROR; static uint8_t dataCount = 0; @@ -329,8 +328,8 @@ void SendAndVerifyArbitraryBlock(TransferSession & sender, TransferSession & rec } // Helper method for sending a BlockAck or BlockAckEOF, depending on the state of the receiver. -void SendAndVerifyBlockAck(TransferSession & ackReceiver, TransferSession & ackSender, - TransferSession::OutputEvent & outEvent, bool expectEOF) +void SendAndVerifyBlockAck(TransferSession & ackReceiver, TransferSession & ackSender, TransferSession::OutputEvent & outEvent, + bool expectEOF) { TransferSession::OutputEventType expectedEventType = expectEOF ? TransferSession::OutputEventType::kAckEOFReceived : TransferSession::OutputEventType::kAckReceived; @@ -360,10 +359,7 @@ struct TestBdxTransferSession : public ::testing::Test EXPECT_EQ(error, CHIP_NO_ERROR); } - static void TearDownTestSuite() - { - chip::Platform::MemoryShutdown(); - } + static void TearDownTestSuite() { chip::Platform::MemoryShutdown(); } }; // Test a full transfer using a responding receiver and an initiating sender, receiver drive. @@ -398,8 +394,8 @@ TEST_F(TestBdxTransferSession, TestInitiatingReceiverReceiverDrive) BitFlags senderOpts; senderOpts.Set(driveMode); - SendAndVerifyTransferInit(outEvent, timeout, initiatingReceiver, TransferRole::kReceiver, initOptions, - respondingSender, senderOpts, proposedBlockSize); + SendAndVerifyTransferInit(outEvent, timeout, initiatingReceiver, TransferRole::kReceiver, initOptions, respondingSender, + senderOpts, proposedBlockSize); // Test metadata for Accept message uint8_t tlvBuf[64] = { 0 }; @@ -418,8 +414,7 @@ TEST_F(TestBdxTransferSession, TestInitiatingReceiverReceiverDrive) acceptData.Metadata = tlvBuf; acceptData.MetadataLength = metadataSize; - SendAndVerifyAcceptMsg(outEvent, respondingSender, TransferRole::kSender, acceptData, initiatingReceiver, - initOptions); + SendAndVerifyAcceptMsg(outEvent, respondingSender, TransferRole::kSender, acceptData, initiatingReceiver, initOptions); // Verify that MaxBlockSize was chosen correctly EXPECT_EQ(respondingSender.GetTransferBlockSize(), testSmallerBlockSize); @@ -506,13 +501,13 @@ TEST_F(TestBdxTransferSession, TestInitiatingSenderSenderDrive) initOptions.Metadata = tlvBuf; initOptions.MetadataLength = metadataSize; - SendAndVerifyTransferInit(outEvent, timeout, initiatingSender, TransferRole::kSender, initOptions, - respondingReceiver, receiverOpts, transferBlockSize); + SendAndVerifyTransferInit(outEvent, timeout, initiatingSender, TransferRole::kSender, initOptions, respondingReceiver, + receiverOpts, transferBlockSize); // Verify parsed TLV metadata matches the original - err = ReadAndVerifyTLVString(outEvent.transferInitData.Metadata, - static_cast(outEvent.transferInitData.MetadataLength), metadataStr, - static_cast(strlen(metadataStr))); + err = + ReadAndVerifyTLVString(outEvent.transferInitData.Metadata, static_cast(outEvent.transferInitData.MetadataLength), + metadataStr, static_cast(strlen(metadataStr))); EXPECT_EQ(err, CHIP_NO_ERROR); // Compose SendAccept parameters struct and give to respondingSender @@ -525,8 +520,7 @@ TEST_F(TestBdxTransferSession, TestInitiatingSenderSenderDrive) acceptData.Metadata = nullptr; acceptData.MetadataLength = 0; - SendAndVerifyAcceptMsg(outEvent, respondingReceiver, TransferRole::kReceiver, acceptData, initiatingSender, - initOptions); + SendAndVerifyAcceptMsg(outEvent, respondingReceiver, TransferRole::kReceiver, acceptData, initiatingSender, initOptions); uint32_t numBlocksSent = 0; // Test multiple Block -> BlockAck -> Block @@ -571,8 +565,8 @@ TEST_F(TestBdxTransferSession, TestBadAcceptMessageFields) BitFlags responderControl; responderControl.Set(driveMode); - SendAndVerifyTransferInit(outEvent, timeout, initiatingReceiver, TransferRole::kReceiver, initOptions, - respondingSender, responderControl, maxBlockSize); + SendAndVerifyTransferInit(outEvent, timeout, initiatingReceiver, TransferRole::kReceiver, initOptions, respondingSender, + responderControl, maxBlockSize); // Verify AcceptTransfer() returns error for choosing larger max block size TransferSession::TransferAcceptData acceptData; @@ -668,8 +662,8 @@ TEST_F(TestBdxTransferSession, TestDuplicateBlockError) BitFlags senderOpts; senderOpts.Set(driveMode); - SendAndVerifyTransferInit(outEvent, timeout, initiatingReceiver, TransferRole::kReceiver, initOptions, - respondingSender, senderOpts, blockSize); + SendAndVerifyTransferInit(outEvent, timeout, initiatingReceiver, TransferRole::kReceiver, initOptions, respondingSender, + senderOpts, blockSize); // Compose ReceiveAccept parameters struct and give to respondingSender TransferSession::TransferAcceptData acceptData; @@ -680,8 +674,7 @@ TEST_F(TestBdxTransferSession, TestDuplicateBlockError) acceptData.Metadata = nullptr; acceptData.MetadataLength = 0; - SendAndVerifyAcceptMsg(outEvent, respondingSender, TransferRole::kSender, acceptData, initiatingReceiver, - initOptions); + SendAndVerifyAcceptMsg(outEvent, respondingSender, TransferRole::kSender, acceptData, initiatingReceiver, initOptions); SendAndVerifyQuery(respondingSender, initiatingReceiver, outEvent); diff --git a/src/test_driver/openiotsdk/unit-tests/test_components.txt b/src/test_driver/openiotsdk/unit-tests/test_components.txt index 2da3c15c3e7934..34001b59bcb397 100644 --- a/src/test_driver/openiotsdk/unit-tests/test_components.txt +++ b/src/test_driver/openiotsdk/unit-tests/test_components.txt @@ -1,6 +1,7 @@ accesstest SystemLayerTests ASN1Tests +BDXTests MinimalMdnsRecordsTests MinimalMdnsRespondersTests PlatformTests diff --git a/src/test_driver/openiotsdk/unit-tests/test_components_nl.txt b/src/test_driver/openiotsdk/unit-tests/test_components_nl.txt index 848fd2fc43e3a3..c6f2c248f1165a 100644 --- a/src/test_driver/openiotsdk/unit-tests/test_components_nl.txt +++ b/src/test_driver/openiotsdk/unit-tests/test_components_nl.txt @@ -1,5 +1,4 @@ AppTests -BDXTests ChipCryptoTests CoreTests CredentialsTest From 886a7a33ed55041e73a79aaf0b6fe0b435253987 Mon Sep 17 00:00:00 2001 From: Jeff Feasel Date: Tue, 23 Apr 2024 18:58:30 -0400 Subject: [PATCH 3/6] Used ASSERT_* in places where tests should be stopped immediately. Refactored to get rid of else branches that did nothing but ASSERT_TRUE(false). --- src/protocols/bdx/tests/BUILD.gn | 21 +++--- src/protocols/bdx/tests/TestBdxMessages.cpp | 8 +-- .../bdx/tests/TestBdxTransferSession.cpp | 72 ++++++------------- 3 files changed, 34 insertions(+), 67 deletions(-) diff --git a/src/protocols/bdx/tests/BUILD.gn b/src/protocols/bdx/tests/BUILD.gn index 9e415b7012c3c0..782edc612b28c1 100644 --- a/src/protocols/bdx/tests/BUILD.gn +++ b/src/protocols/bdx/tests/BUILD.gn @@ -1,23 +1,22 @@ -# Copyright (c) 2020 Project CHIP Authors +#Copyright(c) 2020 Project CHIP Authors # -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at +#Licensed under the Apache License, Version 2.0(the "License"); +#you may not use this file except in compliance with the License. +#You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +#http: // www.apache.org/licenses/LICENSE-2.0 # -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +#Unless required by applicable law or agreed to in writing, software +#distributed under the License is distributed on an "AS IS" BASIS, +#WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +#See the License for the specific language governing permissions and +#limitations under the License. import("//build_overrides/build.gni") import("//build_overrides/chip.gni") import("//build_overrides/pigweed.gni") import("${chip_root}/build/chip/chip_test_suite.gni") - chip_test_suite("tests") { output_name = "libBDXTests" diff --git a/src/protocols/bdx/tests/TestBdxMessages.cpp b/src/protocols/bdx/tests/TestBdxMessages.cpp index e53888472f2396..6475cbd89c14c2 100644 --- a/src/protocols/bdx/tests/TestBdxMessages.cpp +++ b/src/protocols/bdx/tests/TestBdxMessages.cpp @@ -22,15 +22,15 @@ void TestHelperWrittenAndParsedMatch(MsgType & testMsg) size_t msgSize = testMsg.MessageSize(); Encoding::LittleEndian::PacketBufferWriter bbuf(System::PacketBufferHandle::New(msgSize)); - EXPECT_FALSE(bbuf.IsNull()); + ASSERT_FALSE(bbuf.IsNull()); testMsg.WriteToBuffer(bbuf); EXPECT_TRUE(bbuf.Fit()); System::PacketBufferHandle msgBuf = bbuf.Finalize(); - EXPECT_FALSE(msgBuf.IsNull()); + ASSERT_FALSE(msgBuf.IsNull()); System::PacketBufferHandle rcvBuf = System::PacketBufferHandle::NewWithData(msgBuf->Start(), msgSize); - EXPECT_FALSE(rcvBuf.IsNull()); + ASSERT_FALSE(rcvBuf.IsNull()); MsgType testMsgRcvd; err = testMsgRcvd.Parse(std::move(rcvBuf)); @@ -43,7 +43,7 @@ struct TestBdxMessages : public ::testing::Test static void SetUpTestSuite() { CHIP_ERROR error = chip::Platform::MemoryInit(); - EXPECT_EQ(error, CHIP_NO_ERROR); + ASSERT_EQ(error, CHIP_NO_ERROR); } static void TearDownTestSuite() { chip::Platform::MemoryShutdown(); } diff --git a/src/protocols/bdx/tests/TestBdxTransferSession.cpp b/src/protocols/bdx/tests/TestBdxTransferSession.cpp index 4c3e0097aba7ec..efd93bb1858415 100644 --- a/src/protocols/bdx/tests/TestBdxTransferSession.cpp +++ b/src/protocols/bdx/tests/TestBdxTransferSession.cpp @@ -104,18 +104,10 @@ void VerifyStatusReport(const System::PacketBufferHandle & msg, StatusCode expec { CHIP_ERROR err = CHIP_NO_ERROR; - if (msg.IsNull()) - { - EXPECT_TRUE(false); - return; - } + ASSERT_FALSE(msg.IsNull()) System::PacketBufferHandle msgCopy = msg.CloneData(); - if (msgCopy.IsNull()) - { - EXPECT_TRUE(false); - return; - } + ASSERT_FALSE(msgCopy.IsNull()) SecureChannel::StatusReport report; err = report.Parse(std::move(msgCopy)); @@ -175,22 +167,14 @@ void SendAndVerifyTransferInit(TransferSession::OutputEvent & outEvent, System:: } if (outEvent.transferInitData.Metadata != nullptr) { - EXPECT_EQ(outEvent.transferInitData.MetadataLength, initData.MetadataLength); - if (outEvent.transferInitData.MetadataLength == initData.MetadataLength) - { - // Even if initData.MetadataLength is 0, it is still technically undefined behaviour to call memcmp with a null - bool isNullAndLengthZero = initData.Metadata == nullptr && initData.MetadataLength == 0; - if (!isNullAndLengthZero) - { - // Only check that metadata buffers match. The OutputEvent can still be inspected when this function returns to - // parse the metadata and verify that it matches. - EXPECT_EQ(0, - memcmp(initData.Metadata, outEvent.transferInitData.Metadata, outEvent.transferInitData.MetadataLength)); - } - } - else + ASSERT_EQ(outEvent.transferInitData.MetadataLength, initData.MetadataLength); + // Even if initData.MetadataLength is 0, it is still technically undefined behaviour to call memcmp with a null + bool isNullAndLengthZero = initData.Metadata == nullptr && initData.MetadataLength == 0; + if (!isNullAndLengthZero) { - EXPECT_TRUE(false); // Metadata length mismatch + // Only check that metadata buffers match. The OutputEvent can still be inspected when this function returns to + // parse the metadata and verify that it matches. + EXPECT_EQ(0, memcmp(initData.Metadata, outEvent.transferInitData.Metadata, outEvent.transferInitData.MetadataLength)); } } } @@ -235,23 +219,15 @@ void SendAndVerifyAcceptMsg(TransferSession::OutputEvent & outEvent, TransferSes EXPECT_EQ(outEvent.transferAcceptData.Length, acceptData.Length); if (outEvent.transferAcceptData.Metadata != nullptr) { - EXPECT_EQ(outEvent.transferAcceptData.MetadataLength, acceptData.MetadataLength); - if (outEvent.transferAcceptData.MetadataLength == acceptData.MetadataLength) + ASSERT_EQ(outEvent.transferAcceptData.MetadataLength, acceptData.MetadataLength); + // Even if acceptData.MetadataLength is 0, it is still technically undefined behaviour to call memcmp with a null + bool isNullAndLengthZero = acceptData.Metadata == nullptr && acceptData.MetadataLength == 0; + if (!isNullAndLengthZero) { - // Even if acceptData.MetadataLength is 0, it is still technically undefined behaviour to call memcmp with a null - bool isNullAndLengthZero = acceptData.Metadata == nullptr && acceptData.MetadataLength == 0; - if (!isNullAndLengthZero) - { - // Only check that metadata buffers match. The OutputEvent can still be inspected when this function returns to - // parse the metadata and verify that it matches. - EXPECT_EQ( - 0, - memcmp(acceptData.Metadata, outEvent.transferAcceptData.Metadata, outEvent.transferAcceptData.MetadataLength)); - } - } - else - { - EXPECT_TRUE(false); // Metadata length mismatch + // Only check that metadata buffers match. The OutputEvent can still be inspected when this function returns to + // parse the metadata and verify that it matches. + EXPECT_EQ( + 0, memcmp(acceptData.Metadata, outEvent.transferAcceptData.Metadata, outEvent.transferAcceptData.MetadataLength)); } } @@ -289,11 +265,7 @@ void SendAndVerifyArbitraryBlock(TransferSession & sender, TransferSession & rec EXPECT_GT(maxBlockSize, 0); System::PacketBufferHandle fakeDataBuf = System::PacketBufferHandle::New(maxBlockSize); - if (fakeDataBuf.IsNull()) - { - EXPECT_TRUE(false); - return; - } + ASSERT_FALSE(fakeDataBuf.IsNull()); uint8_t * fakeBlockData = fakeDataBuf->Start(); fakeBlockData[0] = dataCount++; @@ -356,7 +328,7 @@ struct TestBdxTransferSession : public ::testing::Test static void SetUpTestSuite() { CHIP_ERROR error = chip::Platform::MemoryInit(); - EXPECT_EQ(error, CHIP_NO_ERROR); + ASSERT_EQ(error, CHIP_NO_ERROR); } static void TearDownTestSuite() { chip::Platform::MemoryShutdown(); } @@ -434,11 +406,7 @@ TEST_F(TestBdxTransferSession, TestInitiatingReceiverReceiverDrive) // Test only one block can be prepared at a time, without receiving a response to the first System::PacketBufferHandle fakeBuf = System::PacketBufferHandle::New(testSmallerBlockSize); TransferSession::BlockData prematureBlock; - if (fakeBuf.IsNull()) - { - EXPECT_TRUE(false); - return; - } + ASSERT_FALSE(fakeBuf.IsNull()); prematureBlock.Data = fakeBuf->Start(); prematureBlock.Length = testSmallerBlockSize; prematureBlock.IsEof = false; From 8d4ef41097f11a7f2854a9d21d15d27fc8f4d934 Mon Sep 17 00:00:00 2001 From: Jeff Feasel Date: Tue, 23 Apr 2024 19:13:27 -0400 Subject: [PATCH 4/6] Simplified TestBdxTransfersession::SetUpTestSuite as per PR suggestion. --- src/protocols/bdx/tests/TestBdxTransferSession.cpp | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/protocols/bdx/tests/TestBdxTransferSession.cpp b/src/protocols/bdx/tests/TestBdxTransferSession.cpp index efd93bb1858415..b3194a6c080964 100644 --- a/src/protocols/bdx/tests/TestBdxTransferSession.cpp +++ b/src/protocols/bdx/tests/TestBdxTransferSession.cpp @@ -325,11 +325,7 @@ void SendAndVerifyBlockAck(TransferSession & ackReceiver, TransferSession & ackS struct TestBdxTransferSession : public ::testing::Test { - static void SetUpTestSuite() - { - CHIP_ERROR error = chip::Platform::MemoryInit(); - ASSERT_EQ(error, CHIP_NO_ERROR); - } + static void SetUpTestSuite() { EXPECT_EQ(chip::Platform::MemoryInit(), CHIP_NO_ERROR); } static void TearDownTestSuite() { chip::Platform::MemoryShutdown(); } }; From 7bcd3f84ed55bd105b3785bc6c1261604075502b Mon Sep 17 00:00:00 2001 From: Jeff Feasel Date: Tue, 23 Apr 2024 19:28:53 -0400 Subject: [PATCH 5/6] Undid the accidental reformatting of the comments at the top. --- src/protocols/bdx/tests/BUILD.gn | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/protocols/bdx/tests/BUILD.gn b/src/protocols/bdx/tests/BUILD.gn index 782edc612b28c1..055301b3432916 100644 --- a/src/protocols/bdx/tests/BUILD.gn +++ b/src/protocols/bdx/tests/BUILD.gn @@ -1,16 +1,16 @@ -#Copyright(c) 2020 Project CHIP Authors +# Copyright (c) 2020 Project CHIP Authors # -#Licensed under the Apache License, Version 2.0(the "License"); -#you may not use this file except in compliance with the License. -#You may obtain a copy of the License at +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at # -#http: // www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # -#Unless required by applicable law or agreed to in writing, software -#distributed under the License is distributed on an "AS IS" BASIS, -#WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -#See the License for the specific language governing permissions and -#limitations under the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import("//build_overrides/build.gni") import("//build_overrides/chip.gni") From 04bcfebda8daef953293fa4d4abf5c7643923b9c Mon Sep 17 00:00:00 2001 From: Jeff Feasel Date: Wed, 24 Apr 2024 23:31:46 -0400 Subject: [PATCH 6/6] Semicolon fix. --- src/protocols/bdx/tests/TestBdxTransferSession.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/protocols/bdx/tests/TestBdxTransferSession.cpp b/src/protocols/bdx/tests/TestBdxTransferSession.cpp index b3194a6c080964..a3a76df6bddf67 100644 --- a/src/protocols/bdx/tests/TestBdxTransferSession.cpp +++ b/src/protocols/bdx/tests/TestBdxTransferSession.cpp @@ -104,10 +104,10 @@ void VerifyStatusReport(const System::PacketBufferHandle & msg, StatusCode expec { CHIP_ERROR err = CHIP_NO_ERROR; - ASSERT_FALSE(msg.IsNull()) + ASSERT_FALSE(msg.IsNull()); System::PacketBufferHandle msgCopy = msg.CloneData(); - ASSERT_FALSE(msgCopy.IsNull()) + ASSERT_FALSE(msgCopy.IsNull()); SecureChannel::StatusReport report; err = report.Parse(std::move(msgCopy));