Skip to content

Commit 3449295

Browse files
yunhanw-googlepull[bot]
authored andcommitted
Drop-off fabric sensitive event when fabric is undefined (#21942)
1 parent 0cb7a22 commit 3449295

File tree

3 files changed

+14
-1
lines changed

3 files changed

+14
-1
lines changed

src/app/EventLogging.h

+2
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,8 @@ CHIP_ERROR LogEvent(const T & aEventData, EndpointId aEndpoint, EventNumber & aE
7272
eventOptions.mPath = path;
7373
eventOptions.mPriority = aEventData.GetPriorityLevel();
7474
eventOptions.mFabricIndex = aEventData.GetFabricIndex();
75+
// this skips logging the event if it's fabric-scoped but no fabric association exists yet.
76+
VerifyOrReturnError(eventOptions.mFabricIndex != kUndefinedFabricIndex, CHIP_NO_ERROR);
7577

7678
//
7779
// Unlike attributes which have a different 'EncodeForRead' for fabric-scoped structs,

src/app/clusters/test-cluster-server/test-cluster-server.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -797,7 +797,7 @@ bool emberAfTestClusterClusterTestEmitTestFabricScopedEventRequestCallback(
797797
{
798798
Commands::TestEmitTestFabricScopedEventResponse::Type responseData;
799799
Events::TestFabricScopedEvent::Type event{ commandData.arg1 };
800-
800+
event.fabricIndex = commandData.arg1;
801801
if (CHIP_NO_ERROR != LogEvent(event, commandPath.mEndpointId, responseData.value))
802802
{
803803
emberAfSendImmediateDefaultResponse(EMBER_ZCL_STATUS_FAILURE);

src/controller/python/test/test_scripts/cluster_objects.py

+11
Original file line numberDiff line numberDiff line change
@@ -331,6 +331,16 @@ async def TriggerAndWaitForEvents(cls, devCtrl, req):
331331
await cls._TriggerEvent(devCtrl)
332332
await cls._RetryForContent(request=lambda: devCtrl.ReadEvent(nodeid=NODE_ID, events=req), until=lambda res: res != 0)
333333

334+
@classmethod
335+
@base.test_case
336+
async def TestGenerateUndefinedFabricScopedEventRequests(cls, devCtrl):
337+
logger.info("Running TestGenerateUndefinedFabricScopedEventRequests")
338+
await devCtrl.SendCommand(nodeid=NODE_ID, endpoint=1, payload=Clusters.TestCluster.Commands.TestEmitTestFabricScopedEventRequest(arg1=0))
339+
res = await devCtrl.ReadEvent(nodeid=NODE_ID, events=[
340+
(1, Clusters.TestCluster.Events.TestEvent, 0),
341+
])
342+
logger.info(f"return result is {res}")
343+
334344
@classmethod
335345
@base.test_case
336346
async def TestReadEventRequests(cls, devCtrl, expectEventsNum):
@@ -557,6 +567,7 @@ async def RunTest(cls, devCtrl):
557567
await cls.TestWriteRequest(devCtrl)
558568
await cls.TestTimedRequest(devCtrl)
559569
await cls.TestTimedRequestTimeout(devCtrl)
570+
await cls.TestGenerateUndefinedFabricScopedEventRequests(devCtrl)
560571
except Exception as ex:
561572
logger.error(
562573
f"Unexpected error occurred when running tests: {ex}")

0 commit comments

Comments
 (0)