From 6c524be8c2c051e3c2240e3340c256ad624927e2 Mon Sep 17 00:00:00 2001 From: Boris Zbarsky Date: Wed, 7 Jun 2023 10:53:52 -0400 Subject: [PATCH] Use a non-chunked attribute for non-chunking tests in TestReadInteraction. We were using an attribute that led to multiple reports, in a test that only cares about whether a report is delivered at all. There's no reason to do that, and it can lead to some timing-related failures if we don't spin the event loop long enough to get all the reports. --- src/app/tests/TestReadInteraction.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/app/tests/TestReadInteraction.cpp b/src/app/tests/TestReadInteraction.cpp index 249e5e991f83fa..94688bc734c2f3 100644 --- a/src/app/tests/TestReadInteraction.cpp +++ b/src/app/tests/TestReadInteraction.cpp @@ -4104,7 +4104,7 @@ void TestReadInteraction::TestSubscribeInvalidateFabric(nlTestSuite * apSuite, v readPrepareParams.mpAttributePathParamsList[0].mEndpointId = Test::kMockEndpoint3; readPrepareParams.mpAttributePathParamsList[0].mClusterId = Test::MockClusterId(2); - readPrepareParams.mpAttributePathParamsList[0].mAttributeId = Test::MockAttributeId(4); + readPrepareParams.mpAttributePathParamsList[0].mAttributeId = Test::MockAttributeId(1); readPrepareParams.mMinIntervalFloorSeconds = 0; readPrepareParams.mMaxIntervalCeilingSeconds = 0; @@ -4163,7 +4163,7 @@ void TestReadInteraction::TestShutdownSubscription(nlTestSuite * apSuite, void * readPrepareParams.mpAttributePathParamsList[0].mEndpointId = Test::kMockEndpoint3; readPrepareParams.mpAttributePathParamsList[0].mClusterId = Test::MockClusterId(2); - readPrepareParams.mpAttributePathParamsList[0].mAttributeId = Test::MockAttributeId(4); + readPrepareParams.mpAttributePathParamsList[0].mAttributeId = Test::MockAttributeId(1); readPrepareParams.mMinIntervalFloorSeconds = 0; readPrepareParams.mMaxIntervalCeilingSeconds = 0; @@ -4210,7 +4210,7 @@ void TestReadInteraction::TestSubscriptionReportWithDefunctSession(nlTestSuite * err = engine->Init(&ctx.GetExchangeManager(), &ctx.GetFabricTable()); NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR); - AttributePathParams subscribePath(Test::kMockEndpoint3, Test::MockClusterId(2), Test::MockAttributeId(4)); + AttributePathParams subscribePath(Test::kMockEndpoint3, Test::MockClusterId(2), Test::MockAttributeId(1)); ReadPrepareParams readPrepareParams(ctx.GetSessionBobToAlice()); readPrepareParams.mpAttributePathParamsList = &subscribePath; @@ -4231,6 +4231,7 @@ void TestReadInteraction::TestSubscriptionReportWithDefunctSession(nlTestSuite * ctx.DrainAndServiceIO(); NL_TEST_ASSERT(apSuite, delegate.mGotReport); + NL_TEST_ASSERT(apSuite, delegate.mNumAttributeResponse == 1); NL_TEST_ASSERT(apSuite, engine->GetNumActiveReadHandlers(ReadHandler::InteractionType::Subscribe) == 1); NL_TEST_ASSERT(apSuite, engine->GetNumActiveReadHandlers(ReadHandler::InteractionType::Read) == 0); NL_TEST_ASSERT(apSuite, engine->GetReportingEngine().GetNumReportsInFlight() == 0); @@ -4245,11 +4246,13 @@ void TestReadInteraction::TestSubscriptionReportWithDefunctSession(nlTestSuite * // Test that we send reports as needed. readHandler->SetStateFlag(ReadHandler::ReadHandlerFlags::HoldReport, false); delegate.mGotReport = false; + delegate.mNumAttributeResponse = 0; engine->GetReportingEngine().SetDirty(subscribePath); ctx.DrainAndServiceIO(); NL_TEST_ASSERT(apSuite, delegate.mGotReport); + NL_TEST_ASSERT(apSuite, delegate.mNumAttributeResponse == 1); NL_TEST_ASSERT(apSuite, engine->GetNumActiveReadHandlers(ReadHandler::InteractionType::Subscribe) == 1); NL_TEST_ASSERT(apSuite, engine->GetNumActiveReadHandlers(ReadHandler::InteractionType::Read) == 0); NL_TEST_ASSERT(apSuite, engine->GetReportingEngine().GetNumReportsInFlight() == 0); @@ -4259,11 +4262,13 @@ void TestReadInteraction::TestSubscriptionReportWithDefunctSession(nlTestSuite * readHandler->GetSession()->MarkAsDefunct(); readHandler->SetStateFlag(ReadHandler::ReadHandlerFlags::HoldReport, false); delegate.mGotReport = false; + delegate.mNumAttributeResponse = 0; engine->GetReportingEngine().SetDirty(subscribePath); ctx.DrainAndServiceIO(); NL_TEST_ASSERT(apSuite, !delegate.mGotReport); + NL_TEST_ASSERT(apSuite, delegate.mNumAttributeResponse == 0); NL_TEST_ASSERT(apSuite, engine->GetNumActiveReadHandlers(ReadHandler::InteractionType::Subscribe) == 0); NL_TEST_ASSERT(apSuite, engine->GetNumActiveReadHandlers(ReadHandler::InteractionType::Read) == 0); NL_TEST_ASSERT(apSuite, engine->GetReportingEngine().GetNumReportsInFlight() == 0);