diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index c462203ae6cd0d..92a410b9901f90 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -455,6 +455,8 @@ jobs: scripts/run_in_python_env.sh out/venv './scripts/tests/run_python_test.py --app out/linux-x64-all-clusters-ipv6only-no-ble-no-wifi-tsan-clang-test/chip-all-clusters-app --factoryreset --app-args "--discriminator 1234 --KVS kvs1 --trace-to json:out/trace_data/app-{SCRIPT_BASE_NAME}.json" --script "src/python_testing/TC_FAN_3_3.py" --script-args "--storage-path admin_storage.json --commissioning-method on-network --discriminator 1234 --passcode 20202021 --trace-to json:out/trace_data/test-{SCRIPT_BASE_NAME}.json --trace-to perfetto:out/trace_data/test-{SCRIPT_BASE_NAME}.perfetto"' scripts/run_in_python_env.sh out/venv './scripts/tests/run_python_test.py --app out/linux-x64-all-clusters-ipv6only-no-ble-no-wifi-tsan-clang-test/chip-all-clusters-app --factoryreset --app-args "--discriminator 1234 --KVS kvs1 --trace-to json:out/trace_data/app-{SCRIPT_BASE_NAME}.json" --script "src/python_testing/TC_FAN_3_4.py" --script-args "--storage-path admin_storage.json --commissioning-method on-network --discriminator 1234 --passcode 20202021 --trace-to json:out/trace_data/test-{SCRIPT_BASE_NAME}.json --trace-to perfetto:out/trace_data/test-{SCRIPT_BASE_NAME}.perfetto"' scripts/run_in_python_env.sh out/venv './scripts/tests/run_python_test.py --app out/linux-x64-all-clusters-ipv6only-no-ble-no-wifi-tsan-clang-test/chip-all-clusters-app --factoryreset --app-args "--discriminator 1234 --KVS kvs1 --trace-to json:out/trace_data/app-{SCRIPT_BASE_NAME}.json" --script "src/python_testing/TC_FAN_3_5.py" --script-args "--storage-path admin_storage.json --commissioning-method on-network --discriminator 1234 --passcode 20202021 --trace-to json:out/trace_data/test-{SCRIPT_BASE_NAME}.json --trace-to perfetto:out/trace_data/test-{SCRIPT_BASE_NAME}.perfetto"' + scripts/run_in_python_env.sh out/venv './scripts/tests/run_python_test.py --app out/linux-x64-all-clusters-ipv6only-no-ble-no-wifi-tsan-clang-test/chip-all-clusters-app --factoryreset --app-args "--discriminator 1234 --KVS kvs1 --trace-to json:out/trace_data/app-{SCRIPT_BASE_NAME}.json" --script "src/python_testing/TC_DISHM_1_2.py" --script-args "--storage-path admin_storage.json --commissioning-method on-network --discriminator 1234 --passcode 20202021 --trace-to json:out/trace_data/test-{SCRIPT_BASE_NAME}.json --trace-to perfetto:out/trace_data/test-{SCRIPT_BASE_NAME}.perfetto"' + scripts/run_in_python_env.sh out/venv './scripts/tests/run_python_test.py --app out/linux-x64-all-clusters-ipv6only-no-ble-no-wifi-tsan-clang-test/chip-all-clusters-app --factoryreset --app-args "--discriminator 1234 --KVS kvs1 --trace-to json:out/trace_data/app-{SCRIPT_BASE_NAME}.json" --script "src/python_testing/TC_DISHM_3_1.py" --script-args "--storage-path admin_storage.json --commissioning-method on-network --discriminator 1234 --passcode 20202021 --trace-to json:out/trace_data/test-{SCRIPT_BASE_NAME}.json --trace-to perfetto:out/trace_data/test-{SCRIPT_BASE_NAME}.perfetto"' scripts/run_in_python_env.sh out/venv './scripts/tests/run_python_test.py --script "src/python_testing/TestMatterTestingSupport.py" --script-args "--trace-to json:out/trace_data/test-{SCRIPT_BASE_NAME}.json --trace-to perfetto:out/trace_data/test-{SCRIPT_BASE_NAME}.perfetto"' - name: Uploading core files uses: actions/upload-artifact@v3 diff --git a/src/app/tests/suites/certification/PICS.yaml b/src/app/tests/suites/certification/PICS.yaml index dce34aca81dbcd..9e69d853213e67 100644 --- a/src/app/tests/suites/certification/PICS.yaml +++ b/src/app/tests/suites/certification/PICS.yaml @@ -9310,6 +9310,41 @@ PICS: "Does the device implement sending the ChangeToModeResponse command?" id: RVCCLEANMS.S.C03.Tx + ## Dishwasher Mode control + + # Features + - label: + "Does the device support depending on an On/Off cluster implemented on + the same endpoint?" + id: DISHM.S.F00 + + # + # Server Attributes + # + - label: "Does the device implement the SupportedModes attribute?" + id: DISHM.S.A0000 + + - label: "Does the device implement the CurrentMode attribute?" + id: DISHM.S.A0001 + + - label: "Does the device implement the StartUpMode attribute?" + id: DISHM.S.A0002 + + - label: "Does the device implement the OnMode attribute?" + id: DISHM.S.A0003 + + # + #Server commands received + # + - label: "Does the device implement receiving the ChangeToMode command?" + id: DISHM.S.C00.Rsp + + # + #Server commands generated + # + - label: + "Does the device implement sending the ChangeToModeResponse command?" + id: DISHM.S.C01.Tx # #Operational State # diff --git a/src/app/tests/suites/certification/Test_TC_DISHM_1_1.yaml b/src/app/tests/suites/certification/Test_TC_DISHM_1_1.yaml index b79bbbd590df01..7dffe5a00f680c 100644 --- a/src/app/tests/suites/certification/Test_TC_DISHM_1_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_DISHM_1_1.yaml @@ -13,90 +13,139 @@ # limitations under the License. # Auto-generated scripts for harness use only, please review before automation. The endpoints and cluster names are currently set to default -name: 263.1.1. [TC-DISHM-1.1] Global attributes with DUT as Server +name: 194.1.1. [TC-DISHM-1.1] Global Attributes with DUT as Server PICS: - DISHM.S config: nodeId: 0x12344321 - cluster: "Basic Information" - endpoint: 0 + cluster: "Dishwasher Mode" + endpoint: 1 tests: - - label: - "Step 1: Commission DUT to TH (can be skipped if done in a preceding - test)." - verification: | - - disabled: true - - - label: "Step 2: TH reads from the DUT the ClusterRevision attribute." - verification: | - ./chip-tool dishwashermodeselect read cluster-revision 1 1 - - Verify the "ClusterRevision" value is of unit16 and reflects the highest revision number 2 on the TH(chip-tool) and below is the sample log provided for the raspi platform: - - [1645775623.658997][3277:3282] CHIP:TOO: ClusterRevision: 1 - disabled: true - - - label: "Step 3: TH reads from the DUT the FeatureMap attribute." - verification: | - ./chip-tool dishwashermodeselect read feature-map 1 1 - - On the TH(chip-tool) Log, Verify featureMap value is 1, This value changes depending on DUT implementing the features and below is the sample log provided for the raspi platform: - - [1649052001.646939][8355:8360] CHIP:TOO: FeatureMap: 1 - disabled: true - - - label: "Step 4: TH reads from the DUT the AttributeList attribute." - verification: | - ./chip-tool dishwashermodeselect read attribute-list 1 1 - - Verify the "AttributeList " should include the mandatory attributes (values 0, 2, 3), - global attributes (value 65533, 65532, 65531, 65530, 65529 and 65528) and - list may include optional attribute(value 0x0004), if MOD.S.A0004(StartUpMode) supports, - list contains feature dependent attribute (values 0x0005), if MOD.S.F00(DEPONOFF) is true on the TH(chip-tool) Log and below is the sample log provided for the raspi platform: + - label: "Wait for the commissioned device to be retrieved" + cluster: "DelayCommands" + command: "WaitForCommissionee" + arguments: + values: + - name: "nodeId" + value: nodeId + + - label: "TH reads the ClusterRevision from DUT" + command: "readAttribute" + attribute: "ClusterRevision" + response: + value: 1 + constraints: + type: int16u + + - label: "TH reads the FeatureMap from DUT" + PICS: " !DISHM.S.F00 " + command: "readAttribute" + attribute: "FeatureMap" + response: + value: 0 + constraints: + type: bitmap32 - [1676288620.483812][4014:4016] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_FFFB DataVersion: 2649295313 - [1676288620.483850][4014:4016] CHIP:TOO: AttributeList: 13 entries - [1676288620.483861][4014:4016] CHIP:TOO: [1]: 0 - [1676288620.483870][4014:4016] CHIP:TOO: [2]: 1 - [1676288620.483878][4014:4016] CHIP:TOO: [3]: 65528 - [1676288620.483886][4014:4016] CHIP:TOO: [4]: 65529 - [1676288620.483892][4014:4016] CHIP:TOO: [5]: 65530 - [1676288620.483899][4014:4016] CHIP:TOO: [6]: 65531 - [1676288620.483906][4014:4016] CHIP:TOO: [7]: 4293984257 - [1676288620.483915][4014:4016] CHIP:TOO: [8]: 2 - [1676288620.483922][4014:4016] CHIP:TOO: [9]: 3 - [1676288620.483929][4014:4016] CHIP:TOO: [10]: 4 - [1676288620.483934][4014:4016] CHIP:TOO: [11]: 5 - [1676288620.483941][4014:4016] CHIP:TOO: [12]: 65532 - [1676288620.483947][4014:4016] CHIP:TOO: [13]: 65533 - [1676288620.484034][4014:4016] CHIP:EM: <<< [E:29816i M:167554497 (Ack:41020138)] (S) Msg TX to 1:000000000 - - - *NOTE* : This sample attribute list reflects the currently implemented attributes on the all-clusters-app. - disabled: true - - - label: "Step 5: TH reads from the DUT the AcceptedCommandList attribute." - verification: | - ./chip-tool dishwashermodeselect read accepted-command-list 1 1 - - Verify the "AcceptedCommandList" contains feature dependent commands - if !MOD.S.F02(DEPCTM) feature supports list includes(value 0x0000) and - if MOD.S.F01(EXT) feature supports list includes(value 0x0001) on the TH (chip-tool) and below is the sample log provided for the raspi platform: + - label: + "Given DISHM.S.F00(DEPONOFF) ensure featuremap has the correct bit set" + PICS: DISHM.S.F00 + command: "readAttribute" + attribute: "FeatureMap" + response: + value: 1 + constraints: + type: bitmap32 + + # Reference for "SHALL NOT contain" issue: https://github.com/project-chip/connectedhomeip/issues/28287 + - label: "4. TH reads AttributeList from DUT" + PICS: PICS_EVENT_LIST_ENABLED + command: "readAttribute" + attribute: "AttributeList" + response: + constraints: + type: list + contains: [0, 1, 65528, 65529, 65530, 65531, 65532, 65533] + + - label: "4. TH reads AttributeList from DUT" + PICS: "!PICS_EVENT_LIST_ENABLED" + command: "readAttribute" + attribute: "AttributeList" + response: + constraints: + type: list + contains: [0, 1, 65528, 65529, 65531, 65532, 65533] - [1650274602.826352][8965:8970] CHIP:TOO: AcceptedCommandList: 1 entries - [1650274602.826442][8965:8970] CHIP:TOO: [1]: 0 - disabled: true + - label: + "4. TH reads optional attribute (DISHM.S.A0002(StartUpMode)) in + AttributeList" + PICS: DISHM.S.A0002 + command: "readAttribute" + attribute: "AttributeList" + response: + constraints: + type: list + contains: [2] - - label: "Step 6: TH reads from the DUT the GeneratedCommandList attribute." - verification: | - ./chip-tool dishwashermodeselect read generated-command-list 1 1 + - label: + "4. TH reads optional attribute (DISHM.S.A0002(StartUpMode)) in + AttributeList" + PICS: " !DISHM.S.A0002 " + command: "readAttribute" + attribute: "AttributeList" + response: + constraints: + type: list + excludes: [2] - Verify "GeneratedCommandList" contains feature dependent commands - if MOD.S.F01(EXT) feature supports list includes(value 0x0002), otherwise value is 0 on the TH(chip-tool) Log and below is the sample log provided for the raspi platform: + - label: + "4. TH reads optional attribute (DISHM.S.F00(DEPONOFF)) in + AttributeList" + PICS: DISHM.S.F00 + command: "readAttribute" + attribute: "AttributeList" + response: + constraints: + type: list + contains: [3] - [1650274662.075309][8972:8977] CHIP:TOO: GeneratedCommandList: 0 entries - disabled: true + - label: + "4. TH reads optional attribute (DISHM.S.F00(DEPONOFF)) in + AttributeList" + PICS: " !DISHM.S.F00 " + command: "readAttribute" + attribute: "AttributeList" + response: + constraints: + type: list + excludes: [3] + + # Reference for "SHALL NOT contain" issue: https://github.com/project-chip/connectedhomeip/issues/28287 + - label: "5. TH reads from the DUT the EventList attribute" + PICS: PICS_EVENT_LIST_ENABLED + command: "readAttribute" + attribute: "EventList" + response: + value: [] + constraints: + type: list + + # Reference for "SHALL NOT contain" issue: https://github.com/project-chip/connectedhomeip/issues/28287 + - label: "6. TH reads AcceptedCommandList from DUT" + command: "readAttribute" + attribute: "AcceptedCommandList" + response: + constraints: + type: list + contains: [0] + + # Reference for "SHALL NOT contain" issue: https://github.com/project-chip/connectedhomeip/issues/28287 + - label: "7. TH reads from the DUT the GeneratedCommandList attribute" + command: "readAttribute" + attribute: "GeneratedCommandList" + response: + constraints: + type: list + contains: [1] diff --git a/src/app/tests/suites/certification/Test_TC_DISHM_1_2.yaml b/src/app/tests/suites/certification/Test_TC_DISHM_1_2.yaml deleted file mode 100644 index a4304e3d1d715c..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_DISHM_1_2.yaml +++ /dev/null @@ -1,118 +0,0 @@ -# Copyright (c) 2023 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 -# -# 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. -# Auto-generated scripts for harness use only, please review before automation. The endpoints and cluster names are currently set to default - -name: 263.1.2. [TC-DISHM-1.2] Cluster attributes with DUT as Server - -PICS: - - DISHM.S - -config: - nodeId: 0x12344321 - cluster: "Basic Information" - endpoint: 0 - -tests: - - label: - "Step 1: Commission DUT to TH (can be skipped if done in a preceding - test)." - verification: | - - disabled: true - - - label: "Step 2: TH reads from the DUT the SupportedModes attribute." - PICS: DISHM.S.A0000 - verification: | - ./chip-tool dishwashermodeselect read supported-modes 1 1 - - On TH(chip-tool) log, Verify SupportedModes attribute should contains atleast two ModeOptionsStruct entries with unique mode field value and label field value below is the sample log provided for the raspi platform: - - [1687687925.438666][18054:18056] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Attribute 0x0000_0002 DataVersion: 4148960394 - [1687687925.438838][18054:18056] CHIP:TOO: SupportedModes: 3 entries - [1687687925.444452][18054:18056] CHIP:TOO: [1]: { - [1687687925.444485][18054:18056] CHIP:TOO: Label: Normal - [1687687925.444506][18054:18056] CHIP:TOO: Mode: 0 - [1687687925.444532][18054:18056] CHIP:TOO: SemanticTags: 1 entries - [1687687925.444575][18054:18056] CHIP:TOO: [1]: { - [1687687925.444598][18054:18056] CHIP:TOO: MfgCode: 0 - [1687687925.444632][18054:18056] CHIP:TOO: Value: 16384 - [1687687925.444654][18054:18056] CHIP:TOO: } - [1687687925.444674][18054:18056] CHIP:TOO: } - [1687687925.444702][18054:18056] CHIP:TOO: [2]: { - [1687687925.444723][18054:18056] CHIP:TOO: Label: Heavy - [1687687925.444742][18054:18056] CHIP:TOO: Mode: 1 - [1687687925.444764][18054:18056] CHIP:TOO: SemanticTags: 2 entries - [1687687925.444787][18054:18056] CHIP:TOO: [1]: { - [1687687925.444808][18054:18056] CHIP:TOO: MfgCode: 0 - [1687687925.444828][18054:18056] CHIP:TOO: Value: 7 - [1687687925.444847][18054:18056] CHIP:TOO: } - [1687687925.444869][18054:18056] CHIP:TOO: [2]: { - [1687687925.444928][18054:18056] CHIP:TOO: MfgCode: 0 - [1687687925.444952][18054:18056] CHIP:TOO: Value: 16385 - [1687687925.444971][18054:18056] CHIP:TOO: } - [1687687925.444991][18054:18056] CHIP:TOO: } - [1687687925.445016][18054:18056] CHIP:TOO: [3]: { - [1687687925.445036][18054:18056] CHIP:TOO: Label: Light - [1687687925.445056][18054:18056] CHIP:TOO: Mode: 2 - [1687687925.445106][18054:18056] CHIP:TOO: SemanticTags: 3 entries - [1687687925.445133][18054:18056] CHIP:TOO: [1]: { - [1687687925.445154][18054:18056] CHIP:TOO: MfgCode: 0 - [1687687925.445174][18054:18056] CHIP:TOO: Value: 16386 - [1687687925.445194][18054:18056] CHIP:TOO: } - [1687687925.445216][18054:18056] CHIP:TOO: [2]: { - [1687687925.445236][18054:18056] CHIP:TOO: MfgCode: 0 - [1687687925.445256][18054:18056] CHIP:TOO: Value: 8 - [1687687925.445275][18054:18056] CHIP:TOO: } - [1687687925.445297][18054:18056] CHIP:TOO: [3]: { - [1687687925.445342][18054:18056] CHIP:TOO: MfgCode: 0 - [1687687925.445365][18054:18056] CHIP:TOO: Value: 2 - [1687687925.445385][18054:18056] CHIP:TOO: } - [1687687925.445405][18054:18056] CHIP:TOO: } - disabled: true - - - label: "Step 3: TH reads from the DUT the CurrentMode attribute." - PICS: DISHM.S.A0001 - verification: | - ./chip-tool dishwashermodeselect read current-mode 1 1 - - Verify on TH(chip-tool) logs, CurrentMode attribute value is an integer and the value is from supported_modes_dut, below is the sample log provided for the raspi platform: - - [1645776767.611140][4667:4672] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0000DataVersion: 3781469718 - - [1645776767.611214][4667:4672] CHIP:TOO: CurrentMode: 0 - disabled: true - - - label: "Step 4: TH reads from the DUT the OnMode attribute." - PICS: DISHM.S.A0003 - verification: | - ./chip-tool dishwashermodeselect read on-mode 1 1 - - Verify on TH(chip-tool) logs, OnMode attribute value is an integer and the value is from supported_modes_dut (As per spec default value is null) , below is the sample log provided for the raspi platform: - - - [1649676072.465968][10754:10759] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0005 DataVersion: 4277065072 - - [1649676072.466094][10754:10759] CHIP:TOO: OnMode: null - disabled: true - - - label: "Step 5: TH reads from the DUT the StartUpMode attribute." - PICS: DISHM.S.A0002 - verification: | - ./chip-tool dishwashermodeselect read start-up-mode 1 1 - - Verify on TH(chip-tool) logs, StartUpMode attribute value is an integer and value is from supported_modes_dut, below is the sample log provided for the raspi platform: - - [1649677014.496348][10778:10784] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0004 DataVersion: 4277065072 - [1649677014.496469][10778:10784] CHIP:TOO: StartUpMode: 0 - disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DISHM_2_1.yaml b/src/app/tests/suites/certification/Test_TC_DISHM_2_1.yaml deleted file mode 100644 index 57546907ea001a..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_DISHM_2_1.yaml +++ /dev/null @@ -1,185 +0,0 @@ -# Copyright (c) 2023 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 -# -# 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. -# Auto-generated scripts for harness use only, please review before automation. The endpoints and cluster names are currently set to default - -name: 263.3.1. [TC-DISHM-2.1] ChangeToModeWithStatus Verification DUT as Server - -PICS: - - DISHM.S - -config: - nodeId: 0x12344321 - cluster: "Basic Information" - endpoint: 0 - -tests: - - label: - "Step 1: Commission DUT to TH (can be skipped if done in a preceding - test)." - verification: | - - disabled: true - - - label: "Step 2: TH reads from the DUT the SupportedModes attribute." - PICS: DISHM.S.A0000 - verification: | - ./chip-tool dishwashermodeselect read supported-modes 1 1 - - On TH(chip-tool) log, Verify SupportedModes attribute should contains two or more ModeOptionsStruct entries and - Save the Mode field values as supported_modes_dut, below is the sample log provided for the raspi platform: - - [1687687925.438666][18054:18056] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Attribute 0x0000_0002 DataVersion: 4148960394 - [1687687925.438838][18054:18056] CHIP:TOO: SupportedModes: 3 entries - [1687687925.444452][18054:18056] CHIP:TOO: [1]: { - [1687687925.444485][18054:18056] CHIP:TOO: Label: Normal - [1687687925.444506][18054:18056] CHIP:TOO: Mode: 0 - [1687687925.444532][18054:18056] CHIP:TOO: SemanticTags: 1 entries - [1687687925.444575][18054:18056] CHIP:TOO: [1]: { - [1687687925.444598][18054:18056] CHIP:TOO: MfgCode: 0 - [1687687925.444632][18054:18056] CHIP:TOO: Value: 16384 - [1687687925.444654][18054:18056] CHIP:TOO: } - [1687687925.444674][18054:18056] CHIP:TOO: } - [1687687925.444702][18054:18056] CHIP:TOO: [2]: { - [1687687925.444723][18054:18056] CHIP:TOO: Label: Heavy - [1687687925.444742][18054:18056] CHIP:TOO: Mode: 1 - [1687687925.444764][18054:18056] CHIP:TOO: SemanticTags: 2 entries - [1687687925.444787][18054:18056] CHIP:TOO: [1]: { - [1687687925.444808][18054:18056] CHIP:TOO: MfgCode: 0 - [1687687925.444828][18054:18056] CHIP:TOO: Value: 7 - [1687687925.444847][18054:18056] CHIP:TOO: } - [1687687925.444869][18054:18056] CHIP:TOO: [2]: { - [1687687925.444928][18054:18056] CHIP:TOO: MfgCode: 0 - [1687687925.444952][18054:18056] CHIP:TOO: Value: 16385 - [1687687925.444971][18054:18056] CHIP:TOO: } - [1687687925.444991][18054:18056] CHIP:TOO: } - [1687687925.445016][18054:18056] CHIP:TOO: [3]: { - [1687687925.445036][18054:18056] CHIP:TOO: Label: Light - [1687687925.445056][18054:18056] CHIP:TOO: Mode: 2 - [1687687925.445106][18054:18056] CHIP:TOO: SemanticTags: 3 entries - [1687687925.445133][18054:18056] CHIP:TOO: [1]: { - [1687687925.445154][18054:18056] CHIP:TOO: MfgCode: 0 - [1687687925.445174][18054:18056] CHIP:TOO: Value: 16386 - [1687687925.445194][18054:18056] CHIP:TOO: } - [1687687925.445216][18054:18056] CHIP:TOO: [2]: { - [1687687925.445236][18054:18056] CHIP:TOO: MfgCode: 0 - [1687687925.445256][18054:18056] CHIP:TOO: Value: 8 - [1687687925.445275][18054:18056] CHIP:TOO: } - [1687687925.445297][18054:18056] CHIP:TOO: [3]: { - [1687687925.445342][18054:18056] CHIP:TOO: MfgCode: 0 - [1687687925.445365][18054:18056] CHIP:TOO: Value: 2 - [1687687925.445385][18054:18056] CHIP:TOO: } - [1687687925.445405][18054:18056] CHIP:TOO: } - disabled: true - - - label: "Step 2: TH reads from the DUT the CurrentMode attribute." - PICS: DISHM.S.A0001 - verification: | - ./chip-tool dishwashermodeselect read current-mode 1 1 - - Verify on TH(chip-tool) logs, CurrentMode attribute value is an integer value - - Save the value as old_current_mode_dut - - Select a value from supported_modes_dut, different from old_current_mode_dut, and which corresponds to a mode the device can switch to, given its current state and save this value as new_mode_th - - Select a value which is NOT in supported_modes_dut and save it as invalid_mode_th, - below is the sample log provided for the raspi platform: - - [1685018283.726571][16418:16420] CHIP:DMG: SuppressResponse = true, - [1685018283.726581][16418:16420] CHIP:DMG: InteractionModelRevision = 1 - [1685018283.726589][16418:16420] CHIP:DMG: } - [1685018283.726667][16418:16420] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0003 DataVersion: 3898153349 - [1685018283.726680][16418:16420] CHIP:TOO: CurrentMode: 0 - disabled: true - - - label: - "Step 3: TH sends a ChangeToMode command to the DUT with NewMode set - to old_current_mode_dut" - PICS: DISHM.S.C00.Rsp - verification: | - ChangeToModeWithStatus Command is not impleented. - disabled: true - - - label: - "Step 4: Manually put the device in a state from which it will FAIL to - transition to PIXIT.DISHM.MODE_CHANGE_FAIL" - verification: | - ChangeToModeWithStatus Command is not implented. - disabled: true - - - label: "Step 5: TH reads from the DUT the CurrentMode attribute." - PICS: DISHM.S.A0001 - verification: | - ./chip-tool dishwashermodeselect read current-mode 1 1 - - Verify on TH(chip-tool) logs, CurrentMode attribute value is an integer value and equal to the new_mode_th, below is the sample log provided for the raspi platform: - - [1685018283.726571][16418:16420] CHIP:DMG: SuppressResponse = true, - [1685018283.726581][16418:16420] CHIP:DMG: InteractionModelRevision = 1 - [1685018283.726589][16418:16420] CHIP:DMG: } - [1685018283.726667][16418:16420] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0003 DataVersion: 3898153349 - [1685018283.726680][16418:16420] CHIP:TOO: CurrentMode: 0 - disabled: true - - - label: - "Step 6: TH sends a ChangeToMode command to the DUT with NewMode set - to PIXIT.DISHM.MODE_CHANGE_FAIL" - PICS: DISHM.S.C00.Rsp - verification: | - ChangeToModeWithStatus Command is not implented. - disabled: true - - - label: "Step 7: TH reads from the DUT the CurrentMode attribute." - PICS: DISHM.S.A0001 - verification: | - - disabled: true - - - label: - "Step 8: Manually put the device in a state from which it will - SUCCESSFULLY transition to PIXIT.DISHM.MODE_CHANGE_OK" - verification: | - - disabled: true - - - label: "Step 9: TH reads from the DUT the CurrentMode attribute." - PICS: DISHM.S.A0001 - verification: | - - disabled: true - - - label: - "Step 10: TH sends a ChangeToMode command to the DUT with NewMode set - to PIXIT.DISHM.MODE_CHANGE_OK" - PICS: DISHM.S.C00.Rsp - verification: | - - disabled: true - - - label: "Step 11: TH reads from the DUT the CurrentMode attribute." - PICS: DISHM.S.A0001 - verification: | - - disabled: true - - - label: - "Step 12: TH sends a ChangeToMode command to the DUT with NewMode set - to invalid_mode_th" - PICS: DISHM.S.C00.Rsp - verification: | - - disabled: true - - - label: "Step 13: TH reads from the DUT the CurrentMode attribute." - PICS: DISHM.S.A0001 - verification: | - - disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DISHM_3_1.yaml b/src/app/tests/suites/certification/Test_TC_DISHM_3_1.yaml deleted file mode 100644 index 8836ca0ba9595f..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_DISHM_3_1.yaml +++ /dev/null @@ -1,162 +0,0 @@ -# Copyright (c) 2023 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 -# -# 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. -# Auto-generated scripts for harness use only, please review before automation. The endpoints and cluster names are currently set to default - -name: 263.4.1. [TC-DISHM-3.1] OnMode verification with DUT as Server - -PICS: - - DISHM.S - -config: - nodeId: 0x12344321 - cluster: "Basic Information" - endpoint: 0 - -tests: - - label: - "Step 1: Commission DUT to TH (can be skipped if done in a preceding - test)." - verification: | - - disabled: true - - - label: "Step 2: TH reads from the DUT the OnMode attribute." - PICS: DISHM.S.A0003 && DISHM.S.F00 - verification: | - ./chip-tool dishwashermodeselect read on-mode 1 1 - - On TH(chip-tool), Verify OnMode attribute value is an integer. save the value as on_mode_dut and below is the sample log provided for the raspi platform: - - [1649678983.679893][10871:10876] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0005 DataVersion: 4277065073 - [1649678983.680002][10871:10876] CHIP:TOO: OnMode: 0 - disabled: true - - - label: "Step 3: TH reads from the DUT the CurrentMode attribute." - PICS: DISHM.S.A0001 && DISHM.S.F00 - verification: | - ./chip-tool dishwashermodeselect read current-mode 1 1 - - On TH(chip-tool), Verify CurrentMode attribute is an integer. save the value as old_current_mode_dut and below is the sample log provided for the raspi platform: - - NOTE: If startup_mode_dut is equal to old_current_mode_dut proceed to step 4. Else proceed to step 6. - - [1649679034.895848][10879:10884] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0003 DataVersion: 4277065073 - [1649679034.895972][10879:10884] CHIP:TOO: CurrentMode: 0 - disabled: true - - - label: "Step 4: TH reads from the DUT the SupportedModes attribute." - PICS: DISHM.S.A0000 && DISHM.S.F00 - verification: | - ./chip-tool dishwashermodeselect read supported-modes 1 1 - - On TH(chip-tool) log, Verify SupportedModes attribute contains two or more ModeOptionsStruct entries. - Save the Mode field values as supported_modes_dut. - Select a value from supported_modes_dut different from on_mode_dut and save the value as new_mode_th, below is the sample log provided for the raspi platform: - - [1687687925.438666][18054:18056] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Attribute 0x0000_0002 DataVersion: 4148960394 - [1687687925.438838][18054:18056] CHIP:TOO: SupportedModes: 3 entries - [1687687925.444452][18054:18056] CHIP:TOO: [1]: { - [1687687925.444485][18054:18056] CHIP:TOO: Label: Normal - [1687687925.444506][18054:18056] CHIP:TOO: Mode: 0 - [1687687925.444532][18054:18056] CHIP:TOO: SemanticTags: 1 entries - [1687687925.444575][18054:18056] CHIP:TOO: [1]: { - [1687687925.444598][18054:18056] CHIP:TOO: MfgCode: 0 - [1687687925.444632][18054:18056] CHIP:TOO: Value: 16384 - [1687687925.444654][18054:18056] CHIP:TOO: } - [1687687925.444674][18054:18056] CHIP:TOO: } - [1687687925.444702][18054:18056] CHIP:TOO: [2]: { - [1687687925.444723][18054:18056] CHIP:TOO: Label: Heavy - [1687687925.444742][18054:18056] CHIP:TOO: Mode: 1 - [1687687925.444764][18054:18056] CHIP:TOO: SemanticTags: 2 entries - [1687687925.444787][18054:18056] CHIP:TOO: [1]: { - [1687687925.444808][18054:18056] CHIP:TOO: MfgCode: 0 - [1687687925.444828][18054:18056] CHIP:TOO: Value: 7 - [1687687925.444847][18054:18056] CHIP:TOO: } - [1687687925.444869][18054:18056] CHIP:TOO: [2]: { - [1687687925.444928][18054:18056] CHIP:TOO: MfgCode: 0 - [1687687925.444952][18054:18056] CHIP:TOO: Value: 16385 - [1687687925.444971][18054:18056] CHIP:TOO: } - [1687687925.444991][18054:18056] CHIP:TOO: } - [1687687925.445016][18054:18056] CHIP:TOO: [3]: { - [1687687925.445036][18054:18056] CHIP:TOO: Label: Light - [1687687925.445056][18054:18056] CHIP:TOO: Mode: 2 - [1687687925.445106][18054:18056] CHIP:TOO: SemanticTags: 3 entries - [1687687925.445133][18054:18056] CHIP:TOO: [1]: { - [1687687925.445154][18054:18056] CHIP:TOO: MfgCode: 0 - [1687687925.445174][18054:18056] CHIP:TOO: Value: 16386 - [1687687925.445194][18054:18056] CHIP:TOO: } - [1687687925.445216][18054:18056] CHIP:TOO: [2]: { - [1687687925.445236][18054:18056] CHIP:TOO: MfgCode: 0 - [1687687925.445256][18054:18056] CHIP:TOO: Value: 8 - [1687687925.445275][18054:18056] CHIP:TOO: } - [1687687925.445297][18054:18056] CHIP:TOO: [3]: { - [1687687925.445342][18054:18056] CHIP:TOO: MfgCode: 0 - [1687687925.445365][18054:18056] CHIP:TOO: Value: 2 - [1687687925.445385][18054:18056] CHIP:TOO: } - [1687687925.445405][18054:18056] CHIP:TOO: } - disabled: true - - - label: - "Step 5: TH sends a ChangeToMode command to the DUT with NewMode set - to new_mode_th" - PICS: DISHM.S.C00.Rsp && DISHM.S.F00 - verification: | - ./chip-tool dishwashermodeselect change-to-mode 2 1 1 - - On TH(chip-tool) log, verify DUT responds with a successful (value 0x00) status response and below is the sample log provided for the raspi platform: - - [1684931013.571019][20667:20669] CHIP:DMG: - [1684931013.571021][20667:20669] CHIP:DMG: StatusIB = - [1684931013.571024][20667:20669] CHIP:DMG: { - [1684931013.571027][20667:20669] CHIP:DMG: status = 0x00 (SUCCESS), - [1684931013.571030][20667:20669] CHIP:DMG: }, - [1684931013.571034][20667:20669] CHIP:DMG: - disabled: true - - - label: "Step 6: TH sends a Off command to the DUT" - PICS: OO.S.C00.Rsp && DISHM.S.F00 - verification: | - ./chip-tool onoff off 1 1 - - On TH(chip-tool) log, Verify DUT responds with a successful (value 0x00) status response and below is the sample log provided for the raspi platform: - - [1684931101.118656][20709:20711] CHIP:DMG: StatusIB = - [1684931101.118659][20709:20711] CHIP:DMG: { - [1684931101.118663][20709:20711] CHIP:DMG: status = 0x00 (SUCCESS), - [1684931101.118665][20709:20711] CHIP:DMG: }, - disabled: true - - - label: "Step 7: TH sends a On command to the DUT" - PICS: OO.S.C01.Rsp && DISHM.S.F00 - verification: | - ./chip-tool onoff on 1 1 - - On TH(chip-tool) log, Verify DUT responds with a successful (value 0x00) status response and below is the sample log provided for the raspi platform: - - [1684931217.055514][20729:20731] CHIP:DMG: StatusIB = - [1684931217.055517][20729:20731] CHIP:DMG: { - [1684931217.055520][20729:20731] CHIP:DMG: status = 0x00 (SUCCESS), - [1684931217.055523][20729:20731] CHIP:DMG: }, - disabled: true - - - label: "Step 8: TH reads from the DUT the CurrentMode attribute." - PICS: DISHM.S.A0001 && DISHM.S.F00 - verification: | - ./chip-tool dishwashermodeselect read current-mode 1 1 - - On TH(chip-tool), Verify that CurrentMode attribute value is an integer and value is equal to on_mode_dut. below is the sample log provided for the raspi platform: - - [1649679202.069163][10899:10904] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0003 DataVersion: 4277065073 - [1649679202.069278][10899:10904] CHIP:TOO: CurrentMode: 2 - disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DISHM_3_2.yaml b/src/app/tests/suites/certification/Test_TC_DISHM_3_2.yaml deleted file mode 100644 index 960e14a4046d90..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_DISHM_3_2.yaml +++ /dev/null @@ -1,141 +0,0 @@ -# Copyright (c) 2023 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 -# -# 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. -# Auto-generated scripts for harness use only, please review before automation. The endpoints and cluster names are currently set to default - -name: 263.4.2. [TC-DISHM-3.2] StartUpMode verification with DUT as Server - -PICS: - - DISHM.S - -config: - nodeId: 0x12344321 - cluster: "Basic Information" - endpoint: 0 - -tests: - - label: - "Step 1: Commission DUT to TH (can be skipped if done in a preceding - test)." - verification: | - - disabled: true - - - label: "Step 2: TH reads from the DUT the StartUpMode attribute." - PICS: DISHM.S.A0002 - verification: | - ./chip-tool dishwashermodeselect read start-up-mode 1 1 - - On TH(chip-tool), Verify StartUpMode attribute value is an integer. save the value as startup_mode_dut and below is the sample log provided for the raspi platform: - - [1645777708.406864][4841:4846] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0003DataVersion: 3781469721 - [1645777708.406933][4841:4846] CHIP:TOO: StartUpMode: 0 - disabled: true - - - label: "Step 3: TH reads from the DUT the CurrentMode attribute." - PICS: DISHM.S.A0001 - verification: | - ./chip-tool dishwashermodeselect read current-mode 1 1 - - On TH(chip-tool), Verify CurrentMode attribute value is an integer, - save the value as old_current_mode_dut and below is the sample log provided for the raspi platform: - - NOTE: If startup_mode_dut is equal to old_current_mode_dut proceed to step 4. Else proceed to step 6. - - [1645778146.171510][4876:4881] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0000DataVersion: 3781469721 - [1645778146.171602][4876:4881] CHIP:TOO: CurrentMode: 0 - disabled: true - - - label: "Step 4: TH reads from the DUT the SupportedModes attribute." - PICS: DISHM.S.A0000 - verification: | - ./chip-tool dishwashermodeselect read supported-modes 1 1 - - On TH(chip-tool) log, Verify SupportedModes attribute contains two or more ModeOptionsStruct entries. - Save the Mode field values as supported_modes_dut. - Select a value from supported_modes_dut different from on_mode_dut and save the value as new_mode_th, below is the sample log provided for the raspi platform: - - [1687687925.438666][18054:18056] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Attribute 0x0000_0002 DataVersion: 4148960394 - [1687687925.438838][18054:18056] CHIP:TOO: SupportedModes: 3 entries - [1687687925.444452][18054:18056] CHIP:TOO: [1]: { - [1687687925.444485][18054:18056] CHIP:TOO: Label: Normal - [1687687925.444506][18054:18056] CHIP:TOO: Mode: 0 - [1687687925.444532][18054:18056] CHIP:TOO: SemanticTags: 1 entries - [1687687925.444575][18054:18056] CHIP:TOO: [1]: { - [1687687925.444598][18054:18056] CHIP:TOO: MfgCode: 0 - [1687687925.444632][18054:18056] CHIP:TOO: Value: 16384 - [1687687925.444654][18054:18056] CHIP:TOO: } - [1687687925.444674][18054:18056] CHIP:TOO: } - [1687687925.444702][18054:18056] CHIP:TOO: [2]: { - [1687687925.444723][18054:18056] CHIP:TOO: Label: Heavy - [1687687925.444742][18054:18056] CHIP:TOO: Mode: 1 - [1687687925.444764][18054:18056] CHIP:TOO: SemanticTags: 2 entries - [1687687925.444787][18054:18056] CHIP:TOO: [1]: { - [1687687925.444808][18054:18056] CHIP:TOO: MfgCode: 0 - [1687687925.444828][18054:18056] CHIP:TOO: Value: 7 - [1687687925.444847][18054:18056] CHIP:TOO: } - [1687687925.444869][18054:18056] CHIP:TOO: [2]: { - [1687687925.444928][18054:18056] CHIP:TOO: MfgCode: 0 - [1687687925.444952][18054:18056] CHIP:TOO: Value: 16385 - [1687687925.444971][18054:18056] CHIP:TOO: } - [1687687925.444991][18054:18056] CHIP:TOO: } - [1687687925.445016][18054:18056] CHIP:TOO: [3]: { - [1687687925.445036][18054:18056] CHIP:TOO: Label: Light - [1687687925.445056][18054:18056] CHIP:TOO: Mode: 2 - [1687687925.445106][18054:18056] CHIP:TOO: SemanticTags: 3 entries - [1687687925.445133][18054:18056] CHIP:TOO: [1]: { - [1687687925.445154][18054:18056] CHIP:TOO: MfgCode: 0 - [1687687925.445174][18054:18056] CHIP:TOO: Value: 16386 - [1687687925.445194][18054:18056] CHIP:TOO: } - [1687687925.445216][18054:18056] CHIP:TOO: [2]: { - [1687687925.445236][18054:18056] CHIP:TOO: MfgCode: 0 - [1687687925.445256][18054:18056] CHIP:TOO: Value: 8 - [1687687925.445275][18054:18056] CHIP:TOO: } - [1687687925.445297][18054:18056] CHIP:TOO: [3]: { - [1687687925.445342][18054:18056] CHIP:TOO: MfgCode: 0 - [1687687925.445365][18054:18056] CHIP:TOO: Value: 2 - [1687687925.445385][18054:18056] CHIP:TOO: } - [1687687925.445405][18054:18056] CHIP:TOO: } - disabled: true - - - label: - "Step 5: TH sends a ChangeToMode command to the DUT with NewMode set - to new_mode_th" - PICS: DISHM.S.C00.Rsp - verification: | - ./chip-tool dishwashermodeselect change-to-mode 2 1 1 - - - On TH(chip-tool) , Verify DUT responds with a successful (value 0x00) status response and below is the sample log provided for the raspi platform: - - [1684931419.768138][20792:20794] CHIP:DMG: StatusIB = - [1684931419.768143][20792:20794] CHIP:DMG: { - [1684931419.768148][20792:20794] CHIP:DMG: status = 0x00 (SUCCESS), - [1684931419.768152][20792:20794] CHIP:DMG: }, - disabled: true - - - label: "Step 6: Physically power cycle the device" - verification: | - Physically power cycle the device. - disabled: true - - - label: "Step 7: TH reads from the DUT the CurrentMode attribute." - PICS: DISHM.S.A0001 - verification: | - ./chip-tool dishwashermodeselect read current-mode 1 1 - - on TH(chip-tool), Verify that CurrentMode attribute value is same as value recorded in step 1 and below is the sample log provided for the raspi platform: - - [1645778146.171510][4876:4881] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0000DataVersion: 3781469721 - [1645778146.171602][4876:4881] CHIP:TOO: CurrentMode: 0 - disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DISHM_3_3.yaml b/src/app/tests/suites/certification/Test_TC_DISHM_3_3.yaml deleted file mode 100644 index f2fec608881422..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_DISHM_3_3.yaml +++ /dev/null @@ -1,206 +0,0 @@ -# Copyright (c) 2023 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 -# -# 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. -# Auto-generated scripts for harness use only, please review before automation. The endpoints and cluster names are currently set to default - -name: 189.3.3.[TC-DISHM-3.3] OnMode overwriting StartUpMode with DUT as Server - -PICS: - - DISHM.S - -config: - nodeId: 0x12344321 - cluster: "Basic Information" - endpoint: 0 - -tests: - - label: - "Step 1: Commission DUT to TH (can be skipped if done in a preceding - test)." - verification: | - - disabled: true - - - label: "Step 2: TH reads from the DUT the StartUpMode attribute." - PICS: DISHM.S.A0002 - verification: | - ./chip-tool dishwashermodeselect read start-up-mode 1 1 - - On TH(chip-tool) log, Verify StartUpMode attribute value is an integer. save this value as startup_mode_dut and below is the sample log provided for the raspi platform: - - - [1651099663211] [82177:7560652] CHIP: [TOO] Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0004 DataVersion: 2609052118 - [1651099663212] [82177:7560652] CHIP: [TOO] StartUpMode: 0 - disabled: true - - - label: "Step 3: TH reads from the DUT the OnMode attribute." - PICS: DISHM.S.A0003 && DISHM.S.A0002 - verification: | - ./chip-tool dishwashermodeselect read on-mode 1 1 - - On TH(chip-tool) log, Verify OnMode attribute value is an integer. save the value as old_on_mode_dut and below is the sample log provided for the raspi platform: - - - [1654780979.979743][61542:61547] CHIP:DMG: } - [1654780979.980040][61542:61547] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0005 DataVersion: 235764160 - [1654780979.980202][61542:61547] CHIP:TOO: OnMode: 4 - disabled: true - - - label: "Step 4: TH reads from the DUT the SupportedModes attribute." - PICS: DISHM.S.A0000 && DISHM.S.A0002 - verification: | - ./chip-tool dishwashermodeselect read supported-modes 1 1 - - On TH(chip-tool) log, Verify SupportedModes attribute contains two or more ModeOptionsStruct entries. - Save the Mode field values as supported_modes_dut. - Select a value from supported_modes_dut different from on_mode_dut and save the value as new_mode_th, below is the sample log provided for the raspi platform: - - [1687687925.438666][18054:18056] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Attribute 0x0000_0002 DataVersion: 4148960394 - [1687687925.438838][18054:18056] CHIP:TOO: SupportedModes: 3 entries - [1687687925.444452][18054:18056] CHIP:TOO: [1]: { - [1687687925.444485][18054:18056] CHIP:TOO: Label: Normal - [1687687925.444506][18054:18056] CHIP:TOO: Mode: 0 - [1687687925.444532][18054:18056] CHIP:TOO: SemanticTags: 1 entries - [1687687925.444575][18054:18056] CHIP:TOO: [1]: { - [1687687925.444598][18054:18056] CHIP:TOO: MfgCode: 0 - [1687687925.444632][18054:18056] CHIP:TOO: Value: 16384 - [1687687925.444654][18054:18056] CHIP:TOO: } - [1687687925.444674][18054:18056] CHIP:TOO: } - [1687687925.444702][18054:18056] CHIP:TOO: [2]: { - [1687687925.444723][18054:18056] CHIP:TOO: Label: Heavy - [1687687925.444742][18054:18056] CHIP:TOO: Mode: 1 - [1687687925.444764][18054:18056] CHIP:TOO: SemanticTags: 2 entries - [1687687925.444787][18054:18056] CHIP:TOO: [1]: { - [1687687925.444808][18054:18056] CHIP:TOO: MfgCode: 0 - [1687687925.444828][18054:18056] CHIP:TOO: Value: 7 - [1687687925.444847][18054:18056] CHIP:TOO: } - [1687687925.444869][18054:18056] CHIP:TOO: [2]: { - [1687687925.444928][18054:18056] CHIP:TOO: MfgCode: 0 - [1687687925.444952][18054:18056] CHIP:TOO: Value: 16385 - [1687687925.444971][18054:18056] CHIP:TOO: } - [1687687925.444991][18054:18056] CHIP:TOO: } - [1687687925.445016][18054:18056] CHIP:TOO: [3]: { - [1687687925.445036][18054:18056] CHIP:TOO: Label: Light - [1687687925.445056][18054:18056] CHIP:TOO: Mode: 2 - [1687687925.445106][18054:18056] CHIP:TOO: SemanticTags: 3 entries - [1687687925.445133][18054:18056] CHIP:TOO: [1]: { - [1687687925.445154][18054:18056] CHIP:TOO: MfgCode: 0 - [1687687925.445174][18054:18056] CHIP:TOO: Value: 16386 - [1687687925.445194][18054:18056] CHIP:TOO: } - [1687687925.445216][18054:18056] CHIP:TOO: [2]: { - [1687687925.445236][18054:18056] CHIP:TOO: MfgCode: 0 - [1687687925.445256][18054:18056] CHIP:TOO: Value: 8 - [1687687925.445275][18054:18056] CHIP:TOO: } - [1687687925.445297][18054:18056] CHIP:TOO: [3]: { - [1687687925.445342][18054:18056] CHIP:TOO: MfgCode: 0 - [1687687925.445365][18054:18056] CHIP:TOO: Value: 2 - [1687687925.445385][18054:18056] CHIP:TOO: } - [1687687925.445405][18054:18056] CHIP:TOO: } - disabled: true - - - label: - "Step 5: TH writes to the DUT the OnMode attribute with the - new_mode_th value" - PICS: DISHM.S.A0003 - verification: | - ./chip-tool dishwashermodeselect write on-mode 7 1 1 - - On TH(chip-tool) log, Verify DUT responds with a successful (value 0x00) status response and below is the sample log provided for the raspi platform: - - [1651099941884] [84269:7567211] CHIP: [DMG] WriteResponseMessage = - [1651099941884] [84269:7567211] CHIP: [DMG] { - [1651099941884] [84269:7567211] CHIP: [DMG] AttributeStatusIBs = - [1651099941884] [84269:7567211] CHIP: [DMG] [ - [1651099941884] [84269:7567211] CHIP: [DMG] AttributeStatusIB = - [1651099941884] [84269:7567211] CHIP: [DMG] { - [1651099941887] [84269:7567211] CHIP: [DMG] AttributePathIB = - [1651099941887] [84269:7567211] CHIP: [DMG] { - [1651099941887] [84269:7567211] CHIP: [DMG] Endpoint = 0x1, - [1651099941887] [84269:7567211] CHIP: [DMG] Cluster = 0x50, - [1651099941887] [84269:7567211] CHIP: [DMG] Attribute = 0x0000_0005, - [1651099941887] [84269:7567211] CHIP: [DMG] } - [1651099941887] [84269:7567211] CHIP: [DMG] - [1651099941887] [84269:7567211] CHIP: [DMG] StatusIB = - [1651099941887] [84269:7567211] CHIP: [DMG] { - [1651099941887] [84269:7567211] CHIP: [DMG] status = 0x00 (SUCCESS), - [1651099941887] [84269:7567211] CHIP: [DMG] }, - [1651099941887] [84269:7567211] CHIP: [DMG] - [1651099941887] [84269:7567211] CHIP: [DMG] }, - [1651099941887] [84269:7567211] CHIP: [DMG] - [1651099941887] [84269:7567211] CHIP: [DMG] ], - [1651099941887] [84269:7567211] CHIP: [DMG] - [1651099941887] [84269:7567211] CHIP: [DMG] InteractionModelRevision = 1 - [1651099941887] [84269:7567211] CHIP: [DMG] } - disabled: true - - - label: "Step 6: TH reads from the DUT the OnMode attribute." - PICS: DISHM.S.A0003 && DISHM.S.F00 - verification: | - ./chip-tool dishwashermodeselect read on-mode 1 1 - - On TH(chip-tool) log, Verify OnMode attribute value is an integer. save the value as new_on_mode_dut and below is the sample log provided for the raspi platform: - - [1669190858.739158][4187:4189] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0005 DataVersion: 4107771634 - [1669190858.739222][4187:4189] CHIP:TOO: OnMode: 7 - disabled: true - - - label: - "Step 7: TH writes to the DUT the StartUpOnOff attribute with the - value 1." - PICS: OO.S.A4003 - verification: | - ./chip-tool onoff write start-up-on-off 1 1 1 - - On TH(chip-tool) log, Verify DUT responds with a successful (value 0x00) status response and below is the sample log provided for the raspi platform: - - [1651101661959] [90832:7598169] CHIP: [DMG] WriteResponseMessage = - [1651101661959] [90832:7598169] CHIP: [DMG] { - [1651101661959] [90832:7598169] CHIP: [DMG] AttributeStatusIBs = - [1651101661959] [90832:7598169] CHIP: [DMG] [ - [1651101661959] [90832:7598169] CHIP: [DMG] AttributeStatusIB = - [1651101661959] [90832:7598169] CHIP: [DMG] { - [1651101661960] [90832:7598169] CHIP: [DMG] AttributePathIB = - [1651101661960] [90832:7598169] CHIP: [DMG] { - [1651101661960] [90832:7598169] CHIP: [DMG] Endpoint = 0x1, - [1651101661960] [90832:7598169] CHIP: [DMG] Cluster = 0x6, - [1651101661960] [90832:7598169] CHIP: [DMG] Attribute = 0x0000_4003, - [1651101661960] [90832:7598169] CHIP: [DMG] } - [1651101661960] [90832:7598169] CHIP: [DMG] - [1651101661960] [90832:7598169] CHIP: [DMG] StatusIB = - [1651101661960] [90832:7598169] CHIP: [DMG] { - [1651101661960] [90832:7598169] CHIP: [DMG] status = 0x00 (SUCCESS), - [1651101661960] [90832:7598169] CHIP: [DMG] }, - [1651101661960] [90832:7598169] CHIP: [DMG] - [1651101661960] [90832:7598169] CHIP: [DMG] }, - [1651101661960] [90832:7598169] CHIP: [DMG] - [1651101661960] [90832:7598169] CHIP: [DMG] ], - [1651101661960] [90832:7598169] CHIP: [DMG] - [1651101661960] [90832:7598169] CHIP: [DMG] InteractionModelRevision = 1 - [1651101661960] [90832:7598169] CHIP: [DMG] } - disabled: true - - - label: "Step 8: Physically power cycle the device" - verification: | - Physically power cycle the device. - disabled: true - - - label: "Step 9: TH reads from the DUT the CurrentMode attribute." - PICS: DISHM.S.A0001 - verification: | - ./chip-tool dishwashermodeselect read current-mode 1 1 - - On TH(chip-tool), Verify CurrentMode attribute value is same as the value recorded in step 3 and below is the sample log provided for the raspi platform: - - [1669190936.869804][4194:4196] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0003 DataVersion: 3908583538 - [1669190936.869875][4194:4196] CHIP:TOO: CurrentMode: 7 - disabled: true diff --git a/src/app/tests/suites/ciTests.json b/src/app/tests/suites/ciTests.json index 30f793e64c6f46..7de9e44bf12e9c 100644 --- a/src/app/tests/suites/ciTests.json +++ b/src/app/tests/suites/ciTests.json @@ -58,6 +58,7 @@ "Test_TC_DGETH_2_2" ], "DiagnosticsLogs": ["Test_TC_DLOG_1_1"], + "DishwasherMode": ["Test_TC_DISHM_1_1"], "FlowMeasurement": ["Test_TC_FLW_1_1", "Test_TC_FLW_2_1"], "FixedLabel": ["Test_TC_FLABEL_1_1", "Test_TC_FLABEL_2_1"], "FanControl": [ @@ -345,6 +346,7 @@ "DeviceManagement", "Descriptor", "DiagnosticsLogs", + "DishwasherMode", "EthernetNetworkDiagnostics", "FlowMeasurement", "FixedLabel", diff --git a/src/app/tests/suites/manualTests.json b/src/app/tests/suites/manualTests.json index cde28a356d9e97..92822cb7ba9429 100644 --- a/src/app/tests/suites/manualTests.json +++ b/src/app/tests/suites/manualTests.json @@ -72,14 +72,6 @@ "Test_TC_DISHALM_3_5", "Test_TC_DISHALM_3_6" ], - "DishwasherMode": [ - "Test_TC_DISHM_1_1", - "Test_TC_DISHM_1_2", - "Test_TC_DISHM_2_1", - "Test_TC_DISHM_3_1", - "Test_TC_DISHM_3_2", - "Test_TC_DISHM_3_3" - ], "DeviceManagement": [ "Test_TC_BINFO_3_1", "Test_TC_OPCREDS_3_1", @@ -373,7 +365,6 @@ "DeviceManagement", "DiagnosticsLogs", "DishwasherAlarm", - "DishwasherMode", "Descriptor", "FanControl", "EthernetNetworkDiagnostics", diff --git a/src/python_testing/TC_DISHM_1_2.py b/src/python_testing/TC_DISHM_1_2.py new file mode 100644 index 00000000000000..4fc497ccc37bbf --- /dev/null +++ b/src/python_testing/TC_DISHM_1_2.py @@ -0,0 +1,119 @@ +# +# Copyright (c) 2023 Project CHIP Authors +# All rights reserved. +# +# 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 +# +# 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 logging + +import chip.clusters as Clusters +from chip.clusters.Types import NullValue +from matter_testing_support import MatterBaseTest, async_test_body, default_matter_test_main +from mobly import asserts + +# This test requires several additional command line arguments +# run with +# --int-arg PIXIT_ENDPOINT: + + +class TC_DISHM_1_2(MatterBaseTest): + + async def read_mod_attribute_expect_success(self, endpoint, attribute): + cluster = Clusters.Objects.DishwasherMode + return await self.read_single_attribute_check_success(endpoint=endpoint, cluster=cluster, attribute=attribute) + + @async_test_body + async def test_TC_DISHM_1_2(self): + + asserts.assert_true('PIXIT_ENDPOINT' in self.matter_test_config.global_test_params, + "PIXIT_ENDPOINT must be included on the command line in " + "the --int-arg flag as PIXIT_ENDPOINT:") + + self.endpoint = self.matter_test_config.global_test_params['PIXIT_ENDPOINT'] + + attributes = Clusters.DishwasherMode.Attributes + + self.print_step(1, "Commissioning, already done") + + if self.check_pics("DISHM.S.A0000"): + self.print_step(2, "Read SupportedModes attribute") + supported_modes = await self.read_mod_attribute_expect_success(endpoint=self.endpoint, attribute=attributes.SupportedModes) + + logging.info("SupportedModes: %s" % (supported_modes)) + + asserts.assert_greater_equal(len(supported_modes), 1, "SupportedModes must have at least one entries!") + + supported_modes_dut = [] + for m in supported_modes: + if m.mode in supported_modes_dut: + asserts.fail("SupportedModes must have unique mode values!") + else: + supported_modes_dut.append(m.mode) + + labels = [] + for m in supported_modes: + if m.label in labels: + asserts.fail("SupportedModes must have unique mode label values!") + else: + labels.append(m.label) + + # common mode tags + commonTags = {0x0: 'Auto', + 0x1: 'Quick', + 0x2: 'Quiet', + 0x3: 'LowNoise', + 0x4: 'LowEnergy', + 0x5: 'Vacation', + 0x6: 'Min', + 0x7: 'Max', + 0x8: 'Night', + 0x9: 'Day'} + + runTags = [tag.value for tag in Clusters.DishwasherMode.Enums.ModeTag + if tag is not Clusters.DishwasherMode.Enums.ModeTag.kUnknownEnumValue] + + for m in supported_modes: + for t in m.modeTags: + is_mfg = (0x8000 <= t.value and t.value <= 0xBFFF) + asserts.assert_true(t.value in commonTags.keys() or t.value in runTags or is_mfg, + "Found a SupportedModes entry with invalid mode tag value!") + if t.value == Clusters.DishwasherMode.Enums.ModeTag.kNormal: + normal_present = True + asserts.assert_true(normal_present, "The Supported Modes does not have an entry of Normal(0x4000)") + + if self.check_pics("DISHM.S.A0001"): + self.print_step(3, "Read CurrentMode attribute") + current_mode = await self.read_mod_attribute_expect_success(endpoint=self.endpoint, attribute=attributes.CurrentMode) + + logging.info("CurrentMode: %s" % (current_mode)) + asserts.assert_true(current_mode in supported_modes_dut, "CurrentMode is not a supported mode!") + + if self.check_pics("DISHM.S.A0003"): + self.print_step(4, "Read OnMode attribute") + on_mode = await self.read_mod_attribute_expect_success(endpoint=self.endpoint, attribute=attributes.OnMode) + + logging.info("OnMode: %s" % (on_mode)) + asserts.assert_true(on_mode in supported_modes_dut or on_mode == NullValue, "OnMode is not a supported mode!") + + if self.check_pics("DISHM.S.A0002"): + self.print_step(5, "Read StartUpMode attribute") + startup_mode = await self.read_mod_attribute_expect_success(endpoint=self.endpoint, attribute=attributes.StartUpMode) + + logging.info("StartUpMode: %s" % (startup_mode)) + asserts.assert_true(startup_mode in supported_modes_dut or startup_mode == + NullValue, "StartUpMode is not a supported mode!") + + +if __name__ == "__main__": + default_matter_test_main() diff --git a/src/python_testing/TC_DISHM_2_1.py b/src/python_testing/TC_DISHM_2_1.py new file mode 100644 index 00000000000000..f1c88b71f7309c --- /dev/null +++ b/src/python_testing/TC_DISHM_2_1.py @@ -0,0 +1,168 @@ +# +# Copyright (c) 2023 Project CHIP Authors +# All rights reserved. +# +# 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 +# +# 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 logging + +import chip.clusters as Clusters +from matter_testing_support import MatterBaseTest, async_test_body, default_matter_test_main, type_matches +from mobly import asserts + +# This test requires several additional command line arguments +# run with +# --int-arg PIXIT_ENDPOINT: PIXIT_MODEOK: PIXIT_MODEFAIL: + + +class TC_DISHM_2_1(MatterBaseTest): + + async def read_mod_attribute_expect_success(self, endpoint, attribute): + cluster = Clusters.Objects.DishwasherMode + return await self.read_single_attribute_check_success(endpoint=endpoint, cluster=cluster, attribute=attribute) + + async def send_change_to_mode_cmd(self, newMode) -> Clusters.Objects.DishwasherMode.Commands.ChangeToModeResponse: + ret = await self.send_single_cmd(cmd=Clusters.Objects.DishwasherMode.Commands.ChangeToMode(newMode=newMode), endpoint=self.endpoint) + asserts.assert_true(type_matches(ret, Clusters.Objects.DishwasherMode.Commands.ChangeToModeResponse), + "Unexpected return type for ChangeToMode") + return ret + + @async_test_body + async def test_TC_DISHM_2_1(self): + + asserts.assert_true('PIXIT_ENDPOINT' in self.matter_test_config.global_test_params, + "PIXIT_ENDPOINT must be included on the command line in " + "the --int-arg flag as PIXIT_ENDPOINT:") + asserts.assert_true('PIXIT_MODEOK' in self.matter_test_config.global_test_params, + "PIXIT_MODEOK must be included on the command line in " + "the --int-arg flag as PIXIT_MODEOK:") + asserts.assert_true('PIXIT_MODEFAIL' in self.matter_test_config.global_test_params, + "PIXIT_MODEFAIL must be included on the command line in " + "the --int-arg flag as PIXIT_MODEFAIL:") + asserts.assert_true('pixit_can_test_mode_failure' in self.matter_test_config.global_test_params, + "PIXIT_CAN_TEST_MODE_FAILURE must be included on the command line in " + "the --bool-arg flag as PIXIT_CAN_TEST_MODE_FAILURE:") + + self.endpoint = self.matter_test_config.global_test_params['PIXIT_ENDPOINT'] + self.modeok = self.matter_test_config.global_test_params['PIXIT_MODEOK'] + self.modefail = self.matter_test_config.global_test_params['PIXIT_MODEFAIL'] + self.can_test_mode_failure = self.matter_test_config.global_test_params['pixit_can_test_mode_failure'] + + asserts.assert_true(self.check_pics("DISHM.S.A0000"), "DISHM.S.A0000 must be supported") + asserts.assert_true(self.check_pics("DISHM.S.A0001"), "DISHM.S.A0001 must be supported") + asserts.assert_true(self.check_pics("DISHM.S.C00.Rsp"), "DISHM.S.C00.Rsp must be supported") + asserts.assert_true(self.check_pics("DISHM.S.C01.Tx"), "DISHM.S.C01.Tx must be supported") + + attributes = Clusters.DishwasherMode.Attributes + + self.print_step(1, "Commissioning, already done") + + self.print_step(2, "Read SupportedModes attribute") + supported_modes = await self.read_mod_attribute_expect_success(endpoint=self.endpoint, attribute=attributes.SupportedModes) + + logging.info("SupportedModes: %s" % (supported_modes)) + + asserts.assert_greater_equal(len(supported_modes), 2, "SupportedModes must have at least two entries!") + + suppoted_modes_dut = [m.mode for m in supported_modes] + + self.print_step(3, "Read CurrentMode attribute") + + old_current_mode_dut = await self.read_mod_attribute_expect_success(endpoint=self.endpoint, attribute=attributes.CurrentMode) + + logging.info("CurrentMode: %s" % (old_current_mode_dut)) + + # pick a value that's not on the list of supported modes + invalid_mode_th = max(suppoted_modes_dut) + 1 + + from enum import Enum + + class CommonCodes(Enum): + SUCCESS = 0x00 + UNSUPPORTED_MODE = 0x01 + GENERIC_FAILURE = 0x02 + + DishwasherModeCodes = [code.value for code in Clusters.DishwasherMode.Enums.StatusCode + if code is not Clusters.DishwasherMode.Enums.StatusCode.kUnknownEnumValue] + + self.print_step(4, "Send ChangeToMode command with NewMode set to %d" % (old_current_mode_dut)) + + ret = await self.send_change_to_mode_cmd(newMode=old_current_mode_dut) + asserts.assert_true(ret.status == CommonCodes.SUCCESS.value, "Changing the mode to the current mode should be a no-op") + + if self.can_test_mode_failure is True: + self.print_step(5, "Manually put the device in a state from which it will FAIL to transition to mode %d" % (self.modefail)) + input("Press Enter when done.\n") + + self.print_step(6, "Read CurrentMode attribute") + old_current_mode_dut = await self.read_mod_attribute_expect_success(endpoint=self.endpoint, attribute=attributes.CurrentMode) + + logging.info("CurrentMode: %s" % (old_current_mode_dut)) + + self.print_step(7, "Send ChangeToMode command with NewMode set to %d" % (self.modefail)) + + ret = await self.send_change_to_mode_cmd(newMode=self.modefail) + st = ret.status + is_mfg_code = st in range(0x80, 0xC0) + is_err_code = (st == CommonCodes.GENERIC_FAILURE.value) or (st in DishwasherModeCodes) or is_mfg_code + asserts.assert_true( + is_err_code, "Changing to mode %d must fail due to the current state of the device" % (self.modefail)) + st_text_len = len(ret.statusText) + asserts.assert_true(st_text_len in range(1, 65), "StatusText length (%d) must be between 1 and 64" % (st_text_len)) + + self.print_step(8, "Read CurrentMode attribute") + current_mode = await self.read_mod_attribute_expect_success(endpoint=self.endpoint, attribute=attributes.CurrentMode) + + logging.info("CurrentMode: %s" % (current_mode)) + + asserts.assert_true(current_mode == old_current_mode_dut, "CurrentMode changed after failed ChangeToMode command!") + + self.print_step(9, "Manually put the device in a state from which it will SUCCESSFULLY transition to mode %d" % (self.modeok)) + input("Press Enter when done.\n") + + self.print_step(10, "Read CurrentMode attribute") + old_current_mode_dut = await self.read_mod_attribute_expect_success(endpoint=self.endpoint, attribute=attributes.CurrentMode) + + logging.info("CurrentMode: %s" % (old_current_mode_dut)) + + self.print_step(11, "Send ChangeToMode command with NewMode set to %d" % (self.modeok)) + + ret = await self.send_change_to_mode_cmd(newMode=self.modeok) + asserts.assert_true(ret.status == CommonCodes.SUCCESS.value, + "Changing to mode %d must succeed due to the current state of the device" % (self.modeok)) + + self.print_step(12, "Read CurrentMode attribute") + current_mode = await self.read_mod_attribute_expect_success(endpoint=self.endpoint, attribute=attributes.CurrentMode) + + logging.info("CurrentMode: %s" % (current_mode)) + + asserts.assert_true(current_mode == self.modeok, + "CurrentMode doesn't match the argument of the successful ChangeToMode command!") + + self.print_step(13, "Send ChangeToMode command with NewMode set to %d" % (invalid_mode_th)) + + ret = await self.send_change_to_mode_cmd(newMode=invalid_mode_th) + asserts.assert_true(ret.status == CommonCodes.UNSUPPORTED_MODE.value, + "Attempt to change to invalid mode %d didn't fail as expected" % (invalid_mode_th)) + + self.print_step(14, "Read CurrentMode attribute") + current_mode = await self.read_mod_attribute_expect_success(endpoint=self.endpoint, attribute=attributes.CurrentMode) + + logging.info("CurrentMode: %s" % (current_mode)) + + asserts.assert_true(current_mode == self.modeok, "CurrentMode changed after failed ChangeToMode command!") + + +if __name__ == "__main__": + default_matter_test_main() diff --git a/src/python_testing/TC_DISHM_3_1.py b/src/python_testing/TC_DISHM_3_1.py new file mode 100644 index 00000000000000..f6737ff1300969 --- /dev/null +++ b/src/python_testing/TC_DISHM_3_1.py @@ -0,0 +1,152 @@ +# +# Copyright (c) 2023 Project CHIP Authors +# All rights reserved. +# +# 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 +# +# 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 logging +import random + +import chip.clusters as Clusters +from chip.clusters.Types import NullValue +from chip.interaction_model import Status +from matter_testing_support import MatterBaseTest, async_test_body, default_matter_test_main, type_matches +from mobly import asserts + +# This test requires several additional command line arguments +# run with +# --int-arg PIXIT_ENDPOINT: + + +class TC_DISHM_3_1(MatterBaseTest): + + async def read_mod_attribute_expect_success(self, endpoint, attribute): + cluster = Clusters.Objects.DishwasherMode + return await self.read_single_attribute_check_success(endpoint=endpoint, cluster=cluster, attribute=attribute) + + async def send_change_to_mode_cmd(self, newMode) -> Clusters.Objects.DishwasherMode.Commands.ChangeToModeResponse: + ret = await self.send_single_cmd(cmd=Clusters.Objects.DishwasherMode.Commands.ChangeToMode(newMode=newMode), endpoint=self.endpoint) + asserts.assert_true(type_matches(ret, Clusters.Objects.DishwasherMode.Commands.ChangeToModeResponse), + "Unexpected return type for ChangeToMode") + return ret + + async def write_on_mode(self, newMode): + ret = await self.default_controller.WriteAttribute(self.dut_node_id, [(self.endpoint, Clusters.DishwasherMode.Attributes.OnMode(newMode))]) + asserts.assert_equal(ret[0].Status, Status.Success, "Writing to OnMode failed") + + async def write_onoff_on_mode(self) -> Clusters.Objects.OnOff.Commands.On: + ret = await self.send_single_cmd(cmd=Clusters.Objects.OnOff.Commands.On, endpoint=self.endpoint) + asserts.assert_true(type_matches(ret, Clusters.Objects.OnOff.Commands.On), + "Unexpected return type for OnOff") + + async def write_onoff_off_mode(self) -> Clusters.Objects.OnOff.Commands.Off: + ret = await self.send_single_cmd(cmd=Clusters.Objects.OnOff.Commands.Off, endpoint=self.endpoint) + asserts.assert_true(type_matches(ret, Clusters.Objects.OnOff.Commands.Off), + "Unexpected return type for OnOff") + + @async_test_body + async def test_TC_DISHM_3_2(self): + + asserts.assert_true('PIXIT_ENDPOINT' in self.matter_test_config.global_test_params, + "PIXIT_ENDPOINT must be included on the command line in " + "the --int-arg flag as PIXIT_ENDPOINT:") + + self.endpoint = self.matter_test_config.global_test_params['PIXIT_ENDPOINT'] + + asserts.assert_true(self.check_pics("DISHM.S.A0000"), "DISHM.S.A0000 must be supported") + asserts.assert_true(self.check_pics("DISHM.S.A0001"), "DISHM.S.A0001 must be supported") + asserts.assert_true(self.check_pics("DISHM.S.A0002"), "DISHM.S.A0002 must be supported") + asserts.assert_true(self.check_pics("DISHM.S.C00.Rsp"), "DISHM.S.C00.Rsp must be supported") + asserts.assert_true(self.check_pics("DISHM.S.C01.Tx"), "DISHM.S.C01.Tx must be supported") + + attributes = Clusters.DishwasherMode.Attributes + + from enum import Enum + + class CommonCodes(Enum): + SUCCESS = 0x00 + UNSUPPORTED_MODE = 0x01 + GENERIC_FAILURE = 0x02 + + self.print_step(1, "Commissioning, already done") + + self.print_step(2, "Read OnMode attribute") + + on_mode_dut = await self.read_mod_attribute_expect_success(endpoint=self.endpoint, attribute=attributes.OnMode) + + logging.info("OnMode: %s" % (on_mode_dut)) + + if on_mode_dut == NullValue: + self.print_step(2, "Read SupportedModes attribute") + supported_modes = await self.read_mod_attribute_expect_success(endpoint=self.endpoint, attribute=attributes.SupportedModes) + + logging.info("SupportedModes: %s" % (supported_modes)) + + asserts.assert_greater_equal(len(supported_modes), 2, "SupportedModes must have at least two entries!") + + supported_modes_dut = [m.mode for m in supported_modes] + on_mode_th = random.choice(supported_modes_dut) + + self.print_step(2, "Write the value %s to OnMode" % (on_mode_th)) + + await self.write_on_mode(newMode=on_mode_th) + + self.print_step(3, "Read CurrentMode attribute") + + old_current_mode_dut = await self.read_mod_attribute_expect_success(endpoint=self.endpoint, attribute=attributes.CurrentMode) + + logging.info("CurrentMode: %s" % (old_current_mode_dut)) + + if old_current_mode_dut == on_mode_th: + + self.print_step(4, "Read SupportedModes attribute") + supported_modes = await self.read_mod_attribute_expect_success(endpoint=self.endpoint, attribute=attributes.SupportedModes) + + logging.info("SupportedModes: %s" % (supported_modes)) + + asserts.assert_greater_equal(len(supported_modes), 2, "SupportedModes must have at least two entries!") + + new_mode_th = None + + for m in supported_modes: + if m.mode != on_mode_th: + new_mode_th = m.mode + break + + self.print_step(5, "Send ChangeToMode command with NewMode set to %d" % (new_mode_th)) + + ret = await self.send_change_to_mode_cmd(newMode=new_mode_th) + asserts.assert_true(ret.status == CommonCodes.SUCCESS.value, "Changing the mode should succeed") + + self.print_step(6, "Send Off command") + + ret = await self.write_onoff_off_mode() + asserts.assert_true(ret.status == CommonCodes.SUCCESS.value, "Changing the mode to off should succeed") + + self.print_step(7, "Send On command") + + ret = await self.write_onoff_on_mode() + asserts.assert_true(ret.status == CommonCodes.SUCCESS.value, "Changing the mode to on should succeed") + + self.print_step(8, "Read CurrentMode attribute") + + current_mode = await self.read_mod_attribute_expect_success(endpoint=self.endpoint, attribute=attributes.CurrentMode) + + logging.info("CurrentMode: %s" % (current_mode)) + + asserts.assert_true(on_mode_dut == current_mode, "CurrentMode must match OnMode after a power cycle") + + +if __name__ == "__main__": + default_matter_test_main() diff --git a/src/python_testing/TC_DISHM_3_2.py b/src/python_testing/TC_DISHM_3_2.py new file mode 100644 index 00000000000000..78f5f496556fe9 --- /dev/null +++ b/src/python_testing/TC_DISHM_3_2.py @@ -0,0 +1,136 @@ +# +# Copyright (c) 2023 Project CHIP Authors +# All rights reserved. +# +# 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 +# +# 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 logging +import random + +import chip.clusters as Clusters +from chip.clusters.Types import NullValue +from chip.interaction_model import Status +from matter_testing_support import MatterBaseTest, async_test_body, default_matter_test_main, type_matches +from mobly import asserts + +# This test requires several additional command line arguments +# run with +# --int-arg PIXIT_ENDPOINT: + + +class TC_DISHM_3_2(MatterBaseTest): + + async def read_mod_attribute_expect_success(self, endpoint, attribute): + cluster = Clusters.Objects.DishwasherMode + return await self.read_single_attribute_check_success(endpoint=endpoint, cluster=cluster, attribute=attribute) + + async def send_change_to_mode_cmd(self, newMode) -> Clusters.Objects.DishwasherMode.Commands.ChangeToModeResponse: + ret = await self.send_single_cmd(cmd=Clusters.Objects.DishwasherMode.Commands.ChangeToMode(newMode=newMode), endpoint=self.endpoint) + asserts.assert_true(type_matches(ret, Clusters.Objects.DishwasherMode.Commands.ChangeToModeResponse), + "Unexpected return type for ChangeToMode") + return ret + + async def write_start_up_mode(self, newMode): + ret = await self.default_controller.WriteAttribute(self.dut_node_id, [(self.endpoint, Clusters.DishwasherMode.Attributes.StartUpMode(newMode))]) + asserts.assert_equal(ret[0].Status, Status.Success, "Writing to StartUpMode failed") + + @async_test_body + async def test_TC_DISHM_3_2(self): + + asserts.assert_true('PIXIT_ENDPOINT' in self.matter_test_config.global_test_params, + "PIXIT_ENDPOINT must be included on the command line in " + "the --int-arg flag as PIXIT_ENDPOINT:") + + self.endpoint = self.matter_test_config.global_test_params['PIXIT_ENDPOINT'] + + asserts.assert_true(self.check_pics("DISHM.S.A0000"), "DISHM.S.A0000 must be supported") + asserts.assert_true(self.check_pics("DISHM.S.A0001"), "DISHM.S.A0001 must be supported") + asserts.assert_true(self.check_pics("DISHM.S.A0002"), "DISHM.S.A0002 must be supported") + asserts.assert_true(self.check_pics("DISHM.S.C00.Rsp"), "DISHM.S.C00.Rsp must be supported") + asserts.assert_true(self.check_pics("DISHM.S.C01.Tx"), "DISHM.S.C01.Tx must be supported") + + attributes = Clusters.DishwasherMode.Attributes + + from enum import Enum + + class CommonCodes(Enum): + SUCCESS = 0x00 + UNSUPPORTED_MODE = 0x01 + GENERIC_FAILURE = 0x02 + + self.print_step(1, "Commissioning, already done") + + self.print_step(2, "Read StartUpMode attribute") + + startup_mode_dut = await self.read_mod_attribute_expect_success(endpoint=self.endpoint, attribute=attributes.StartUpMode) + + logging.info("StartUpMode: %s" % (startup_mode_dut)) + if startup_mode_dut == NullValue: + self.print_step(2, "Read SupportedModes attribute") + supported_modes = await self.read_mod_attribute_expect_success(endpoint=self.endpoint, attribute=attributes.SupportedModes) + + logging.info("SupportedModes: %s" % (supported_modes)) + + asserts.assert_greater_equal(len(supported_modes), 2, "SupportedModes must have at least two entries!") + + modes = [m.mode for m in supported_modes] + startup_mode_dut = random.choice(modes) + + self.print_step(2, "Write the value %s to StartUpMode" % (startup_mode_dut)) + + await self.write_start_up_mode(newMode=startup_mode_dut) + + self.print_step(3, "Read CurrentMode attribute") + + old_current_mode_dut = await self.read_mod_attribute_expect_success(endpoint=self.endpoint, attribute=attributes.CurrentMode) + + logging.info("CurrentMode: %s" % (old_current_mode_dut)) + + if old_current_mode_dut == startup_mode_dut: + + self.print_step(4, "Read SupportedModes attribute") + supported_modes_dut = await self.read_mod_attribute_expect_success(endpoint=self.endpoint, attribute=attributes.SupportedModes) + + logging.info("SupportedModes: %s" % (supported_modes_dut)) + + asserts.assert_greater_equal(len(supported_modes_dut), 2, "SupportedModes must have at least two entries!") + + new_mode_th = None + + for m in supported_modes_dut: + if m.mode != startup_mode_dut: + new_mode_th = m.mode + break + + self.print_step(5, "Send ChangeToMode command with NewMode set to %d" % (new_mode_th)) + + ret = await self.send_change_to_mode_cmd(newMode=new_mode_th) + asserts.assert_true(ret.status == CommonCodes.SUCCESS.value, "Changing the mode should succeed") + + self.default_controller.ExpireSessions(self.dut_node_id) + + self.print_step(6, "Physically power cycle the device") + input("Press Enter when done.\n") + + self.print_step(7, "Read CurrentMode attribute") + + current_mode = await self.read_mod_attribute_expect_success(endpoint=self.endpoint, attribute=attributes.CurrentMode) + + logging.info("CurrentMode: %s" % (current_mode)) + + asserts.assert_true(startup_mode_dut == current_mode, "CurrentMode must match StartUpMode after a power cycle") + + +if __name__ == "__main__": + default_matter_test_main() diff --git a/src/python_testing/TC_DISHM_3_3.py b/src/python_testing/TC_DISHM_3_3.py new file mode 100644 index 00000000000000..abfb45b3bff003 --- /dev/null +++ b/src/python_testing/TC_DISHM_3_3.py @@ -0,0 +1,171 @@ +# +# Copyright (c) 2023 Project CHIP Authors +# All rights reserved. +# +# 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 +# +# 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 logging +import random + +import chip.clusters as Clusters +from chip.clusters.Types import NullValue +from chip.interaction_model import Status +from matter_testing_support import MatterBaseTest, async_test_body, default_matter_test_main, type_matches +from mobly import asserts + +# This test requires several additional command line arguments +# run with +# --int-arg PIXIT_ENDPOINT: + + +class TC_DISHM_3_2(MatterBaseTest): + + async def read_mod_attribute_expect_success(self, endpoint, attribute): + cluster = Clusters.Objects.DishwasherMode + return await self.read_single_attribute_check_success(endpoint=endpoint, cluster=cluster, attribute=attribute) + + async def send_change_to_mode_cmd(self, newMode) -> Clusters.Objects.DishwasherMode.Commands.ChangeToModeResponse: + ret = await self.send_single_cmd(cmd=Clusters.Objects.DishwasherMode.Commands.ChangeToMode(newMode=newMode), endpoint=self.endpoint) + asserts.assert_true(type_matches(ret, Clusters.Objects.DishwasherMode.Commands.ChangeToModeResponse), + "Unexpected return type for ChangeToMode") + return ret + + async def write_on_mode(self, newMode): + ret = await self.default_controller.WriteAttribute(self.dut_node_id, [(self.endpoint, Clusters.DishwasherMode.Attributes.OnMode(newMode))]) + asserts.assert_equal(ret[0].Status, Status.Success, "Writing to OnMode failed") + + async def write_startup_onoff(self) -> Clusters.Objects.OnOff.Commands.Off: + ret = await self.default_controller.WriteAttribute(self.dut_node_id, [(self.endpoint, Clusters.OnOff.Attributes.StartUpOnOff(1))]) + asserts.assert_equal(ret[0].Status, Status.Success, "Writing to OnOff failed") + + @async_test_body + async def test_TC_DISHM_3_2(self): + + asserts.assert_true('PIXIT_ENDPOINT' in self.matter_test_config.global_test_params, + "PIXIT_ENDPOINT must be included on the command line in " + "the --int-arg flag as PIXIT_ENDPOINT:") + + self.endpoint = self.matter_test_config.global_test_params['PIXIT_ENDPOINT'] + + asserts.assert_true(self.check_pics("DISHM.S.A0000"), "DISHM.S.A0000 must be supported") + asserts.assert_true(self.check_pics("DISHM.S.A0001"), "DISHM.S.A0001 must be supported") + asserts.assert_true(self.check_pics("DISHM.S.A0002"), "DISHM.S.A0002 must be supported") + asserts.assert_true(self.check_pics("DISHM.S.C00.Rsp"), "DISHM.S.C00.Rsp must be supported") + asserts.assert_true(self.check_pics("DISHM.S.C01.Tx"), "DISHM.S.C01.Tx must be supported") + + attributes = Clusters.DishwasherMode.Attributes + + from enum import Enum + + class CommonCodes(Enum): + SUCCESS = 0x00 + UNSUPPORTED_MODE = 0x01 + GENERIC_FAILURE = 0x02 + + self.print_step(1, "Commissioning, already done") + + self.print_step(2, "Read StartUpMode attribute") + + startup_mode_dut = await self.read_mod_attribute_expect_success(endpoint=self.endpoint, attribute=attributes.StartUpMode) + + logging.info("StartUpMode: %s" % (startup_mode_dut)) + if startup_mode_dut == NullValue: + self.print_step(3, "Read SupportedModes attribute") + supported_modes = await self.read_mod_attribute_expect_success(endpoint=self.endpoint, attribute=attributes.SupportedModes) + + logging.info("SupportedModes: %s" % (supported_modes)) + + asserts.assert_greater_equal(len(supported_modes), 2, "SupportedModes must have at least two entries!") + + modes = [m.mode for m in supported_modes] + startup_mode_dut = random.choice(modes) + + self.print_step(4, "Write the value %s to StartUpMode" % (startup_mode_dut)) + + await self.write_start_up_mode(newMode=startup_mode_dut) + + self.print_step(3, "Read OnMode attribute") + + old_on_mode_dut = await self.read_mod_attribute_expect_success(endpoint=self.endpoint, attribute=attributes.OnMode) + + logging.info("OnMode: %s" % (old_on_mode_dut)) + + if old_on_mode_dut == NullValue: + self.print_step(4, "Read SupportedModes attribute") + supported_modes = await self.read_mod_attribute_expect_success(endpoint=self.endpoint, attribute=attributes.SupportedModes) + + logging.info("SupportedModes: %s" % (supported_modes)) + + asserts.assert_greater_equal(len(supported_modes), 2, "SupportedModes must have at least two entries!") + + supported_modes_dut = [m.mode for m in supported_modes] + new_old_on_mode_dut = random.choice(supported_modes_dut) + + self.print_step(5, "Write the value %s to OnMode" % (new_old_on_mode_dut)) + + await self.write_on_mode(newMode=new_old_on_mode_dut) + else: + new_old_on_mode_dut = old_on_mode_dut + + if new_old_on_mode_dut == startup_mode_dut: + + self.print_step(4, "Read SupportedModes attribute") + supported_modes_dut = await self.read_mod_attribute_expect_success(endpoint=self.endpoint, attribute=attributes.SupportedModes) + + logging.info("SupportedModes: %s" % (supported_modes_dut)) + + asserts.assert_greater_equal(len(supported_modes_dut), 2, "SupportedModes must have at least two entries!") + + new_mode_th = None + + for m in supported_modes_dut: + if m.mode != startup_mode_dut: + new_mode_th = m.mode + break + + self.print_step(5, "Write to OnMode attribute with NewMode set to %d" % (new_mode_th)) + + ret = await self.write_on_mode(newMode=new_mode_th) + asserts.assert_true(ret.status == CommonCodes.SUCCESS.value, "Changing the Onmode should succeed") + + self.print_step(6, "Read OnMode attribute") + + new_on_mode_dut = await self.read_mod_attribute_expect_success(endpoint=self.endpoint, attribute=attributes.OnMode) + + logging.info("OnMode: %s" % (new_on_mode_dut)) + + asserts.assert_true(new_mode_th == new_on_mode_dut, "OnMode must match the mode written in previous step") + + self.print_step(7, "Write to the StartUpOnOff attribute of OnOff cluster with a value of 1") + + ret = await self.write_startup_onoff() + asserts.assert_true(ret.status == CommonCodes.SUCCESS.value, + "Writing to the StartUpOnOff attribute of OnOff should succeed") + + self.default_controller.ExpireSessions(self.dut_node_id) + + self.print_step(8, "Physically power cycle the device") + input("Press Enter when done.\n") + + self.print_step(9, "Read CurrentMode attribute") + + current_mode = await self.read_mod_attribute_expect_success(endpoint=self.endpoint, attribute=attributes.CurrentMode) + + logging.info("CurrentMode: %s" % (current_mode)) + + asserts.assert_true(new_on_mode_dut == current_mode, "CurrentMode must match OnMode after a power cycle") + + +if __name__ == "__main__": + default_matter_test_main() diff --git a/third_party/pigweed/repo b/third_party/pigweed/repo index cf4291da443f5b..f4d0b3563c09d9 160000 --- a/third_party/pigweed/repo +++ b/third_party/pigweed/repo @@ -1 +1 @@ -Subproject commit cf4291da443f5b2db18827747bb66499459de5bd +Subproject commit f4d0b3563c09d945478267fcff619a959cd3e9f6 diff --git a/zzz_generated/chip-tool/zap-generated/test/Commands.h b/zzz_generated/chip-tool/zap-generated/test/Commands.h index cdb7b4274c4968..de028638dea40d 100644 --- a/zzz_generated/chip-tool/zap-generated/test/Commands.h +++ b/zzz_generated/chip-tool/zap-generated/test/Commands.h @@ -105,6 +105,7 @@ class TestList : public Command printf("Test_TC_CNET_1_3\n"); printf("Test_TC_DESC_1_1\n"); printf("Test_TC_DLOG_1_1\n"); + printf("Test_TC_DISHM_1_1\n"); printf("Test_TC_DGETH_1_1\n"); printf("Test_TC_DGETH_2_1\n"); printf("Test_TC_DGETH_2_2\n"); @@ -434,12 +435,6 @@ class ManualTestList : public Command printf("Test_TC_DISHALM_3_4\n"); printf("Test_TC_DISHALM_3_5\n"); printf("Test_TC_DISHALM_3_6\n"); - printf("Test_TC_DISHM_1_1\n"); - printf("Test_TC_DISHM_1_2\n"); - printf("Test_TC_DISHM_2_1\n"); - printf("Test_TC_DISHM_3_1\n"); - printf("Test_TC_DISHM_3_2\n"); - printf("Test_TC_DISHM_3_3\n"); printf("Test_TC_DESC_2_1\n"); printf("Test_TC_FAN_3_3\n"); printf("Test_TC_FAN_3_5\n"); @@ -35656,6 +35651,266 @@ class Test_TC_DLOG_1_1Suite : public TestCommand } }; +class Test_TC_DISHM_1_1Suite : public TestCommand +{ +public: + Test_TC_DISHM_1_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_DISHM_1_1", 13, credsIssuerConfig) + { + AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); + AddArgument("cluster", &mCluster); + AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); + AddArgument("timeout", 0, UINT16_MAX, &mTimeout); + } + + ~Test_TC_DISHM_1_1Suite() {} + + chip::System::Clock::Timeout GetWaitDuration() const override + { + return chip::System::Clock::Seconds16(mTimeout.ValueOr(kTimeoutInSeconds)); + } + +private: + chip::Optional mNodeId; + chip::Optional mCluster; + chip::Optional mEndpoint; + chip::Optional mTimeout; + + chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } + + // + // Tests methods + // + + void OnResponse(const chip::app::StatusIB & status, chip::TLV::TLVReader * data) override + { + bool shouldContinue = false; + + switch (mTestIndex - 1) + { + case 0: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 1: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("clusterRevision", value, 1U)); + VerifyOrReturn(CheckConstraintType("value", "int16u", "int16u")); + } + break; + case 2: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint32_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("featureMap", value, 0UL)); + VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); + } + break; + case 3: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint32_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("featureMap", value, 1UL)); + VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); + } + break; + case 4: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::DataModel::DecodableList value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "list", "list")); + VerifyOrReturn(CheckConstraintContains("value", value, 0UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 1UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65528UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65529UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65530UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65531UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65532UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65533UL)); + } + break; + case 5: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::DataModel::DecodableList value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "list", "list")); + VerifyOrReturn(CheckConstraintContains("value", value, 0UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 1UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65528UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65529UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65531UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65532UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65533UL)); + } + break; + case 6: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::DataModel::DecodableList value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "list", "list")); + VerifyOrReturn(CheckConstraintContains("value", value, 2UL)); + } + break; + case 7: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::DataModel::DecodableList value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "list", "list")); + VerifyOrReturn(CheckConstraintExcludes("value", value, 2UL)); + } + break; + case 8: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::DataModel::DecodableList value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "list", "list")); + VerifyOrReturn(CheckConstraintContains("value", value, 3UL)); + } + break; + case 9: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::DataModel::DecodableList value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "list", "list")); + VerifyOrReturn(CheckConstraintExcludes("value", value, 3UL)); + } + break; + case 10: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::DataModel::DecodableList value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + { + auto iter_0 = value.begin(); + VerifyOrReturn(CheckNoMoreListItems("eventList", iter_0, 0)); + } + VerifyOrReturn(CheckConstraintType("value", "list", "list")); + } + break; + case 11: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::DataModel::DecodableList value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "list", "list")); + VerifyOrReturn(CheckConstraintContains("value", value, 0UL)); + } + break; + case 12: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::DataModel::DecodableList value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "list", "list")); + VerifyOrReturn(CheckConstraintContains("value", value, 1UL)); + } + break; + default: + LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); + } + + if (shouldContinue) + { + ContinueOnChipMainThread(CHIP_NO_ERROR); + } + } + + CHIP_ERROR DoTestStep(uint16_t testIndex) override + { + using namespace chip::app::Clusters; + switch (testIndex) + { + case 0: { + LogStep(0, "Wait for the commissioned device to be retrieved"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; + value.nodeId = mNodeId.HasValue() ? mNodeId.Value() : 305414945ULL; + return WaitForCommissionee(kIdentityAlpha, value); + } + case 1: { + LogStep(1, "TH reads the ClusterRevision from DUT"); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), DishwasherMode::Id, + DishwasherMode::Attributes::ClusterRevision::Id, true, chip::NullOptional); + } + case 2: { + LogStep(2, "TH reads the FeatureMap from DUT"); + VerifyOrDo(!ShouldSkip(" !DISHM.S.F00 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), DishwasherMode::Id, DishwasherMode::Attributes::FeatureMap::Id, + true, chip::NullOptional); + } + case 3: { + LogStep(3, "Given DISHM.S.F00(DEPONOFF) ensure featuremap has the correct bit set"); + VerifyOrDo(!ShouldSkip("DISHM.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), DishwasherMode::Id, DishwasherMode::Attributes::FeatureMap::Id, + true, chip::NullOptional); + } + case 4: { + LogStep(4, "4. TH reads AttributeList from DUT"); + VerifyOrDo(!ShouldSkip("PICS_EVENT_LIST_ENABLED"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), DishwasherMode::Id, DishwasherMode::Attributes::AttributeList::Id, + true, chip::NullOptional); + } + case 5: { + LogStep(5, "4. TH reads AttributeList from DUT"); + VerifyOrDo(!ShouldSkip("!PICS_EVENT_LIST_ENABLED"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), DishwasherMode::Id, DishwasherMode::Attributes::AttributeList::Id, + true, chip::NullOptional); + } + case 6: { + LogStep(6, "4. TH reads optional attribute (DISHM.S.A0002(StartUpMode)) in AttributeList"); + VerifyOrDo(!ShouldSkip("DISHM.S.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), DishwasherMode::Id, DishwasherMode::Attributes::AttributeList::Id, + true, chip::NullOptional); + } + case 7: { + LogStep(7, "4. TH reads optional attribute (DISHM.S.A0002(StartUpMode)) in AttributeList"); + VerifyOrDo(!ShouldSkip(" !DISHM.S.A0002 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), DishwasherMode::Id, DishwasherMode::Attributes::AttributeList::Id, + true, chip::NullOptional); + } + case 8: { + LogStep(8, "4. TH reads optional attribute (DISHM.S.F00(DEPONOFF)) in AttributeList"); + VerifyOrDo(!ShouldSkip("DISHM.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), DishwasherMode::Id, DishwasherMode::Attributes::AttributeList::Id, + true, chip::NullOptional); + } + case 9: { + LogStep(9, "4. TH reads optional attribute (DISHM.S.F00(DEPONOFF)) in AttributeList"); + VerifyOrDo(!ShouldSkip(" !DISHM.S.F00 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), DishwasherMode::Id, DishwasherMode::Attributes::AttributeList::Id, + true, chip::NullOptional); + } + case 10: { + LogStep(10, "5. TH reads from the DUT the EventList attribute"); + VerifyOrDo(!ShouldSkip("PICS_EVENT_LIST_ENABLED"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), DishwasherMode::Id, DishwasherMode::Attributes::EventList::Id, + true, chip::NullOptional); + } + case 11: { + LogStep(11, "6. TH reads AcceptedCommandList from DUT"); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), DishwasherMode::Id, + DishwasherMode::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); + } + case 12: { + LogStep(12, "7. TH reads from the DUT the GeneratedCommandList attribute"); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), DishwasherMode::Id, + DishwasherMode::Attributes::GeneratedCommandList::Id, true, chip::NullOptional); + } + } + return CHIP_NO_ERROR; + } +}; + class Test_TC_DGETH_1_1Suite : public TestCommand { public: @@ -118239,343 +118494,10 @@ class Test_TC_DA_1_1Suite : public TestCommand } }; -class Test_TC_DA_1_3Suite : public TestCommand -{ -public: - Test_TC_DA_1_3Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_DA_1_3", 0, credsIssuerConfig) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_DA_1_3Suite() {} - - chip::System::Clock::Timeout GetWaitDuration() const override - { - return chip::System::Clock::Seconds16(mTimeout.ValueOr(kTimeoutInSeconds)); - } - -private: - chip::Optional mNodeId; - chip::Optional mCluster; - chip::Optional mEndpoint; - chip::Optional mTimeout; - - chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } - - // - // Tests methods - // - - void OnResponse(const chip::app::StatusIB & status, chip::TLV::TLVReader * data) override - { - bool shouldContinue = false; - - switch (mTestIndex - 1) - { - default: - LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); - } - - if (shouldContinue) - { - ContinueOnChipMainThread(CHIP_NO_ERROR); - } - } - - CHIP_ERROR DoTestStep(uint16_t testIndex) override - { - using namespace chip::app::Clusters; - switch (testIndex) - {} - return CHIP_NO_ERROR; - } -}; - -class Test_TC_DA_1_4Suite : public TestCommand -{ -public: - Test_TC_DA_1_4Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_DA_1_4", 0, credsIssuerConfig) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_DA_1_4Suite() {} - - chip::System::Clock::Timeout GetWaitDuration() const override - { - return chip::System::Clock::Seconds16(mTimeout.ValueOr(kTimeoutInSeconds)); - } - -private: - chip::Optional mNodeId; - chip::Optional mCluster; - chip::Optional mEndpoint; - chip::Optional mTimeout; - - chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } - - // - // Tests methods - // - - void OnResponse(const chip::app::StatusIB & status, chip::TLV::TLVReader * data) override - { - bool shouldContinue = false; - - switch (mTestIndex - 1) - { - default: - LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); - } - - if (shouldContinue) - { - ContinueOnChipMainThread(CHIP_NO_ERROR); - } - } - - CHIP_ERROR DoTestStep(uint16_t testIndex) override - { - using namespace chip::app::Clusters; - switch (testIndex) - {} - return CHIP_NO_ERROR; - } -}; - -class Test_TC_DA_1_6Suite : public TestCommand -{ -public: - Test_TC_DA_1_6Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_DA_1_6", 0, credsIssuerConfig) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_DA_1_6Suite() {} - - chip::System::Clock::Timeout GetWaitDuration() const override - { - return chip::System::Clock::Seconds16(mTimeout.ValueOr(kTimeoutInSeconds)); - } - -private: - chip::Optional mNodeId; - chip::Optional mCluster; - chip::Optional mEndpoint; - chip::Optional mTimeout; - - chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } - - // - // Tests methods - // - - void OnResponse(const chip::app::StatusIB & status, chip::TLV::TLVReader * data) override - { - bool shouldContinue = false; - - switch (mTestIndex - 1) - { - default: - LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); - } - - if (shouldContinue) - { - ContinueOnChipMainThread(CHIP_NO_ERROR); - } - } - - CHIP_ERROR DoTestStep(uint16_t testIndex) override - { - using namespace chip::app::Clusters; - switch (testIndex) - {} - return CHIP_NO_ERROR; - } -}; - -class Test_TC_BINFO_3_1Suite : public TestCommand -{ -public: - Test_TC_BINFO_3_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_BINFO_3_1", 0, credsIssuerConfig) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_BINFO_3_1Suite() {} - - chip::System::Clock::Timeout GetWaitDuration() const override - { - return chip::System::Clock::Seconds16(mTimeout.ValueOr(kTimeoutInSeconds)); - } - -private: - chip::Optional mNodeId; - chip::Optional mCluster; - chip::Optional mEndpoint; - chip::Optional mTimeout; - - chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } - - // - // Tests methods - // - - void OnResponse(const chip::app::StatusIB & status, chip::TLV::TLVReader * data) override - { - bool shouldContinue = false; - - switch (mTestIndex - 1) - { - default: - LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); - } - - if (shouldContinue) - { - ContinueOnChipMainThread(CHIP_NO_ERROR); - } - } - - CHIP_ERROR DoTestStep(uint16_t testIndex) override - { - using namespace chip::app::Clusters; - switch (testIndex) - {} - return CHIP_NO_ERROR; - } -}; - -class Test_TC_OPCREDS_3_1Suite : public TestCommand -{ -public: - Test_TC_OPCREDS_3_1Suite(CredentialIssuerCommands * credsIssuerConfig) : - TestCommand("Test_TC_OPCREDS_3_1", 0, credsIssuerConfig) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_OPCREDS_3_1Suite() {} - - chip::System::Clock::Timeout GetWaitDuration() const override - { - return chip::System::Clock::Seconds16(mTimeout.ValueOr(kTimeoutInSeconds)); - } - -private: - chip::Optional mNodeId; - chip::Optional mCluster; - chip::Optional mEndpoint; - chip::Optional mTimeout; - - chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } - - // - // Tests methods - // - - void OnResponse(const chip::app::StatusIB & status, chip::TLV::TLVReader * data) override - { - bool shouldContinue = false; - - switch (mTestIndex - 1) - { - default: - LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); - } - - if (shouldContinue) - { - ContinueOnChipMainThread(CHIP_NO_ERROR); - } - } - - CHIP_ERROR DoTestStep(uint16_t testIndex) override - { - using namespace chip::app::Clusters; - switch (testIndex) - {} - return CHIP_NO_ERROR; - } -}; - -class Test_TC_OPCREDS_3_2Suite : public TestCommand -{ -public: - Test_TC_OPCREDS_3_2Suite(CredentialIssuerCommands * credsIssuerConfig) : - TestCommand("Test_TC_OPCREDS_3_2", 0, credsIssuerConfig) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_OPCREDS_3_2Suite() {} - - chip::System::Clock::Timeout GetWaitDuration() const override - { - return chip::System::Clock::Seconds16(mTimeout.ValueOr(kTimeoutInSeconds)); - } - -private: - chip::Optional mNodeId; - chip::Optional mCluster; - chip::Optional mEndpoint; - chip::Optional mTimeout; - - chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } - - // - // Tests methods - // - - void OnResponse(const chip::app::StatusIB & status, chip::TLV::TLVReader * data) override - { - bool shouldContinue = false; - - switch (mTestIndex - 1) - { - default: - LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); - } - - if (shouldContinue) - { - ContinueOnChipMainThread(CHIP_NO_ERROR); - } - } - - CHIP_ERROR DoTestStep(uint16_t testIndex) override - { - using namespace chip::app::Clusters; - switch (testIndex) - {} - return CHIP_NO_ERROR; - } -}; - -class Test_TC_OPCREDS_3_3Suite : public TestCommand +class Test_TC_DA_1_3Suite : public TestCommand { public: - Test_TC_OPCREDS_3_3Suite(CredentialIssuerCommands * credsIssuerConfig) : - TestCommand("Test_TC_OPCREDS_3_3", 0, credsIssuerConfig) + Test_TC_DA_1_3Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_DA_1_3", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -118583,7 +118505,7 @@ class Test_TC_OPCREDS_3_3Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_OPCREDS_3_3Suite() {} + ~Test_TC_DA_1_3Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -118627,11 +118549,10 @@ class Test_TC_OPCREDS_3_3Suite : public TestCommand } }; -class Test_TC_OPCREDS_3_4Suite : public TestCommand +class Test_TC_DA_1_4Suite : public TestCommand { public: - Test_TC_OPCREDS_3_4Suite(CredentialIssuerCommands * credsIssuerConfig) : - TestCommand("Test_TC_OPCREDS_3_4", 0, credsIssuerConfig) + Test_TC_DA_1_4Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_DA_1_4", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -118639,7 +118560,7 @@ class Test_TC_OPCREDS_3_4Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_OPCREDS_3_4Suite() {} + ~Test_TC_DA_1_4Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -118683,11 +118604,10 @@ class Test_TC_OPCREDS_3_4Suite : public TestCommand } }; -class Test_TC_OPCREDS_3_5Suite : public TestCommand +class Test_TC_DA_1_6Suite : public TestCommand { public: - Test_TC_OPCREDS_3_5Suite(CredentialIssuerCommands * credsIssuerConfig) : - TestCommand("Test_TC_OPCREDS_3_5", 0, credsIssuerConfig) + Test_TC_DA_1_6Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_DA_1_6", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -118695,7 +118615,7 @@ class Test_TC_OPCREDS_3_5Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_OPCREDS_3_5Suite() {} + ~Test_TC_DA_1_6Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -118739,11 +118659,10 @@ class Test_TC_OPCREDS_3_5Suite : public TestCommand } }; -class Test_TC_OPCREDS_3_6Suite : public TestCommand +class Test_TC_BINFO_3_1Suite : public TestCommand { public: - Test_TC_OPCREDS_3_6Suite(CredentialIssuerCommands * credsIssuerConfig) : - TestCommand("Test_TC_OPCREDS_3_6", 0, credsIssuerConfig) + Test_TC_BINFO_3_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_BINFO_3_1", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -118751,7 +118670,7 @@ class Test_TC_OPCREDS_3_6Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_OPCREDS_3_6Suite() {} + ~Test_TC_BINFO_3_1Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -118795,10 +118714,11 @@ class Test_TC_OPCREDS_3_6Suite : public TestCommand } }; -class Test_TC_CNET_4_1Suite : public TestCommand +class Test_TC_OPCREDS_3_1Suite : public TestCommand { public: - Test_TC_CNET_4_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CNET_4_1", 0, credsIssuerConfig) + Test_TC_OPCREDS_3_1Suite(CredentialIssuerCommands * credsIssuerConfig) : + TestCommand("Test_TC_OPCREDS_3_1", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -118806,7 +118726,7 @@ class Test_TC_CNET_4_1Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_CNET_4_1Suite() {} + ~Test_TC_OPCREDS_3_1Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -118850,10 +118770,11 @@ class Test_TC_CNET_4_1Suite : public TestCommand } }; -class Test_TC_CNET_4_2Suite : public TestCommand +class Test_TC_OPCREDS_3_2Suite : public TestCommand { public: - Test_TC_CNET_4_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CNET_4_2", 0, credsIssuerConfig) + Test_TC_OPCREDS_3_2Suite(CredentialIssuerCommands * credsIssuerConfig) : + TestCommand("Test_TC_OPCREDS_3_2", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -118861,7 +118782,7 @@ class Test_TC_CNET_4_2Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_CNET_4_2Suite() {} + ~Test_TC_OPCREDS_3_2Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -118905,10 +118826,11 @@ class Test_TC_CNET_4_2Suite : public TestCommand } }; -class Test_TC_CNET_4_3Suite : public TestCommand +class Test_TC_OPCREDS_3_3Suite : public TestCommand { public: - Test_TC_CNET_4_3Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CNET_4_3", 0, credsIssuerConfig) + Test_TC_OPCREDS_3_3Suite(CredentialIssuerCommands * credsIssuerConfig) : + TestCommand("Test_TC_OPCREDS_3_3", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -118916,7 +118838,7 @@ class Test_TC_CNET_4_3Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_CNET_4_3Suite() {} + ~Test_TC_OPCREDS_3_3Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -118960,10 +118882,11 @@ class Test_TC_CNET_4_3Suite : public TestCommand } }; -class Test_TC_CNET_4_4Suite : public TestCommand +class Test_TC_OPCREDS_3_4Suite : public TestCommand { public: - Test_TC_CNET_4_4Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CNET_4_4", 0, credsIssuerConfig) + Test_TC_OPCREDS_3_4Suite(CredentialIssuerCommands * credsIssuerConfig) : + TestCommand("Test_TC_OPCREDS_3_4", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -118971,7 +118894,7 @@ class Test_TC_CNET_4_4Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_CNET_4_4Suite() {} + ~Test_TC_OPCREDS_3_4Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -119015,10 +118938,11 @@ class Test_TC_CNET_4_4Suite : public TestCommand } }; -class Test_TC_CNET_4_5Suite : public TestCommand +class Test_TC_OPCREDS_3_5Suite : public TestCommand { public: - Test_TC_CNET_4_5Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CNET_4_5", 0, credsIssuerConfig) + Test_TC_OPCREDS_3_5Suite(CredentialIssuerCommands * credsIssuerConfig) : + TestCommand("Test_TC_OPCREDS_3_5", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -119026,7 +118950,7 @@ class Test_TC_CNET_4_5Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_CNET_4_5Suite() {} + ~Test_TC_OPCREDS_3_5Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -119070,10 +118994,11 @@ class Test_TC_CNET_4_5Suite : public TestCommand } }; -class Test_TC_CNET_4_6Suite : public TestCommand +class Test_TC_OPCREDS_3_6Suite : public TestCommand { public: - Test_TC_CNET_4_6Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CNET_4_6", 0, credsIssuerConfig) + Test_TC_OPCREDS_3_6Suite(CredentialIssuerCommands * credsIssuerConfig) : + TestCommand("Test_TC_OPCREDS_3_6", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -119081,7 +119006,7 @@ class Test_TC_CNET_4_6Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_CNET_4_6Suite() {} + ~Test_TC_OPCREDS_3_6Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -119125,10 +119050,10 @@ class Test_TC_CNET_4_6Suite : public TestCommand } }; -class Test_TC_CNET_4_9Suite : public TestCommand +class Test_TC_CNET_4_1Suite : public TestCommand { public: - Test_TC_CNET_4_9Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CNET_4_9", 0, credsIssuerConfig) + Test_TC_CNET_4_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CNET_4_1", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -119136,7 +119061,7 @@ class Test_TC_CNET_4_9Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_CNET_4_9Suite() {} + ~Test_TC_CNET_4_1Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -119180,10 +119105,10 @@ class Test_TC_CNET_4_9Suite : public TestCommand } }; -class Test_TC_CNET_4_10Suite : public TestCommand +class Test_TC_CNET_4_2Suite : public TestCommand { public: - Test_TC_CNET_4_10Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CNET_4_10", 0, credsIssuerConfig) + Test_TC_CNET_4_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CNET_4_2", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -119191,7 +119116,7 @@ class Test_TC_CNET_4_10Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_CNET_4_10Suite() {} + ~Test_TC_CNET_4_2Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -119235,10 +119160,10 @@ class Test_TC_CNET_4_10Suite : public TestCommand } }; -class Test_TC_CNET_4_11Suite : public TestCommand +class Test_TC_CNET_4_3Suite : public TestCommand { public: - Test_TC_CNET_4_11Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CNET_4_11", 0, credsIssuerConfig) + Test_TC_CNET_4_3Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CNET_4_3", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -119246,7 +119171,7 @@ class Test_TC_CNET_4_11Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_CNET_4_11Suite() {} + ~Test_TC_CNET_4_3Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -119290,10 +119215,10 @@ class Test_TC_CNET_4_11Suite : public TestCommand } }; -class Test_TC_CNET_4_12Suite : public TestCommand +class Test_TC_CNET_4_4Suite : public TestCommand { public: - Test_TC_CNET_4_12Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CNET_4_12", 0, credsIssuerConfig) + Test_TC_CNET_4_4Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CNET_4_4", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -119301,7 +119226,7 @@ class Test_TC_CNET_4_12Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_CNET_4_12Suite() {} + ~Test_TC_CNET_4_4Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -119345,10 +119270,10 @@ class Test_TC_CNET_4_12Suite : public TestCommand } }; -class Test_TC_CNET_4_13Suite : public TestCommand +class Test_TC_CNET_4_5Suite : public TestCommand { public: - Test_TC_CNET_4_13Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CNET_4_13", 0, credsIssuerConfig) + Test_TC_CNET_4_5Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CNET_4_5", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -119356,7 +119281,7 @@ class Test_TC_CNET_4_13Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_CNET_4_13Suite() {} + ~Test_TC_CNET_4_5Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -119400,10 +119325,10 @@ class Test_TC_CNET_4_13Suite : public TestCommand } }; -class Test_TC_CNET_4_14Suite : public TestCommand +class Test_TC_CNET_4_6Suite : public TestCommand { public: - Test_TC_CNET_4_14Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CNET_4_14", 0, credsIssuerConfig) + Test_TC_CNET_4_6Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CNET_4_6", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -119411,7 +119336,7 @@ class Test_TC_CNET_4_14Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_CNET_4_14Suite() {} + ~Test_TC_CNET_4_6Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -119455,10 +119380,10 @@ class Test_TC_CNET_4_14Suite : public TestCommand } }; -class Test_TC_CNET_4_15Suite : public TestCommand +class Test_TC_CNET_4_9Suite : public TestCommand { public: - Test_TC_CNET_4_15Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CNET_4_15", 0, credsIssuerConfig) + Test_TC_CNET_4_9Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CNET_4_9", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -119466,7 +119391,7 @@ class Test_TC_CNET_4_15Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_CNET_4_15Suite() {} + ~Test_TC_CNET_4_9Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -119510,10 +119435,10 @@ class Test_TC_CNET_4_15Suite : public TestCommand } }; -class Test_TC_CNET_4_16Suite : public TestCommand +class Test_TC_CNET_4_10Suite : public TestCommand { public: - Test_TC_CNET_4_16Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CNET_4_16", 0, credsIssuerConfig) + Test_TC_CNET_4_10Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CNET_4_10", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -119521,7 +119446,7 @@ class Test_TC_CNET_4_16Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_CNET_4_16Suite() {} + ~Test_TC_CNET_4_10Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -119565,10 +119490,10 @@ class Test_TC_CNET_4_16Suite : public TestCommand } }; -class Test_TC_CNET_4_17Suite : public TestCommand +class Test_TC_CNET_4_11Suite : public TestCommand { public: - Test_TC_CNET_4_17Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CNET_4_17", 0, credsIssuerConfig) + Test_TC_CNET_4_11Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CNET_4_11", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -119576,7 +119501,7 @@ class Test_TC_CNET_4_17Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_CNET_4_17Suite() {} + ~Test_TC_CNET_4_11Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -119620,10 +119545,10 @@ class Test_TC_CNET_4_17Suite : public TestCommand } }; -class Test_TC_CNET_4_18Suite : public TestCommand +class Test_TC_CNET_4_12Suite : public TestCommand { public: - Test_TC_CNET_4_18Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CNET_4_18", 0, credsIssuerConfig) + Test_TC_CNET_4_12Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CNET_4_12", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -119631,7 +119556,7 @@ class Test_TC_CNET_4_18Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_CNET_4_18Suite() {} + ~Test_TC_CNET_4_12Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -119675,10 +119600,10 @@ class Test_TC_CNET_4_18Suite : public TestCommand } }; -class Test_TC_CNET_4_19Suite : public TestCommand +class Test_TC_CNET_4_13Suite : public TestCommand { public: - Test_TC_CNET_4_19Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CNET_4_19", 0, credsIssuerConfig) + Test_TC_CNET_4_13Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CNET_4_13", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -119686,7 +119611,7 @@ class Test_TC_CNET_4_19Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_CNET_4_19Suite() {} + ~Test_TC_CNET_4_13Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -119730,10 +119655,10 @@ class Test_TC_CNET_4_19Suite : public TestCommand } }; -class Test_TC_CNET_4_20Suite : public TestCommand +class Test_TC_CNET_4_14Suite : public TestCommand { public: - Test_TC_CNET_4_20Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CNET_4_20", 0, credsIssuerConfig) + Test_TC_CNET_4_14Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CNET_4_14", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -119741,7 +119666,7 @@ class Test_TC_CNET_4_20Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_CNET_4_20Suite() {} + ~Test_TC_CNET_4_14Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -119785,10 +119710,10 @@ class Test_TC_CNET_4_20Suite : public TestCommand } }; -class Test_TC_CNET_4_21Suite : public TestCommand +class Test_TC_CNET_4_15Suite : public TestCommand { public: - Test_TC_CNET_4_21Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CNET_4_21", 0, credsIssuerConfig) + Test_TC_CNET_4_15Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CNET_4_15", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -119796,7 +119721,7 @@ class Test_TC_CNET_4_21Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_CNET_4_21Suite() {} + ~Test_TC_CNET_4_15Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -119840,10 +119765,10 @@ class Test_TC_CNET_4_21Suite : public TestCommand } }; -class Test_TC_CNET_4_22Suite : public TestCommand +class Test_TC_CNET_4_16Suite : public TestCommand { public: - Test_TC_CNET_4_22Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CNET_4_22", 0, credsIssuerConfig) + Test_TC_CNET_4_16Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CNET_4_16", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -119851,7 +119776,7 @@ class Test_TC_CNET_4_22Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_CNET_4_22Suite() {} + ~Test_TC_CNET_4_16Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -119895,10 +119820,10 @@ class Test_TC_CNET_4_22Suite : public TestCommand } }; -class Test_TC_DLOG_2_1Suite : public TestCommand +class Test_TC_CNET_4_17Suite : public TestCommand { public: - Test_TC_DLOG_2_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_DLOG_2_1", 0, credsIssuerConfig) + Test_TC_CNET_4_17Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CNET_4_17", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -119906,7 +119831,7 @@ class Test_TC_DLOG_2_1Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_DLOG_2_1Suite() {} + ~Test_TC_CNET_4_17Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -119950,10 +119875,10 @@ class Test_TC_DLOG_2_1Suite : public TestCommand } }; -class Test_TC_DLOG_2_2Suite : public TestCommand +class Test_TC_CNET_4_18Suite : public TestCommand { public: - Test_TC_DLOG_2_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_DLOG_2_2", 0, credsIssuerConfig) + Test_TC_CNET_4_18Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CNET_4_18", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -119961,7 +119886,7 @@ class Test_TC_DLOG_2_2Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_DLOG_2_2Suite() {} + ~Test_TC_CNET_4_18Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -120005,10 +119930,10 @@ class Test_TC_DLOG_2_2Suite : public TestCommand } }; -class Test_TC_DLOG_3_1Suite : public TestCommand +class Test_TC_CNET_4_19Suite : public TestCommand { public: - Test_TC_DLOG_3_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_DLOG_3_1", 0, credsIssuerConfig) + Test_TC_CNET_4_19Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CNET_4_19", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -120016,7 +119941,7 @@ class Test_TC_DLOG_3_1Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_DLOG_3_1Suite() {} + ~Test_TC_CNET_4_19Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -120060,11 +119985,10 @@ class Test_TC_DLOG_3_1Suite : public TestCommand } }; -class Test_TC_DISHALM_1_1Suite : public TestCommand +class Test_TC_CNET_4_20Suite : public TestCommand { public: - Test_TC_DISHALM_1_1Suite(CredentialIssuerCommands * credsIssuerConfig) : - TestCommand("Test_TC_DISHALM_1_1", 0, credsIssuerConfig) + Test_TC_CNET_4_20Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CNET_4_20", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -120072,7 +119996,7 @@ class Test_TC_DISHALM_1_1Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_DISHALM_1_1Suite() {} + ~Test_TC_CNET_4_20Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -120116,11 +120040,10 @@ class Test_TC_DISHALM_1_1Suite : public TestCommand } }; -class Test_TC_DISHALM_2_1Suite : public TestCommand +class Test_TC_CNET_4_21Suite : public TestCommand { public: - Test_TC_DISHALM_2_1Suite(CredentialIssuerCommands * credsIssuerConfig) : - TestCommand("Test_TC_DISHALM_2_1", 0, credsIssuerConfig) + Test_TC_CNET_4_21Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CNET_4_21", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -120128,7 +120051,7 @@ class Test_TC_DISHALM_2_1Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_DISHALM_2_1Suite() {} + ~Test_TC_CNET_4_21Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -120172,11 +120095,10 @@ class Test_TC_DISHALM_2_1Suite : public TestCommand } }; -class Test_TC_DISHALM_3_1Suite : public TestCommand +class Test_TC_CNET_4_22Suite : public TestCommand { public: - Test_TC_DISHALM_3_1Suite(CredentialIssuerCommands * credsIssuerConfig) : - TestCommand("Test_TC_DISHALM_3_1", 0, credsIssuerConfig) + Test_TC_CNET_4_22Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CNET_4_22", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -120184,7 +120106,7 @@ class Test_TC_DISHALM_3_1Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_DISHALM_3_1Suite() {} + ~Test_TC_CNET_4_22Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -120228,11 +120150,10 @@ class Test_TC_DISHALM_3_1Suite : public TestCommand } }; -class Test_TC_DISHALM_3_2Suite : public TestCommand +class Test_TC_DLOG_2_1Suite : public TestCommand { public: - Test_TC_DISHALM_3_2Suite(CredentialIssuerCommands * credsIssuerConfig) : - TestCommand("Test_TC_DISHALM_3_2", 0, credsIssuerConfig) + Test_TC_DLOG_2_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_DLOG_2_1", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -120240,7 +120161,7 @@ class Test_TC_DISHALM_3_2Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_DISHALM_3_2Suite() {} + ~Test_TC_DLOG_2_1Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -120284,11 +120205,10 @@ class Test_TC_DISHALM_3_2Suite : public TestCommand } }; -class Test_TC_DISHALM_3_3Suite : public TestCommand +class Test_TC_DLOG_2_2Suite : public TestCommand { public: - Test_TC_DISHALM_3_3Suite(CredentialIssuerCommands * credsIssuerConfig) : - TestCommand("Test_TC_DISHALM_3_3", 0, credsIssuerConfig) + Test_TC_DLOG_2_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_DLOG_2_2", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -120296,7 +120216,7 @@ class Test_TC_DISHALM_3_3Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_DISHALM_3_3Suite() {} + ~Test_TC_DLOG_2_2Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -120340,11 +120260,10 @@ class Test_TC_DISHALM_3_3Suite : public TestCommand } }; -class Test_TC_DISHALM_3_4Suite : public TestCommand +class Test_TC_DLOG_3_1Suite : public TestCommand { public: - Test_TC_DISHALM_3_4Suite(CredentialIssuerCommands * credsIssuerConfig) : - TestCommand("Test_TC_DISHALM_3_4", 0, credsIssuerConfig) + Test_TC_DLOG_3_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_DLOG_3_1", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -120352,7 +120271,7 @@ class Test_TC_DISHALM_3_4Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_DISHALM_3_4Suite() {} + ~Test_TC_DLOG_3_1Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -120396,11 +120315,11 @@ class Test_TC_DISHALM_3_4Suite : public TestCommand } }; -class Test_TC_DISHALM_3_5Suite : public TestCommand +class Test_TC_DISHALM_1_1Suite : public TestCommand { public: - Test_TC_DISHALM_3_5Suite(CredentialIssuerCommands * credsIssuerConfig) : - TestCommand("Test_TC_DISHALM_3_5", 0, credsIssuerConfig) + Test_TC_DISHALM_1_1Suite(CredentialIssuerCommands * credsIssuerConfig) : + TestCommand("Test_TC_DISHALM_1_1", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -120408,7 +120327,7 @@ class Test_TC_DISHALM_3_5Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_DISHALM_3_5Suite() {} + ~Test_TC_DISHALM_1_1Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -120452,11 +120371,11 @@ class Test_TC_DISHALM_3_5Suite : public TestCommand } }; -class Test_TC_DISHALM_3_6Suite : public TestCommand +class Test_TC_DISHALM_2_1Suite : public TestCommand { public: - Test_TC_DISHALM_3_6Suite(CredentialIssuerCommands * credsIssuerConfig) : - TestCommand("Test_TC_DISHALM_3_6", 0, credsIssuerConfig) + Test_TC_DISHALM_2_1Suite(CredentialIssuerCommands * credsIssuerConfig) : + TestCommand("Test_TC_DISHALM_2_1", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -120464,7 +120383,7 @@ class Test_TC_DISHALM_3_6Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_DISHALM_3_6Suite() {} + ~Test_TC_DISHALM_2_1Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -120508,10 +120427,11 @@ class Test_TC_DISHALM_3_6Suite : public TestCommand } }; -class Test_TC_DISHM_1_1Suite : public TestCommand +class Test_TC_DISHALM_3_1Suite : public TestCommand { public: - Test_TC_DISHM_1_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_DISHM_1_1", 0, credsIssuerConfig) + Test_TC_DISHALM_3_1Suite(CredentialIssuerCommands * credsIssuerConfig) : + TestCommand("Test_TC_DISHALM_3_1", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -120519,7 +120439,7 @@ class Test_TC_DISHM_1_1Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_DISHM_1_1Suite() {} + ~Test_TC_DISHALM_3_1Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -120563,10 +120483,11 @@ class Test_TC_DISHM_1_1Suite : public TestCommand } }; -class Test_TC_DISHM_1_2Suite : public TestCommand +class Test_TC_DISHALM_3_2Suite : public TestCommand { public: - Test_TC_DISHM_1_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_DISHM_1_2", 0, credsIssuerConfig) + Test_TC_DISHALM_3_2Suite(CredentialIssuerCommands * credsIssuerConfig) : + TestCommand("Test_TC_DISHALM_3_2", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -120574,7 +120495,7 @@ class Test_TC_DISHM_1_2Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_DISHM_1_2Suite() {} + ~Test_TC_DISHALM_3_2Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -120618,10 +120539,11 @@ class Test_TC_DISHM_1_2Suite : public TestCommand } }; -class Test_TC_DISHM_2_1Suite : public TestCommand +class Test_TC_DISHALM_3_3Suite : public TestCommand { public: - Test_TC_DISHM_2_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_DISHM_2_1", 0, credsIssuerConfig) + Test_TC_DISHALM_3_3Suite(CredentialIssuerCommands * credsIssuerConfig) : + TestCommand("Test_TC_DISHALM_3_3", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -120629,7 +120551,7 @@ class Test_TC_DISHM_2_1Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_DISHM_2_1Suite() {} + ~Test_TC_DISHALM_3_3Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -120673,10 +120595,11 @@ class Test_TC_DISHM_2_1Suite : public TestCommand } }; -class Test_TC_DISHM_3_1Suite : public TestCommand +class Test_TC_DISHALM_3_4Suite : public TestCommand { public: - Test_TC_DISHM_3_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_DISHM_3_1", 0, credsIssuerConfig) + Test_TC_DISHALM_3_4Suite(CredentialIssuerCommands * credsIssuerConfig) : + TestCommand("Test_TC_DISHALM_3_4", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -120684,7 +120607,7 @@ class Test_TC_DISHM_3_1Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_DISHM_3_1Suite() {} + ~Test_TC_DISHALM_3_4Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -120728,10 +120651,11 @@ class Test_TC_DISHM_3_1Suite : public TestCommand } }; -class Test_TC_DISHM_3_2Suite : public TestCommand +class Test_TC_DISHALM_3_5Suite : public TestCommand { public: - Test_TC_DISHM_3_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_DISHM_3_2", 0, credsIssuerConfig) + Test_TC_DISHALM_3_5Suite(CredentialIssuerCommands * credsIssuerConfig) : + TestCommand("Test_TC_DISHALM_3_5", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -120739,7 +120663,7 @@ class Test_TC_DISHM_3_2Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_DISHM_3_2Suite() {} + ~Test_TC_DISHALM_3_5Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -120783,10 +120707,11 @@ class Test_TC_DISHM_3_2Suite : public TestCommand } }; -class Test_TC_DISHM_3_3Suite : public TestCommand +class Test_TC_DISHALM_3_6Suite : public TestCommand { public: - Test_TC_DISHM_3_3Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_DISHM_3_3", 0, credsIssuerConfig) + Test_TC_DISHALM_3_6Suite(CredentialIssuerCommands * credsIssuerConfig) : + TestCommand("Test_TC_DISHALM_3_6", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -120794,7 +120719,7 @@ class Test_TC_DISHM_3_3Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_DISHM_3_3Suite() {} + ~Test_TC_DISHALM_3_6Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -145223,6 +145148,7 @@ void registerCommandsTests(Commands & commands, CredentialIssuerCommands * creds make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), + make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), @@ -145541,12 +145467,6 @@ void registerCommandsTests(Commands & commands, CredentialIssuerCommands * creds make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), - make_unique(credsIssuerConfig), - make_unique(credsIssuerConfig), - make_unique(credsIssuerConfig), - make_unique(credsIssuerConfig), - make_unique(credsIssuerConfig), - make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), diff --git a/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h b/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h index 9de07fa1b127ee..4a7dce59c455c1 100644 --- a/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h +++ b/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h @@ -92,6 +92,7 @@ class TestList : public Command { printf("Test_TC_CNET_1_3\n"); printf("Test_TC_DESC_1_1\n"); printf("Test_TC_DLOG_1_1\n"); + printf("Test_TC_DISHM_1_1\n"); printf("Test_TC_DGETH_1_1\n"); printf("Test_TC_DGETH_2_1\n"); printf("Test_TC_DGETH_2_2\n"); @@ -46531,6 +46532,469 @@ class Test_TC_DLOG_1_1 : public TestCommandBridge { } }; +class Test_TC_DISHM_1_1 : public TestCommandBridge { +public: + // NOLINTBEGIN(clang-analyzer-nullability.NullPassedToNonnull): Test constructor nullability not enforced + Test_TC_DISHM_1_1() + : TestCommandBridge("Test_TC_DISHM_1_1") + , mTestIndex(0) + { + AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); + AddArgument("cluster", &mCluster); + AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); + AddArgument("timeout", 0, UINT16_MAX, &mTimeout); + } + // NOLINTEND(clang-analyzer-nullability.NullPassedToNonnull) + + ~Test_TC_DISHM_1_1() {} + + /////////// TestCommand Interface ///////// + void NextTest() override + { + CHIP_ERROR err = CHIP_NO_ERROR; + + if (0 == mTestIndex) { + ChipLogProgress(chipTool, " **** Test Start: Test_TC_DISHM_1_1\n"); + } + + if (mTestCount == mTestIndex) { + ChipLogProgress(chipTool, " **** Test Complete: Test_TC_DISHM_1_1\n"); + SetCommandExitStatus(CHIP_NO_ERROR); + return; + } + + Wait(); + + // Ensure we increment mTestIndex before we start running the relevant + // command. That way if we lose the timeslice after we send the message + // but before our function call returns, we won't end up with an + // incorrect mTestIndex value observed when we get the response. + switch (mTestIndex++) { + case 0: + ChipLogProgress(chipTool, " ***** Test Step 0 : Wait for the commissioned device to be retrieved\n"); + err = TestWaitForTheCommissionedDeviceToBeRetrieved_0(); + break; + case 1: + ChipLogProgress(chipTool, " ***** Test Step 1 : TH reads the ClusterRevision from DUT\n"); + err = TestThReadsTheClusterRevisionFromDut_1(); + break; + case 2: + ChipLogProgress(chipTool, " ***** Test Step 2 : TH reads the FeatureMap from DUT\n"); + if (ShouldSkip(" !DISHM.S.F00 ")) { + NextTest(); + return; + } + err = TestThReadsTheFeatureMapFromDut_2(); + break; + case 3: + ChipLogProgress( + chipTool, " ***** Test Step 3 : Given DISHM.S.F00(DEPONOFF) ensure featuremap has the correct bit set\n"); + if (ShouldSkip("DISHM.S.F00")) { + NextTest(); + return; + } + err = TestGivenDishmsf00deponoffEnsureFeaturemapHasTheCorrectBitSet_3(); + break; + case 4: + ChipLogProgress(chipTool, " ***** Test Step 4 : 4. TH reads AttributeList from DUT\n"); + if (ShouldSkip("PICS_EVENT_LIST_ENABLED")) { + NextTest(); + return; + } + err = Test4ThReadsAttributeListFromDut_4(); + break; + case 5: + ChipLogProgress(chipTool, " ***** Test Step 5 : 4. TH reads AttributeList from DUT\n"); + if (ShouldSkip("!PICS_EVENT_LIST_ENABLED")) { + NextTest(); + return; + } + err = Test4ThReadsAttributeListFromDut_5(); + break; + case 6: + ChipLogProgress( + chipTool, " ***** Test Step 6 : 4. TH reads optional attribute (DISHM.S.A0002(StartUpMode)) in AttributeList\n"); + if (ShouldSkip("DISHM.S.A0002")) { + NextTest(); + return; + } + err = Test4ThReadsOptionalAttributeDISHMSA0002StartUpModeInAttributeList_6(); + break; + case 7: + ChipLogProgress( + chipTool, " ***** Test Step 7 : 4. TH reads optional attribute (DISHM.S.A0002(StartUpMode)) in AttributeList\n"); + if (ShouldSkip(" !DISHM.S.A0002 ")) { + NextTest(); + return; + } + err = Test4ThReadsOptionalAttributeDISHMSA0002StartUpModeInAttributeList_7(); + break; + case 8: + ChipLogProgress( + chipTool, " ***** Test Step 8 : 4. TH reads optional attribute (DISHM.S.F00(DEPONOFF)) in AttributeList\n"); + if (ShouldSkip("DISHM.S.F00")) { + NextTest(); + return; + } + err = Test4ThReadsOptionalAttributeDishmsf00deponoffInAttributeList_8(); + break; + case 9: + ChipLogProgress( + chipTool, " ***** Test Step 9 : 4. TH reads optional attribute (DISHM.S.F00(DEPONOFF)) in AttributeList\n"); + if (ShouldSkip(" !DISHM.S.F00 ")) { + NextTest(); + return; + } + err = Test4ThReadsOptionalAttributeDishmsf00deponoffInAttributeList_9(); + break; + case 10: + ChipLogProgress(chipTool, " ***** Test Step 10 : 5. TH reads from the DUT the EventList attribute\n"); + if (ShouldSkip("PICS_EVENT_LIST_ENABLED")) { + NextTest(); + return; + } + NextTest(); + return; + case 11: + ChipLogProgress(chipTool, " ***** Test Step 11 : 6. TH reads AcceptedCommandList from DUT\n"); + err = Test6ThReadsAcceptedCommandListFromDut_11(); + break; + case 12: + ChipLogProgress(chipTool, " ***** Test Step 12 : 7. TH reads from the DUT the GeneratedCommandList attribute\n"); + err = Test7ThReadsFromTheDutTheGeneratedCommandListAttribute_12(); + break; + } + + if (CHIP_NO_ERROR != err) { + ChipLogError(chipTool, " ***** Test Failure: %s\n", chip::ErrorStr(err)); + SetCommandExitStatus(err); + } + } + + void OnStatusUpdate(const chip::app::StatusIB & status) override + { + switch (mTestIndex - 1) { + case 0: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 1: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 2: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 3: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 4: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 5: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 6: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 7: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 8: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 9: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 10: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 11: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 12: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + } + + // Go on to the next test. + ContinueOnChipMainThread(CHIP_NO_ERROR); + } + + chip::System::Clock::Timeout GetWaitDuration() const override + { + return chip::System::Clock::Seconds16(mTimeout.ValueOr(kTimeoutInSeconds)); + } + +private: + std::atomic_uint16_t mTestIndex; + const uint16_t mTestCount = 13; + + chip::Optional mNodeId; + chip::Optional mCluster; + chip::Optional mEndpoint; + chip::Optional mTimeout; + + CHIP_ERROR TestWaitForTheCommissionedDeviceToBeRetrieved_0() + { + + chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; + value.nodeId = mNodeId.HasValue() ? mNodeId.Value() : 305414945ULL; + return WaitForCommissionee("alpha", value); + } + + CHIP_ERROR TestThReadsTheClusterRevisionFromDut_1() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterDishwasherMode alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"TH reads the ClusterRevision from DUT Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + { + id actualValue = value; + VerifyOrReturn(CheckValue("ClusterRevision", actualValue, 1U)); + } + + VerifyOrReturn(CheckConstraintType("clusterRevision", "int16u", "int16u")); + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestThReadsTheFeatureMapFromDut_2() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterDishwasherMode alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"TH reads the FeatureMap from DUT Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + { + id actualValue = value; + VerifyOrReturn(CheckValue("FeatureMap", actualValue, 0UL)); + } + + VerifyOrReturn(CheckConstraintType("featureMap", "bitmap32", "bitmap32")); + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestGivenDishmsf00deponoffEnsureFeaturemapHasTheCorrectBitSet_3() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterDishwasherMode alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Given DISHM.S.F00(DEPONOFF) ensure featuremap has the correct bit set Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + { + id actualValue = value; + VerifyOrReturn(CheckValue("FeatureMap", actualValue, 1UL)); + } + + VerifyOrReturn(CheckConstraintType("featureMap", "bitmap32", "bitmap32")); + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR Test4ThReadsAttributeListFromDut_4() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterDishwasherMode alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"4. TH reads AttributeList from DUT Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("attributeList", "list", "list")); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 0UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 1UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65528UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65529UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65530UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65531UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65532UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65533UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR Test4ThReadsAttributeListFromDut_5() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterDishwasherMode alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"4. TH reads AttributeList from DUT Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("attributeList", "list", "list")); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 0UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 1UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65528UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65529UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65531UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65532UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65533UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR Test4ThReadsOptionalAttributeDISHMSA0002StartUpModeInAttributeList_6() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterDishwasherMode alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"4. TH reads optional attribute (DISHM.S.A0002(StartUpMode)) in AttributeList Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("attributeList", "list", "list")); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 2UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR Test4ThReadsOptionalAttributeDISHMSA0002StartUpModeInAttributeList_7() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterDishwasherMode alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"4. TH reads optional attribute (DISHM.S.A0002(StartUpMode)) in AttributeList Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("attributeList", "list", "list")); + VerifyOrReturn(CheckConstraintExcludes("attributeList", value, 2UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR Test4ThReadsOptionalAttributeDishmsf00deponoffInAttributeList_8() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterDishwasherMode alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"4. TH reads optional attribute (DISHM.S.F00(DEPONOFF)) in AttributeList Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("attributeList", "list", "list")); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 3UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR Test4ThReadsOptionalAttributeDishmsf00deponoffInAttributeList_9() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterDishwasherMode alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"4. TH reads optional attribute (DISHM.S.F00(DEPONOFF)) in AttributeList Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("attributeList", "list", "list")); + VerifyOrReturn(CheckConstraintExcludes("attributeList", value, 3UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR Test6ThReadsAcceptedCommandListFromDut_11() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterDishwasherMode alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"6. TH reads AcceptedCommandList from DUT Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("acceptedCommandList", "list", "list")); + VerifyOrReturn(CheckConstraintContains("acceptedCommandList", value, 0UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR Test7ThReadsFromTheDutTheGeneratedCommandListAttribute_12() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterDishwasherMode alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"7. TH reads from the DUT the GeneratedCommandList attribute Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("generatedCommandList", "list", "list")); + VerifyOrReturn(CheckConstraintContains("generatedCommandList", value, 1UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } +}; + class Test_TC_DGETH_1_1 : public TestCommandBridge { public: // NOLINTBEGIN(clang-analyzer-nullability.NullPassedToNonnull): Test constructor nullability not enforced @@ -177946,6 +178410,7 @@ void registerCommandsTests(Commands & commands) make_unique(), make_unique(), make_unique(), + make_unique(), make_unique(), make_unique(), make_unique(),