diff --git a/src/app/tests/TestReadInteraction.cpp b/src/app/tests/TestReadInteraction.cpp index 5baab570f6e071..f997266b935c09 100644 --- a/src/app/tests/TestReadInteraction.cpp +++ b/src/app/tests/TestReadInteraction.cpp @@ -286,28 +286,23 @@ namespace app { using Seconds16 = System::Clock::Seconds16; using Milliseconds32 = System::Clock::Milliseconds32; -// TODO: Add support for a 2nd Test Context by making sSyncScheduler = true (this was not ported from NL Tests yet) class TestReadInteraction : public chip::Test::AppContext { - public: - static void SetUpTestSuite() + static void SetUpTestSuiteCommon(bool syncScheduler = false) { AppContext::SetUpTestSuite(); gRealClock = &chip::System::SystemClock(); chip::System::Clock::Internal::SetSystemClockForTesting(&gMockClock); - if (sSyncScheduler) - { - gReportScheduler = chip::app::reporting::GetSynchronizedReportScheduler(); - sUsingSubSync = true; - } - else - { - gReportScheduler = chip::app::reporting::GetDefaultReportScheduler(); - } + sUsingSubSync = syncScheduler; + gReportScheduler = syncScheduler ? chip::app::reporting::GetSynchronizedReportScheduler() + : chip::app::reporting::GetDefaultReportScheduler(); } + + static void SetUpTestSuite() { SetUpTestSuiteCommon(false); } + static void TearDownTestSuite() { chip::System::Clock::Internal::SetSystemClockForTesting(gRealClock); @@ -332,6 +327,7 @@ class TestReadInteraction : public chip::Test::AppContext chip::Test::SetMockNodeConfig(TestMockNodeConfig()); chip::Test::SetVersionTo(chip::Test::kTestDataVersion1); } + void TearDown() override { chip::Test::ResetMockNodeConfig(); @@ -340,43 +336,66 @@ class TestReadInteraction : public chip::Test::AppContext AppContext::TearDown(); } + void TestICDProcessSubscribeRequestInfMaxIntervalCeiling(); + void TestICDProcessSubscribeRequestInvalidIdleModeDuration(); + void TestICDProcessSubscribeRequestMaxMinInterval(); + void TestICDProcessSubscribeRequestSupMaxIntervalCeiling(); + void TestICDProcessSubscribeRequestSupMinInterval(); + void TestPostSubscribeRoundtripChunkReport(); + void TestPostSubscribeRoundtripChunkReportTimeout(); + void TestPostSubscribeRoundtripChunkStatusReportTimeout(); + void TestPostSubscribeRoundtripStatusReportTimeout(); + void TestProcessSubscribeRequest(); + void TestReadChunking(); + void TestReadChunkingInvalidSubscriptionId(); + void TestReadChunkingStatusReportTimeout(); void TestReadClient(); - void TestReadUnexpectedSubscriptionId(); - void TestReadHandler(); - void TestReadHandlerSetMaxReportingInterval(); void TestReadClientGenerateAttributePathList(); void TestReadClientGenerateInvalidAttributePathList(); - void TestReadClientInvalidReport(); - void TestReadClientInvalidAttributeId(); - void TestReadHandlerInvalidAttributePath(); void TestReadClientGenerateOneEventPaths(); void TestReadClientGenerateTwoEventPaths(); - void TestProcessSubscribeRequest(); - void TestICDProcessSubscribeRequestSupMaxIntervalCeiling(); - void TestICDProcessSubscribeRequestInfMaxIntervalCeiling(); - void TestICDProcessSubscribeRequestSupMinInterval(); - void TestICDProcessSubscribeRequestMaxMinInterval(); - void TestICDProcessSubscribeRequestInvalidIdleModeDuration(); - void TestSubscribeRoundtrip(); - void TestSubscribeEarlyReport(); - void TestSubscribeUrgentWildcardEvent(); - void TestSubscribeInvalidAttributePathRoundtrip(); - void TestPostSubscribeRoundtripStatusReportTimeout(); + void TestReadClientInvalidAttributeId(); + void TestReadClientInvalidReport(); void TestReadClientReceiveInvalidMessage(); - void TestSubscribeClientReceiveInvalidStatusResponse(); - void TestSubscribeClientReceiveWellFormedStatusResponse(); + void TestReadHandler(); + void TestReadHandlerInvalidAttributePath(); + void TestReadHandlerInvalidSubscribeRequest(); + void TestReadHandlerMalformedReadRequest1(); + void TestReadHandlerMalformedReadRequest2(); + void TestReadHandlerMalformedSubscribeRequest(); + void TestReadHandlerSetMaxReportingInterval(); + void TestReadInvalidAttributePathRoundtrip(); + void TestReadReportFailure(); + void TestReadRoundtrip(); + void TestReadRoundtripWithDataVersionFilter(); + void TestReadRoundtripWithMultiSamePathDifferentDataVersionFilter(); + void TestReadRoundtripWithNoMatchPathDataVersionFilter(); + void TestReadRoundtripWithSameDifferentPathsDataVersionFilter(); + void TestReadShutdown(); + void TestReadUnexpectedSubscriptionId(); + void TestReadWildcard(); + void TestSetDirtyBetweenChunks(); + void TestShutdownSubscription(); void TestSubscribeClientReceiveInvalidReportMessage(); - void TestSubscribeClientReceiveUnsolicitedInvalidReportMessage(); + void TestSubscribeClientReceiveInvalidStatusResponse(); void TestSubscribeClientReceiveInvalidSubscribeResponseMessage(); + void TestSubscribeClientReceiveUnsolicitedInvalidReportMessage(); void TestSubscribeClientReceiveUnsolicitedReportMessageWithInvalidSubscriptionId(); - void TestReadChunkingInvalidSubscriptionId(); - void TestReadHandlerMalformedSubscribeRequest(); - void TestReadHandlerMalformedReadRequest1(); - void TestReadHandlerMalformedReadRequest2(); - void TestSubscribeSendUnknownMessage(); + void TestSubscribeClientReceiveWellFormedStatusResponse(); + void TestSubscribeEarlyReport(); + void TestSubscribeEarlyShutdown(); + void TestSubscribeInvalidateFabric(); + void TestSubscribeInvalidAttributePathRoundtrip(); + void TestSubscribeInvalidInterval(); + void TestSubscribePartialOverlap(); + void TestSubscribeRoundtrip(); + void TestSubscribeRoundtripChunkStatusReportTimeout(); + void TestSubscribeRoundtripStatusReportTimeout(); void TestSubscribeSendInvalidStatusReport(); - void TestReadHandlerInvalidSubscribeRequest(); - void TestShutdownSubscription(); + void TestSubscribeSendUnknownMessage(); + void TestSubscribeSetDirtyFullyOverlap(); + void TestSubscribeUrgentWildcardEvent(); + void TestSubscribeWildcard(); void TestSubscriptionReportWithDefunctSession(); enum class ReportType : uint8_t @@ -385,16 +404,23 @@ class TestReadInteraction : public chip::Test::AppContext kInvalidNoAttributeId, kInvalidOutOfRangeAttributeId, }; + static void GenerateReportData(System::PacketBufferHandle & aPayload, ReportType aReportType, bool aSuppressResponse, bool aHasSubscriptionId); protected: chip::MonotonicallyIncreasingCounter mEventCounter; - static bool sSyncScheduler; chip::app::DataModel::Provider * mOldProvider = nullptr; }; -bool TestReadInteraction::sSyncScheduler = false; +class TestReadInteractionSync : public TestReadInteraction +{ +public: + static void SetUpTestSuite() { TestReadInteraction::SetUpTestSuiteCommon(true); } + static void TearDownTestSuite() { TestReadInteraction::TearDownTestSuite(); } + void SetUp() { TestReadInteraction::SetUp(); } + void TearDown() { TestReadInteraction::TearDown(); } +}; void TestReadInteraction::GenerateReportData(System::PacketBufferHandle & aPayload, ReportType aReportType, bool aSuppressResponse, bool aHasSubscriptionId = false) @@ -476,7 +502,9 @@ void TestReadInteraction::GenerateReportData(System::PacketBufferHandle & aPaylo EXPECT_EQ(writer.Finalize(&aPayload), CHIP_NO_ERROR); } -TEST_F_FROM_FIXTURE(TestReadInteraction, TestReadClient) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteraction, TestReadClient) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteractionSync, TestReadClient) +void TestReadInteraction::TestReadClient() { MockInteractionModelApp delegate; app::ReadClient readClient(chip::app::InteractionModelEngine::GetInstance(), &GetExchangeManager(), delegate, @@ -497,7 +525,9 @@ TEST_F_FROM_FIXTURE(TestReadInteraction, TestReadClient) EXPECT_EQ(readClient.ProcessReportData(std::move(buf), ReadClient::ReportType::kContinuingTransaction), CHIP_NO_ERROR); } -TEST_F_FROM_FIXTURE(TestReadInteraction, TestReadUnexpectedSubscriptionId) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteraction, TestReadUnexpectedSubscriptionId) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteractionSync, TestReadUnexpectedSubscriptionId) +void TestReadInteraction::TestReadUnexpectedSubscriptionId() { MockInteractionModelApp delegate; app::ReadClient readClient(chip::app::InteractionModelEngine::GetInstance(), &GetExchangeManager(), delegate, @@ -520,7 +550,9 @@ TEST_F_FROM_FIXTURE(TestReadInteraction, TestReadUnexpectedSubscriptionId) CHIP_ERROR_INVALID_ARGUMENT); } -TEST_F_FROM_FIXTURE(TestReadInteraction, TestReadHandler) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteraction, TestReadHandler) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteractionSync, TestReadHandler) +void TestReadInteraction::TestReadHandler() { System::PacketBufferTLVWriter writer; System::PacketBufferHandle reportDatabuf = System::PacketBufferHandle::New(System::PacketBuffer::kMaxSize); @@ -569,7 +601,9 @@ TEST_F_FROM_FIXTURE(TestReadInteraction, TestReadHandler) EXPECT_EQ(GetExchangeManager().GetNumActiveExchanges(), 0u); } -TEST_F_FROM_FIXTURE(TestReadInteraction, TestReadHandlerSetMaxReportingInterval) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteraction, TestReadHandlerSetMaxReportingInterval) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteractionSync, TestReadHandlerSetMaxReportingInterval) +void TestReadInteraction::TestReadHandlerSetMaxReportingInterval() { System::PacketBufferTLVWriter writer; System::PacketBufferHandle subscribeRequestbuf = System::PacketBufferHandle::New(System::PacketBuffer::kMaxSize); @@ -678,7 +712,9 @@ TEST_F_FROM_FIXTURE(TestReadInteraction, TestReadHandlerSetMaxReportingInterval) EXPECT_EQ(GetExchangeManager().GetNumActiveExchanges(), 0u); } -TEST_F_FROM_FIXTURE(TestReadInteraction, TestReadClientGenerateAttributePathList) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteraction, TestReadClientGenerateAttributePathList) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteractionSync, TestReadClientGenerateAttributePathList) +void TestReadInteraction::TestReadClientGenerateAttributePathList() { MockInteractionModelApp delegate; System::PacketBufferHandle msgBuf; @@ -703,7 +739,9 @@ TEST_F_FROM_FIXTURE(TestReadInteraction, TestReadClientGenerateAttributePathList EXPECT_EQ(readClient.GenerateAttributePaths(attributePathListBuilder, attributePaths), CHIP_NO_ERROR); } -TEST_F_FROM_FIXTURE(TestReadInteraction, TestReadClientGenerateInvalidAttributePathList) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteraction, TestReadClientGenerateInvalidAttributePathList) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteractionSync, TestReadClientGenerateInvalidAttributePathList) +void TestReadInteraction::TestReadClientGenerateInvalidAttributePathList() { MockInteractionModelApp delegate; System::PacketBufferHandle msgBuf; @@ -729,7 +767,9 @@ TEST_F_FROM_FIXTURE(TestReadInteraction, TestReadClientGenerateInvalidAttributeP CHIP_ERROR_IM_MALFORMED_ATTRIBUTE_PATH_IB); } -TEST_F_FROM_FIXTURE(TestReadInteraction, TestReadClientInvalidReport) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteraction, TestReadClientInvalidReport) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteractionSync, TestReadClientInvalidReport) +void TestReadInteraction::TestReadClientInvalidReport() { MockInteractionModelApp delegate; @@ -753,7 +793,9 @@ TEST_F_FROM_FIXTURE(TestReadInteraction, TestReadClientInvalidReport) CHIP_ERROR_IM_MALFORMED_ATTRIBUTE_PATH_IB); } -TEST_F_FROM_FIXTURE(TestReadInteraction, TestReadClientInvalidAttributeId) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteraction, TestReadClientInvalidAttributeId) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteractionSync, TestReadClientInvalidAttributeId) +void TestReadInteraction::TestReadClientInvalidAttributeId() { MockInteractionModelApp delegate; @@ -783,7 +825,9 @@ TEST_F_FROM_FIXTURE(TestReadInteraction, TestReadClientInvalidAttributeId) EXPECT_FALSE(delegate.mReadError); } -TEST_F_FROM_FIXTURE(TestReadInteraction, TestReadHandlerInvalidAttributePath) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteraction, TestReadHandlerInvalidAttributePath) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteractionSync, TestReadHandlerInvalidAttributePath) +void TestReadInteraction::TestReadHandlerInvalidAttributePath() { CHIP_ERROR err = CHIP_NO_ERROR; @@ -840,7 +884,9 @@ TEST_F_FROM_FIXTURE(TestReadInteraction, TestReadHandlerInvalidAttributePath) EXPECT_EQ(GetExchangeManager().GetNumActiveExchanges(), 0u); } -TEST_F_FROM_FIXTURE(TestReadInteraction, TestReadClientGenerateOneEventPaths) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteraction, TestReadClientGenerateOneEventPaths) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteractionSync, TestReadClientGenerateOneEventPaths) +void TestReadInteraction::TestReadClientGenerateOneEventPaths() { MockInteractionModelApp delegate; System::PacketBufferHandle msgBuf; @@ -881,7 +927,9 @@ TEST_F_FROM_FIXTURE(TestReadInteraction, TestReadClientGenerateOneEventPaths) EXPECT_EQ(GetExchangeManager().GetNumActiveExchanges(), 0u); } -TEST_F_FROM_FIXTURE(TestReadInteraction, TestReadClientGenerateTwoEventPaths) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteraction, TestReadClientGenerateTwoEventPaths) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteractionSync, TestReadClientGenerateTwoEventPaths) +void TestReadInteraction::TestReadClientGenerateTwoEventPaths() { MockInteractionModelApp delegate; System::PacketBufferHandle msgBuf; @@ -926,7 +974,9 @@ TEST_F_FROM_FIXTURE(TestReadInteraction, TestReadClientGenerateTwoEventPaths) EXPECT_EQ(GetExchangeManager().GetNumActiveExchanges(), 0u); } -TEST_F(TestReadInteraction, TestReadRoundtrip) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteraction, TestReadRoundtrip) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteractionSync, TestReadRoundtrip) +void TestReadInteraction::TestReadRoundtrip() { Messaging::ReliableMessageMgr * rm = GetExchangeManager().GetReliableMessageMgr(); @@ -1003,7 +1053,9 @@ TEST_F(TestReadInteraction, TestReadRoundtrip) EXPECT_EQ(GetExchangeManager().GetNumActiveExchanges(), 0u); } -TEST_F(TestReadInteraction, TestReadRoundtripWithDataVersionFilter) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteraction, TestReadRoundtripWithDataVersionFilter) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteractionSync, TestReadRoundtripWithDataVersionFilter) +void TestReadInteraction::TestReadRoundtripWithDataVersionFilter() { Messaging::ReliableMessageMgr * rm = GetExchangeManager().GetReliableMessageMgr(); @@ -1055,7 +1107,9 @@ TEST_F(TestReadInteraction, TestReadRoundtripWithDataVersionFilter) EXPECT_EQ(GetExchangeManager().GetNumActiveExchanges(), 0u); } -TEST_F(TestReadInteraction, TestReadRoundtripWithNoMatchPathDataVersionFilter) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteraction, TestReadRoundtripWithNoMatchPathDataVersionFilter) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteractionSync, TestReadRoundtripWithNoMatchPathDataVersionFilter) +void TestReadInteraction::TestReadRoundtripWithNoMatchPathDataVersionFilter() { Messaging::ReliableMessageMgr * rm = GetExchangeManager().GetReliableMessageMgr(); @@ -1111,7 +1165,9 @@ TEST_F(TestReadInteraction, TestReadRoundtripWithNoMatchPathDataVersionFilter) EXPECT_EQ(GetExchangeManager().GetNumActiveExchanges(), 0u); } -TEST_F(TestReadInteraction, TestReadRoundtripWithMultiSamePathDifferentDataVersionFilter) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteraction, TestReadRoundtripWithMultiSamePathDifferentDataVersionFilter) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteractionSync, TestReadRoundtripWithMultiSamePathDifferentDataVersionFilter) +void TestReadInteraction::TestReadRoundtripWithMultiSamePathDifferentDataVersionFilter() { Messaging::ReliableMessageMgr * rm = GetExchangeManager().GetReliableMessageMgr(); @@ -1168,7 +1224,9 @@ TEST_F(TestReadInteraction, TestReadRoundtripWithMultiSamePathDifferentDataVersi EXPECT_EQ(GetExchangeManager().GetNumActiveExchanges(), 0u); } -TEST_F(TestReadInteraction, TestReadRoundtripWithSameDifferentPathsDataVersionFilter) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteraction, TestReadRoundtripWithSameDifferentPathsDataVersionFilter) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteractionSync, TestReadRoundtripWithSameDifferentPathsDataVersionFilter) +void TestReadInteraction::TestReadRoundtripWithSameDifferentPathsDataVersionFilter() { Messaging::ReliableMessageMgr * rm = GetExchangeManager().GetReliableMessageMgr(); @@ -1225,7 +1283,9 @@ TEST_F(TestReadInteraction, TestReadRoundtripWithSameDifferentPathsDataVersionFi EXPECT_EQ(GetExchangeManager().GetNumActiveExchanges(), 0u); } -TEST_F(TestReadInteraction, TestReadWildcard) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteraction, TestReadWildcard) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteractionSync, TestReadWildcard) +void TestReadInteraction::TestReadWildcard() { Messaging::ReliableMessageMgr * rm = GetExchangeManager().GetReliableMessageMgr(); @@ -1271,7 +1331,9 @@ TEST_F(TestReadInteraction, TestReadWildcard) } // TestReadChunking will try to read a few large attributes, the report won't fit into the MTU and result in chunking. -TEST_F(TestReadInteraction, TestReadChunking) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteraction, TestReadChunking) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteractionSync, TestReadChunking) +void TestReadInteraction::TestReadChunking() { Messaging::ReliableMessageMgr * rm = GetExchangeManager().GetReliableMessageMgr(); @@ -1323,7 +1385,9 @@ TEST_F(TestReadInteraction, TestReadChunking) EXPECT_EQ(GetExchangeManager().GetNumActiveExchanges(), 0u); } -TEST_F(TestReadInteraction, TestSetDirtyBetweenChunks) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteraction, TestSetDirtyBetweenChunks) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteractionSync, TestSetDirtyBetweenChunks) +void TestReadInteraction::TestSetDirtyBetweenChunks() { Messaging::ReliableMessageMgr * rm = GetExchangeManager().GetReliableMessageMgr(); @@ -1472,7 +1536,9 @@ TEST_F(TestReadInteraction, TestSetDirtyBetweenChunks) EXPECT_EQ(GetExchangeManager().GetNumActiveExchanges(), 0u); } -TEST_F(TestReadInteraction, TestReadInvalidAttributePathRoundtrip) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteraction, TestReadInvalidAttributePathRoundtrip) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteractionSync, TestReadInvalidAttributePathRoundtrip) +void TestReadInteraction::TestReadInvalidAttributePathRoundtrip() { Messaging::ReliableMessageMgr * rm = GetExchangeManager().GetReliableMessageMgr(); @@ -1513,7 +1579,9 @@ TEST_F(TestReadInteraction, TestReadInvalidAttributePathRoundtrip) EXPECT_EQ(GetExchangeManager().GetNumActiveExchanges(), 0u); } -TEST_F_FROM_FIXTURE(TestReadInteraction, TestProcessSubscribeRequest) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteraction, TestProcessSubscribeRequest) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteractionSync, TestProcessSubscribeRequest) +void TestReadInteraction::TestProcessSubscribeRequest() { System::PacketBufferTLVWriter writer; System::PacketBufferHandle subscribeRequestbuf = System::PacketBufferHandle::New(System::PacketBuffer::kMaxSize); @@ -1570,7 +1638,9 @@ TEST_F_FROM_FIXTURE(TestReadInteraction, TestProcessSubscribeRequest) * @brief Test validates that an ICD will choose its IdleModeDuration (GetPublisherSelectedIntervalLimit) * as MaxInterval when the MaxIntervalCeiling is superior. */ -TEST_F_FROM_FIXTURE(TestReadInteraction, TestICDProcessSubscribeRequestSupMaxIntervalCeiling) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteraction, TestICDProcessSubscribeRequestSupMaxIntervalCeiling) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteractionSync, TestICDProcessSubscribeRequestSupMaxIntervalCeiling) +void TestReadInteraction::TestICDProcessSubscribeRequestSupMaxIntervalCeiling() { System::PacketBufferTLVWriter writer; System::PacketBufferHandle subscribeRequestbuf = System::PacketBufferHandle::New(System::PacketBuffer::kMaxSize); @@ -1638,7 +1708,9 @@ TEST_F_FROM_FIXTURE(TestReadInteraction, TestICDProcessSubscribeRequestSupMaxInt * @brief Test validates that an ICD will choose its IdleModeDuration (GetPublisherSelectedIntervalLimit) * as MaxInterval when the MaxIntervalCeiling is inferior. */ -TEST_F_FROM_FIXTURE(TestReadInteraction, TestICDProcessSubscribeRequestInfMaxIntervalCeiling) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteraction, TestICDProcessSubscribeRequestInfMaxIntervalCeiling) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteractionSync, TestICDProcessSubscribeRequestInfMaxIntervalCeiling) +void TestReadInteraction::TestICDProcessSubscribeRequestInfMaxIntervalCeiling() { System::PacketBufferTLVWriter writer; System::PacketBufferHandle subscribeRequestbuf = System::PacketBufferHandle::New(System::PacketBuffer::kMaxSize); @@ -1706,7 +1778,9 @@ TEST_F_FROM_FIXTURE(TestReadInteraction, TestICDProcessSubscribeRequestInfMaxInt * @brief Test validates that an ICD will choose a multiple of its IdleModeDuration (GetPublisherSelectedIntervalLimit) * as MaxInterval when the MinInterval > IdleModeDuration. */ -TEST_F_FROM_FIXTURE(TestReadInteraction, TestICDProcessSubscribeRequestSupMinInterval) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteraction, TestICDProcessSubscribeRequestSupMinInterval) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteractionSync, TestICDProcessSubscribeRequestSupMinInterval) +void TestReadInteraction::TestICDProcessSubscribeRequestSupMinInterval() { System::PacketBufferTLVWriter writer; System::PacketBufferHandle subscribeRequestbuf = System::PacketBufferHandle::New(System::PacketBuffer::kMaxSize); @@ -1774,7 +1848,9 @@ TEST_F_FROM_FIXTURE(TestReadInteraction, TestICDProcessSubscribeRequestSupMinInt * @brief Test validates that an ICD will choose a maximal value for an uint16 if the multiple of the IdleModeDuration * is greater than variable size. */ -TEST_F_FROM_FIXTURE(TestReadInteraction, TestICDProcessSubscribeRequestMaxMinInterval) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteraction, TestICDProcessSubscribeRequestMaxMinInterval) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteractionSync, TestICDProcessSubscribeRequestMaxMinInterval) +void TestReadInteraction::TestICDProcessSubscribeRequestMaxMinInterval() { System::PacketBufferTLVWriter writer; System::PacketBufferHandle subscribeRequestbuf = System::PacketBufferHandle::New(System::PacketBuffer::kMaxSize); @@ -1840,7 +1916,9 @@ TEST_F_FROM_FIXTURE(TestReadInteraction, TestICDProcessSubscribeRequestMaxMinInt * @brief Test validates that an ICD will choose the MaxIntervalCeiling as MaxInterval if the next multiple after the MinInterval * is greater than the IdleModeDuration and MaxIntervalCeiling */ -TEST_F_FROM_FIXTURE(TestReadInteraction, TestICDProcessSubscribeRequestInvalidIdleModeDuration) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteraction, TestICDProcessSubscribeRequestInvalidIdleModeDuration) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteractionSync, TestICDProcessSubscribeRequestInvalidIdleModeDuration) +void TestReadInteraction::TestICDProcessSubscribeRequestInvalidIdleModeDuration() { System::PacketBufferTLVWriter writer; System::PacketBufferHandle subscribeRequestbuf = System::PacketBufferHandle::New(System::PacketBuffer::kMaxSize); @@ -1904,7 +1982,9 @@ TEST_F_FROM_FIXTURE(TestReadInteraction, TestICDProcessSubscribeRequestInvalidId #endif // CHIP_CONFIG_ENABLE_ICD_SERVER -TEST_F_FROM_FIXTURE(TestReadInteraction, TestSubscribeRoundtrip) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteraction, TestSubscribeRoundtrip) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteractionSync, TestSubscribeRoundtrip) +void TestReadInteraction::TestSubscribeRoundtrip() { Messaging::ReliableMessageMgr * rm = GetExchangeManager().GetReliableMessageMgr(); @@ -2099,7 +2179,9 @@ TEST_F_FROM_FIXTURE(TestReadInteraction, TestSubscribeRoundtrip) EXPECT_EQ(GetExchangeManager().GetNumActiveExchanges(), 0u); } -TEST_F_FROM_FIXTURE(TestReadInteraction, TestSubscribeEarlyReport) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteraction, TestSubscribeEarlyReport) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteractionSync, TestSubscribeEarlyReport) +void TestReadInteraction::TestSubscribeEarlyReport() { Messaging::ReliableMessageMgr * rm = GetExchangeManager().GetReliableMessageMgr(); @@ -2260,7 +2342,9 @@ TEST_F_FROM_FIXTURE(TestReadInteraction, TestSubscribeEarlyReport) EXPECT_EQ(GetExchangeManager().GetNumActiveExchanges(), 0u); } -TEST_F_FROM_FIXTURE(TestReadInteraction, TestSubscribeUrgentWildcardEvent) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteraction, TestSubscribeUrgentWildcardEvent) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteractionSync, TestSubscribeUrgentWildcardEvent) +void TestReadInteraction::TestSubscribeUrgentWildcardEvent() { Messaging::ReliableMessageMgr * rm = GetExchangeManager().GetReliableMessageMgr(); @@ -2504,7 +2588,9 @@ TEST_F_FROM_FIXTURE(TestReadInteraction, TestSubscribeUrgentWildcardEvent) EXPECT_EQ(GetExchangeManager().GetNumActiveExchanges(), 0u); } -TEST_F(TestReadInteraction, TestSubscribeWildcard) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteraction, TestSubscribeWildcard) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteractionSync, TestSubscribeWildcard) +void TestReadInteraction::TestSubscribeWildcard() { // This test in particular is completely tied to the DefaultMockConfig in the mock // attribute storage, so reset to that (figuring out chunking location is extra hard to @@ -2525,10 +2611,10 @@ TEST_F(TestReadInteraction, TestSubscribeWildcard) ReadPrepareParams readPrepareParams(GetSessionBobToAlice()); readPrepareParams.mEventPathParamsListSize = 0; - std::unique_ptr attributePathParams(new chip::app::AttributePathParams[2]); - // Subscribe to full wildcard paths, repeat twice to ensure chunking. - readPrepareParams.mpAttributePathParamsList = attributePathParams.get(); readPrepareParams.mAttributePathParamsListSize = 2; + auto attributePathParams = std::make_unique(readPrepareParams.mAttributePathParamsListSize); + // Subscribe to full wildcard paths, repeat twice to ensure chunking. + readPrepareParams.mpAttributePathParamsList = attributePathParams.get(); readPrepareParams.mMinIntervalFloorSeconds = 0; readPrepareParams.mMaxIntervalCeilingSeconds = 1; @@ -2642,7 +2728,9 @@ TEST_F(TestReadInteraction, TestSubscribeWildcard) } // Subscribe (wildcard, C3, A1), then setDirty (E2, C3, wildcard), receive one attribute after setDirty -TEST_F(TestReadInteraction, TestSubscribePartialOverlap) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteraction, TestSubscribePartialOverlap) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteractionSync, TestSubscribePartialOverlap) +void TestReadInteraction::TestSubscribePartialOverlap() { Messaging::ReliableMessageMgr * rm = GetExchangeManager().GetReliableMessageMgr(); @@ -2657,11 +2745,11 @@ TEST_F(TestReadInteraction, TestSubscribePartialOverlap) ReadPrepareParams readPrepareParams(GetSessionBobToAlice()); readPrepareParams.mEventPathParamsListSize = 0; - std::unique_ptr attributePathParams(new chip::app::AttributePathParams[2]); - attributePathParams[0].mClusterId = chip::Test::MockClusterId(3); - attributePathParams[0].mAttributeId = chip::Test::MockAttributeId(1); - readPrepareParams.mpAttributePathParamsList = attributePathParams.get(); readPrepareParams.mAttributePathParamsListSize = 1; + auto attributePathParams = std::make_unique(readPrepareParams.mAttributePathParamsListSize); + attributePathParams[0].mClusterId = chip::Test::MockClusterId(3); + attributePathParams[0].mAttributeId = chip::Test::MockAttributeId(1); + readPrepareParams.mpAttributePathParamsList = attributePathParams.get(); readPrepareParams.mMinIntervalFloorSeconds = 0; readPrepareParams.mMaxIntervalCeilingSeconds = 1; @@ -2712,7 +2800,9 @@ TEST_F(TestReadInteraction, TestSubscribePartialOverlap) } // Subscribe (E2, C3, A1), then setDirty (wildcard, wildcard, wildcard), receive one attribute after setDirty -TEST_F(TestReadInteraction, TestSubscribeSetDirtyFullyOverlap) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteraction, TestSubscribeSetDirtyFullyOverlap) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteractionSync, TestSubscribeSetDirtyFullyOverlap) +void TestReadInteraction::TestSubscribeSetDirtyFullyOverlap() { Messaging::ReliableMessageMgr * rm = GetExchangeManager().GetReliableMessageMgr(); @@ -2727,12 +2817,12 @@ TEST_F(TestReadInteraction, TestSubscribeSetDirtyFullyOverlap) ReadPrepareParams readPrepareParams(GetSessionBobToAlice()); readPrepareParams.mEventPathParamsListSize = 0; - std::unique_ptr attributePathParams(new chip::app::AttributePathParams[1]); - attributePathParams[0].mClusterId = chip::Test::kMockEndpoint2; - attributePathParams[0].mClusterId = chip::Test::MockClusterId(3); - attributePathParams[0].mAttributeId = chip::Test::MockAttributeId(1); - readPrepareParams.mpAttributePathParamsList = attributePathParams.get(); readPrepareParams.mAttributePathParamsListSize = 1; + auto attributePathParams = std::make_unique(readPrepareParams.mAttributePathParamsListSize); + attributePathParams[0].mEndpointId = chip::Test::kMockEndpoint2; + attributePathParams[0].mClusterId = chip::Test::MockClusterId(3); + attributePathParams[0].mAttributeId = chip::Test::MockAttributeId(1); + readPrepareParams.mpAttributePathParamsList = attributePathParams.get(); readPrepareParams.mMinIntervalFloorSeconds = 0; readPrepareParams.mMaxIntervalCeilingSeconds = 1; @@ -2781,7 +2871,9 @@ TEST_F(TestReadInteraction, TestSubscribeSetDirtyFullyOverlap) // Verify that subscription can be shut down just after receiving SUBSCRIBE RESPONSE, // before receiving any subsequent REPORT DATA. -TEST_F(TestReadInteraction, TestSubscribeEarlyShutdown) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteraction, TestSubscribeEarlyShutdown) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteractionSync, TestSubscribeEarlyShutdown) +void TestReadInteraction::TestSubscribeEarlyShutdown() { Messaging::ReliableMessageMgr * rm = GetExchangeManager().GetReliableMessageMgr(); InteractionModelEngine & engine = *InteractionModelEngine::GetInstance(); @@ -2830,7 +2922,9 @@ TEST_F(TestReadInteraction, TestSubscribeEarlyShutdown) EXPECT_EQ(GetExchangeManager().GetNumActiveExchanges(), 0u); } -TEST_F_FROM_FIXTURE(TestReadInteraction, TestSubscribeInvalidAttributePathRoundtrip) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteraction, TestSubscribeInvalidAttributePathRoundtrip) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteractionSync, TestSubscribeInvalidAttributePathRoundtrip) +void TestReadInteraction::TestSubscribeInvalidAttributePathRoundtrip() { Messaging::ReliableMessageMgr * rm = GetExchangeManager().GetReliableMessageMgr(); @@ -2896,7 +2990,9 @@ TEST_F_FROM_FIXTURE(TestReadInteraction, TestSubscribeInvalidAttributePathRoundt EXPECT_EQ(GetExchangeManager().GetNumActiveExchanges(), 0u); } -TEST_F(TestReadInteraction, TestReadShutdown) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteraction, TestReadShutdown) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteractionSync, TestReadShutdown) +void TestReadInteraction::TestReadShutdown() { auto * engine = chip::app::InteractionModelEngine::GetInstance(); app::ReadClient * pClients[4]; @@ -2933,7 +3029,9 @@ TEST_F(TestReadInteraction, TestReadShutdown) Platform::Delete(pClients[2]); } -TEST_F(TestReadInteraction, TestSubscribeInvalidInterval) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteraction, TestSubscribeInvalidInterval) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteractionSync, TestSubscribeInvalidInterval) +void TestReadInteraction::TestSubscribeInvalidInterval() { Messaging::ReliableMessageMgr * rm = GetExchangeManager().GetReliableMessageMgr(); @@ -2977,7 +3075,9 @@ TEST_F(TestReadInteraction, TestSubscribeInvalidInterval) EXPECT_EQ(GetExchangeManager().GetNumActiveExchanges(), 0u); } -TEST_F_FROM_FIXTURE(TestReadInteraction, TestPostSubscribeRoundtripStatusReportTimeout) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteraction, TestPostSubscribeRoundtripStatusReportTimeout) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteractionSync, TestPostSubscribeRoundtripStatusReportTimeout) +void TestReadInteraction::TestPostSubscribeRoundtripStatusReportTimeout() { Messaging::ReliableMessageMgr * rm = GetExchangeManager().GetReliableMessageMgr(); // Shouldn't have anything in the retransmit table when starting the test. @@ -3094,7 +3194,9 @@ TEST_F_FROM_FIXTURE(TestReadInteraction, TestPostSubscribeRoundtripStatusReportT CreateSessionBobToAlice(); } -TEST_F(TestReadInteraction, TestSubscribeRoundtripStatusReportTimeout) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteraction, TestSubscribeRoundtripStatusReportTimeout) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteractionSync, TestSubscribeRoundtripStatusReportTimeout) +void TestReadInteraction::TestSubscribeRoundtripStatusReportTimeout() { Messaging::ReliableMessageMgr * rm = GetExchangeManager().GetReliableMessageMgr(); @@ -3167,7 +3269,9 @@ TEST_F(TestReadInteraction, TestSubscribeRoundtripStatusReportTimeout) CreateSessionBobToAlice(); } -TEST_F(TestReadInteraction, TestReadChunkingStatusReportTimeout) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteraction, TestReadChunkingStatusReportTimeout) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteractionSync, TestReadChunkingStatusReportTimeout) +void TestReadInteraction::TestReadChunkingStatusReportTimeout() { Messaging::ReliableMessageMgr * rm = GetExchangeManager().GetReliableMessageMgr(); @@ -3219,7 +3323,9 @@ TEST_F(TestReadInteraction, TestReadChunkingStatusReportTimeout) // ReadClient sends the read request, but handler fails to send the one report (SendMessage returns an error). // Since this is an un-chunked read, we are not in the AwaitingReportResponse state, so the "reports in flight" // counter should not increase. -TEST_F(TestReadInteraction, TestReadReportFailure) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteraction, TestReadReportFailure) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteractionSync, TestReadReportFailure) +void TestReadInteraction::TestReadReportFailure() { Messaging::ReliableMessageMgr * rm = GetExchangeManager().GetReliableMessageMgr(); @@ -3263,7 +3369,9 @@ TEST_F(TestReadInteraction, TestReadReportFailure) EXPECT_EQ(GetExchangeManager().GetNumActiveExchanges(), 0u); } -TEST_F(TestReadInteraction, TestSubscribeRoundtripChunkStatusReportTimeout) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteraction, TestSubscribeRoundtripChunkStatusReportTimeout) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteractionSync, TestSubscribeRoundtripChunkStatusReportTimeout) +void TestReadInteraction::TestSubscribeRoundtripChunkStatusReportTimeout() { Messaging::ReliableMessageMgr * rm = GetExchangeManager().GetReliableMessageMgr(); @@ -3331,7 +3439,9 @@ TEST_F(TestReadInteraction, TestSubscribeRoundtripChunkStatusReportTimeout) CreateSessionBobToAlice(); } -TEST_F(TestReadInteraction, TestPostSubscribeRoundtripChunkStatusReportTimeout) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteraction, TestPostSubscribeRoundtripChunkStatusReportTimeout) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteractionSync, TestPostSubscribeRoundtripChunkStatusReportTimeout) +void TestReadInteraction::TestPostSubscribeRoundtripChunkStatusReportTimeout() { Messaging::ReliableMessageMgr * rm = GetExchangeManager().GetReliableMessageMgr(); @@ -3430,7 +3540,9 @@ TEST_F(TestReadInteraction, TestPostSubscribeRoundtripChunkStatusReportTimeout) CreateSessionBobToAlice(); } -TEST_F(TestReadInteraction, TestPostSubscribeRoundtripChunkReportTimeout) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteraction, TestPostSubscribeRoundtripChunkReportTimeout) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteractionSync, TestPostSubscribeRoundtripChunkReportTimeout) +void TestReadInteraction::TestPostSubscribeRoundtripChunkReportTimeout() { Messaging::ReliableMessageMgr * rm = GetExchangeManager().GetReliableMessageMgr(); @@ -3528,7 +3640,9 @@ TEST_F(TestReadInteraction, TestPostSubscribeRoundtripChunkReportTimeout) CreateSessionBobToAlice(); } -TEST_F(TestReadInteraction, TestPostSubscribeRoundtripChunkReport) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteraction, TestPostSubscribeRoundtripChunkReport) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteractionSync, TestPostSubscribeRoundtripChunkReport) +void TestReadInteraction::TestPostSubscribeRoundtripChunkReport() { Messaging::ReliableMessageMgr * rm = GetExchangeManager().GetReliableMessageMgr(); @@ -3641,7 +3755,9 @@ void CheckForInvalidAction(Test::MessageCapturer & messageLog) // Read Client sends the read request, Read Handler drops the response, then test injects unknown status reponse message for // Read Client. -TEST_F_FROM_FIXTURE(TestReadInteraction, TestReadClientReceiveInvalidMessage) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteraction, TestReadClientReceiveInvalidMessage) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteractionSync, TestReadClientReceiveInvalidMessage) +void TestReadInteraction::TestReadClientReceiveInvalidMessage() { Messaging::ReliableMessageMgr * rm = GetExchangeManager().GetReliableMessageMgr(); @@ -3726,7 +3842,9 @@ TEST_F_FROM_FIXTURE(TestReadInteraction, TestReadClientReceiveInvalidMessage) // Read Client sends the subscribe request, Read Handler drops the response, then test injects unknown status response message // for Read Client. -TEST_F_FROM_FIXTURE(TestReadInteraction, TestSubscribeClientReceiveInvalidStatusResponse) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteraction, TestSubscribeClientReceiveInvalidStatusResponse) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteractionSync, TestSubscribeClientReceiveInvalidStatusResponse) +void TestReadInteraction::TestSubscribeClientReceiveInvalidStatusResponse() { Messaging::ReliableMessageMgr * rm = GetExchangeManager().GetReliableMessageMgr(); @@ -3817,7 +3935,9 @@ TEST_F_FROM_FIXTURE(TestReadInteraction, TestSubscribeClientReceiveInvalidStatus // Read Client sends the subscribe request, Read Handler drops the response, then test injects well-formed status response // message with Success for Read Client, we expect the error with CHIP_ERROR_INVALID_MESSAGE_TYPE -TEST_F_FROM_FIXTURE(TestReadInteraction, TestSubscribeClientReceiveWellFormedStatusResponse) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteraction, TestSubscribeClientReceiveWellFormedStatusResponse) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteractionSync, TestSubscribeClientReceiveWellFormedStatusResponse) +void TestReadInteraction::TestSubscribeClientReceiveWellFormedStatusResponse() { Messaging::ReliableMessageMgr * rm = GetExchangeManager().GetReliableMessageMgr(); @@ -3907,7 +4027,9 @@ TEST_F_FROM_FIXTURE(TestReadInteraction, TestSubscribeClientReceiveWellFormedSta // Read Client sends the subscribe request, Read Handler drops the response, then test injects invalid report message for Read // Client. -TEST_F_FROM_FIXTURE(TestReadInteraction, TestSubscribeClientReceiveInvalidReportMessage) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteraction, TestSubscribeClientReceiveInvalidReportMessage) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteractionSync, TestSubscribeClientReceiveInvalidReportMessage) +void TestReadInteraction::TestSubscribeClientReceiveInvalidReportMessage() { Messaging::ReliableMessageMgr * rm = GetExchangeManager().GetReliableMessageMgr(); @@ -3997,7 +4119,9 @@ TEST_F_FROM_FIXTURE(TestReadInteraction, TestSubscribeClientReceiveInvalidReport // Read Client create the subscription, handler sends unsolicited malformed report to client, // InteractionModelEngine::OnUnsolicitedReportData would process this malformed report and sends out status report -TEST_F_FROM_FIXTURE(TestReadInteraction, TestSubscribeClientReceiveUnsolicitedInvalidReportMessage) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteraction, TestSubscribeClientReceiveUnsolicitedInvalidReportMessage) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteractionSync, TestSubscribeClientReceiveUnsolicitedInvalidReportMessage) +void TestReadInteraction::TestSubscribeClientReceiveUnsolicitedInvalidReportMessage() { Messaging::ReliableMessageMgr * rm = GetExchangeManager().GetReliableMessageMgr(); @@ -4068,7 +4192,9 @@ TEST_F_FROM_FIXTURE(TestReadInteraction, TestSubscribeClientReceiveUnsolicitedIn // Read Client sends the subscribe request, Read Handler drops the subscribe response, then test injects invalid subscribe // response message -TEST_F_FROM_FIXTURE(TestReadInteraction, TestSubscribeClientReceiveInvalidSubscribeResponseMessage) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteraction, TestSubscribeClientReceiveInvalidSubscribeResponseMessage) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteractionSync, TestSubscribeClientReceiveInvalidSubscribeResponseMessage) +void TestReadInteraction::TestSubscribeClientReceiveInvalidSubscribeResponseMessage() { Messaging::ReliableMessageMgr * rm = GetExchangeManager().GetReliableMessageMgr(); @@ -4159,7 +4285,9 @@ TEST_F_FROM_FIXTURE(TestReadInteraction, TestSubscribeClientReceiveInvalidSubscr // Read Client create the subscription, handler sends unsolicited malformed report with invalid subscription id to client, // InteractionModelEngine::OnUnsolicitedReportData would process this malformed report and sends out status report -TEST_F_FROM_FIXTURE(TestReadInteraction, TestSubscribeClientReceiveUnsolicitedReportMessageWithInvalidSubscriptionId) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteraction, TestSubscribeClientReceiveUnsolicitedReportMessageWithInvalidSubscriptionId) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteractionSync, TestSubscribeClientReceiveUnsolicitedReportMessageWithInvalidSubscriptionId) +void TestReadInteraction::TestSubscribeClientReceiveUnsolicitedReportMessageWithInvalidSubscriptionId() { Messaging::ReliableMessageMgr * rm = GetExchangeManager().GetReliableMessageMgr(); @@ -4235,7 +4363,9 @@ TEST_F_FROM_FIXTURE(TestReadInteraction, TestSubscribeClientReceiveUnsolicitedRe // TestReadChunkingInvalidSubscriptionId will try to read a few large attributes, the report won't fit into the MTU and result // in chunking, second report has different subscription id from the first one, read client sends out the status report with // invalid subscription -TEST_F_FROM_FIXTURE(TestReadInteraction, TestReadChunkingInvalidSubscriptionId) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteraction, TestReadChunkingInvalidSubscriptionId) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteractionSync, TestReadChunkingInvalidSubscriptionId) +void TestReadInteraction::TestReadChunkingInvalidSubscriptionId() { Messaging::ReliableMessageMgr * rm = GetExchangeManager().GetReliableMessageMgr(); @@ -4325,7 +4455,9 @@ TEST_F_FROM_FIXTURE(TestReadInteraction, TestReadChunkingInvalidSubscriptionId) // Read Client sends a malformed subscribe request, interaction model engine fails to parse the request and generates a status // report to client, and client is closed. -TEST_F_FROM_FIXTURE(TestReadInteraction, TestReadHandlerMalformedSubscribeRequest) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteraction, TestReadHandlerMalformedSubscribeRequest) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteractionSync, TestReadHandlerMalformedSubscribeRequest) +void TestReadInteraction::TestReadHandlerMalformedSubscribeRequest() { Messaging::ReliableMessageMgr * rm = GetExchangeManager().GetReliableMessageMgr(); @@ -4369,7 +4501,9 @@ TEST_F_FROM_FIXTURE(TestReadInteraction, TestReadHandlerMalformedSubscribeReques // Read Client sends a malformed read request, interaction model engine fails to parse the request and generates a status report // to client, and client is closed. -TEST_F_FROM_FIXTURE(TestReadInteraction, TestReadHandlerMalformedReadRequest1) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteraction, TestReadHandlerMalformedReadRequest1) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteractionSync, TestReadHandlerMalformedReadRequest1) +void TestReadInteraction::TestReadHandlerMalformedReadRequest1() { Messaging::ReliableMessageMgr * rm = GetExchangeManager().GetReliableMessageMgr(); @@ -4411,7 +4545,9 @@ TEST_F_FROM_FIXTURE(TestReadInteraction, TestReadHandlerMalformedReadRequest1) // Read Client sends a malformed read request, read handler fails to parse the request and generates a status report to client, // and client is closed. -TEST_F_FROM_FIXTURE(TestReadInteraction, TestReadHandlerMalformedReadRequest2) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteraction, TestReadHandlerMalformedReadRequest2) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteractionSync, TestReadHandlerMalformedReadRequest2) +void TestReadInteraction::TestReadHandlerMalformedReadRequest2() { Messaging::ReliableMessageMgr * rm = GetExchangeManager().GetReliableMessageMgr(); @@ -4454,7 +4590,9 @@ TEST_F_FROM_FIXTURE(TestReadInteraction, TestReadHandlerMalformedReadRequest2) // Read Client creates a subscription with the server, server sends chunked reports, after the handler sends out the first // chunked report, client sends out invalid write request message, handler sends status report with invalid action and closes -TEST_F_FROM_FIXTURE(TestReadInteraction, TestSubscribeSendUnknownMessage) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteraction, TestSubscribeSendUnknownMessage) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteractionSync, TestSubscribeSendUnknownMessage) +void TestReadInteraction::TestSubscribeSendUnknownMessage() { Messaging::ReliableMessageMgr * rm = GetExchangeManager().GetReliableMessageMgr(); @@ -4528,7 +4666,9 @@ TEST_F_FROM_FIXTURE(TestReadInteraction, TestSubscribeSendUnknownMessage) // Read Client creates a subscription with the server, server sends chunked reports, after the handler sends out invalid status // report, client sends out invalid status report message, handler sends status report with invalid action and close -TEST_F_FROM_FIXTURE(TestReadInteraction, TestSubscribeSendInvalidStatusReport) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteraction, TestSubscribeSendInvalidStatusReport) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteractionSync, TestSubscribeSendInvalidStatusReport) +void TestReadInteraction::TestSubscribeSendInvalidStatusReport() { Messaging::ReliableMessageMgr * rm = GetExchangeManager().GetReliableMessageMgr(); @@ -4599,7 +4739,9 @@ TEST_F_FROM_FIXTURE(TestReadInteraction, TestSubscribeSendInvalidStatusReport) // Read Client sends a malformed subscribe request, the server fails to parse the request and generates a status report to the // client, and client closes itself. -TEST_F_FROM_FIXTURE(TestReadInteraction, TestReadHandlerInvalidSubscribeRequest) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteraction, TestReadHandlerInvalidSubscribeRequest) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteractionSync, TestReadHandlerInvalidSubscribeRequest) +void TestReadInteraction::TestReadHandlerInvalidSubscribeRequest() { Messaging::ReliableMessageMgr * rm = GetExchangeManager().GetReliableMessageMgr(); @@ -4641,7 +4783,9 @@ TEST_F_FROM_FIXTURE(TestReadInteraction, TestReadHandlerInvalidSubscribeRequest) // Create the subscription, then remove the corresponding fabric in client and handler, the corresponding // client and handler would be released as well. -TEST_F(TestReadInteraction, TestSubscribeInvalidateFabric) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteraction, TestSubscribeInvalidateFabric) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteractionSync, TestSubscribeInvalidateFabric) +void TestReadInteraction::TestSubscribeInvalidateFabric() { Messaging::ReliableMessageMgr * rm = GetExchangeManager().GetReliableMessageMgr(); @@ -4655,12 +4799,13 @@ TEST_F(TestReadInteraction, TestSubscribeInvalidateFabric) EXPECT_EQ(engine->Init(&GetExchangeManager(), &GetFabricTable(), gReportScheduler), CHIP_NO_ERROR); ReadPrepareParams readPrepareParams(GetSessionBobToAlice()); - readPrepareParams.mpAttributePathParamsList = new chip::app::AttributePathParams[1]; - readPrepareParams.mAttributePathParamsListSize = 1; - readPrepareParams.mpAttributePathParamsList[0].mEndpointId = chip::Test::kMockEndpoint3; - readPrepareParams.mpAttributePathParamsList[0].mClusterId = chip::Test::MockClusterId(2); - readPrepareParams.mpAttributePathParamsList[0].mAttributeId = chip::Test::MockAttributeId(1); + readPrepareParams.mAttributePathParamsListSize = 1; + auto attributePathParams = std::make_unique(readPrepareParams.mAttributePathParamsListSize); + attributePathParams[0].mEndpointId = chip::Test::kMockEndpoint3; + attributePathParams[0].mClusterId = chip::Test::MockClusterId(2); + attributePathParams[0].mAttributeId = chip::Test::MockAttributeId(1); + readPrepareParams.mpAttributePathParamsList = attributePathParams.get(); readPrepareParams.mMinIntervalFloorSeconds = 0; readPrepareParams.mMaxIntervalCeilingSeconds = 0; @@ -4671,6 +4816,7 @@ TEST_F(TestReadInteraction, TestSubscribeInvalidateFabric) delegate.mGotReport = false; + attributePathParams.release(); EXPECT_EQ(readClient.SendAutoResubscribeRequest(std::move(readPrepareParams)), CHIP_NO_ERROR); DrainAndServiceIO(); @@ -4696,7 +4842,9 @@ TEST_F(TestReadInteraction, TestSubscribeInvalidateFabric) EXPECT_EQ(GetExchangeManager().GetNumActiveExchanges(), 0u); } -TEST_F_FROM_FIXTURE(TestReadInteraction, TestShutdownSubscription) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteraction, TestShutdownSubscription) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteractionSync, TestShutdownSubscription) +void TestReadInteraction::TestShutdownSubscription() { Messaging::ReliableMessageMgr * rm = GetExchangeManager().GetReliableMessageMgr(); @@ -4710,12 +4858,13 @@ TEST_F_FROM_FIXTURE(TestReadInteraction, TestShutdownSubscription) EXPECT_EQ(engine->Init(&GetExchangeManager(), &GetFabricTable(), gReportScheduler), CHIP_NO_ERROR); ReadPrepareParams readPrepareParams(GetSessionBobToAlice()); - readPrepareParams.mpAttributePathParamsList = new chip::app::AttributePathParams[1]; - readPrepareParams.mAttributePathParamsListSize = 1; - readPrepareParams.mpAttributePathParamsList[0].mEndpointId = chip::Test::kMockEndpoint3; - readPrepareParams.mpAttributePathParamsList[0].mClusterId = chip::Test::MockClusterId(2); - readPrepareParams.mpAttributePathParamsList[0].mAttributeId = chip::Test::MockAttributeId(1); + readPrepareParams.mAttributePathParamsListSize = 1; + auto attributePathParams = std::make_unique(readPrepareParams.mAttributePathParamsListSize); + attributePathParams[0].mEndpointId = chip::Test::kMockEndpoint3; + attributePathParams[0].mClusterId = chip::Test::MockClusterId(2); + attributePathParams[0].mAttributeId = chip::Test::MockAttributeId(1); + readPrepareParams.mpAttributePathParamsList = attributePathParams.get(); readPrepareParams.mMinIntervalFloorSeconds = 0; readPrepareParams.mMaxIntervalCeilingSeconds = 0; @@ -4726,6 +4875,7 @@ TEST_F_FROM_FIXTURE(TestReadInteraction, TestShutdownSubscription) delegate.mGotReport = false; + attributePathParams.release(); EXPECT_EQ(readClient.SendAutoResubscribeRequest(std::move(readPrepareParams)), CHIP_NO_ERROR); DrainAndServiceIO(); @@ -4747,7 +4897,9 @@ TEST_F_FROM_FIXTURE(TestReadInteraction, TestShutdownSubscription) * session it has is defunct. Makes sure we correctly tear down the ReadHandler * and don't increment the "reports in flight" count. */ -TEST_F_FROM_FIXTURE(TestReadInteraction, TestSubscriptionReportWithDefunctSession) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteraction, TestSubscriptionReportWithDefunctSession) +TEST_F_FROM_FIXTURE_NO_BODY(TestReadInteractionSync, TestSubscriptionReportWithDefunctSession) +void TestReadInteraction::TestSubscriptionReportWithDefunctSession() { Messaging::ReliableMessageMgr * rm = GetExchangeManager().GetReliableMessageMgr(); diff --git a/src/lib/support/tests/ExtraPwTestMacros.h b/src/lib/support/tests/ExtraPwTestMacros.h index ab592800716592..6eda462f803db5 100644 --- a/src/lib/support/tests/ExtraPwTestMacros.h +++ b/src/lib/support/tests/ExtraPwTestMacros.h @@ -17,8 +17,9 @@ */ #pragma once -/* +/** * Run Fixture's class function as a test. + * * It is used to execute test cases that need to use private members of a particular class. * Unlike the pigweed macro `FRIEND_TEST`, this approach allows you to define the entire * test_fixture class as a friend, rather than having to define each testcase as a friend. @@ -54,3 +55,16 @@ test_name(); \ } \ void test_fixture::test_name() + +/** + * Run Fixture's class function as a test. + * + * This macro does not define the body of the test function. It can be used to + * run a single test case which needs to be run against different fixtures. + * + */ +#define TEST_F_FROM_FIXTURE_NO_BODY(test_fixture, test_name) \ + TEST_F(test_fixture, test_name) \ + { \ + test_name(); \ + }