From f40b7890778e2c504594d0b9a743f966f78851c3 Mon Sep 17 00:00:00 2001 From: Hare Date: Thu, 24 Aug 2023 00:26:32 +0800 Subject: [PATCH 1/7] Add method to get last event number in python --- .../matter_yamltests/parser.py | 11 +++++++++++ .../matter_yamltests/runner.py | 17 +++++++++++++++++ .../matter_yamltests/yaml_loader.py | 1 + 3 files changed, 29 insertions(+) diff --git a/scripts/py_matter_yamltests/matter_yamltests/parser.py b/scripts/py_matter_yamltests/matter_yamltests/parser.py index 07090679fd9dbb..750c293a56d31a 100644 --- a/scripts/py_matter_yamltests/matter_yamltests/parser.py +++ b/scripts/py_matter_yamltests/matter_yamltests/parser.py @@ -207,6 +207,7 @@ def __init__(self, test: dict, config: dict, definitions: SpecDefinitions, pics_ self.busy_wait_ms = _value_or_none(test, 'busyWaitMs') self.wait_for = _value_or_none(test, 'wait') self.event_number = _value_or_none(test, 'eventNumber') + self.is_last_event_number = _value_or_none(test, 'isLastEventNumber') self.run_if = _value_or_none(test, 'runIf') self.save_response_as = _value_or_none(test, 'saveResponseAs') @@ -578,6 +579,8 @@ def __init__(self, test: _TestStepWithPlaceholders, step_index: int, runtime_con self._test.run_if) self._test.event_number = self._config_variable_substitution( self._test.event_number) + self._test.is_last_event_number = self._config_variable_substitution( + self._test.is_last_event_number) self._test.cluster = self._config_variable_substitution( self._test.cluster) self._test.command = self._config_variable_substitution( @@ -683,6 +686,14 @@ def wait_for(self): def event_number(self): return self._test.event_number + @event_number.setter + def event_number(self, value): + self._test.event_number = value + + @property + def is_last_event_number(self): + return self._test.is_last_event_number + @property def pics(self): return self._test.pics diff --git a/scripts/py_matter_yamltests/matter_yamltests/runner.py b/scripts/py_matter_yamltests/matter_yamltests/runner.py index 472d3cd8fa8203..8b01b732081efe 100644 --- a/scripts/py_matter_yamltests/matter_yamltests/runner.py +++ b/scripts/py_matter_yamltests/matter_yamltests/runner.py @@ -14,6 +14,7 @@ # limitations under the License. import asyncio +import re import time from abc import ABC, abstractmethod from asyncio import CancelledError @@ -125,6 +126,10 @@ class TestRunner(TestRunnerBase): """ TestRunner is a default runner implementation. """ + + pattern = re.compile(r'EventNumber = (0x[0-9a-f]+)') + last_event_number = 0 + async def start(self): return @@ -175,6 +180,9 @@ async def _run(self, parser: TestParser, config: TestRunnerConfig): test_duration = 0 for idx, request in enumerate(parser.tests): + if request.is_last_event_number: + request.event_number = self.last_event_number + if not request.is_pics_enabled: hooks.step_skipped(request.label, request.pics) continue @@ -195,6 +203,15 @@ async def _run(self, parser: TestParser, config: TestRunnerConfig): duration = round((time.time() - start) * 1000, 2) test_duration += duration + # TODO: To get the event number, the method could be improved + for log in reversed(logs): + match = self.pattern.search(log.message) + if match: + received_event_number = int(match.group(1), 16) + 1 + if self.last_event_number < received_event_number: + self.last_event_number = received_event_number + break + logger = request.post_process_response(responses) if logger.is_failure(): diff --git a/scripts/py_matter_yamltests/matter_yamltests/yaml_loader.py b/scripts/py_matter_yamltests/matter_yamltests/yaml_loader.py index ecdc7af209acbe..1908ec0e4366cc 100644 --- a/scripts/py_matter_yamltests/matter_yamltests/yaml_loader.py +++ b/scripts/py_matter_yamltests/matter_yamltests/yaml_loader.py @@ -97,6 +97,7 @@ def __check_test_step(self, config: dict, content): 'command': str, 'event': str, 'eventNumber': (int, str), # Can be a variable. + 'isLastEventNumber': bool, # Can be a variable. 'disabled': bool, 'fabricFiltered': bool, 'verification': str, From 65d4f291644dd914bb7dd11e84406d083ab08347 Mon Sep 17 00:00:00 2001 From: Hare Date: Thu, 24 Aug 2023 00:31:32 +0800 Subject: [PATCH 2/7] Update TC-SMOKECO tests --- scripts/tests/chiptest/__init__.py | 23 +++++--------- .../certification/Test_TC_SMOKECO_2_2.yaml | 14 +++++---- .../certification/Test_TC_SMOKECO_2_3.yaml | 14 +++++---- .../certification/Test_TC_SMOKECO_2_4.yaml | 30 ++++++++++--------- .../certification/Test_TC_SMOKECO_2_5.yaml | 24 ++++++++------- 5 files changed, 52 insertions(+), 53 deletions(-) diff --git a/scripts/tests/chiptest/__init__.py b/scripts/tests/chiptest/__init__.py index 29942b0a2e2ac4..9ba0644727e4af 100644 --- a/scripts/tests/chiptest/__init__.py +++ b/scripts/tests/chiptest/__init__.py @@ -135,25 +135,16 @@ def _GetInDevelopmentTests() -> Set[str]: "Test_TC_PSCFG_1_1.yaml", # Power source configuration cluster is deprecated and removed from all-clusters "Test_TC_PSCFG_2_1.yaml", # Power source configuration cluster is deprecated and removed from all-clusters "Test_TC_PSCFG_2_2.yaml", # Power source configuration cluster is deprecated and removed from all-clusters - "Test_TC_SMOKECO_2_6.yaml", # chip-repl does not support local timeout (07/20/2023) and test assumes - # TestEventTriggersEnabled is true, which it's not in CI. Also, test - # has wrong key for eventNumber: because using the right key leads to - # codegen that does not compile. "Test_TC_SMOKECO_2_2.yaml", # chip-repl does not support local timeout (07/20/2023) and test assumes - # TestEventTriggersEnabled is true, which it's not in CI. Also, test - # has wrong key for eventNumber: because using the right key leads to - # codegen that does not compile. + # TestEventTriggersEnabled is true, which it's not in CI. "Test_TC_SMOKECO_2_3.yaml", # chip-repl does not support local timeout (07/20/2023) and test assumes - # TestEventTriggersEnabled is true, which it's not in CI. Also, test - # has wrong key for eventNumber: because using the right key leads to - # codegen that does not compile. + # TestEventTriggersEnabled is true, which it's not in CI. "Test_TC_SMOKECO_2_4.yaml", # chip-repl does not support local timeout (07/20/2023) and test assumes - # TestEventTriggersEnabled is true, which it's not in CI. Also, test - # has wrong key for eventNumber: because using the right key leads to - # codegen that does not compile. - "Test_TC_SMOKECO_2_5.yaml", # chip-repl does not support local timeout (07/20/2023) and test uses unknown - # keepSubscriptions key in the YAML. Also, test has wrong key for eventNumber: - # because using the right key leads to codegen that does not compile. + # TestEventTriggersEnabled is true, which it's not in CI. + "Test_TC_SMOKECO_2_5.yaml", # chip-repl does not support local timeout (07/20/2023) and test assumes + # TestEventTriggersEnabled is true, which it's not in CI. + "Test_TC_SMOKECO_2_6.yaml", # chip-repl does not support local timeout (07/20/2023) and test assumes + # TestEventTriggersEnabled is true, which it's not in CI. } diff --git a/src/app/tests/suites/certification/Test_TC_SMOKECO_2_2.yaml b/src/app/tests/suites/certification/Test_TC_SMOKECO_2_2.yaml index 0e44017c4df7ec..843b73bf66ab85 100644 --- a/src/app/tests/suites/certification/Test_TC_SMOKECO_2_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_SMOKECO_2_2.yaml @@ -36,9 +36,6 @@ config: TEST_EVENT_TRIGGER_SMOKE_ALARM_CLEAR: type: int64u defaultValue: "0xffffffff000000a0" - EVENT_NUMBER: - type: int64u - defaultValue: 0 tests: - label: "Commission DUT to TH" @@ -69,6 +66,11 @@ tests: constraints: type: enum8 + - label: "TH gets last event number from DUT" + PICS: SMOKECO.S.E0a + command: "readEvent" + event: "AllClear" + - label: "TH reads TestEventTriggersEnabled attribute from General Diagnostics Cluster" @@ -121,7 +123,7 @@ tests: PICS: SMOKECO.S.E00 command: "readEvent" event: "SmokeAlarm" - EVENT_NUMBER: EVENT_NUMBER + 1 + isLastEventNumber: true response: value: { AlarmSeverityLevel: 1 } @@ -201,7 +203,7 @@ tests: PICS: SMOKECO.S.E00 command: "readEvent" event: "SmokeAlarm" - EVENT_NUMBER: EVENT_NUMBER + 2 + isLastEventNumber: true response: value: { AlarmSeverityLevel: 2 } @@ -246,6 +248,6 @@ tests: PICS: SMOKECO.S.E0a command: "readEvent" event: "AllClear" - EVENT_NUMBER: EVENT_NUMBER + 3 + isLastEventNumber: true response: value: {} diff --git a/src/app/tests/suites/certification/Test_TC_SMOKECO_2_3.yaml b/src/app/tests/suites/certification/Test_TC_SMOKECO_2_3.yaml index caad36dd80ac2e..8897f8e5b0404a 100644 --- a/src/app/tests/suites/certification/Test_TC_SMOKECO_2_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_SMOKECO_2_3.yaml @@ -35,9 +35,6 @@ config: TEST_EVENT_TRIGGER_CO_ALARM_CLEAR: type: int64u defaultValue: "0xffffffff000000a1" - EVENT_NUMBER: - type: int64u - defaultValue: 0 tests: - label: "Commission DUT to TH" @@ -68,6 +65,11 @@ tests: constraints: type: enum8 + - label: "TH gets last event number from DUT" + PICS: SMOKECO.S.E0a + command: "readEvent" + event: "AllClear" + - label: "TH reads TestEventTriggersEnabled attribute from General Diagnostics Cluster" @@ -120,7 +122,7 @@ tests: PICS: SMOKECO.S.E01 command: "readEvent" event: "COAlarm" - EVENT_NUMBER: EVENT_NUMBER + 1 + isLastEventNumber: true response: value: { AlarmSeverityLevel: 1 } @@ -200,7 +202,7 @@ tests: PICS: SMOKECO.S.E01 command: "readEvent" event: "COAlarm" - EVENT_NUMBER: EVENT_NUMBER + 2 + isLastEventNumber: true response: value: { AlarmSeverityLevel: 2 } @@ -245,6 +247,6 @@ tests: PICS: SMOKECO.S.E0a command: "readEvent" event: "AllClear" - EVENT_NUMBER: EVENT_NUMBER + 3 + isLastEventNumber: true response: value: {} diff --git a/src/app/tests/suites/certification/Test_TC_SMOKECO_2_4.yaml b/src/app/tests/suites/certification/Test_TC_SMOKECO_2_4.yaml index 5326a83d5fe16b..e93fed2562bee7 100644 --- a/src/app/tests/suites/certification/Test_TC_SMOKECO_2_4.yaml +++ b/src/app/tests/suites/certification/Test_TC_SMOKECO_2_4.yaml @@ -48,9 +48,6 @@ config: TEST_EVENT_TRIGGER_END_OF_SERVICE_ALERT_CLEAR: type: int64u defaultValue: "0xffffffff000000aa" - EVENT_NUMBER: - type: int64u - defaultValue: 0 tests: - label: "Commission DUT to TH" @@ -81,6 +78,11 @@ tests: constraints: type: enum8 + - label: "TH gets last event number from DUT" + PICS: SMOKECO.S.E0a + command: "readEvent" + event: "AllClear" + - label: "TH reads TestEventTriggersEnabled attribute from General Diagnostics Cluster" @@ -133,7 +135,7 @@ tests: PICS: SMOKECO.S.E02 command: "readEvent" event: "LowBattery" - EVENT_NUMBER: EVENT_NUMBER + 1 + isLastEventNumber: true response: value: { AlarmSeverityLevel: 1 } @@ -178,7 +180,7 @@ tests: PICS: SMOKECO.S.E02 command: "readEvent" event: "LowBattery" - EVENT_NUMBER: EVENT_NUMBER + 2 + isLastEventNumber: true response: value: { AlarmSeverityLevel: 2 } @@ -223,7 +225,7 @@ tests: PICS: SMOKECO.S.E0a command: "readEvent" event: "AllClear" - EVENT_NUMBER: EVENT_NUMBER + 3 + isLastEventNumber: true response: value: {} @@ -279,7 +281,7 @@ tests: PICS: SMOKECO.S.E03 command: "readEvent" event: "HardwareFault" - EVENT_NUMBER: EVENT_NUMBER + 4 + isLastEventNumber: true response: value: {} @@ -325,7 +327,7 @@ tests: PICS: SMOKECO.S.E0a command: "readEvent" event: "AllClear" - EVENT_NUMBER: EVENT_NUMBER + 5 + isLastEventNumber: true response: value: {} @@ -381,7 +383,7 @@ tests: PICS: SMOKECO.S.E04 command: "readEvent" event: "EndOfService" - EVENT_NUMBER: EVENT_NUMBER + 6 + isLastEventNumber: true response: value: {} @@ -427,7 +429,7 @@ tests: PICS: SMOKECO.S.E0a command: "readEvent" event: "AllClear" - EVENT_NUMBER: EVENT_NUMBER + 7 + isLastEventNumber: true response: value: {} @@ -499,7 +501,7 @@ tests: PICS: SMOKECO.S.E05 command: "readEvent" event: "SelfTestComplete" - EVENT_NUMBER: EVENT_NUMBER + 8 + isLastEventNumber: true response: value: {} @@ -516,7 +518,7 @@ tests: PICS: SMOKECO.S.E0a command: "readEvent" event: "AllClear" - EVENT_NUMBER: EVENT_NUMBER + 9 + isLastEventNumber: true response: value: {} @@ -561,7 +563,7 @@ tests: PICS: SMOKECO.S.E05 command: "readEvent" event: "SelfTestComplete" - EVENT_NUMBER: EVENT_NUMBER + 10 + isLastEventNumber: true response: value: {} @@ -578,6 +580,6 @@ tests: PICS: SMOKECO.S.E0a command: "readEvent" event: "AllClear" - EVENT_NUMBER: EVENT_NUMBER + 11 + isLastEventNumber: true response: value: {} diff --git a/src/app/tests/suites/certification/Test_TC_SMOKECO_2_5.yaml b/src/app/tests/suites/certification/Test_TC_SMOKECO_2_5.yaml index 3607665b0c8f46..d84cd950957a07 100644 --- a/src/app/tests/suites/certification/Test_TC_SMOKECO_2_5.yaml +++ b/src/app/tests/suites/certification/Test_TC_SMOKECO_2_5.yaml @@ -81,9 +81,6 @@ config: TTEST_EVENT_TRIGGER_SENSITIVITY_LEVEL_CLEAR: type: int64u defaultValue: "0xffffffff000000a8" - EVENT_NUMBER: - type: int64u - defaultValue: 0 tests: - label: "Commission DUT to TH" @@ -114,6 +111,11 @@ tests: constraints: type: enum8 + - label: "TH gets last event number from DUT" + PICS: SMOKECO.S.E0a + command: "readEvent" + event: "AllClear" + - label: "TH reads TestEventTriggersEnabled attribute from General Diagnostics Cluster" @@ -160,7 +162,7 @@ tests: PICS: SMOKECO.S.A0008 && SMOKECO.S.E08 command: "readEvent" event: "InterconnectSmokeAlarm" - EVENT_NUMBER: EVENT_NUMBER + 1 + isLastEventNumber: true response: value: { AlarmSeverityLevel: interconnectSmokeAlarmSeverityLevel } @@ -215,7 +217,7 @@ tests: PICS: SMOKECO.S.A0008 && SMOKECO.S.E0a command: "readEvent" event: "AllClear" - EVENT_NUMBER: EVENT_NUMBER + 2 + isLastEventNumber: true response: value: {} @@ -273,7 +275,7 @@ tests: PICS: SMOKECO.S.A0009 && SMOKECO.S.E09 command: "readEvent" event: "InterconnectCOAlarm" - EVENT_NUMBER: EVENT_NUMBER + 3 + isLastEventNumber: true response: value: { AlarmSeverityLevel: interconnectCOAlarmSeverityLevel } @@ -328,7 +330,7 @@ tests: PICS: SMOKECO.S.E0a command: "readEvent" event: "AllClear" - EVENT_NUMBER: EVENT_NUMBER + 4 + isLastEventNumber: true response: value: {} @@ -679,7 +681,7 @@ tests: PICS: SMOKECO.S.A0004 && SMOKECO.S.F00 && SMOKECO.S.E06 command: "readEvent" event: "AlarmMuted" - EVENT_NUMBER: EVENT_NUMBER + 5 + isLastEventNumber: true response: value: {} @@ -716,7 +718,7 @@ tests: PICS: SMOKECO.S.A0004 && SMOKECO.S.F00 && SMOKECO.S.E07 command: "readEvent" event: "MuteEnded" - EVENT_NUMBER: EVENT_NUMBER + 6 + isLastEventNumber: true response: value: {} @@ -891,7 +893,7 @@ tests: PICS: SMOKECO.S.A0004 && SMOKECO.S.F01 && SMOKECO.S.E06 command: "readEvent" event: "AlarmMuted" - EVENT_NUMBER: EVENT_NUMBER + 7 + isLastEventNumber: true response: value: {} @@ -928,7 +930,7 @@ tests: PICS: SMOKECO.S.A0004 && SMOKECO.S.F01 && SMOKECO.S.E07 command: "readEvent" event: "MuteEnded" - EVENT_NUMBER: EVENT_NUMBER + 8 + isLastEventNumber: true response: value: {} From 52aeb8348badbe19c71bff0e07f1842263382c02 Mon Sep 17 00:00:00 2001 From: Hare Date: Thu, 24 Aug 2023 13:53:05 +0800 Subject: [PATCH 3/7] Retain event number when reading events --- .../chip-tool/commands/common/RemoteDataModelLogger.cpp | 8 +++++--- .../matter_chip_tool_adapter/decoder.py | 3 ++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/examples/chip-tool/commands/common/RemoteDataModelLogger.cpp b/examples/chip-tool/commands/common/RemoteDataModelLogger.cpp index e3761994deee5c..8095ac05072022 100644 --- a/examples/chip-tool/commands/common/RemoteDataModelLogger.cpp +++ b/examples/chip-tool/commands/common/RemoteDataModelLogger.cpp @@ -21,6 +21,7 @@ #include #include +constexpr const char * kEventNumberKey = "eventNumber"; constexpr const char * kDataVersionKey = "dataVersion"; constexpr const char * kClusterIdKey = "clusterId"; constexpr const char * kEndpointIdKey = "endpointId"; @@ -129,9 +130,10 @@ CHIP_ERROR LogEventAsJSON(const chip::app::EventHeader & header, chip::TLV::TLVR VerifyOrReturnError(gDelegate != nullptr, CHIP_NO_ERROR); Json::Value value; - value[kClusterIdKey] = header.mPath.mClusterId; - value[kEndpointIdKey] = header.mPath.mEndpointId; - value[kEventIdKey] = header.mPath.mEventId; + value[kClusterIdKey] = header.mPath.mClusterId; + value[kEndpointIdKey] = header.mPath.mEndpointId; + value[kEventIdKey] = header.mPath.mEventId; + value[kEventNumberKey] = header.mEventNumber; chip::TLV::TLVReader reader; reader.Init(*data); diff --git a/examples/chip-tool/py_matter_chip_tool_adapter/matter_chip_tool_adapter/decoder.py b/examples/chip-tool/py_matter_chip_tool_adapter/matter_chip_tool_adapter/decoder.py index 929b80570b9acd..0ee564203ba86a 100644 --- a/examples/chip-tool/py_matter_chip_tool_adapter/matter_chip_tool_adapter/decoder.py +++ b/examples/chip-tool/py_matter_chip_tool_adapter/matter_chip_tool_adapter/decoder.py @@ -35,6 +35,7 @@ _CLUSTER_ERROR = 'clusterError' _VALUE = 'value' _DATA_VERSION = 'dataVersion' +_EVENT_NUMBER = 'eventNumber' # FabricIndex is a special case where the field is added as a struct field by the SDK # if needed but is not part of the XML definition of the struct. @@ -89,7 +90,7 @@ def __translate_names(self, payloads): elif key == _EVENT_ID: key = _EVENT value = specs.get_event_name(payload[_CLUSTER_ID], value) - elif key == _VALUE or key == _ERROR or key == _CLUSTER_ERROR or key == _DATA_VERSION: + elif key == _VALUE or key == _ERROR or key == _CLUSTER_ERROR or key == _DATA_VERSION or key == _EVENT_NUMBER: pass else: # Raise an error since the other fields probably needs to be translated too. From 2c4a9070e5865c17c59a3bf53d270d8d43b3c8b5 Mon Sep 17 00:00:00 2001 From: Hare Date: Thu, 24 Aug 2023 13:57:34 +0800 Subject: [PATCH 4/7] Improve the method of get event number --- .../matter_yamltests/runner.py | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/scripts/py_matter_yamltests/matter_yamltests/runner.py b/scripts/py_matter_yamltests/matter_yamltests/runner.py index 8b01b732081efe..3d85dcebbd38ba 100644 --- a/scripts/py_matter_yamltests/matter_yamltests/runner.py +++ b/scripts/py_matter_yamltests/matter_yamltests/runner.py @@ -14,7 +14,6 @@ # limitations under the License. import asyncio -import re import time from abc import ABC, abstractmethod from asyncio import CancelledError @@ -127,7 +126,6 @@ class TestRunner(TestRunnerBase): TestRunner is a default runner implementation. """ - pattern = re.compile(r'EventNumber = (0x[0-9a-f]+)') last_event_number = 0 async def start(self): @@ -180,8 +178,8 @@ async def _run(self, parser: TestParser, config: TestRunnerConfig): test_duration = 0 for idx, request in enumerate(parser.tests): - if request.is_last_event_number: - request.event_number = self.last_event_number + if request.is_event and request.is_last_event_number: + request.event_number = self.last_event_number + 1 if not request.is_pics_enabled: hooks.step_skipped(request.label, request.pics) @@ -203,14 +201,11 @@ async def _run(self, parser: TestParser, config: TestRunnerConfig): duration = round((time.time() - start) * 1000, 2) test_duration += duration - # TODO: To get the event number, the method could be improved - for log in reversed(logs): - match = self.pattern.search(log.message) - if match: - received_event_number = int(match.group(1), 16) + 1 - if self.last_event_number < received_event_number: - self.last_event_number = received_event_number - break + + if request.is_event: + received_event_number = responses[-1].get('eventNumber') + if received_event_number and self.last_event_number < received_event_number: + self.last_event_number = received_event_number logger = request.post_process_response(responses) From 7874d39d46311f1435ff2993a90d12a281f66057 Mon Sep 17 00:00:00 2001 From: "Restyled.io" Date: Thu, 24 Aug 2023 06:00:58 +0000 Subject: [PATCH 5/7] Restyled by autopep8 --- scripts/py_matter_yamltests/matter_yamltests/runner.py | 1 - 1 file changed, 1 deletion(-) diff --git a/scripts/py_matter_yamltests/matter_yamltests/runner.py b/scripts/py_matter_yamltests/matter_yamltests/runner.py index 3d85dcebbd38ba..7bff954d39e5ba 100644 --- a/scripts/py_matter_yamltests/matter_yamltests/runner.py +++ b/scripts/py_matter_yamltests/matter_yamltests/runner.py @@ -201,7 +201,6 @@ async def _run(self, parser: TestParser, config: TestRunnerConfig): duration = round((time.time() - start) * 1000, 2) test_duration += duration - if request.is_event: received_event_number = responses[-1].get('eventNumber') if received_event_number and self.last_event_number < received_event_number: From e1bbbc31b223d4fe48d3d20f9e676e81be9c7b15 Mon Sep 17 00:00:00 2001 From: Hare Date: Thu, 24 Aug 2023 14:39:01 +0800 Subject: [PATCH 6/7] Add variable checking --- .../py_matter_yamltests/matter_yamltests/runner.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/scripts/py_matter_yamltests/matter_yamltests/runner.py b/scripts/py_matter_yamltests/matter_yamltests/runner.py index 7bff954d39e5ba..34b42ffecb8ea4 100644 --- a/scripts/py_matter_yamltests/matter_yamltests/runner.py +++ b/scripts/py_matter_yamltests/matter_yamltests/runner.py @@ -124,9 +124,11 @@ def run(self, config: TestRunnerConfig) -> bool: class TestRunner(TestRunnerBase): """ TestRunner is a default runner implementation. + + last_event_number: The latest event number value after the readEvent command. """ - last_event_number = 0 + last_event_number: int = 0 async def start(self): return @@ -202,9 +204,11 @@ async def _run(self, parser: TestParser, config: TestRunnerConfig): test_duration += duration if request.is_event: - received_event_number = responses[-1].get('eventNumber') - if received_event_number and self.last_event_number < received_event_number: - self.last_event_number = received_event_number + last_event = responses[-1] + if isinstance(last_event, dict): + received_event_number = last_event.get('eventNumber') + if isinstance(received_event_number, int) and self.last_event_number < received_event_number: + self.last_event_number = received_event_number logger = request.post_process_response(responses) From 923ea3c28748e6c4beb192e481f0915283210f35 Mon Sep 17 00:00:00 2001 From: Hare Date: Thu, 24 Aug 2023 23:48:40 +0800 Subject: [PATCH 7/7] Update name --- .../matter_yamltests/parser.py | 7 ------ .../matter_yamltests/runner.py | 2 +- .../matter_yamltests/yaml_loader.py | 1 - .../certification/Test_TC_SMOKECO_2_2.yaml | 6 ++--- .../certification/Test_TC_SMOKECO_2_3.yaml | 6 ++--- .../certification/Test_TC_SMOKECO_2_4.yaml | 22 +++++++++---------- .../certification/Test_TC_SMOKECO_2_5.yaml | 16 +++++++------- 7 files changed, 26 insertions(+), 34 deletions(-) diff --git a/scripts/py_matter_yamltests/matter_yamltests/parser.py b/scripts/py_matter_yamltests/matter_yamltests/parser.py index 750c293a56d31a..624763bf1b8d0f 100644 --- a/scripts/py_matter_yamltests/matter_yamltests/parser.py +++ b/scripts/py_matter_yamltests/matter_yamltests/parser.py @@ -207,7 +207,6 @@ def __init__(self, test: dict, config: dict, definitions: SpecDefinitions, pics_ self.busy_wait_ms = _value_or_none(test, 'busyWaitMs') self.wait_for = _value_or_none(test, 'wait') self.event_number = _value_or_none(test, 'eventNumber') - self.is_last_event_number = _value_or_none(test, 'isLastEventNumber') self.run_if = _value_or_none(test, 'runIf') self.save_response_as = _value_or_none(test, 'saveResponseAs') @@ -579,8 +578,6 @@ def __init__(self, test: _TestStepWithPlaceholders, step_index: int, runtime_con self._test.run_if) self._test.event_number = self._config_variable_substitution( self._test.event_number) - self._test.is_last_event_number = self._config_variable_substitution( - self._test.is_last_event_number) self._test.cluster = self._config_variable_substitution( self._test.cluster) self._test.command = self._config_variable_substitution( @@ -690,10 +687,6 @@ def event_number(self): def event_number(self, value): self._test.event_number = value - @property - def is_last_event_number(self): - return self._test.is_last_event_number - @property def pics(self): return self._test.pics diff --git a/scripts/py_matter_yamltests/matter_yamltests/runner.py b/scripts/py_matter_yamltests/matter_yamltests/runner.py index 34b42ffecb8ea4..1f8317fb81c696 100644 --- a/scripts/py_matter_yamltests/matter_yamltests/runner.py +++ b/scripts/py_matter_yamltests/matter_yamltests/runner.py @@ -180,7 +180,7 @@ async def _run(self, parser: TestParser, config: TestRunnerConfig): test_duration = 0 for idx, request in enumerate(parser.tests): - if request.is_event and request.is_last_event_number: + if request.is_event and request.event_number == 'newEventsOnly': request.event_number = self.last_event_number + 1 if not request.is_pics_enabled: diff --git a/scripts/py_matter_yamltests/matter_yamltests/yaml_loader.py b/scripts/py_matter_yamltests/matter_yamltests/yaml_loader.py index 1908ec0e4366cc..ecdc7af209acbe 100644 --- a/scripts/py_matter_yamltests/matter_yamltests/yaml_loader.py +++ b/scripts/py_matter_yamltests/matter_yamltests/yaml_loader.py @@ -97,7 +97,6 @@ def __check_test_step(self, config: dict, content): 'command': str, 'event': str, 'eventNumber': (int, str), # Can be a variable. - 'isLastEventNumber': bool, # Can be a variable. 'disabled': bool, 'fabricFiltered': bool, 'verification': str, diff --git a/src/app/tests/suites/certification/Test_TC_SMOKECO_2_2.yaml b/src/app/tests/suites/certification/Test_TC_SMOKECO_2_2.yaml index 843b73bf66ab85..6a8147a066564b 100644 --- a/src/app/tests/suites/certification/Test_TC_SMOKECO_2_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_SMOKECO_2_2.yaml @@ -123,7 +123,7 @@ tests: PICS: SMOKECO.S.E00 command: "readEvent" event: "SmokeAlarm" - isLastEventNumber: true + eventNumber: "newEventsOnly" response: value: { AlarmSeverityLevel: 1 } @@ -203,7 +203,7 @@ tests: PICS: SMOKECO.S.E00 command: "readEvent" event: "SmokeAlarm" - isLastEventNumber: true + eventNumber: "newEventsOnly" response: value: { AlarmSeverityLevel: 2 } @@ -248,6 +248,6 @@ tests: PICS: SMOKECO.S.E0a command: "readEvent" event: "AllClear" - isLastEventNumber: true + eventNumber: "newEventsOnly" response: value: {} diff --git a/src/app/tests/suites/certification/Test_TC_SMOKECO_2_3.yaml b/src/app/tests/suites/certification/Test_TC_SMOKECO_2_3.yaml index 8897f8e5b0404a..39a13e2c2e5d95 100644 --- a/src/app/tests/suites/certification/Test_TC_SMOKECO_2_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_SMOKECO_2_3.yaml @@ -122,7 +122,7 @@ tests: PICS: SMOKECO.S.E01 command: "readEvent" event: "COAlarm" - isLastEventNumber: true + eventNumber: "newEventsOnly" response: value: { AlarmSeverityLevel: 1 } @@ -202,7 +202,7 @@ tests: PICS: SMOKECO.S.E01 command: "readEvent" event: "COAlarm" - isLastEventNumber: true + eventNumber: "newEventsOnly" response: value: { AlarmSeverityLevel: 2 } @@ -247,6 +247,6 @@ tests: PICS: SMOKECO.S.E0a command: "readEvent" event: "AllClear" - isLastEventNumber: true + eventNumber: "newEventsOnly" response: value: {} diff --git a/src/app/tests/suites/certification/Test_TC_SMOKECO_2_4.yaml b/src/app/tests/suites/certification/Test_TC_SMOKECO_2_4.yaml index e93fed2562bee7..eb7b36bcc8c9ef 100644 --- a/src/app/tests/suites/certification/Test_TC_SMOKECO_2_4.yaml +++ b/src/app/tests/suites/certification/Test_TC_SMOKECO_2_4.yaml @@ -135,7 +135,7 @@ tests: PICS: SMOKECO.S.E02 command: "readEvent" event: "LowBattery" - isLastEventNumber: true + eventNumber: "newEventsOnly" response: value: { AlarmSeverityLevel: 1 } @@ -180,7 +180,7 @@ tests: PICS: SMOKECO.S.E02 command: "readEvent" event: "LowBattery" - isLastEventNumber: true + eventNumber: "newEventsOnly" response: value: { AlarmSeverityLevel: 2 } @@ -225,7 +225,7 @@ tests: PICS: SMOKECO.S.E0a command: "readEvent" event: "AllClear" - isLastEventNumber: true + eventNumber: "newEventsOnly" response: value: {} @@ -281,7 +281,7 @@ tests: PICS: SMOKECO.S.E03 command: "readEvent" event: "HardwareFault" - isLastEventNumber: true + eventNumber: "newEventsOnly" response: value: {} @@ -327,7 +327,7 @@ tests: PICS: SMOKECO.S.E0a command: "readEvent" event: "AllClear" - isLastEventNumber: true + eventNumber: "newEventsOnly" response: value: {} @@ -383,7 +383,7 @@ tests: PICS: SMOKECO.S.E04 command: "readEvent" event: "EndOfService" - isLastEventNumber: true + eventNumber: "newEventsOnly" response: value: {} @@ -429,7 +429,7 @@ tests: PICS: SMOKECO.S.E0a command: "readEvent" event: "AllClear" - isLastEventNumber: true + eventNumber: "newEventsOnly" response: value: {} @@ -501,7 +501,7 @@ tests: PICS: SMOKECO.S.E05 command: "readEvent" event: "SelfTestComplete" - isLastEventNumber: true + eventNumber: "newEventsOnly" response: value: {} @@ -518,7 +518,7 @@ tests: PICS: SMOKECO.S.E0a command: "readEvent" event: "AllClear" - isLastEventNumber: true + eventNumber: "newEventsOnly" response: value: {} @@ -563,7 +563,7 @@ tests: PICS: SMOKECO.S.E05 command: "readEvent" event: "SelfTestComplete" - isLastEventNumber: true + eventNumber: "newEventsOnly" response: value: {} @@ -580,6 +580,6 @@ tests: PICS: SMOKECO.S.E0a command: "readEvent" event: "AllClear" - isLastEventNumber: true + eventNumber: "newEventsOnly" response: value: {} diff --git a/src/app/tests/suites/certification/Test_TC_SMOKECO_2_5.yaml b/src/app/tests/suites/certification/Test_TC_SMOKECO_2_5.yaml index d84cd950957a07..3f7ec866b95077 100644 --- a/src/app/tests/suites/certification/Test_TC_SMOKECO_2_5.yaml +++ b/src/app/tests/suites/certification/Test_TC_SMOKECO_2_5.yaml @@ -162,7 +162,7 @@ tests: PICS: SMOKECO.S.A0008 && SMOKECO.S.E08 command: "readEvent" event: "InterconnectSmokeAlarm" - isLastEventNumber: true + eventNumber: "newEventsOnly" response: value: { AlarmSeverityLevel: interconnectSmokeAlarmSeverityLevel } @@ -217,7 +217,7 @@ tests: PICS: SMOKECO.S.A0008 && SMOKECO.S.E0a command: "readEvent" event: "AllClear" - isLastEventNumber: true + eventNumber: "newEventsOnly" response: value: {} @@ -275,7 +275,7 @@ tests: PICS: SMOKECO.S.A0009 && SMOKECO.S.E09 command: "readEvent" event: "InterconnectCOAlarm" - isLastEventNumber: true + eventNumber: "newEventsOnly" response: value: { AlarmSeverityLevel: interconnectCOAlarmSeverityLevel } @@ -330,7 +330,7 @@ tests: PICS: SMOKECO.S.E0a command: "readEvent" event: "AllClear" - isLastEventNumber: true + eventNumber: "newEventsOnly" response: value: {} @@ -681,7 +681,7 @@ tests: PICS: SMOKECO.S.A0004 && SMOKECO.S.F00 && SMOKECO.S.E06 command: "readEvent" event: "AlarmMuted" - isLastEventNumber: true + eventNumber: "newEventsOnly" response: value: {} @@ -718,7 +718,7 @@ tests: PICS: SMOKECO.S.A0004 && SMOKECO.S.F00 && SMOKECO.S.E07 command: "readEvent" event: "MuteEnded" - isLastEventNumber: true + eventNumber: "newEventsOnly" response: value: {} @@ -893,7 +893,7 @@ tests: PICS: SMOKECO.S.A0004 && SMOKECO.S.F01 && SMOKECO.S.E06 command: "readEvent" event: "AlarmMuted" - isLastEventNumber: true + eventNumber: "newEventsOnly" response: value: {} @@ -930,7 +930,7 @@ tests: PICS: SMOKECO.S.A0004 && SMOKECO.S.F01 && SMOKECO.S.E07 command: "readEvent" event: "MuteEnded" - isLastEventNumber: true + eventNumber: "newEventsOnly" response: value: {}