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 5b3cbf40b3b5d5..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_DISHM_3_1.yaml +++ /dev/null @@ -1,219 +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] On Mode functionality with DUT as Server - -PICS: - - DISHM.S.A0003 - - MOD.S.F00 - - OO.S.C00.Rsp - - OO.S.C01.Rsp - -config: - nodeId: 0x12344321 - cluster: "Basic Information" - endpoint: 0 - -tests: - - label: "Precondition" - verification: | - 1 Dishwasher Mode and OnOff clusters are available on the same endpoint - - 2 The OnMode attribute is set to a non-NULL value from the mode values indicated by the SupportedModes attribute. - - Read the SupportedModes attribute, select a value from SupportedModes and save the value as OnMode_value - - ./chip-tool dishwashermode read supported-modes 1 1 - - On TH(chip-tool) log, Verify the list of SupportedModes and below is the sample log provided for the raspi platform: - - [1692170674.471882][3058:3061] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Attribute 0x0000_0000 DataVersion: 2502960191 - [1692170674.472010][3058:3061] CHIP:TOO: SupportedModes: 3 entries - [1692170674.472081][3058:3061] CHIP:TOO: [1]: { - [1692170674.472110][3058:3061] CHIP:TOO: Label: Normal - [1692170674.472135][3058:3061] CHIP:TOO: Mode: 0 - [1692170674.472163][3058:3061] CHIP:TOO: ModeTags: 1 entries - [1692170674.472223][3058:3061] CHIP:TOO: [1]: { - [1692170674.472252][3058:3061] CHIP:TOO: Value: 16384 - [1692170674.472288][3058:3061] CHIP:TOO: } - [1692170674.472314][3058:3061] CHIP:TOO: } - [1692170674.472385][3058:3061] CHIP:TOO: [2]: { - [1692170674.472411][3058:3061] CHIP:TOO: Label: Heavy - [1692170674.472435][3058:3061] CHIP:TOO: Mode: 1 - [1692170674.472475][3058:3061] CHIP:TOO: ModeTags: 2 entries - [1692170674.472506][3058:3061] CHIP:TOO: [1]: { - [1692170674.472542][3058:3061] CHIP:TOO: Value: 7 - [1692170674.472567][3058:3061] CHIP:TOO: } - [1692170674.472595][3058:3061] CHIP:TOO: [2]: { - [1692170674.472632][3058:3061] CHIP:TOO: Value: 16385 - [1692170674.472658][3058:3061] CHIP:TOO: } - [1692170674.472683][3058:3061] CHIP:TOO: } - [1692170674.472730][3058:3061] CHIP:TOO: [3]: { - [1692170674.472755][3058:3061] CHIP:TOO: Label: Light - [1692170674.472778][3058:3061] CHIP:TOO: Mode: 2 - [1692170674.472820][3058:3061] CHIP:TOO: ModeTags: 3 entries - [1692170674.472851][3058:3061] CHIP:TOO: [1]: { - [1692170674.472886][3058:3061] CHIP:TOO: Value: 16386 - [1692170674.472910][3058:3061] CHIP:TOO: } - [1692170674.472938][3058:3061] CHIP:TOO: [2]: { - [1692170674.472973][3058:3061] CHIP:TOO: Value: 8 - [1692170674.472996][3058:3061] CHIP:TOO: } - [1692170674.473024][3058:3061] CHIP:TOO: [3]: { - [1692170674.473048][3058:3061] CHIP:TOO: Value: 2 - [1692170674.473071][3058:3061] CHIP:TOO: } - [1692170674.473095][3058:3061] CHIP:TOO: } - - Set the OnMode attribute value to OnMode_value - - ./chip-tool dishwashermode write on-mode 0 1 1 - - On TH(chip-tool) log, Verify DUT responds with a SUCCESS (value 0x00) status response and below is the sample log provided for the raspi platform: - - [1692170913.264454][3071:3073] CHIP:DMG: StatusIB = - [1692170913.264489][3071:3073] CHIP:DMG: { - [1692170913.264522][3071:3073] CHIP:DMG: status = 0x00 (SUCCESS), - [1692170913.264557][3071:3073] CHIP:DMG: }, - disabled: true - - - 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 && MOD.S.F00 - verification: | - ./chip-tool dishwashermode read on-mode 1 1 - - On TH(chip-tool), Verify that OnMode attribute value is an Integer - Save the value as on_mode_dut and below is the sample log provided for the raspi platform, here OnMode value is 0 - - [1690188734.934221][15978:15980] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Attribute 0x0000_0003 DataVersion: 74242734 - [1690188734.934259][15978:15980] CHIP:TOO: OnMode: 0 - disabled: true - - - label: "Step 3: TH reads from the DUT the CurrentMode attribute." - PICS: DISHM.S.A0001 && MOD.S.F00 - verification: | - ./chip-tool dishwashermode read current-mode 1 1 - - On TH(chip-tool), Verify that CurrentMode attribute is an integer. - Save the value as old_current_mode_dut and below is the sample log provided for the raspi platform, Here CurrentMode value is 0 - - NOTE: If startup_mode_dut is equal to old_current_mode_dut proceed to step 4. Else proceed to step 6. - - [1690188747.957507][15982:15984] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Attribute 0x0000_0001 DataVersion: 74242734 - [1690188747.957564][15982:15984] CHIP:TOO: CurrentMode: 0 - disabled: true - - - label: "Step 4: TH reads from the DUT the SupportedModes attribute." - PICS: DISHM.S.A0000 && MOD.S.F00 - verification: | - ./chip-tool dishwashermode read supported-modes 1 1 - - On TH(chip-tool) log, Verify DUT response contains a list of ModeOptionsStruct entries - - Verify that the list has two or more entries - - Save the Mode field values as supported_modes_dut - - Select a value from supported_modes_dut different from on_mode_dut. Save the value as new_mode_th, below is the sample log provided for the raspi platform: - - [1690188771.532158][15986:15988] CHIP:DMG: } - [1690188771.532258][15986:15988] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Attribute 0x0000_0000 DataVersion: 74242734 - [1690188771.532287][15986:15988] CHIP:TOO: SupportedModes: 3 entries - [1690188771.532305][15986:15988] CHIP:TOO: [1]: { - [1690188771.532309][15986:15988] CHIP:TOO: Label: Normal - [1690188771.532316][15986:15988] CHIP:TOO: Mode: 0 - [1690188771.532321][15986:15988] CHIP:TOO: ModeTags: 1 entries - [1690188771.532327][15986:15988] CHIP:TOO: [1]: { - [1690188771.532331][15986:15988] CHIP:TOO: Value: 16384 - [1690188771.532334][15986:15988] CHIP:TOO: } - [1690188771.532338][15986:15988] CHIP:TOO: } - [1690188771.532345][15986:15988] CHIP:TOO: [2]: { - [1690188771.532348][15986:15988] CHIP:TOO: Label: Heavy - [1690188771.532352][15986:15988] CHIP:TOO: Mode: 1 - [1690188771.532358][15986:15988] CHIP:TOO: ModeTags: 2 entries - [1690188771.532363][15986:15988] CHIP:TOO: [1]: { - [1690188771.532366][15986:15988] CHIP:TOO: Value: 7 - [1690188771.532368][15986:15988] CHIP:TOO: } - [1690188771.532372][15986:15988] CHIP:TOO: [2]: { - [1690188771.532374][15986:15988] CHIP:TOO: Value: 16385 - [1690188771.532376][15986:15988] CHIP:TOO: } - [1690188771.532379][15986:15988] CHIP:TOO: } - [1690188771.532386][15986:15988] CHIP:TOO: [3]: { - [1690188771.532388][15986:15988] CHIP:TOO: Label: Light - [1690188771.532390][15986:15988] CHIP:TOO: Mode: 2 - [1690188771.532395][15986:15988] CHIP:TOO: ModeTags: 3 entries - [1690188771.532398][15986:15988] CHIP:TOO: [1]: { - [1690188771.532401][15986:15988] CHIP:TOO: Value: 16386 - [1690188771.532403][15986:15988] CHIP:TOO: } - [1690188771.532406][15986:15988] CHIP:TOO: [2]: { - [1690188771.532409][15986:15988] CHIP:TOO: Value: 8 - [1690188771.532411][15986:15988] CHIP:TOO: } - [1690188771.532414][15986:15988] CHIP:TOO: [3]: { - [1690188771.532417][15986:15988] CHIP:TOO: Value: 2 - [1690188771.532419][15986:15988] CHIP:TOO: } - [1690188771.532421][15986:15988] 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 && MOD.S.F00 - verification: | - ./chip-tool dishwashermode change-to-mode 2 1 1 - - Verify on TH(chip-tool) log, DUT responds contains a ChangeToModeResponse command with a SUCCESS (value 0x00) status response and below is the sample log provided for the raspi platform: - - [1690198333.074192][17405:17407] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Command 0x0000_0001 - [1690198333.074208][17405:17407] CHIP:TOO: ChangeToModeResponse: { - [1690198333.074213][17405:17407] CHIP:TOO: status: 0 - [1690198333.074216][17405:17407] CHIP:TOO: } - disabled: true - - - label: "Step 6: TH sends a Off command to the DUT" - PICS: OO.S.C00.Rsp && MOD.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.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 && MOD.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.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 && MOD.S.F00 - verification: | - ./chip-tool dishwashermode read current-mode 1 1 - - On TH(chip-tool), Verify that CurrentMode attribute value is an integer value and equal to on_mode_dut, below is the sample log provided for the raspi platform, here CurrentMode attribute value is 0 - - [1690188859.713934][16004:16006] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Attribute 0x0000_0001 DataVersion: 74242736 - [1690188859.713980][16004:16006] CHIP:TOO: CurrentMode: 0 - 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 c53124e903fb7a..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_DISHM_3_2.yaml +++ /dev/null @@ -1,237 +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] Startup Mode functionality with DUT as Server - -PICS: - - DISHM.S.A0002 - -config: - nodeId: 0x12344321 - cluster: "Basic Information" - endpoint: 0 - -tests: - - label: "Preconditions" - verification: | - !DISHM.S.F00 | OnOff cluster’s StartUpOnOff attribute is NULL | StartUpOnOff is 0 | OnMode is NULL - disabled: true - - - label: "Note" - verification: | - To Execute the TC-DISHM-3.2 test case using reboot in raspi device we followed the below suggested way: - - To run a reboot test case on raspi, run the app with --KVS flag with a file in local directory and pass that file to the command to launch the app. Steps - - step-1: create a file using touch command , something like touch mytest.txt - step-2: chmod 777 mytest.txt - step-3: launch the app ./chip-all-clusters-app --KVS ./mytest.txt - - if you launch the app with the above commands and provision the app, even when you reboot the app with 'sudo reboot' , next time you launch the app with 'sudo ./out/all-clusters-app/chip-all-clusters-app --KVS ./mytest.txt' , you can run read/write attribs and commands without reprovisioning the device. - disabled: true - - - 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 dishwashermode read start-up-mode 1 1 - - On TH(chip-tool), Verify StartUpMode attribute value is an integer or null - - Save the value as startup_mode_dut and below is the sample log provided for the raspi platform, Here StartUpMode value is null - - NOTE: if startup_mode_dut is null proceed to step 3. Else save startup_mode_dut as new_start_up_mode_th and proceed to step 5. - - [1690188941.380388][16015:16017] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Attribute 0x0000_0002 DataVersion: 74242738 - [1690188941.380430][16015:16017] CHIP:TOO: StartUpMode: null - disabled: true - - - label: "Step 3: TH reads from the DUT the SupportedModes attribute." - PICS: DISHM.S.A0000 - verification: | - ./chip-tool dishwashermode read supported-modes 1 1 - - On TH(chip-tool) log, Verify DUT response contains a list of ModeOptionsStruct entries - - Verify that the list has two or more entries - - Save the Mode field values as supported_modes_dut - - Select a value from supported_modes_dut and save the value as new_start_up_mode_th, below is the sample log provided for the raspi platform: - - [1690188996.754102][16022:16024] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Attribute 0x0000_0000 DataVersion: 74242738 - [1690188996.754208][16022:16024] CHIP:TOO: SupportedModes: 3 entries - [1690188996.754248][16022:16024] CHIP:TOO: [1]: { - [1690188996.754258][16022:16024] CHIP:TOO: Label: Normal - [1690188996.754270][16022:16024] CHIP:TOO: Mode: 0 - [1690188996.754285][16022:16024] CHIP:TOO: ModeTags: 1 entries - [1690188996.754302][16022:16024] CHIP:TOO: [1]: { - [1690188996.754314][16022:16024] CHIP:TOO: Value: 16384 - [1690188996.754325][16022:16024] CHIP:TOO: } - [1690188996.754336][16022:16024] CHIP:TOO: } - [1690188996.754360][16022:16024] CHIP:TOO: [2]: { - [1690188996.754369][16022:16024] CHIP:TOO: Label: Heavy - [1690188996.754378][16022:16024] CHIP:TOO: Mode: 1 - [1690188996.754393][16022:16024] CHIP:TOO: ModeTags: 2 entries - [1690188996.754407][16022:16024] CHIP:TOO: [1]: { - [1690188996.754416][16022:16024] CHIP:TOO: Value: 7 - [1690188996.754425][16022:16024] CHIP:TOO: } - [1690188996.754439][16022:16024] CHIP:TOO: [2]: { - [1690188996.754450][16022:16024] CHIP:TOO: Value: 16385 - [1690188996.754459][16022:16024] CHIP:TOO: } - [1690188996.754469][16022:16024] CHIP:TOO: } - [1690188996.754493][16022:16024] CHIP:TOO: [3]: { - [1690188996.754501][16022:16024] CHIP:TOO: Label: Light - [1690188996.754511][16022:16024] CHIP:TOO: Mode: 2 - [1690188996.754548][16022:16024] CHIP:TOO: ModeTags: 3 entries - [1690188996.754564][16022:16024] CHIP:TOO: [1]: { - [1690188996.754574][16022:16024] CHIP:TOO: Value: 16386 - [1690188996.754583][16022:16024] CHIP:TOO: } - [1690188996.754597][16022:16024] CHIP:TOO: [2]: { - [1690188996.754606][16022:16024] CHIP:TOO: Value: 8 - [1690188996.754615][16022:16024] CHIP:TOO: } - [1690188996.754629][16022:16024] CHIP:TOO: [3]: { - [1690188996.754638][16022:16024] CHIP:TOO: Value: 2 - [1690188996.754646][16022:16024] CHIP:TOO: } - [1690188996.754654][16022:16024] CHIP:TOO: } - disabled: true - - - label: - "Step 4: TH writes to the DUT the StartUpMode attribute with the - new_start_up_mode_th value" - PICS: DISHM.S.A0002 - verification: | - ./chip-tool dishwashermode write start-up-mode 0 1 1 - - On TH(chip-tool) log, Verify that DUT responds with a successful (value 0x00) status response and below is the sample log provided for the raspi platform: - - [1690188912.259778][16011:16013] CHIP:DMG: { - [1690188912.259790][16011:16013] CHIP:DMG: status = 0x00 (SUCCESS), - [1690188912.259800][16011:16013] CHIP:DMG: }, - [1690188912.259813][16011:16013] CHIP:DMG: - - ./chip-tool dishwashermode read start-up-mode 1 1 - - On TH(chip-tool), Verify that StartUpMode attribute value is 0 and below is the sample log provided for the raspi platform . - - [1692171314.157274][3112:3114] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Attribute 0x0000_0002 DataVersion: 2502960195 - [1692171314.157331][3112:3114] CHIP:TOO: StartUpMode: 0 - disabled: true - - - label: "Step 5: TH reads from the DUT the CurrentMode attribute." - PICS: DISHM.S.A0001 - verification: | - ./chip-tool dishwashermode read current-mode 1 1 - - On TH(chip-tool), Verify that CurrentMode attribute value is an integer value - - Save the value as old_current_mode_dut, below is the sample log provided for the raspi platform, Here CurrentMode attribute value is 0 - - NOTE: If startup_mode_dut is equal to old_current_mode_dut proceed to step 6. Else proceed to step 8. - - [1690189040.789208][16040:16042] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Attribute 0x0000_0001 DataVersion: 1012425326 - [1690189040.789223][16040:16042] CHIP:TOO: CurrentMode: 0 - disabled: true - - - label: "Step 6: TH reads from the DUT the SupportedModes attribute." - PICS: DISHM.S.A0000 - verification: | - ./chip-tool dishwashermode read supported-modes 1 1 - - On TH(chip-tool) log, Verify DUT response contains a list of ModeOptionsStruct entries - - Verify that the list has two or more entries - - Save the Mode field values as supported_modes_dut - - Select a value from supported_modes_dut different from startup_mode_dut. Save the value as new_mode_th, below is the sample log provided for the raspi platform: - - [1690188996.754102][16022:16024] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Attribute 0x0000_0000 DataVersion: 74242738 - [1690188996.754208][16022:16024] CHIP:TOO: SupportedModes: 3 entries - [1690188996.754248][16022:16024] CHIP:TOO: [1]: { - [1690188996.754258][16022:16024] CHIP:TOO: Label: Normal - [1690188996.754270][16022:16024] CHIP:TOO: Mode: 0 - [1690188996.754285][16022:16024] CHIP:TOO: ModeTags: 1 entries - [1690188996.754302][16022:16024] CHIP:TOO: [1]: { - [1690188996.754314][16022:16024] CHIP:TOO: Value: 16384 - [1690188996.754325][16022:16024] CHIP:TOO: } - [1690188996.754336][16022:16024] CHIP:TOO: } - [1690188996.754360][16022:16024] CHIP:TOO: [2]: { - [1690188996.754369][16022:16024] CHIP:TOO: Label: Heavy - [1690188996.754378][16022:16024] CHIP:TOO: Mode: 1 - [1690188996.754393][16022:16024] CHIP:TOO: ModeTags: 2 entries - [1690188996.754407][16022:16024] CHIP:TOO: [1]: { - [1690188996.754416][16022:16024] CHIP:TOO: Value: 7 - [1690188996.754425][16022:16024] CHIP:TOO: } - [1690188996.754439][16022:16024] CHIP:TOO: [2]: { - [1690188996.754450][16022:16024] CHIP:TOO: Value: 16385 - [1690188996.754459][16022:16024] CHIP:TOO: } - [1690188996.754469][16022:16024] CHIP:TOO: } - [1690188996.754493][16022:16024] CHIP:TOO: [3]: { - [1690188996.754501][16022:16024] CHIP:TOO: Label: Light - [1690188996.754511][16022:16024] CHIP:TOO: Mode: 2 - [1690188996.754548][16022:16024] CHIP:TOO: ModeTags: 3 entries - [1690188996.754564][16022:16024] CHIP:TOO: [1]: { - [1690188996.754574][16022:16024] CHIP:TOO: Value: 16386 - [1690188996.754583][16022:16024] CHIP:TOO: } - [1690188996.754597][16022:16024] CHIP:TOO: [2]: { - [1690188996.754606][16022:16024] CHIP:TOO: Value: 8 - [1690188996.754615][16022:16024] CHIP:TOO: } - [1690188996.754629][16022:16024] CHIP:TOO: [3]: { - [1690188996.754638][16022:16024] CHIP:TOO: Value: 2 - [1690188996.754646][16022:16024] CHIP:TOO: } - [1690188996.754654][16022:16024] CHIP:TOO: } - disabled: true - - - label: - "Step 7: TH sends a ChangeToMode command to the DUT with NewMode set - to new_mode_th" - PICS: DISHM.S.C00.Rsp - verification: | - ./chip-tool dishwashermode change-to-mode 2 1 1 - - Verify on TH(chip-tool) log, DUT responds contains a ChangeToModeResponse command with a SUCCESS (value 0x00) status response and below is the sample log provided for the raspi platform: - - [1690265961.529808][30174:30176] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Command 0x0000_0001 - [1690265961.529857][30174:30176] CHIP:TOO: ChangeToModeResponse: { - [1690265961.529880][30174:30176] CHIP:TOO: status: 0 - [1690265961.529891][30174:30176] CHIP:TOO: } - 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 StartUpMode attribute." - PICS: DISHM.S.A0002 - verification: | - ./chip-tool dishwashermode read start-up-mode 1 1 - - On TH(chip-tool), Verify StartUpMode attribute value is an integer. - - Save the value as new_start_up_mode_dut and is equal to new_start_up_mode_th, below is the sample log provided for the raspi platform, Here StartUpMode value is 0 - - [1690188941.380388][16015:16017] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Attribute 0x0000_0002 DataVersion: 74242738 - [1690188941.380430][16015:16017] CHIP:TOO: StartUpMode: 0 - disabled: true - - - label: "Step 10: TH reads from the DUT the CurrentMode attribute." - PICS: DISHM.S.A0001 - verification: | - ./chip-tool dishwashermode read current-mode 1 1 - - On TH(chip-tool), Verify that CurrentMode attribute value is an integer value and is equal to new_start_up_mode_dut, below is the sample log provided for the raspi platform, Here CurrentMode attribute value is 0 - - [1690189040.789208][16040:16042] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Attribute 0x0000_0001 DataVersion: 1012425326 - [1690189040.789223][16040:16042] 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 c9e788d45a6eef..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_DISHM_3_3.yaml +++ /dev/null @@ -1,274 +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] On Mode and Startup Mode functionality with DUT as - Server - -PICS: - - DISHM.S.A0002 - - DISHM.S.A0003 - - MOD.S.F00 - - OO.S.A4003 - -config: - nodeId: 0x12344321 - cluster: "Basic Information" - endpoint: 0 - -tests: - - label: "Note" - verification: | - To Execute the TC-DISH-3.3 test case using reboot in raspi device we followed the below suggested way: - - To run a reboot test case on raspi, run the app with --KVS flag with a file in local directory and pass that file to the command to launch the app. Steps - - step-1: create a file using touch command , something like touch mytest.txt - step-2: chmod 777 mytest.txt - step-3: launch the app ./chip-all-clusters-app --KVS ./mytest.txt - - if you launch the app with the above commands and provision the app, even when you reboot the app with 'sudo reboot' , next time you launch the app with 'sudo ./out/all-clusters-app/chip-all-clusters-app --KVS ./mytest.txt' , you can run read/write attribs and commands without reprovisioning the device. - disabled: true - - - 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 dishwashermode read start-up-mode 1 1 - - On TH(chip-tool), Verify that StartUpMode attribute value is an integer or Null - - Save the value as startup_mode_dut, below is the sample log provided for the raspi platform, Here StartUpMode attribute value is null - - NOTE: if startup_mode_dut is null proceed to step 3. Else save startup_mode_dut as new_start_up_mode_th and proceed to step 5. - - [1651099663211] [82177:7560652] CHIP: [TOO] Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0004 DataVersion: 2609052118 - [1651099663212] [82177:7560652] CHIP: [TOO] StartUpMode: null - disabled: true - - - label: "Step 3: TH reads from the DUT the SupportedModes attribute." - PICS: DISHM.S.A0000 - verification: | - ./chip-tool dishwashermode read supported-modes 1 1 - - On TH(chip-tool) log, Verify DUT response contains a list of ModeOptionsStruct entries - - Verify that the list has two or more entries - - Save the Mode field values as supported_modes_dut - - Select a value from supported_modes_dut and save the value as new_start_up_mode_th, below is the sample log provided for the raspi platform: - - [1690189296.612007][16077:16079] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Attribute 0x0000_0000 DataVersion: 1012425327 - [1690189296.612104][16077:16079] CHIP:TOO: SupportedModes: 3 entries - [1690189296.612139][16077:16079] CHIP:TOO: [1]: { - [1690189296.612149][16077:16079] CHIP:TOO: Label: Normal - [1690189296.612168][16077:16079] CHIP:TOO: Mode: 0 - [1690189296.612189][16077:16079] CHIP:TOO: ModeTags: 1 entries - [1690189296.612214][16077:16079] CHIP:TOO: [1]: { - [1690189296.612224][16077:16079] CHIP:TOO: Value: 16384 - [1690189296.612234][16077:16079] CHIP:TOO: } - [1690189296.612243][16077:16079] CHIP:TOO: } - [1690189296.612264][16077:16079] CHIP:TOO: [2]: { - [1690189296.612273][16077:16079] CHIP:TOO: Label: Heavy - [1690189296.612282][16077:16079] CHIP:TOO: Mode: 1 - [1690189296.612296][16077:16079] CHIP:TOO: ModeTags: 2 entries - [1690189296.612309][16077:16079] CHIP:TOO: [1]: { - [1690189296.612318][16077:16079] CHIP:TOO: Value: 7 - [1690189296.612327][16077:16079] CHIP:TOO: } - [1690189296.612339][16077:16079] CHIP:TOO: [2]: { - [1690189296.612348][16077:16079] CHIP:TOO: Value: 16385 - [1690189296.612356][16077:16079] CHIP:TOO: } - [1690189296.612365][16077:16079] CHIP:TOO: } - [1690189296.612384][16077:16079] CHIP:TOO: [3]: { - [1690189296.612392][16077:16079] CHIP:TOO: Label: Light - [1690189296.612398][16077:16079] CHIP:TOO: Mode: 2 - [1690189296.612413][16077:16079] CHIP:TOO: ModeTags: 3 entries - [1690189296.612425][16077:16079] CHIP:TOO: [1]: { - [1690189296.612433][16077:16079] CHIP:TOO: Value: 16386 - [1690189296.612443][16077:16079] CHIP:TOO: } - [1690189296.612456][16077:16079] CHIP:TOO: [2]: { - [1690189296.612465][16077:16079] CHIP:TOO: Value: 8 - [1690189296.612473][16077:16079] CHIP:TOO: } - [1690189296.612485][16077:16079] CHIP:TOO: [3]: { - [1690189296.612494][16077:16079] CHIP:TOO: Value: 2 - [1690189296.612502][16077:16079] CHIP:TOO: } - [1690189296.612511][16077:16079] CHIP:TOO: } - disabled: true - - - label: - "Step 4: TH writes to the DUT the StartUpMode attribute with the - new_start_up_mode_th value" - PICS: DISHM.S.A0002 - verification: | - ./chip-tool dishwashermode write start-up-mode 0 1 1 - - On TH(chip-tool) log, Verify that DUT responds with a successful (value 0x00) status response and below is the sample log provided for the raspi platform: - - [1690188912.259766][16011:16013] CHIP:DMG: StatusIB = - [1690188912.259778][16011:16013] CHIP:DMG: { - [1690188912.259790][16011:16013] CHIP:DMG: status = 0x00 (SUCCESS), - [1690188912.259800][16011:16013] CHIP:DMG: }, - [1690188912.259813][16011:16013] CHIP:DMG: - - ./chip-tool dishwashermode read start-up-mode 1 1 - - On TH(chip-tool), Verify that StartUpMode attribute value is 0 and below is the sample log provided for the raspi platform . - - [1692171314.157274][3112:3114] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Attribute 0x0000_0002 DataVersion: 2502960195 - [1692171314.157331][3112:3114] CHIP:TOO: StartUpMode: 0 - disabled: true - - - label: "Step 5: TH reads from the DUT the OnMode attribute." - PICS: DISHM.S.A0003 && DISHM.S.A0002 - verification: | - As default value of OnMode attribute is NULL. Set the OnMode to any mode value listed in the SupportedModes entries. - - ./chip-tool dishwashermode write on-mode 0 1 1 - - On TH(chip-tool) log, Verify that DUT responds with a successful (value 0x00) status response and below is the sample log provided for the raspi platform: - - [1690189187.414225][16062:16064] CHIP:DMG: StatusIB = - [1690189187.414237][16062:16064] CHIP:DMG: { - [1690189187.414249][16062:16064] CHIP:DMG: status = 0x00 (SUCCESS), - [1690189187.414260][16062:16064] CHIP:DMG: }, - - - ./chip-tool dishwashermode read on-mode 1 1 - - On TH(chip-tool), Verify that OnMode attribute value is an integer value - - Save the value as old_on_mode_dut, below is the sample log provided for the raspi platform, here OnMode attribute value is 0 - - NOTE: If startup_mode_dut is equal to old_on_mode_dut proceed to step 6. Else proceed to step 8. - - [1690189501.554415][16104:16106] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Attribute 0x0000_0003 DataVersion: 1012425329 - [1690189501.554429][16104:16106] CHIP:TOO: OnMode: 0 - disabled: true - - - label: "Step 6: TH reads from the DUT the SupportedModes attribute." - PICS: DISHM.S.A0000 && DISHM.S.A0002 - verification: | - ./chip-tool dishwashermode read supported-modes 1 1 - - On TH(chip-tool) log, Verify DUT response contains a list of ModeOptionsStruct entries - - Verify that the list has two or more entries - - Save the Mode field values as supported_modes_dut - - Select a value from supported_modes_dut different from startup_mode_dut. Save the value as new_mode_th, below is the sample log provided for the raspi platform: - - [1690189296.612007][16077:16079] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Attribute 0x0000_0000 DataVersion: 1012425327 - [1690189296.612104][16077:16079] CHIP:TOO: SupportedModes: 3 entries - [1690189296.612139][16077:16079] CHIP:TOO: [1]: { - [1690189296.612149][16077:16079] CHIP:TOO: Label: Normal - [1690189296.612168][16077:16079] CHIP:TOO: Mode: 0 - [1690189296.612189][16077:16079] CHIP:TOO: ModeTags: 1 entries - [1690189296.612214][16077:16079] CHIP:TOO: [1]: { - [1690189296.612224][16077:16079] CHIP:TOO: Value: 16384 - [1690189296.612234][16077:16079] CHIP:TOO: } - [1690189296.612243][16077:16079] CHIP:TOO: } - [1690189296.612264][16077:16079] CHIP:TOO: [2]: { - [1690189296.612273][16077:16079] CHIP:TOO: Label: Heavy - [1690189296.612282][16077:16079] CHIP:TOO: Mode: 1 - [1690189296.612296][16077:16079] CHIP:TOO: ModeTags: 2 entries - [1690189296.612309][16077:16079] CHIP:TOO: [1]: { - [1690189296.612318][16077:16079] CHIP:TOO: Value: 7 - [1690189296.612327][16077:16079] CHIP:TOO: } - [1690189296.612339][16077:16079] CHIP:TOO: [2]: { - [1690189296.612348][16077:16079] CHIP:TOO: Value: 16385 - [1690189296.612356][16077:16079] CHIP:TOO: } - [1690189296.612365][16077:16079] CHIP:TOO: } - [1690189296.612384][16077:16079] CHIP:TOO: [3]: { - [1690189296.612392][16077:16079] CHIP:TOO: Label: Light - [1690189296.612398][16077:16079] CHIP:TOO: Mode: 2 - [1690189296.612413][16077:16079] CHIP:TOO: ModeTags: 3 entries - [1690189296.612425][16077:16079] CHIP:TOO: [1]: { - [1690189296.612433][16077:16079] CHIP:TOO: Value: 16386 - [1690189296.612443][16077:16079] CHIP:TOO: } - [1690189296.612456][16077:16079] CHIP:TOO: [2]: { - [1690189296.612465][16077:16079] CHIP:TOO: Value: 8 - [1690189296.612473][16077:16079] CHIP:TOO: } - [1690189296.612485][16077:16079] CHIP:TOO: [3]: { - [1690189296.612494][16077:16079] CHIP:TOO: Value: 2 - [1690189296.612502][16077:16079] CHIP:TOO: } - [1690189296.612511][16077:16079] CHIP:TOO: } - disabled: true - - - label: - "Step 7: TH writes to the DUT the OnMode attribute with the - new_mode_th value" - PICS: DISHM.S.A0003 - verification: | - ./chip-tool dishwashermode write on-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: - - [1690189470.746137][16086:16088] CHIP:DMG: { - [1690189470.746140][16086:16088] CHIP:DMG: status = 0x00 (SUCCESS), - [1690189470.746142][16086:16088] CHIP:DMG: }, - disabled: true - - - label: "Step 8: TH reads from the DUT the OnMode attribute." - PICS: DISHM.S.A0003 && MOD.S.F00 - verification: | - ./chip-tool dishwashermode read on-mode 1 1 - - On TH(chip-tool), Verify that OnMode attribute value is an integer - - Save the value as new_on_mode_dut and is equal to new_mode_th and below is the sample log provided for the raspi platform, here OnMode attribute value is 2 - - [1690189501.554415][16104:16106] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Attribute 0x0000_0003 DataVersion: 1012425329 - [1690189501.554429][16104:16106] CHIP:TOO: OnMode: 2 - disabled: true - - - label: - "Step 9: 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: - - [1651101661960] [90832:7598169] CHIP: [DMG] { - [1651101661960] [90832:7598169] CHIP: [DMG] status = 0x00 (SUCCESS), - [1651101661960] [90832:7598169] CHIP: [DMG] }, - disabled: true - - - label: "Step 10: Physically power cycle the device" - verification: | - Physically power cycle the device. - disabled: true - - - label: "Step 11: TH reads from the DUT the StartUpMode attribute." - PICS: DISHM.S.A0002 - verification: | - ./chip-tool dishwashermode read start-up-mode 1 1 - - On TH(chip-tool), Verify that StartUpMode attribute value is an integer and is equal to new_start_up_mode_th, below is the sample log provided for the raspi platform, Here StartUpMode attribute value is 0 - - [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 12: TH reads from the DUT the CurrentMode attribute." - PICS: DISHM.S.A0001 - verification: | - ./chip-tool dishwashermode read current-mode 1 1 - - On TH(chip-tool), Verify that CurrentMode attribute value is an integer value and is equal to new_on_mode_dut, below is the sample log provided for the raspi platform, Here CurrentMode attribute value is 2 - - [1690189536.790233][16118:16120] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Attribute 0x0000_0001 DataVersion: 4080703118 - [1690189536.790280][16118:16120] CHIP:TOO: CurrentMode: 2 - disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_LWM_3_1.yaml b/src/app/tests/suites/certification/Test_TC_LWM_3_1.yaml deleted file mode 100644 index 2bafddfa303f64..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_LWM_3_1.yaml +++ /dev/null @@ -1,134 +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. - -name: 183.3.1. [TC-LWM-3.1] On Mode functionality with DUT as Server - -PICS: - - LWM.S.A0003 - - MOD.S.F00 - - OO.S.C00.Rsp - - OO.S.C01.Rsp - -config: - nodeId: 0x12344321 - cluster: "Laundry Washer Mode" - endpoint: 1 - - ConfigureOnMode: - type: int8u - defaultValue: 0 - new_mode_th: - type: int8u - defaultValue: 2 - -tests: - - label: - "Step 1: Commission DUT to TH (can be skipped if done in a preceding - test)." - cluster: "DelayCommands" - command: "WaitForCommissionee" - arguments: - values: - - name: "nodeId" - value: nodeId - - - label: - "Precondition: TH writes from the DUT the OnMode attribute.NOTE: To - execute this test case set onmode to any integer value because as - default it value has null." - PICS: LWM.S.A0003 && MOD.S.F00 - command: "writeAttribute" - attribute: "OnMode" - arguments: - value: ConfigureOnMode - - - label: "Step 2: TH reads from the DUT the OnMode attribute." - PICS: LWM.S.A0003 && MOD.S.F00 - command: "readAttribute" - attribute: "OnMode" - response: - saveAs: on_mode_dut - constraints: - type: int8u - minValue: 0 - maxValue: 254 - - - label: "Step 3: TH reads from the DUT the CurrentMode attribute." - PICS: LWM.S.A0001 && MOD.S.F00 - command: "readAttribute" - attribute: "CurrentMode" - response: - saveAs: old_current_mode_dut - constraints: - type: int8u - minValue: 0 - maxValue: 254 - - - label: - "If on_mode_dut is equal to old_current_mode_dut proceed to step 4. - Else proceed to step 6." - cluster: "EqualityCommands" - command: "UnsignedNumberEquals" - arguments: - values: - - name: "Value1" - value: on_mode_dut - - name: "Value2" - value: old_current_mode_dut - response: - - values: - - name: "Equals" - saveAs: IsExpectedValue - - - label: "Step 4: TH reads from the DUT the SupportedModes attribute." - runIf: IsExpectedValue - PICS: LWM.S.A0000 && MOD.S.F00 - command: "readAttribute" - attribute: "SupportedModes" - response: - constraints: - type: list - minLength: 2 - - - label: - "Step 5: TH sends a ChangeToMode command to the DUT with NewMode set - to new_mode_th" - runIf: IsExpectedValue - PICS: LWM.S.C00.Rsp && MOD.S.F00 - command: "ChangeToMode" - arguments: - values: - - name: "NewMode" - value: new_mode_th - response: - values: - - name: "Status" - value: 0x00 - - - label: "Step 6:TH sends a Off command to the DUT" - PICS: OO.S.C00.Rsp && MOD.S.F00 - cluster: "On/Off" - command: "Off" - - - label: "Step 7:TH sends a On command to the DUT" - PICS: OO.S.C01.Rsp && MOD.S.F00 - cluster: "On/Off" - command: "On" - - - label: "Step 8: TH reads from the DUT the CurrentMode attribute." - PICS: LWM.S.A0001 && MOD.S.F00 - command: "readAttribute" - attribute: "CurrentMode" - response: - value: on_mode_dut diff --git a/src/app/tests/suites/certification/Test_TC_LWM_3_2.yaml b/src/app/tests/suites/certification/Test_TC_LWM_3_2.yaml deleted file mode 100644 index fe8ff87e214e18..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_LWM_3_2.yaml +++ /dev/null @@ -1,172 +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. - -name: 183.3.2. [TC-LWM-3.2] Startup Mode functionality with DUT as Server - -PICS: - - LWM.S.A0002 - -config: - nodeId: 0x12344321 - cluster: "Laundry Washer Mode" - endpoint: 1 - - new_start_up_mode_th: - type: int8u - defaultValue: 0 - new_mode_th: - type: int8u - defaultValue: 1 - -tests: - - label: - "Step 1: Commission DUT to TH (can be skipped if done in a preceding - test)." - cluster: "DelayCommands" - command: "WaitForCommissionee" - arguments: - values: - - name: "nodeId" - value: nodeId - - - label: "Step 2: TH reads from the DUT the StartUpMode attribute." - PICS: LWM.S.A0002 - command: "readAttribute" - attribute: "StartUpMode" - response: - saveAs: startup_mode_dut - - - label: - "Step 2: If startup_mode_dut is null proceed to step 3. Else save - startup_mode_dut as new_start_up_mode_th and proceed to step 5." - PICS: LWM.S.A0002 - cluster: "EqualityCommands" - command: "UnsignedNumberEquals" - arguments: - values: - - name: "Value1" - value: startup_mode_dut - - name: "Value2" - value: null - response: - - values: - - name: "Equals" - saveAs: IsExpectedValue - - - label: "Step 3: TH reads from the DUT the SupportedModes attribute." - runIf: IsExpectedValue - PICS: LWM.S.A0000 - command: "readAttribute" - attribute: "SupportedModes" - response: - saveAs: supported_modes_dut - constraints: - type: list - minLength: 2 - - label: - "Step 4: TH writes to the DUT the StartUpMode attribute with the - new_start_up_mode_th value" - PICS: LWM.S.A0002 - runIf: IsExpectedValue - command: "writeAttribute" - attribute: "StartUpMode" - arguments: - value: new_start_up_mode_th - - - label: "Step 5: TH reads from the DUT the CurrentMode attribute." - PICS: LWM.S.A0001 - command: "readAttribute" - attribute: "CurrentMode" - response: - saveAs: old_current_mode_dut - - - label: - "Step 5: If startup_mode_dut is equal to old_current_mode_dut proceed - to step 6. Else proceed to step 8." - PICS: LWM.S.A0001 && LWM.S.A0002 - cluster: "EqualityCommands" - command: "UnsignedNumberEquals" - arguments: - values: - - name: "Value1" - value: startup_mode_dut - - name: "Value2" - value: old_current_mode_dut - response: - - values: - - name: "Equals" - saveAs: Step5_IsExpectedValue - - - label: "Step 6: TH reads from the DUT the SupportedModes attribute." - PICS: LWM.S.A0000 - runIf: Step5_IsExpectedValue - command: "readAttribute" - attribute: "SupportedModes" - response: - saveAs: Step6_supported_modes_dut - constraints: - type: list - minLength: 2 - - - label: - "Step 7: TH sends a ChangeToMode command to the DUT with NewMode set - to new_mode_th" - PICS: LWM.S.C00.Rsp - runIf: Step5_IsExpectedValue - command: "ChangeToMode" - arguments: - values: - - name: "NewMode" - value: new_mode_th - response: - values: - - name: "Status" - value: 0x00 - - - label: "Step 8: Physically power cycle the device" - verification: | - Physically power cycle the device. - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_USER_PROMPT - arguments: - values: - - name: "message" - value: "Please enter 'y' for success" - - name: "expectedValue" - value: "y" - - - label: "Wait for the commissioned device to be retrieved" - cluster: "DelayCommands" - command: "WaitForCommissionee" - arguments: - values: - - name: "nodeId" - value: nodeId - - - label: "Step 9: TH reads from the DUT the StartUpMode attribute." - PICS: LWM.S.A0002 && PICS_USER_PROMPT - command: "readAttribute" - attribute: "StartUpMode" - response: - saveAs: new_start_up_mode_dut - constraints: - anyOf: [startup_mode_dut, new_start_up_mode_th] - - - label: "Step 10: TH reads from the DUT the CurrentMode attribute." - PICS: LWM.S.A0001 && PICS_USER_PROMPT - command: "readAttribute" - attribute: "CurrentMode" - response: - value: new_start_up_mode_dut diff --git a/src/app/tests/suites/certification/Test_TC_LWM_3_3.yaml b/src/app/tests/suites/certification/Test_TC_LWM_3_3.yaml deleted file mode 100644 index bf97f17f286154..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_LWM_3_3.yaml +++ /dev/null @@ -1,189 +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. - -name: - 183.3.3. [TC-LWM-3.3] On Mode and Startup Mode functionality with DUT as - Server - -PICS: - - LWM.S.A0002 - - LWM.S.A0003 - - MOD.S.F00 - - OO.S.A4003 - -config: - nodeId: 0x12344321 - cluster: "Laundry Washer Mode" - endpoint: 1 - - new_start_up_mode_th: - type: int8u - defaultValue: 0 - new_mode_th: - type: int8u - defaultValue: 1 - -tests: - - label: - "Step 1: Commission DUT to TH (can be skipped if done in a preceding - test)." - cluster: "DelayCommands" - command: "WaitForCommissionee" - arguments: - values: - - name: "nodeId" - value: nodeId - - - label: "Step 2: TH reads from the DUT the StartUpMode attribute." - PICS: LWM.S.A0002 - command: "readAttribute" - attribute: "StartUpMode" - response: - saveAs: startup_mode_dut - - - label: - "Step 2: If startup_mode_dut is null proceed to step 3. Else save - startup_mode_dut as new_start_up_mode_th and proceed to step 5." - PICS: LWM.S.A0002 - cluster: "EqualityCommands" - command: "UnsignedNumberEquals" - arguments: - values: - - name: "Value1" - value: startup_mode_dut - - name: "Value2" - value: null - response: - - values: - - name: "Equals" - saveAs: IsExpectedValue - - - label: "Step 3: TH reads from the DUT the SupportedModes attribute." - runIf: IsExpectedValue - PICS: LWM.S.A0000 - command: "readAttribute" - attribute: "SupportedModes" - response: - saveAs: supported_modes_dut - constraints: - type: list - minLength: 2 - - - label: - "Step 4: TH writes to the DUT the StartUpMode attribute with the - new_start_up_mode_th value" - PICS: LWM.S.A0002 - runIf: IsExpectedValue - command: "writeAttribute" - attribute: "StartUpMode" - arguments: - value: new_start_up_mode_th - - - label: "Step 5: TH reads from the DUT the OnMode attribute." - PICS: LWM.S.A0003 && LWM.S.A0002 - command: "readAttribute" - attribute: "OnMode" - response: - saveAs: old_on_mode_dut - - - label: - "Step 5: If startup_mode_dut is equal to old_on_mode_dut proceed to - step 6. Else proceed to step 8." - PICS: LWM.S.A0002 - cluster: "EqualityCommands" - command: "UnsignedNumberEquals" - arguments: - values: - - name: "Value1" - value: old_on_mode_dut - - name: "Value2" - value: startup_mode_dut - response: - - values: - - name: "Equals" - saveAs: Step5_IsExpectedValue - - - label: "Step 6: TH reads from the DUT the SupportedModes attribute." - PICS: LWM.S.A0000 && LWM.S.A0002 - runIf: Step5_IsExpectedValue - command: "readAttribute" - attribute: "SupportedModes" - response: - saveAs: Step6_supported_modes_dut - constraints: - type: list - minLength: 2 - - - label: - "Step 7: TH writes to the DUT the OnMode attribute with the - new_mode_th value" - PICS: LWM.S.A0003 - runIf: Step5_IsExpectedValue - command: "writeAttribute" - attribute: "OnMode" - arguments: - value: new_mode_th - - - label: "Step 8: TH reads from the DUT the OnMode attribute." - PICS: LWM.S.A0003 && MOD.S.F00 - command: "readAttribute" - attribute: "OnMode" - response: - saveAs: new_on_mode_dut - - - label: - "Step 9: TH writes to the DUT the StartUpOnOff attribute with the - value 1." - PICS: OO.S.A4003 - cluster: "On/Off" - command: "writeAttribute" - attribute: "StartUpOnOff" - arguments: - value: 1 - - - label: "Step 10: Physically power cycle the device" - verification: | - Physically power cycle the device. - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_USER_PROMPT - arguments: - values: - - name: "message" - value: "Please enter 'y' for success" - - name: "expectedValue" - value: "y" - - - label: "Wait for the commissioned device to be retrieved" - cluster: "DelayCommands" - command: "WaitForCommissionee" - arguments: - values: - - name: "nodeId" - value: nodeId - - - label: "Step 11: TH reads from the DUT the StartUpMode attribute." - PICS: LWM.S.A0002 && PICS_USER_PROMPT - command: "readAttribute" - attribute: "StartUpMode" - response: - constraints: - anyOf: [new_start_up_mode_th, startup_mode_dut] - - - label: "Step 12: TH reads from the DUT the CurrentMode attribute." - PICS: LWM.S.A0001 && PICS_USER_PROMPT - command: "readAttribute" - attribute: "CurrentMode" - response: - value: new_on_mode_dut diff --git a/src/app/tests/suites/certification/Test_TC_MOD_1_3.yaml b/src/app/tests/suites/certification/Test_TC_MOD_1_3.yaml deleted file mode 100644 index 51f389b6afaffc..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_MOD_1_3.yaml +++ /dev/null @@ -1,722 +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: 81.1.3. [TC-MOD-1.3] Attributes with client as DUT - -PICS: - - MOD.C - - MOD.C.AM-READ - - MOD.C.AO-READ - - MOD.C.AM-WRITE - - MOD.C.AO-WRITE - -config: - nodeId: 0x12344321 - cluster: "Basic Information" - endpoint: 0 - -tests: - - label: - "Step 1: DUT reads all supported mandatory attributes from TH one at a - time in a manufacturer specific order" - PICS: MOD.C.AM-READ - verification: | - ./chip-tool modeselect read supported-modes 1 1 - - Verify the "SupportedModes response" on the TH (all-cluster-app) log: - - [1666940683.282921][9718:9718] CHIP:DMG: ReportDataMessage = - [1666940683.282923][9718:9718] CHIP:DMG: { - [1666940683.282925][9718:9718] CHIP:DMG: AttributeReportIBs = - [1666940683.282928][9718:9718] CHIP:DMG: [ - [1666940683.282929][9718:9718] CHIP:DMG: AttributeReportIB = - [1666940683.282933][9718:9718] CHIP:DMG: { - [1666940683.282935][9718:9718] CHIP:DMG: AttributeDataIB = - [1666940683.282937][9718:9718] CHIP:DMG: { - [1666940683.282939][9718:9718] CHIP:DMG: DataVersion = 0xb4a9126f, - [1666940683.282941][9718:9718] CHIP:DMG: AttributePathIB = - [1666940683.282944][9718:9718] CHIP:DMG: { - [1666940683.282946][9718:9718] CHIP:DMG: Endpoint = 0x1, - [1666940683.282948][9718:9718] CHIP:DMG: Cluster = 0x50, - [1666940683.282950][9718:9718] CHIP:DMG: Attribute = 0x0000_0002, - [1666940683.282952][9718:9718] CHIP:DMG: } - [1666940683.282955][9718:9718] CHIP:DMG: - [1666940683.282957][9718:9718] CHIP:DMG: Data = [ - [1666940683.282959][9718:9718] CHIP:DMG: - [1666940683.282962][9718:9718] CHIP:DMG: ], - [1666940683.282964][9718:9718] CHIP:DMG: }, - [1666940683.282966][9718:9718] CHIP:DMG: - [1666940683.282968][9718:9718] CHIP:DMG: }, - [1666940683.282972][9718:9718] CHIP:DMG: - [1666940683.282974][9718:9718] CHIP:DMG: AttributeReportIB = - [1666940683.282978][9718:9718] CHIP:DMG: { - [1666940683.282980][9718:9718] CHIP:DMG: AttributeDataIB = - [1666940683.282982][9718:9718] CHIP:DMG: { - [1666940683.282984][9718:9718] CHIP:DMG: DataVersion = 0xb4a9126f, - [1666940683.282986][9718:9718] CHIP:DMG: AttributePathIB = - [1666940683.282988][9718:9718] CHIP:DMG: { - [1666940683.282990][9718:9718] CHIP:DMG: Endpoint = 0x1, - [1666940683.282992][9718:9718] CHIP:DMG: Cluster = 0x50, - [1666940683.282995][9718:9718] CHIP:DMG: Attribute = 0x0000_0002, - [1666940683.282997][9718:9718] CHIP:DMG: ListIndex = Null, - [1666940683.282999][9718:9718] CHIP:DMG: } - [1666940683.283001][9718:9718] CHIP:DMG: - [1666940683.283003][9718:9718] CHIP:DMG: Data = - [1666940683.283005][9718:9718] CHIP:DMG: { - [1666940683.283008][9718:9718] CHIP:DMG: 0x0 = "Black" (5 chars), - [1666940683.283011][9718:9718] CHIP:DMG: 0x1 = 0, - [1666940683.283013][9718:9718] CHIP:DMG: 0x2 = [ - [1666940683.283015][9718:9718] CHIP:DMG: - [1666940683.283020][9718:9718] CHIP:DMG: { - [1666940683.283022][9718:9718] CHIP:DMG: 0x0 = 0, - [1666940683.283025][9718:9718] CHIP:DMG: 0x1 = 0, - [1666940683.283027][9718:9718] CHIP:DMG: }, - [1666940683.283030][9718:9718] CHIP:DMG: ], - [1666940683.283032][9718:9718] CHIP:DMG: }, - [1666940683.283034][9718:9718] CHIP:DMG: }, - [1666940683.283037][9718:9718] CHIP:DMG: - [1666940683.283039][9718:9718] CHIP:DMG: }, - [1666940683.283044][9718:9718] CHIP:DMG: - [1666940683.283046][9718:9718] CHIP:DMG: AttributeReportIB = - [1666940683.283049][9718:9718] CHIP:DMG: { - [1666940683.283051][9718:9718] CHIP:DMG: AttributeDataIB = - [1666940683.283053][9718:9718] CHIP:DMG: { - [1666940683.283055][9718:9718] CHIP:DMG: DataVersion = 0xb4a9126f, - [1666940683.283057][9718:9718] CHIP:DMG: AttributePathIB = - [1666940683.283059][9718:9718] CHIP:DMG: { - [1666940683.283061][9718:9718] CHIP:DMG: Endpoint = 0x1, - [1666940683.283064][9718:9718] CHIP:DMG: Cluster = 0x50, - [1666940683.283066][9718:9718] CHIP:DMG: Attribute = 0x0000_0002, - [1666940683.283068][9718:9718] CHIP:DMG: ListIndex = Null, - [1666940683.283070][9718:9718] CHIP:DMG: } - [1666940683.283072][9718:9718] CHIP:DMG: - [1666940683.283074][9718:9718] CHIP:DMG: Data = - [1666940683.283076][9718:9718] CHIP:DMG: { - [1666940683.283079][9718:9718] CHIP:DMG: 0x0 = "Cappuccino" (10 chars), - [1666940683.283081][9718:9718] CHIP:DMG: 0x1 = 4, - [1666940683.283084][9718:9718] CHIP:DMG: 0x2 = [ - [1666940683.283086][9718:9718] CHIP:DMG: - [1666940683.283088][9718:9718] CHIP:DMG: { - [1666940683.283091][9718:9718] CHIP:DMG: 0x0 = 0, - [1666940683.283093][9718:9718] CHIP:DMG: 0x1 = 0, - [1666940683.283095][9718:9718] CHIP:DMG: }, - [1666940683.283098][9718:9718] CHIP:DMG: ], - [1666940683.283100][9718:9718] CHIP:DMG: }, - [1666940683.283102][9718:9718] CHIP:DMG: }, - [1666940683.283105][9718:9718] CHIP:DMG: - [1666940683.283107][9718:9718] CHIP:DMG: }, - [1666940683.283112][9718:9718] CHIP:DMG: - [1666940683.283114][9718:9718] CHIP:DMG: AttributeReportIB = - [1666940683.283117][9718:9718] CHIP:DMG: { - [1666940683.283119][9718:9718] CHIP:DMG: AttributeDataIB = - [1666940683.283121][9718:9718] CHIP:DMG: { - [1666940683.283123][9718:9718] CHIP:DMG: DataVersion = 0xb4a9126f, - [1666940683.283125][9718:9718] CHIP:DMG: AttributePathIB = - [1666940683.283128][9718:9718] CHIP:DMG: { - [1666940683.283130][9718:9718] CHIP:DMG: Endpoint = 0x1, - [1666940683.283132][9718:9718] CHIP:DMG: Cluster = 0x50, - [1666940683.283134][9718:9718] CHIP:DMG: Attribute = 0x0000_0002, - [1666940683.283136][9718:9718] CHIP:DMG: ListIndex = Null, - [1666940683.283138][9718:9718] CHIP:DMG: } - [1666940683.283141][9718:9718] CHIP:DMG: - [1666940683.283143][9718:9718] CHIP:DMG: Data = - [1666940683.283145][9718:9718] CHIP:DMG: { - [1666940683.283148][9718:9718] CHIP:DMG: 0x0 = "Espresso" (8 chars), - [1666940683.283150][9718:9718] CHIP:DMG: 0x1 = 7, - [1666940683.283152][9718:9718] CHIP:DMG: 0x2 = [ - [1666940683.283154][9718:9718] CHIP:DMG: - [1666940683.283157][9718:9718] CHIP:DMG: { - [1666940683.283159][9718:9718] CHIP:DMG: 0x0 = 0, - [1666940683.283161][9718:9718] CHIP:DMG: 0x1 = 0, - [1666940683.283164][9718:9718] CHIP:DMG: }, - [1666940683.283167][9718:9718] CHIP:DMG: ], - [1666940683.283169][9718:9718] CHIP:DMG: }, - [1666940683.283171][9718:9718] CHIP:DMG: }, - [1666940683.283174][9718:9718] CHIP:DMG: - [1666940683.283176][9718:9718] CHIP:DMG: }, - [1666940683.283179][9718:9718] CHIP:DMG: - [1666940683.283181][9718:9718] CHIP:DMG: ], - [1666940683.283188][9718:9718] CHIP:DMG: - [1666940683.283190][9718:9718] CHIP:DMG: SuppressResponse = true, - [1666940683.283192][9718:9718] CHIP:DMG: InteractionModelRevision = 1 - - - ./chip-tool modeselect read current-mode 1 1 - - Verify the "CurrentMode response" on the TH (all-cluster-app) log: - - [1666940720.150375][9718:9718] CHIP:DMG: ReportDataMessage = - [1666940720.150377][9718:9718] CHIP:DMG: { - [1666940720.150379][9718:9718] CHIP:DMG: AttributeReportIBs = - [1666940720.150382][9718:9718] CHIP:DMG: [ - [1666940720.150384][9718:9718] CHIP:DMG: AttributeReportIB = - [1666940720.150387][9718:9718] CHIP:DMG: { - [1666940720.150389][9718:9718] CHIP:DMG: AttributeDataIB = - [1666940720.150391][9718:9718] CHIP:DMG: { - [1666940720.150394][9718:9718] CHIP:DMG: DataVersion = 0xb4a9126f, - [1666940720.150396][9718:9718] CHIP:DMG: AttributePathIB = - [1666940720.150399][9718:9718] CHIP:DMG: { - [1666940720.150402][9718:9718] CHIP:DMG: Endpoint = 0x1, - [1666940720.150404][9718:9718] CHIP:DMG: Cluster = 0x50, - [1666940720.150406][9718:9718] CHIP:DMG: Attribute = 0x0000_0003, - [1666940720.150408][9718:9718] CHIP:DMG: } - [1666940720.150411][9718:9718] CHIP:DMG: - [1666940720.150414][9718:9718] CHIP:DMG: Data = 0, - [1666940720.150416][9718:9718] CHIP:DMG: }, - [1666940720.150419][9718:9718] CHIP:DMG: - [1666940720.150421][9718:9718] CHIP:DMG: }, - [1666940720.150424][9718:9718] CHIP:DMG: - [1666940720.150426][9718:9718] CHIP:DMG: ], - [1666940720.150429][9718:9718] CHIP:DMG: - [1666940720.150431][9718:9718] CHIP:DMG: SuppressResponse = true, - [1666940720.150433][9718:9718] CHIP:DMG: InteractionModelRevision = 1 - - ./chip-tool modeselect read standard-namespace 1 1 - - Verify the "StandardNamespace response" on the TH (all-cluster-app) log: - - 1668497274.561088][9289:9289] CHIP:DMG: ReportDataMessage = - [1668497274.561091][9289:9289] CHIP:DMG: { - [1668497274.561094][9289:9289] CHIP:DMG: AttributeReportIBs = - [1668497274.561100][9289:9289] CHIP:DMG: [ - [1668497274.561103][9289:9289] CHIP:DMG: AttributeReportIB = - [1668497274.561108][9289:9289] CHIP:DMG: { - [1668497274.561111][9289:9289] CHIP:DMG: AttributeDataIB = - [1668497274.561115][9289:9289] CHIP:DMG: { - [1668497274.561119][9289:9289] CHIP:DMG: DataVersion = 0x6c775d5f, - [1668497274.561123][9289:9289] CHIP:DMG: AttributePathIB = - [1668497274.561126][9289:9289] CHIP:DMG: { - [1668497274.561129][9289:9289] CHIP:DMG: Endpoint = 0x1, - [1668497274.561133][9289:9289] CHIP:DMG: Cluster = 0x50, - [1668497274.561137][9289:9289] CHIP:DMG: Attribute = 0x0000_0001, - [1668497274.561142][9289:9289] CHIP:DMG: } - [1668497274.561147][9289:9289] CHIP:DMG: - [1668497274.561153][9289:9289] CHIP:DMG: Data = 0, - [1668497274.561157][9289:9289] CHIP:DMG: }, - [1668497274.561162][9289:9289] CHIP:DMG: - [1668497274.561165][9289:9289] CHIP:DMG: }, - [1668497274.561169][9289:9289] CHIP:DMG: - [1668497274.561172][9289:9289] CHIP:DMG: ], - [1668497274.561177][9289:9289] CHIP:DMG: - [1668497274.561180][9289:9289] CHIP:DMG: SuppressResponse = true, - [1668497274.561183][9289:9289] CHIP:DMG: InteractionModelRevision = 1 - [1668497274.561185][9289:9289] CHIP:DMG: } - - ./chip-tool modeselect read description 1 1 - - Verify the "Description response" on the TH (all-cluster-app) log: - - [1668497391.858312][9289:9289] CHIP:DMG: ReportDataMessage = - [1668497391.858315][9289:9289] CHIP:DMG: { - [1668497391.858318][9289:9289] CHIP:DMG: AttributeReportIBs = - [1668497391.858324][9289:9289] CHIP:DMG: [ - [1668497391.858327][9289:9289] CHIP:DMG: AttributeReportIB = - [1668497391.858331][9289:9289] CHIP:DMG: { - [1668497391.858334][9289:9289] CHIP:DMG: AttributeDataIB = - [1668497391.858338][9289:9289] CHIP:DMG: { - [1668497391.858342][9289:9289] CHIP:DMG: DataVersion = 0x6c775d5f, - [1668497391.858345][9289:9289] CHIP:DMG: AttributePathIB = - [1668497391.858348][9289:9289] CHIP:DMG: { - [1668497391.858352][9289:9289] CHIP:DMG: Endpoint = 0x1, - [1668497391.858355][9289:9289] CHIP:DMG: Cluster = 0x50, - [1668497391.858359][9289:9289] CHIP:DMG: Attribute = 0x0000_0000, - [1668497391.858363][9289:9289] CHIP:DMG: } - [1668497391.858368][9289:9289] CHIP:DMG: - [1668497391.858372][9289:9289] CHIP:DMG: Data = "Coffee" (6 chars), - [1668497391.858375][9289:9289] CHIP:DMG: }, - [1668497391.858380][9289:9289] CHIP:DMG: - [1668497391.858383][9289:9289] CHIP:DMG: }, - [1668497391.858387][9289:9289] CHIP:DMG: - [1668497391.858390][9289:9289] CHIP:DMG: ], - [1668497391.858395][9289:9289] CHIP:DMG: - [1668497391.858398][9289:9289] CHIP:DMG: SuppressResponse = true, - [1668497391.858403][9289:9289] CHIP:DMG: InteractionModelRevision = 1 - [1668497391.858406][9289:9289] CHIP:DMG: } - disabled: true - - - label: - "Step 2: DUT reads all supported optional attributes from TH one at a - time in a manufacturer specific order" - PICS: MOD.C.AO-READ - verification: | - ./chip-tool modeselect read on-mode 1 1 - - Verify the "OnMode response" on the TH (all-cluster-app) log: - - [1666940828.515256][9718:9718] CHIP:DMG: ReportDataMessage = - [1666940828.515259][9718:9718] CHIP:DMG: { - [1666940828.515261][9718:9718] CHIP:DMG: AttributeReportIBs = - [1666940828.515265][9718:9718] CHIP:DMG: [ - [1666940828.515267][9718:9718] CHIP:DMG: AttributeReportIB = - [1666940828.515272][9718:9718] CHIP:DMG: { - [1666940828.515275][9718:9718] CHIP:DMG: AttributeDataIB = - [1666940828.515277][9718:9718] CHIP:DMG: { - [1666940828.515280][9718:9718] CHIP:DMG: DataVersion = 0xb4a9126f, - [1666940828.515282][9718:9718] CHIP:DMG: AttributePathIB = - [1666940828.515285][9718:9718] CHIP:DMG: { - [1666940828.515288][9718:9718] CHIP:DMG: Endpoint = 0x1, - [1666940828.515290][9718:9718] CHIP:DMG: Cluster = 0x50, - [1666940828.515293][9718:9718] CHIP:DMG: Attribute = 0x0000_0005, - [1666940828.515295][9718:9718] CHIP:DMG: } - [1666940828.515298][9718:9718] CHIP:DMG: - [1666940828.515301][9718:9718] CHIP:DMG: Data = NULL - [1666940828.515304][9718:9718] CHIP:DMG: }, - [1666940828.515307][9718:9718] CHIP:DMG: - [1666940828.515309][9718:9718] CHIP:DMG: }, - [1666940828.515312][9718:9718] CHIP:DMG: - [1666940828.515314][9718:9718] CHIP:DMG: ], - [1666940828.515317][9718:9718] CHIP:DMG: - [1666940828.515320][9718:9718] CHIP:DMG: SuppressResponse = true, - [1666940828.515322][9718:9718] CHIP:DMG: InteractionModelRevision = 1 - - ./chip-tool modeselect read start-up-mode 1 1 - - Verify the "StartUpMode response" on the TH (all-cluster-app) log: - - [1666940848.925393][9718:9718] CHIP:DMG: ReportDataMessage = - [1666940848.925396][9718:9718] CHIP:DMG: { - [1666940848.925397][9718:9718] CHIP:DMG: AttributeReportIBs = - [1666940848.925401][9718:9718] CHIP:DMG: [ - [1666940848.925403][9718:9718] CHIP:DMG: AttributeReportIB = - [1666940848.925407][9718:9718] CHIP:DMG: { - [1666940848.925410][9718:9718] CHIP:DMG: AttributeDataIB = - [1666940848.925414][9718:9718] CHIP:DMG: { - [1666940848.925416][9718:9718] CHIP:DMG: DataVersion = 0xb4a9126f, - [1666940848.925418][9718:9718] CHIP:DMG: AttributePathIB = - [1666940848.925421][9718:9718] CHIP:DMG: { - [1666940848.925423][9718:9718] CHIP:DMG: Endpoint = 0x1, - [1666940848.925428][9718:9718] CHIP:DMG: Cluster = 0x50, - [1666940848.925431][9718:9718] CHIP:DMG: Attribute = 0x0000_0004, - [1666940848.925433][9718:9718] CHIP:DMG: } - [1666940848.925436][9718:9718] CHIP:DMG: - [1666940848.925438][9718:9718] CHIP:DMG: Data = 0, - [1666940848.925440][9718:9718] CHIP:DMG: }, - [1666940848.925443][9718:9718] CHIP:DMG: - [1666940848.925445][9718:9718] CHIP:DMG: }, - [1666940848.925448][9718:9718] CHIP:DMG: - [1666940848.925450][9718:9718] CHIP:DMG: ], - [1666940848.925454][9718:9718] CHIP:DMG: - [1666940848.925456][9718:9718] CHIP:DMG: SuppressResponse = true, - [1666940848.925458][9718:9718] CHIP:DMG: InteractionModelRevision = 1 - disabled: true - - - label: - "Step 3: DUT writes a suitable value to all supported mandatory - attributes on the TH one at a time in a manufacturer specific order" - PICS: MOD.C.AM-WRITE - verification: | - This cluster doesn't have any writable attributes - disabled: true - - - label: - "Step 4: DUT writes a suitable value to all supported optional - attributes on the TH one at a time in a manufacturer specific order" - PICS: MOD.C.AO-WRITE - verification: | - ./chip-tool modeselect write on-mode 0 1 1 - - Verify the "WriteRequestMessage" on TH(all-cluster-app) log: - - WriteRequestMessage = - [1673335946.283857][10561:10561] CHIP:DMG: { - [1673335946.283866][10561:10561] CHIP:DMG: suppressResponse = false, - [1673335946.283878][10561:10561] CHIP:DMG: timedRequest = false, - [1673335946.283887][10561:10561] CHIP:DMG: AttributeDataIBs = - [1673335946.283905][10561:10561] CHIP:DMG: [ - [1673335946.283914][10561:10561] CHIP:DMG: AttributeDataIB = - [1673335946.283926][10561:10561] CHIP:DMG: { - [1673335946.283935][10561:10561] CHIP:DMG: AttributePathIB = - [1673335946.283947][10561:10561] CHIP:DMG: { - [1673335946.283959][10561:10561] CHIP:DMG: Endpoint = 0x1, - [1673335946.283971][10561:10561] CHIP:DMG: Cluster = 0x50, - [1673335946.283983][10561:10561] CHIP:DMG: Attribute = 0x0000_0005, - [1673335946.283994][10561:10561] CHIP:DMG: } - [1673335946.284008][10561:10561] CHIP:DMG: - [1673335946.284022][10561:10561] CHIP:DMG: Data = 0, - [1673335946.284032][10561:10561] CHIP:DMG: }, - [1673335946.284046][10561:10561] CHIP:DMG: - [1673335946.284055][10561:10561] CHIP:DMG: ], - [1673335946.284070][10561:10561] CHIP:DMG: - [1673335946.284081][10561:10561] CHIP:DMG: moreChunkedMessages = false, - [1673335946.284091][10561:10561] CHIP:DMG: InteractionModelRevision = 1 - [1673335946.284099][10561:10561] CHIP:DMG: }, - - ./chip-tool modeselect write start-up-mode 0 1 1 - - Verify the "WriteRequestMessage" on TH(all-cluster-app) log: - - WriteRequestMessage = - [1673336054.600463][10561:10561] CHIP:DMG: { - [1673336054.600470][10561:10561] CHIP:DMG: suppressResponse = false, - [1673336054.600479][10561:10561] CHIP:DMG: timedRequest = false, - [1673336054.600486][10561:10561] CHIP:DMG: AttributeDataIBs = - [1673336054.600501][10561:10561] CHIP:DMG: [ - [1673336054.600509][10561:10561] CHIP:DMG: AttributeDataIB = - [1673336054.600521][10561:10561] CHIP:DMG: { - [1673336054.600531][10561:10561] CHIP:DMG: AttributePathIB = - [1673336054.600544][10561:10561] CHIP:DMG: { - [1673336054.600557][10561:10561] CHIP:DMG: Endpoint = 0x1, - [1673336054.600569][10561:10561] CHIP:DMG: Cluster = 0x50, - [1673336054.600582][10561:10561] CHIP:DMG: Attribute = 0x0000_0004, - [1673336054.600593][10561:10561] CHIP:DMG: } - [1673336054.600608][10561:10561] CHIP:DMG: - [1673336054.600621][10561:10561] CHIP:DMG: Data = 0, - [1673336054.600631][10561:10561] CHIP:DMG: }, - [1673336054.600646][10561:10561] CHIP:DMG: - [1673336054.600656][10561:10561] CHIP:DMG: ], - [1673336054.600673][10561:10561] CHIP:DMG: - [1673336054.600683][10561:10561] CHIP:DMG: moreChunkedMessages = false, - [1673336054.600695][10561:10561] CHIP:DMG: InteractionModelRevision = 1 - [1673336054.600704][10561:10561] CHIP:DMG: }, - disabled: true - - - label: - "Step 5: Configure TH such that it implements mandatory and none of - the optional attributes of the server-side of the cluster, and that it - also reflects this in global attributes such as FeatureMap and - AttributeList. Commission DUT to TH again" - verification: | - ./chip-tool modeselect read attribute-list 1 1 - - Verify the "AttributeList response" on the TH (all-cluster-minimal-app) log: - - [1689750639.773775][3545:3547] CHIP:DMG: ReportDataMessage = - [1689750639.773815][3545:3547] CHIP:DMG: { - [1689750639.773846][3545:3547] CHIP:DMG: AttributeReportIBs = - [1689750639.773896][3545:3547] CHIP:DMG: [ - [1689750639.773928][3545:3547] CHIP:DMG: AttributeReportIB = - [1689750639.773980][3545:3547] CHIP:DMG: { - [1689750639.774014][3545:3547] CHIP:DMG: AttributeDataIB = - [1689750639.774052][3545:3547] CHIP:DMG: { - [1689750639.774093][3545:3547] CHIP:DMG: DataVersion = 0x346e22fd, - [1689750639.774132][3545:3547] CHIP:DMG: AttributePathIB = - [1689750639.774174][3545:3547] CHIP:DMG: { - [1689750639.774217][3545:3547] CHIP:DMG: Endpoint = 0x1, - [1689750639.774261][3545:3547] CHIP:DMG: Cluster = 0x50, - [1689750639.774304][3545:3547] CHIP:DMG: Attribute = 0x0000_FFFB, - [1689750639.774347][3545:3547] CHIP:DMG: } - [1689750639.774390][3545:3547] CHIP:DMG: - [1689750639.774430][3545:3547] CHIP:DMG: Data = [ - [1689750639.774515][3545:3547] CHIP:DMG: 0, 1, 2, 3, 65528, 65529, 65530, 65531, 65532, 65533, - [1689750639.774565][3545:3547] CHIP:DMG: ], - [1689750639.774604][3545:3547] CHIP:DMG: }, - [1689750639.774652][3545:3547] CHIP:DMG: - [1689750639.774685][3545:3547] CHIP:DMG: }, - [1689750639.774731][3545:3547] CHIP:DMG: - [1689750639.774761][3545:3547] CHIP:DMG: ], - [1689750639.774804][3545:3547] CHIP:DMG: - [1689750639.774835][3545:3547] CHIP:DMG: SuppressResponse = true, - [1689750639.774867][3545:3547] CHIP:DMG: InteractionModelRevision = 1 - [1689750639.774896][3545:3547] CHIP:DMG: } - - - ./chip-tool modeselect read feature-map 1 1 - - Verify the " FeatureMap " on the TH (all-cluster-minimal-app) log: - - [1666943338.908026][12769:12769] CHIP:DMG: ReportDataMessage = - [1666943338.908028][12769:12769] CHIP:DMG: { - [1666943338.908031][12769:12769] CHIP:DMG: AttributeReportIBs = - [1666943338.908035][12769:12769] CHIP:DMG: [ - [1666943338.908038][12769:12769] CHIP:DMG: AttributeReportIB = - [1666943338.908042][12769:12769] CHIP:DMG: { - [1666943338.908045][12769:12769] CHIP:DMG: AttributeDataIB = - [1666943338.908048][12769:12769] CHIP:DMG: { - [1666943338.908051][12769:12769] CHIP:DMG: DataVersion = 0x5fb921d0, - [1666943338.908054][12769:12769] CHIP:DMG: AttributePathIB = - [1666943338.908057][12769:12769] CHIP:DMG: { - [1666943338.908060][12769:12769] CHIP:DMG: Endpoint = 0x1, - [1666943338.908064][12769:12769] CHIP:DMG: Cluster = 0x50, - [1666943338.908067][12769:12769] CHIP:DMG: Attribute = 0x0000_FFFC, - [1666943338.908070][12769:12769] CHIP:DMG: } - [1666943338.908074][12769:12769] CHIP:DMG: - [1666943338.908077][12769:12769] CHIP:DMG: Data = 0, - [1666943338.908080][12769:12769] CHIP:DMG: }, - [1666943338.908084][12769:12769] CHIP:DMG: - [1666943338.908086][12769:12769] CHIP:DMG: }, - [1666943338.908090][12769:12769] CHIP:DMG: - [1666943338.908092][12769:12769] CHIP:DMG: ], - [1666943338.908096][12769:12769] CHIP:DMG: - [1666943338.908099][12769:12769] CHIP:DMG: SuppressResponse = true, - [1666943338.908102][12769:12769] CHIP:DMG: InteractionModelRevision = 1 - [1666943338.908104][12769:12769] CHIP:DMG: } - - - ./chip-tool modeselect read supported-modes 1 1 - - Verify the "SupportedModes response" on the TH (all-cluster-minimal-app) log: - - 1666943362.813636][12769:12769] CHIP:DMG: ReportDataMessage = - [1666943362.813638][12769:12769] CHIP:DMG: { - [1666943362.813640][12769:12769] CHIP:DMG: AttributeReportIBs = - [1666943362.813643][12769:12769] CHIP:DMG: [ - [1666943362.813645][12769:12769] CHIP:DMG: AttributeReportIB = - [1666943362.813650][12769:12769] CHIP:DMG: { - [1666943362.813652][12769:12769] CHIP:DMG: AttributeDataIB = - [1666943362.813655][12769:12769] CHIP:DMG: { - [1666943362.813657][12769:12769] CHIP:DMG: DataVersion = 0x5fb921d0, - [1666943362.813659][12769:12769] CHIP:DMG: AttributePathIB = - [1666943362.813662][12769:12769] CHIP:DMG: { - [1666943362.813664][12769:12769] CHIP:DMG: Endpoint = 0x1, - [1666943362.813666][12769:12769] CHIP:DMG: Cluster = 0x50, - [1666943362.813669][12769:12769] CHIP:DMG: Attribute = 0x0000_0002, - [1666943362.813671][12769:12769] CHIP:DMG: } - [1666943362.813674][12769:12769] CHIP:DMG: - [1666943362.813676][12769:12769] CHIP:DMG: Data = [ - [1666943362.813679][12769:12769] CHIP:DMG: - [1666943362.813681][12769:12769] CHIP:DMG: ], - [1666943362.813683][12769:12769] CHIP:DMG: }, - [1666943362.813686][12769:12769] CHIP:DMG: - [1666943362.813688][12769:12769] CHIP:DMG: }, - [1666943362.813692][12769:12769] CHIP:DMG: - [1666943362.813694][12769:12769] CHIP:DMG: AttributeReportIB = - [1666943362.813699][12769:12769] CHIP:DMG: { - [1666943362.813701][12769:12769] CHIP:DMG: AttributeDataIB = - [1666943362.813703][12769:12769] CHIP:DMG: { - [1666943362.813705][12769:12769] CHIP:DMG: DataVersion = 0x5fb921d0, - [1666943362.813707][12769:12769] CHIP:DMG: AttributePathIB = - [1666943362.813709][12769:12769] CHIP:DMG: { - [1666943362.813711][12769:12769] CHIP:DMG: Endpoint = 0x1, - [1666943362.813714][12769:12769] CHIP:DMG: Cluster = 0x50, - [1666943362.813716][12769:12769] CHIP:DMG: Attribute = 0x0000_0002, - [1666943362.813719][12769:12769] CHIP:DMG: ListIndex = Null, - [1666943362.813721][12769:12769] CHIP:DMG: } - [1666943362.813725][12769:12769] CHIP:DMG: - [1666943362.813727][12769:12769] CHIP:DMG: Data = - [1666943362.813729][12769:12769] CHIP:DMG: { - [1666943362.813732][12769:12769] CHIP:DMG: 0x0 = "Black" (5 chars), - [1666943362.813735][12769:12769] CHIP:DMG: 0x1 = 0, - [1666943362.813737][12769:12769] CHIP:DMG: 0x2 = [ - [1666943362.813740][12769:12769] CHIP:DMG: - [1666943362.813742][12769:12769] CHIP:DMG: { - [1666943362.813745][12769:12769] CHIP:DMG: 0x0 = 0, - [1666943362.813748][12769:12769] CHIP:DMG: 0x1 = 0, - [1666943362.813750][12769:12769] CHIP:DMG: }, - [1666943362.813752][12769:12769] CHIP:DMG: ], - [1666943362.813755][12769:12769] CHIP:DMG: }, - [1666943362.813756][12769:12769] CHIP:DMG: }, - [1666943362.813760][12769:12769] CHIP:DMG: - [1666943362.813762][12769:12769] CHIP:DMG: }, - [1666943362.813768][12769:12769] CHIP:DMG: - [1666943362.813770][12769:12769] CHIP:DMG: AttributeReportIB = - [1666943362.813775][12769:12769] CHIP:DMG: { - [1666943362.813776][12769:12769] CHIP:DMG: AttributeDataIB = - [1666943362.813779][12769:12769] CHIP:DMG: { - [1666943362.813781][12769:12769] CHIP:DMG: DataVersion = 0x5fb921d0, - [1666943362.813783][12769:12769] CHIP:DMG: AttributePathIB = - [1666943362.813786][12769:12769] CHIP:DMG: { - [1666943362.813788][12769:12769] CHIP:DMG: Endpoint = 0x1, - [1666943362.813790][12769:12769] CHIP:DMG: Cluster = 0x50, - [1666943362.813793][12769:12769] CHIP:DMG: Attribute = 0x0000_0002, - [1666943362.813795][12769:12769] CHIP:DMG: ListIndex = Null, - [1666943362.813797][12769:12769] CHIP:DMG: } - [1666943362.813801][12769:12769] CHIP:DMG: - [1666943362.813803][12769:12769] CHIP:DMG: Data = - [1666943362.813805][12769:12769] CHIP:DMG: { - [1666943362.813807][12769:12769] CHIP:DMG: 0x0 = "Cappuccino" (10 chars), - [1666943362.813810][12769:12769] CHIP:DMG: 0x1 = 4, - [1666943362.813812][12769:12769] CHIP:DMG: 0x2 = [ - [1666943362.813814][12769:12769] CHIP:DMG: - [1666943362.813817][12769:12769] CHIP:DMG: { - [1666943362.813820][12769:12769] CHIP:DMG: 0x0 = 0, - [1666943362.813823][12769:12769] CHIP:DMG: 0x1 = 0, - [1666943362.813826][12769:12769] CHIP:DMG: }, - [1666943362.813828][12769:12769] CHIP:DMG: ], - [1666943362.813830][12769:12769] CHIP:DMG: }, - [1666943362.813832][12769:12769] CHIP:DMG: }, - [1666943362.813836][12769:12769] CHIP:DMG: - [1666943362.813838][12769:12769] CHIP:DMG: }, - [1666943362.813844][12769:12769] CHIP:DMG: - [1666943362.813846][12769:12769] CHIP:DMG: AttributeReportIB = - [1666943362.813850][12769:12769] CHIP:DMG: { - [1666943362.813852][12769:12769] CHIP:DMG: AttributeDataIB = - [1666943362.813855][12769:12769] CHIP:DMG: { - [1666943362.813857][12769:12769] CHIP:DMG: DataVersion = 0x5fb921d0, - [1666943362.813860][12769:12769] CHIP:DMG: AttributePathIB = - [1666943362.813862][12769:12769] CHIP:DMG: { - [1666943362.813864][12769:12769] CHIP:DMG: Endpoint = 0x1, - [1666943362.813866][12769:12769] CHIP:DMG: Cluster = 0x50, - [1666943362.813869][12769:12769] CHIP:DMG: Attribute = 0x0000_0002, - [1666943362.813871][12769:12769] CHIP:DMG: ListIndex = Null, - [1666943362.813873][12769:12769] CHIP:DMG: } - [1666943362.813876][12769:12769] CHIP:DMG: - [1666943362.813878][12769:12769] CHIP:DMG: Data = - [1666943362.813881][12769:12769] CHIP:DMG: { - [1666943362.813883][12769:12769] CHIP:DMG: 0x0 = "Espresso" (8 chars), - [1666943362.813886][12769:12769] CHIP:DMG: 0x1 = 7, - [1666943362.813888][12769:12769] CHIP:DMG: 0x2 = [ - [1666943362.813890][12769:12769] CHIP:DMG: - [1666943362.813893][12769:12769] CHIP:DMG: { - [1666943362.813895][12769:12769] CHIP:DMG: 0x0 = 0, - [1666943362.813898][12769:12769] CHIP:DMG: 0x1 = 0, - [1666943362.813900][12769:12769] CHIP:DMG: }, - [1666943362.813903][12769:12769] CHIP:DMG: ], - [1666943362.813905][12769:12769] CHIP:DMG: }, - [1666943362.813907][12769:12769] CHIP:DMG: }, - [1666943362.813911][12769:12769] CHIP:DMG: - [1666943362.813913][12769:12769] CHIP:DMG: }, - [1666943362.813917][12769:12769] CHIP:DMG: - [1666943362.813918][12769:12769] CHIP:DMG: ], - [1666943362.813926][12769:12769] CHIP:DMG: - [1666943362.813928][12769:12769] CHIP:DMG: SuppressResponse = true, - [1666943362.813931][12769:12769] CHIP:DMG: InteractionModelRevision = 1 - [1666943362.813934][12769:12769] CHIP:DMG: } - [1666943362.813936][12769:12769] CHIP:DMG: - - - ./chip-tool modeselect read current-mode 1 1 - - Verify the "CurrentMode response" on the TH (all-cluster-minimal-app) log: - - 1666943427.104790][12769:12769] CHIP:DMG: ReportDataMessage = - [1666943427.104798][12769:12769] CHIP:DMG: { - [1666943427.104804][12769:12769] CHIP:DMG: AttributeReportIBs = - [1666943427.104814][12769:12769] CHIP:DMG: [ - [1666943427.104820][12769:12769] CHIP:DMG: AttributeReportIB = - [1666943427.104838][12769:12769] CHIP:DMG: { - [1666943427.104846][12769:12769] CHIP:DMG: AttributeDataIB = - [1666943427.104858][12769:12769] CHIP:DMG: { - [1666943427.104869][12769:12769] CHIP:DMG: DataVersion = 0x5fb921d0, - [1666943427.104880][12769:12769] CHIP:DMG: AttributePathIB = - [1666943427.104891][12769:12769] CHIP:DMG: { - [1666943427.104904][12769:12769] CHIP:DMG: Endpoint = 0x1, - [1666943427.104916][12769:12769] CHIP:DMG: Cluster = 0x50, - [1666943427.104931][12769:12769] CHIP:DMG: Attribute = 0x0000_0003, - [1666943427.104939][12769:12769] CHIP:DMG: } - [1666943427.104948][12769:12769] CHIP:DMG: - [1666943427.104956][12769:12769] CHIP:DMG: Data = 0, - [1666943427.104963][12769:12769] CHIP:DMG: }, - [1666943427.104974][12769:12769] CHIP:DMG: - [1666943427.104981][12769:12769] CHIP:DMG: }, - [1666943427.104991][12769:12769] CHIP:DMG: - [1666943427.105001][12769:12769] CHIP:DMG: ], - [1666943427.105017][12769:12769] CHIP:DMG: - [1666943427.105027][12769:12769] CHIP:DMG: SuppressResponse = true, - [1666943427.105037][12769:12769] CHIP:DMG: InteractionModelRevision = 1 - [1666943427.105045][12769:12769] CHIP:DMG: } - - - ./chip-tool modeselect read standard-namespace 1 1 - - Verify the "StandardNamespace response" on the TH (all-cluster-minimal-app) log: - - [1666943453.966995][12769:12769] CHIP:DMG: ReportDataMessage = - [1666943453.966997][12769:12769] CHIP:DMG: { - [1666943453.966999][12769:12769] CHIP:DMG: AttributeReportIBs = - [1666943453.967003][12769:12769] CHIP:DMG: [ - [1666943453.967005][12769:12769] CHIP:DMG: AttributeReportIB = - [1666943453.967008][12769:12769] CHIP:DMG: { - [1666943453.967010][12769:12769] CHIP:DMG: AttributeDataIB = - [1666943453.967014][12769:12769] CHIP:DMG: { - [1666943453.967017][12769:12769] CHIP:DMG: DataVersion = 0x5fb921d0, - [1666943453.967019][12769:12769] CHIP:DMG: AttributePathIB = - [1666943453.967021][12769:12769] CHIP:DMG: { - [1666943453.967025][12769:12769] CHIP:DMG: Endpoint = 0x1, - [1666943453.967027][12769:12769] CHIP:DMG: Cluster = 0x50, - [1666943453.967029][12769:12769] CHIP:DMG: Attribute = 0x0000_0001, - [1666943453.967033][12769:12769] CHIP:DMG: } - [1666943453.967035][12769:12769] CHIP:DMG: - [1666943453.967038][12769:12769] CHIP:DMG: Data = 0, - [1666943453.967040][12769:12769] CHIP:DMG: }, - [1666943453.967043][12769:12769] CHIP:DMG: - [1666943453.967045][12769:12769] CHIP:DMG: }, - [1666943453.967047][12769:12769] CHIP:DMG: - [1666943453.967050][12769:12769] CHIP:DMG: ], - [1666943453.967053][12769:12769] CHIP:DMG: - [1666943453.967055][12769:12769] CHIP:DMG: SuppressResponse = true, - [1666943453.967057][12769:12769] CHIP:DMG: InteractionModelRevision = 1 - - ./chip-tool modeselect read description 1 1 - - Verify the "Description response" on the TH (all-cluster-minimal-app) log: - - [1666941093.845092][9718:9718] CHIP:DMG: ReportDataMessage = - [1666941093.845094][9718:9718] CHIP:DMG: { - [1666941093.845096][9718:9718] CHIP:DMG: AttributeReportIBs = - [1666941093.845099][9718:9718] CHIP:DMG: [ - [1666941093.845101][9718:9718] CHIP:DMG: AttributeReportIB = - [1666941093.845105][9718:9718] CHIP:DMG: { - [1666941093.845107][9718:9718] CHIP:DMG: AttributeDataIB = - [1666941093.845110][9718:9718] CHIP:DMG: { - [1666941093.845112][9718:9718] CHIP:DMG: DataVersion = 0xb4a9126f, - [1666941093.845115][9718:9718] CHIP:DMG: AttributePathIB = - [1666941093.845117][9718:9718] CHIP:DMG: { - [1666941093.845119][9718:9718] CHIP:DMG: Endpoint = 0x1, - [1666941093.845122][9718:9718] CHIP:DMG: Cluster = 0x50, - [1666941093.845124][9718:9718] CHIP:DMG: Attribute = 0x0000_0000, - [1666941093.845126][9718:9718] CHIP:DMG: } - [1666941093.845129][9718:9718] CHIP:DMG: - [1666941093.845132][9718:9718] CHIP:DMG: Data = "Coffee" (6 chars), - [1666941093.845134][9718:9718] CHIP:DMG: }, - [1666941093.845137][9718:9718] CHIP:DMG: - [1666941093.845139][9718:9718] CHIP:DMG: }, - [1666941093.845142][9718:9718] CHIP:DMG: - [1666941093.845144][9718:9718] CHIP:DMG: ], - [1666941093.845147][9718:9718] CHIP:DMG: - [1666941093.845149][9718:9718] CHIP:DMG: SuppressResponse = true, - [1666941093.845152][9718:9718] CHIP:DMG: InteractionModelRevision = 1 - disabled: true - - - label: - "Step 6: DUT reads all supported optional attributes from TH one at a - time in a manufacturer specific order" - PICS: MOD.C.AO-READ - verification: | - ./chip-tool modeselect read on-mode 1 1 - - Verify status response as UNSUPPORTED_ATTRIBUTE on the TH (all-cluster-minimal-app) log: - - [1684929635.593547][20278:20280] CHIP:DMG: StatusIB = - [1684929635.593551][20278:20280] CHIP:DMG: { - [1684929635.593555][20278:20280] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1684929635.593558][20278:20280] CHIP:DMG: }, - - - ./chip-tool modeselect read start-up-mode 1 1 - - Verify status response as UNSUPPORTED_ATTRIBUTE on the TH (all-cluster-minimal-app) log: - - [1684929665.428885][20285:20287] CHIP:DMG: StatusIB = - [1684929665.428891][20285:20287] CHIP:DMG: { - [1684929665.428895][20285:20287] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1684929665.428900][20285:20287] CHIP:DMG: }, - disabled: true - - - label: - "Step 7: DUT writes a suitable value to all supported optional - attributes on the TH one at a time in a manufacturer specific order" - PICS: MOD.C.AO-WRITE - verification: | - ./chip-tool modeselect write on-mode 0 1 1 - - Verify status response as UNSUPPORTED_ATTRIBUTE on the TH (all-cluster-minimal-app) log: - - [1684929889.679386][20348:20350] CHIP:DMG: StatusIB = - [1684929889.679389][20348:20350] CHIP:DMG: { - [1684929889.679392][20348:20350] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1684929889.679395][20348:20350] CHIP:DMG: }, - [1684929889.679398][20348:20350] CHIP:DMG: - - - ./chip-tool modeselect write start-up-mode 0 1 1 - - Verify status response as UNSUPPORTED_ATTRIBUTE on the TH (all-cluster-minimal-app) log: - - [1684929889.679386][20348:20350] CHIP:DMG: StatusIB = - [1684929889.679389][20348:20350] CHIP:DMG: { - [1684929889.679392][20348:20350] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1684929889.679395][20348:20350] CHIP:DMG: }, - [1684929889.679398][20348:20350] CHIP:DMG: - disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_OTCCM_3_1.yaml b/src/app/tests/suites/certification/Test_TC_OTCCM_3_1.yaml deleted file mode 100644 index 3d886d15ab6253..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_OTCCM_3_1.yaml +++ /dev/null @@ -1,131 +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. - -name: 3.4 [TC-OTCCM-3.1] On Mode functionality with DUT as Server - -PICS: - - OTCCM.S.A0003 - - MOD.S.F00 - - OO.S.C00.Rsp - - OO.S.C01.Rsp - -config: - nodeId: 0x12344321 - cluster: "Oven Mode" - endpoint: 1 - - ConfigureOnMode: - type: int8u - defaultValue: 0 - new_mode_th: - type: int8u - defaultValue: 2 - -tests: - - label: - "Step 1: Commission DUT to TH (can be skipped if done in a preceding - test)." - cluster: "DelayCommands" - command: "WaitForCommissionee" - arguments: - values: - - name: "nodeId" - value: nodeId - - - label: - "Precondition: TH writes from the DUT the OnMode attribute.NOTE: To - execute this test case set onmode to any integer value because as - default it value has null." - PICS: OTCCM.S.A0003 && MOD.S.F00 - command: "writeAttribute" - attribute: "OnMode" - arguments: - value: ConfigureOnMode - - - label: "Step 2: TH reads from the DUT the OnMode attribute." - PICS: OTCCM.S.A0003 && MOD.S.F00 - command: "readAttribute" - attribute: "OnMode" - response: - saveAs: on_mode_dut - constraints: - type: int8u - - - label: "Step 3: TH reads from the DUT the CurrentMode attribute." - PICS: OTCCM.S.A0001 && MOD.S.F00 - command: "readAttribute" - attribute: "CurrentMode" - response: - saveAs: old_current_mode_dut - constraints: - type: int8u - - - label: - "If on_mode_dut is equal to old_current_mode_dut proceed to step 4. - Else proceed to step 6." - PICS: OTCCM.S.A0001 && MOD.S.F00 && OTCCM.S.A0003 - cluster: "EqualityCommands" - command: "UnsignedNumberEquals" - arguments: - values: - - name: "Value1" - value: on_mode_dut - - name: "Value2" - value: old_current_mode_dut - response: - - values: - - name: "Equals" - saveAs: IsExpectedValue - - - label: "Step 4: TH reads from the DUT the SupportedModes attribute." - runIf: IsExpectedValue - PICS: OTCCM.S.A0000 && MOD.S.F00 - command: "readAttribute" - attribute: "SupportedModes" - response: - constraints: - type: list - minLength: 2 - - - label: - "Step 5: TH sends a ChangeToMode command to the DUT with NewMode set - to new_mode_th" - runIf: IsExpectedValue - PICS: OTCCM.S.C00.Rsp && MOD.S.F00 - command: "ChangeToMode" - arguments: - values: - - name: "NewMode" - value: new_mode_th - response: - values: - - name: "Status" - value: 0x00 - - - label: "Step 6:TH sends a Off command to the DUT" - PICS: OO.S.C00.Rsp && MOD.S.F00 - cluster: "On/Off" - command: "Off" - - - label: "Step 7:TH sends a On command to the DUT" - PICS: OO.S.C01.Rsp && MOD.S.F00 - cluster: "On/Off" - command: "On" - - - label: "Step 8: TH reads from the DUT the CurrentMode attribute." - PICS: OTCCM.S.A0001 && MOD.S.F00 - command: "readAttribute" - attribute: "CurrentMode" - response: - value: on_mode_dut diff --git a/src/app/tests/suites/certification/Test_TC_OTCCM_3_2.yaml b/src/app/tests/suites/certification/Test_TC_OTCCM_3_2.yaml deleted file mode 100644 index e1220de758e875..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_OTCCM_3_2.yaml +++ /dev/null @@ -1,171 +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. - -name: 3.5 [TC-OTCCM-3.2] Startup Mode functionality with DUT as Server - -PICS: - - OTCCM.S.A0002 - -config: - nodeId: 0x12344321 - cluster: "Oven Mode" - endpoint: 1 - - new_start-up_mode_th: - type: int8u - defaultValue: 0 - new_mode_th: - type: int8u - defaultValue: 1 - -tests: - - label: - "Step 1: Commission DUT to TH (can be skipped if done in a preceding - test)." - cluster: "DelayCommands" - command: "WaitForCommissionee" - arguments: - values: - - name: "nodeId" - value: nodeId - - - label: "Step 2: TH reads from the DUT the StartUpMode attribute." - PICS: OTCCM.S.A0002 - command: "readAttribute" - attribute: "StartUpMode" - response: - saveAs: startup_mode_dut - - - label: - "Step 2: If startup_mode_dut is null proceed to step 3. Else save - startup_mode_dut as new_start_up_mode_th and proceed to step 5." - PICS: OTCCM.S.A0002 - cluster: "EqualityCommands" - command: "UnsignedNumberEquals" - arguments: - values: - - name: "Value1" - value: startup_mode_dut - - name: "Value2" - value: null - response: - - values: - - name: "Equals" - saveAs: IsExpectedValue - - - label: "Step 3: TH reads from the DUT the SupportedModes attribute." - runIf: IsExpectedValue - PICS: OTCCM.S.A0000 - command: "readAttribute" - attribute: "SupportedModes" - response: - saveAs: supported_modes_dut - constraints: - type: list - minLength: 2 - - label: - "Step 4: TH writes to the DUT the StartUpMode attribute with the - new_start_up_mode_th value" - PICS: OTCCM.S.A0002 - runIf: IsExpectedValue - command: "writeAttribute" - attribute: "StartUpMode" - arguments: - value: new_start_up_mode_th - - - label: "Step 5: TH reads from the DUT the CurrentMode attribute." - PICS: OTCCM.S.A0001 - command: "readAttribute" - attribute: "CurrentMode" - response: - saveAs: old_current_mode_dut - - - label: - "Step 5: If startup_mode_dut is equal to old_current_mode_dut proceed - to step 6. Else proceed to step 8." - PICS: OTCCM.S.A0001 && OTCCM.S.A0002 - cluster: "EqualityCommands" - command: "UnsignedNumberEquals" - arguments: - values: - - name: "Value1" - value: startup_mode_dut - - name: "Value2" - value: old_current_mode_dut - response: - - values: - - name: "Equals" - saveAs: Step5_IsExpectedValue - - - label: "Step 6: TH reads from the DUT the SupportedModes attribute." - PICS: OTCCM.S.A0000 - runIf: Step5_IsExpectedValue - command: "readAttribute" - attribute: "SupportedModes" - response: - saveAs: Step6_supported_modes_dut - constraints: - type: list - minLength: 2 - - - label: - "Step 7: TH sends a ChangeToMode command to the DUT with NewMode set - to new_mode_th" - PICS: OTCCM.S.C00.Rsp - runIf: Step5_IsExpectedValue - command: "ChangeToMode" - arguments: - values: - - name: "NewMode" - value: new_mode_th - response: - values: - - name: "Status" - value: 0x00 - - - label: "Step 8: Physically power cycle the device" - verification: | - Physically power cycle the device. - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_USER_PROMPT - arguments: - values: - - name: "message" - value: "Please enter 'y' for success" - - name: "expectedValue" - value: "y" - - - label: "Wait for the commissioned device to be retrieved" - cluster: "DelayCommands" - command: "WaitForCommissionee" - arguments: - values: - - name: "nodeId" - value: nodeId - - - label: "Step 9: TH reads from the DUT the StartUpMode attribute." - PICS: OTCCM.S.A0002 && PICS_USER_PROMPT - command: "readAttribute" - attribute: "StartUpMode" - response: - saveAs: new_start_up_mode_dut - value: new_start_up_mode_th - - - label: "Step 10: TH reads from the DUT the CurrentMode attribute." - PICS: OTCCM.S.A0001 && PICS_USER_PROMPT - command: "readAttribute" - attribute: "CurrentMode" - response: - value: new_start_up_mode_dut diff --git a/src/app/tests/suites/certification/Test_TC_OTCCM_3_3.yaml b/src/app/tests/suites/certification/Test_TC_OTCCM_3_3.yaml deleted file mode 100644 index 27184569f51b5a..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_OTCCM_3_3.yaml +++ /dev/null @@ -1,187 +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. - -name: - 3.6 [TC-OTCCM-3.3] On Mode and Startup Mode functionality with DUT as Server - -PICS: - - OTCCM.S.A0002 - - OTCCM.S.A0003 - - MOD.S.F00 - - OO.S.A4003 - -config: - nodeId: 0x12344321 - cluster: "Oven Mode" - endpoint: 1 - - new_start_up_mode_th: - type: int8u - defaultValue: 0 - new_mode_th: - type: int8u - defaultValue: 1 - -tests: - - label: - "Step 1: Commission DUT to TH (can be skipped if done in a preceding - test)." - cluster: "DelayCommands" - command: "WaitForCommissionee" - arguments: - values: - - name: "nodeId" - value: nodeId - - - label: "Step 2: TH reads from the DUT the StartUpMode attribute." - PICS: OTCCM.S.A0002 - command: "readAttribute" - attribute: "StartUpMode" - response: - saveAs: startup_mode_dut - - - label: - "Step 2: If startup_mode_dut is null proceed to step 3. Else save - startup_mode_dut as new_start_up_mode_th and proceed to step 5." - PICS: OTCCM.S.A0002 - cluster: "EqualityCommands" - command: "UnsignedNumberEquals" - arguments: - values: - - name: "Value1" - value: startup_mode_dut - - name: "Value2" - value: null - response: - - values: - - name: "Equals" - saveAs: IsExpectedValue - - - label: "Step 3: TH reads from the DUT the SupportedModes attribute." - runIf: IsExpectedValue - PICS: OTCCM.S.A0000 - command: "readAttribute" - attribute: "SupportedModes" - response: - saveAs: supported_modes_dut - constraints: - type: list - minLength: 2 - - - label: - "Step 4: TH writes to the DUT the StartUpMode attribute with the - new_start_up_mode_th value" - PICS: OTCCM.S.A0002 - runIf: IsExpectedValue - command: "writeAttribute" - attribute: "StartUpMode" - arguments: - value: new_start_up_mode_th - - - label: "Step 5: TH reads from the DUT the OnMode attribute." - PICS: OTCCM.S.A0003 && OTCCM.S.A0002 - command: "readAttribute" - attribute: "OnMode" - response: - saveAs: old_on_mode_dut - - - label: - "Step 5: If startup_mode_dut is equal to old_on_mode_dut proceed to - step 6. Else proceed to step 8." - PICS: OTCCM.S.A0002 - cluster: "EqualityCommands" - command: "UnsignedNumberEquals" - arguments: - values: - - name: "Value1" - value: old_on_mode_dut - - name: "Value2" - value: startup_mode_dut - response: - - values: - - name: "Equals" - saveAs: Step5_IsExpectedValue - - - label: "Step 6: TH reads from the DUT the SupportedModes attribute." - PICS: OTCCM.S.A0000 && OTCCM.S.A0002 - runIf: Step5_IsExpectedValue - command: "readAttribute" - attribute: "SupportedModes" - response: - saveAs: Step6_supported_modes_dut - constraints: - type: list - minLength: 2 - - - label: - "Step 7: TH writes to the DUT the OnMode attribute with the - new_mode_th value" - PICS: OTCCM.S.A0003 - runIf: Step5_IsExpectedValue - command: "writeAttribute" - attribute: "OnMode" - arguments: - value: new_mode_th - - - label: "Step 8: TH reads from the DUT the OnMode attribute." - PICS: OTCCM.S.A0003 && MOD.S.F00 - command: "readAttribute" - attribute: "OnMode" - response: - saveAs: new_on_mode_dut - - - label: - "Step 9: TH writes to the DUT the StartUpOnOff attribute with the - value 1." - PICS: OO.S.A4003 - cluster: "On/Off" - command: "writeAttribute" - attribute: "StartUpOnOff" - arguments: - value: 1 - - - label: "Step 10: Physically power cycle the device" - verification: | - Physically power cycle the device. - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_USER_PROMPT - arguments: - values: - - name: "message" - value: "Please enter 'y' for success" - - name: "expectedValue" - value: "y" - - - label: "Wait for the commissioned device to be retrieved" - cluster: "DelayCommands" - command: "WaitForCommissionee" - arguments: - values: - - name: "nodeId" - value: nodeId - - - label: "Step 11: TH reads from the DUT the StartUpMode attribute." - PICS: OTCCM.S.A0002 && PICS_USER_PROMPT - command: "readAttribute" - attribute: "StartUpMode" - response: - value: new_start_up_mode_th - - - label: "Step 12: TH reads from the DUT the CurrentMode attribute." - PICS: OTCCM.S.A0001 && PICS_USER_PROMPT - command: "readAttribute" - attribute: "CurrentMode" - response: - value: new_on_mode_dut diff --git a/src/app/tests/suites/certification/Test_TC_TCCM_3_1.yaml b/src/app/tests/suites/certification/Test_TC_TCCM_3_1.yaml deleted file mode 100644 index 178357027408c7..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_TCCM_3_1.yaml +++ /dev/null @@ -1,127 +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. - -name: 219.3.1. [TC-TCCM-3.1] On Mode functionality with DUT as Server - -PICS: - - TCCM.S.A0003 - - MOD.S.F00 - - OO.S.C00.Rsp - - OO.S.C01.Rsp - -config: - nodeId: 0x12344321 - cluster: "Refrigerator And Temperature Controlled Cabinet Mode" - endpoint: 1 - #Configure newmode value - new_mode_th: - type: int8u - defaultValue: 2 - nonNull_OnMode_value: - type: int8u - defaultValue: 0 - -tests: - - label: - "Step 1: Commission DUT to TH (can be skipped if done in a preceding - test)." - cluster: "DelayCommands" - command: "WaitForCommissionee" - arguments: - values: - - name: "nodeId" - value: nodeId - - - label: - "Preconditions: The OnMode attribute is set to a non-NULL value from - the mode values indicated by the SupportedModes attribute." - PICS: TCCM.S.A0003 && MOD.S.F00 - command: "writeAttribute" - attribute: "OnMode" - arguments: - value: nonNull_OnMode_value - - - label: "Step 2: TH reads from the DUT the OnMode attribute." - PICS: TCCM.S.A0003 && MOD.S.F00 - command: "readAttribute" - attribute: "OnMode" - response: - saveAs: on_mode_dut - - - label: "Step 3a: TH reads from the DUT the CurrentMode attribute." - PICS: TCCM.S.A0001 && MOD.S.F00 - command: "readAttribute" - attribute: "CurrentMode" - response: - saveAs: old_current_mode_dut - - - label: - "Step 3b: If the OnMode and CurrentMode attributes have the same - value, proceed to step 4, Otherwise proceed to step 6" - PICS: TCCM.S.A0003 && TCCM.S.A0001 && MOD.S.F00 - cluster: "EqualityCommands" - command: "UnsignedNumberEquals" - arguments: - values: - - name: "Value1" - value: on_mode_dut - - name: "Value2" - value: old_current_mode_dut - response: - - values: - - name: "Equals" - saveAs: IsExpectedValue - - - label: "Step 4:TH reads the SupportedModes attribute from the DUT" - runIf: IsExpectedValue - PICS: TCCM.S.A0000 && MOD.S.F00 - command: "readAttribute" - attribute: "SupportedModes" - response: - constraints: - type: list - minLength: 2 - - - label: - "Step 5: Select a value from supported_modes_dut different from - on_mode_dut. Save the value as new_mode_th. TH sends a ChangeToMode - command to the DUT with NewMode set to new_mode_th" - runIf: IsExpectedValue - PICS: TCCM.S.C00.Rsp && MOD.S.F00 - command: "ChangeToMode" - arguments: - values: - - name: "NewMode" - value: new_mode_th - response: - values: - - name: "Status" - value: 0x00 - - - label: "Step 6: TH sends an Off command to the DUT" - PICS: OO.S.C00.Rsp && MOD.S.F00 - cluster: "On/Off" - command: "Off" - - - label: "Step 7: TH sends an On command to the DUT" - PICS: OO.S.C01.Rsp && MOD.S.F00 - cluster: "On/Off" - command: "On" - - - label: "Step 8: TH reads the CurrentMode attribute from the DUT" - PICS: TCCM.S.A0001 && MOD.S.F00 - command: "readAttribute" - attribute: "CurrentMode" - response: - value: on_mode_dut diff --git a/src/app/tests/suites/certification/Test_TC_TCCM_3_2.yaml b/src/app/tests/suites/certification/Test_TC_TCCM_3_2.yaml deleted file mode 100644 index b89db6a41925c2..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_TCCM_3_2.yaml +++ /dev/null @@ -1,176 +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. - -name: 219.3.2. [TC-TCCM-3.2] Startup Mode functionality with DUT as Server - -PICS: - - TCCM.S.A0002 - -config: - nodeId: 0x12344321 - cluster: "Refrigerator And Temperature Controlled Cabinet Mode" - endpoint: 1 - - new_start_up_mode_th: - type: int8u - defaultValue: 0 - new_mode_th: - type: int8u - defaultValue: 1 - -tests: - - label: - "Step 1: Commission DUT to TH (can be skipped if done in a preceding - test)." - cluster: "DelayCommands" - command: "WaitForCommissionee" - arguments: - values: - - name: "nodeId" - value: nodeId - - - label: "Step 2: TH reads from the DUT the StartUpMode attribute." - PICS: TCCM.S.A0002 - command: "readAttribute" - attribute: "StartUpMode" - response: - saveAs: startup_mode_dut - constraints: - type: int8u - - - label: - "If startup_mode_dut is null proceed to step 3. Else save - startup_mode_dut as new_start_up_mode_th and proceed to step 5" - PICS: TCCM.S.A0002 - cluster: "EqualityCommands" - command: "UnsignedNumberEquals" - arguments: - values: - - name: "Value1" - value: startup_mode_dut - - name: "Value2" - value: null - response: - - values: - - name: "Equals" - saveAs: IsExpectedValue - - - label: "Step 3: TH reads from the DUT the SupportedModes attribute." - runIf: IsExpectedValue - PICS: TCCM.S.A0000 - command: "readAttribute" - attribute: "SupportedModes" - response: - saveAs: supported_modes_dut - constraints: - type: list - minLength: 2 - - - label: - "Step 4:TH writes to the DUT the StartUpMode attribute with the - new_start_up_mode_th value" - runIf: IsExpectedValue - PICS: TCCM.S.A0002 - command: "writeAttribute" - attribute: "StartUpMode" - arguments: - value: new_start_up_mode_th - - - label: "Step 5: TH reads from the DUT the CurrentMode attribute." - PICS: TCCM.S.A0001 - command: "readAttribute" - attribute: "CurrentMode" - response: - saveAs: old_current_mode_dut - constraints: - type: int8u - - - label: - "If startup_mode_dut is equal to old_current_mode_dut proceed to step - 6. Else proceed to step 8" - PICS: TCCM.S.A0002 && TCCM.S.A0001 - cluster: "EqualityCommands" - command: "UnsignedNumberEquals" - arguments: - values: - - name: "Value1" - value: startup_mode_dut - - name: "Value2" - value: old_current_mode_dut - response: - - values: - - name: "Equals" - saveAs: Step5_IsExpectedValue - - - label: "Step 6: TH reads from the DUT the SupportedModes attribute." - runIf: Step5_IsExpectedValue - PICS: TCCM.S.A0000 - command: "readAttribute" - attribute: "SupportedModes" - response: - saveAs: Step6_supported_modes_dut - constraints: - type: list - minLength: 2 - - - label: - "Step 7: TH sends a ChangeToMode command to the DUT with NewMode set - to new_mode_th" - runIf: Step5_IsExpectedValue - PICS: DISHM.S.C00.Rsp - command: "ChangeToMode" - arguments: - values: - - name: "NewMode" - value: new_mode_th - - - label: "Step 8: Physically power cycle the device." - verification: | - Physically power cycle the device. - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_SKIP_SAMPLE_APP - arguments: - values: - - name: "message" - value: "Please enter 'y' for success" - - name: "expectedValue" - value: "y" - - - label: "Wait for the commissioned device to be retrieved" - cluster: "DelayCommands" - command: "WaitForCommissionee" - arguments: - values: - - name: "nodeId" - value: nodeId - - - label: "Step 9: TH reads from the DUT the StartUpMode attribute." - PICS: TCCM.S.A0002 && PICS_SKIP_SAMPLE_APP - command: "readAttribute" - attribute: "StartUpMode" - response: - saveAs: new_start_up_mode_dut - constraints: - type: int8u - anyOf: [new_start_up_mode_th, startup_mode_dut] - - - label: "Step 10: TH reads from the DUT the CurrentMode attribute." - PICS: TCCM.S.A0001 && PICS_SKIP_SAMPLE_APP - command: "readAttribute" - attribute: "CurrentMode" - response: - value: new_start_up_mode_dut - constraints: - type: int8u diff --git a/src/app/tests/suites/certification/Test_TC_TCCM_3_3.yaml b/src/app/tests/suites/certification/Test_TC_TCCM_3_3.yaml deleted file mode 100644 index 64d8b3f7d637e9..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_TCCM_3_3.yaml +++ /dev/null @@ -1,195 +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. - -name: - 219.3.3. [TC-TCCM-3.3] On Mode and Startup Mode functionality with DUT as - Server - -PICS: - - TCCM.S.A0002 - - TCCM.S.A0003 - - MOD.S.F00 - - OO.S.A4003 - -config: - nodeId: 0x12344321 - cluster: "Refrigerator And Temperature Controlled Cabinet Mode" - endpoint: 1 - - new_start_up_mode_th: - type: int8u - defaultValue: 0 - new_mode_th: - type: int8u - defaultValue: 1 - -tests: - - label: - "Step 1: Commission DUT to TH (can be skipped if done in a preceding - test)." - cluster: "DelayCommands" - command: "WaitForCommissionee" - arguments: - values: - - name: "nodeId" - value: nodeId - - - label: "Step 2: TH reads from the DUT the SupportedModes attribute." - PICS: TCCM.S.A0002 - command: "readAttribute" - attribute: "StartUpMode" - response: - saveAs: startup_mode_dut - constraints: - type: int8u - - - label: - "If startup_mode_dut is null proceed to step 3. Else save - startup_mode_dut as new_start_up_mode_th and proceed to step 5" - PICS: TCCM.S.A0002 - cluster: "EqualityCommands" - command: "UnsignedNumberEquals" - arguments: - values: - - name: "Value1" - value: startup_mode_dut - - name: "Value2" - value: null - response: - - values: - - name: "Equals" - saveAs: IsExpectedValue - - - label: "Step 3: TH reads from the DUT the SupportedModes attribute." - runIf: IsExpectedValue - PICS: TCCM.S.A0000 - command: "readAttribute" - attribute: "SupportedModes" - response: - saveAs: supported_modes_dut - constraints: - type: list - minLength: 2 - - - label: - "Step 4:TH writes to the DUT the StartUpMode attribute with the - new_start_up_mode_th value" - runIf: IsExpectedValue - PICS: TCCM.S.A0002 - command: "writeAttribute" - attribute: "StartUpMode" - arguments: - value: new_start_up_mode_th - - - label: "Step 5: TH reads from the DUT the OnMode attribute." - PICS: TCCM.S.A0003 && TCCM.S.A0002 - command: "readAttribute" - attribute: "OnMode" - response: - saveAs: old_on_mode_dut - constraints: - type: int8u - - - label: - "If startup_mode_dut is equal to old_on_mode_dut proceed to step 6. - Else proceed to step 8." - PICS: TCCM.S.A0003 && TCCM.S.A0002 - cluster: "EqualityCommands" - command: "UnsignedNumberEquals" - arguments: - values: - - name: "Value1" - value: startup_mode_dut - - name: "Value2" - value: old_on_mode_dut - response: - - values: - - name: "Equals" - saveAs: Step5_IsExpectedValue - - - label: "Step 6: TH reads the SupportedModes attribute from the DUT" - runIf: Step5_IsExpectedValue - PICS: TCCM.S.A0000 && TCCM.S.A0002 - command: "readAttribute" - attribute: "SupportedModes" - response: - saveAs: step6_supported_modes_dut - constraints: - type: list - minLength: 2 - - - label: - "Step 7:TH writes to the DUT the OnMode attribute with the new_mode_th - value" - runIf: Step5_IsExpectedValue - PICS: TCCM.S.A0003 - command: "writeAttribute" - attribute: "OnMode" - arguments: - value: new_mode_th - - - label: "Step 8: TH reads from the DUT the OnMode attribute." - PICS: TCCM.S.A0003 && MOD.S.F00 - command: "readAttribute" - attribute: "OnMode" - response: - saveAs: new_on_mode_dut - constraints: - anyOf: [new_mode_th, old_on_mode_dut] - - - label: - "Step 9:TH writes to the DUT the StartUpOnOff attribute with the value - 1" - PICS: OO.S.A4003 - cluster: "On/Off" - command: "writeAttribute" - attribute: "StartUpOnOff" - arguments: - value: 1 - - - label: "Step 10: Physically power cycle the device." - verification: | - Physically power cycle the device. - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_SKIP_SAMPLE_APP - arguments: - values: - - name: "message" - value: "Please enter 'y' for success" - - name: "expectedValue" - value: "y" - - - label: "Wait for the commissioned device to be retrieved" - cluster: "DelayCommands" - command: "WaitForCommissionee" - arguments: - values: - - name: "nodeId" - value: nodeId - - - label: "Step 11: TH reads from the DUT the StartUpMode attribute." - PICS: TCCM.S.A0002 && PICS_SKIP_SAMPLE_APP - command: "readAttribute" - attribute: "StartUpMode" - response: - constraints: - anyOf: [new_start_up_mode_th, startup_mode_dut] - - - label: "Step 12: TH reads from the DUT the CurrentMode attribute." - PICS: TCCM.S.A0001 && PICS_SKIP_SAMPLE_APP - command: "readAttribute" - attribute: "CurrentMode" - response: - value: new_on_mode_dut diff --git a/src/darwin/Framework/CHIP/MTRBaseDevice.mm b/src/darwin/Framework/CHIP/MTRBaseDevice.mm index a298b296849d51..2f75038eda97a2 100644 --- a/src/darwin/Framework/CHIP/MTRBaseDevice.mm +++ b/src/darwin/Framework/CHIP/MTRBaseDevice.mm @@ -613,7 +613,9 @@ - (void)subscribeWithQueue:(dispatch_queue_t)queue } } -static CHIP_ERROR MTREncodeTLVFromDataValueDictionaryInternal(id object, chip::TLV::TLVWriter & writer, chip::TLV::Tag tag) +// writer is allowed to be null to just validate the incoming object without +// actually encoding. +static CHIP_ERROR MTREncodeTLVFromDataValueDictionaryInternal(id object, chip::TLV::TLVWriter * writer, chip::TLV::Tag tag) { if (![object isKindOfClass:[NSDictionary class]]) { MTR_LOG_ERROR("Error: Unsupported object to encode: %@", [object class]); @@ -631,60 +633,62 @@ static CHIP_ERROR MTREncodeTLVFromDataValueDictionaryInternal(id object, chip::T MTR_LOG_ERROR("Error: Object to encode has corrupt signed integer type: %@", [value class]); return CHIP_ERROR_INVALID_ARGUMENT; } - return writer.Put(tag, [value longLongValue]); + return writer ? writer->Put(tag, [value longLongValue]) : CHIP_NO_ERROR; } if ([typeName isEqualToString:MTRUnsignedIntegerValueType]) { if (![value isKindOfClass:[NSNumber class]]) { MTR_LOG_ERROR("Error: Object to encode has corrupt unsigned integer type: %@", [value class]); return CHIP_ERROR_INVALID_ARGUMENT; } - return writer.Put(tag, [value unsignedLongLongValue]); + return writer ? writer->Put(tag, [value unsignedLongLongValue]) : CHIP_NO_ERROR; } if ([typeName isEqualToString:MTRBooleanValueType]) { if (![value isKindOfClass:[NSNumber class]]) { MTR_LOG_ERROR("Error: Object to encode has corrupt boolean type: %@", [value class]); return CHIP_ERROR_INVALID_ARGUMENT; } - return writer.Put(tag, static_cast([value boolValue])); + return writer ? writer->Put(tag, static_cast([value boolValue])) : CHIP_NO_ERROR; } if ([typeName isEqualToString:MTRFloatValueType]) { if (![value isKindOfClass:[NSNumber class]]) { MTR_LOG_ERROR("Error: Object to encode has corrupt float type: %@", [value class]); return CHIP_ERROR_INVALID_ARGUMENT; } - return writer.Put(tag, [value floatValue]); + return writer ? writer->Put(tag, [value floatValue]) : CHIP_NO_ERROR; } if ([typeName isEqualToString:MTRDoubleValueType]) { if (![value isKindOfClass:[NSNumber class]]) { MTR_LOG_ERROR("Error: Object to encode has corrupt double type: %@", [value class]); return CHIP_ERROR_INVALID_ARGUMENT; } - return writer.Put(tag, [value doubleValue]); + return writer ? writer->Put(tag, [value doubleValue]) : CHIP_NO_ERROR; } if ([typeName isEqualToString:MTRNullValueType]) { - return writer.PutNull(tag); + return writer ? writer->PutNull(tag) : CHIP_NO_ERROR; } if ([typeName isEqualToString:MTRUTF8StringValueType]) { if (![value isKindOfClass:[NSString class]]) { MTR_LOG_ERROR("Error: Object to encode has corrupt UTF8 string type: %@", [value class]); return CHIP_ERROR_INVALID_ARGUMENT; } - return writer.PutString(tag, AsCharSpan(value)); + return writer ? writer->PutString(tag, AsCharSpan(value)) : CHIP_NO_ERROR; } if ([typeName isEqualToString:MTROctetStringValueType]) { if (![value isKindOfClass:[NSData class]]) { MTR_LOG_ERROR("Error: Object to encode has corrupt octet string type: %@", [value class]); return CHIP_ERROR_INVALID_ARGUMENT; } - return writer.Put(tag, AsByteSpan(value)); + return writer ? writer->Put(tag, AsByteSpan(value)) : CHIP_NO_ERROR; } if ([typeName isEqualToString:MTRStructureValueType]) { if (![value isKindOfClass:[NSArray class]]) { MTR_LOG_ERROR("Error: Object to encode has corrupt structure type: %@", [value class]); return CHIP_ERROR_INVALID_ARGUMENT; } - TLV::TLVType outer; - ReturnErrorOnFailure(writer.StartContainer(tag, chip::TLV::kTLVType_Structure, outer)); + TLV::TLVType outer = TLV::kTLVType_NotSpecified; + if (writer) { + ReturnErrorOnFailure(writer->StartContainer(tag, chip::TLV::kTLVType_Structure, outer)); + } for (id element in value) { if (![element isKindOfClass:[NSDictionary class]]) { MTR_LOG_ERROR("Error: Structure element to encode has corrupt type: %@", [element class]); @@ -713,7 +717,9 @@ static CHIP_ERROR MTREncodeTLVFromDataValueDictionaryInternal(id object, chip::T ReturnErrorOnFailure( MTREncodeTLVFromDataValueDictionaryInternal(elementValue, writer, tag)); } - ReturnErrorOnFailure(writer.EndContainer(outer)); + if (writer) { + ReturnErrorOnFailure(writer->EndContainer(outer)); + } return CHIP_NO_ERROR; } if ([typeName isEqualToString:MTRArrayValueType]) { @@ -721,8 +727,10 @@ static CHIP_ERROR MTREncodeTLVFromDataValueDictionaryInternal(id object, chip::T MTR_LOG_ERROR("Error: Object to encode has corrupt array type: %@", [value class]); return CHIP_ERROR_INVALID_ARGUMENT; } - TLV::TLVType outer; - ReturnErrorOnFailure(writer.StartContainer(tag, chip::TLV::kTLVType_Array, outer)); + TLV::TLVType outer = TLV::kTLVType_NotSpecified; + if (writer) { + ReturnErrorOnFailure(writer->StartContainer(tag, chip::TLV::kTLVType_Array, outer)); + } for (id element in value) { if (![element isKindOfClass:[NSDictionary class]]) { MTR_LOG_ERROR("Error: Array element to encode has corrupt type: %@", [element class]); @@ -735,14 +743,16 @@ static CHIP_ERROR MTREncodeTLVFromDataValueDictionaryInternal(id object, chip::T } ReturnErrorOnFailure(MTREncodeTLVFromDataValueDictionaryInternal(elementValue, writer, chip::TLV::AnonymousTag())); } - ReturnErrorOnFailure(writer.EndContainer(outer)); + if (writer) { + ReturnErrorOnFailure(writer->EndContainer(outer)); + } return CHIP_NO_ERROR; } MTR_LOG_ERROR("Error: Unsupported type to encode: %@", typeName); return CHIP_ERROR_INVALID_ARGUMENT; } -static CHIP_ERROR MTREncodeTLVFromDataValueDictionary(id object, chip::TLV::TLVWriter & writer, chip::TLV::Tag tag) +static CHIP_ERROR MTREncodeTLVFromDataValueDictionary(id object, chip::TLV::TLVWriter * writer, chip::TLV::Tag tag) { CHIP_ERROR err = MTREncodeTLVFromDataValueDictionaryInternal(object, writer, tag); if (err != CHIP_NO_ERROR) { @@ -761,7 +771,7 @@ static CHIP_ERROR MTREncodeTLVFromDataValueDictionary(id object, chip::TLV::TLVW TLV::TLVWriter writer; writer.Init(buffer); - CHIP_ERROR err = MTREncodeTLVFromDataValueDictionary(value, writer, TLV::AnonymousTag()); + CHIP_ERROR err = MTREncodeTLVFromDataValueDictionary(value, &writer, TLV::AnonymousTag()); if (err != CHIP_NO_ERROR) { if (error) { *error = [MTRError errorForCHIPErrorCode:err]; @@ -772,6 +782,11 @@ static CHIP_ERROR MTREncodeTLVFromDataValueDictionary(id object, chip::TLV::TLVW return AsData(ByteSpan(buffer, writer.GetLengthWritten())); } +BOOL MTRDataValueDictionaryIsWellFormed(MTRDeviceDataValueDictionary value) +{ + return MTREncodeTLVFromDataValueDictionary(value, nullptr, TLV::AnonymousTag()) == CHIP_NO_ERROR; +} + // Callback type to pass data value as an NSObject typedef void (*MTRDataValueDictionaryCallback)(void * context, id value); @@ -798,7 +813,7 @@ CHIP_ERROR Decode(chip::TLV::TLVReader & data) CHIP_ERROR Encode(chip::TLV::TLVWriter & writer, chip::TLV::Tag tag) const { - return MTREncodeTLVFromDataValueDictionary(decodedObj, writer, tag); + return MTREncodeTLVFromDataValueDictionary(decodedObj, &writer, tag); } static constexpr bool kIsFabricScoped = false; @@ -2212,7 +2227,7 @@ + (NSDictionary *)eventReportForHeader:(const chip::app::EventHeader &)header an // Commands never need chained buffers, since they cannot be chunked. writer.Init(std::move(buffer), /* useChainedBuffers = */ false); - CHIP_ERROR errorCode = MTREncodeTLVFromDataValueDictionary(data, writer, TLV::AnonymousTag()); + CHIP_ERROR errorCode = MTREncodeTLVFromDataValueDictionary(data, &writer, TLV::AnonymousTag()); if (errorCode != CHIP_NO_ERROR) { LogStringAndReturnError(@"Unable to encode data-value to TLV", errorCode, error); return System::PacketBufferHandle(); @@ -3082,7 +3097,7 @@ static bool EncodeDataValueToTLV(System::PacketBufferHandle & buffer, Platform:: System::PacketBufferTLVWriter writer; writer.Init(std::move(buffer), /* useChainedBuffers = */ true); - CHIP_ERROR errorCode = MTREncodeTLVFromDataValueDictionary(data, writer, TLV::AnonymousTag()); + CHIP_ERROR errorCode = MTREncodeTLVFromDataValueDictionary(data, &writer, TLV::AnonymousTag()); if (errorCode != CHIP_NO_ERROR) { LogStringAndReturnError(@"Unable to encode data-value to TLV", errorCode, error); return false; diff --git a/src/darwin/Framework/CHIP/MTRBaseDevice_Internal.h b/src/darwin/Framework/CHIP/MTRBaseDevice_Internal.h index 1482d80634da43..075ee99da20990 100644 --- a/src/darwin/Framework/CHIP/MTRBaseDevice_Internal.h +++ b/src/darwin/Framework/CHIP/MTRBaseDevice_Internal.h @@ -18,6 +18,8 @@ #import "MTRBaseDevice.h" #import +#import "MTRDeviceDataValueDictionary.h" + #include #include #include @@ -257,6 +259,6 @@ NSDictionary * _Nullable MTRDecodeDataValueDictionaryFromCHIPTLV // TLV Data with an anonymous tag. This method assumes the encoding of the // value fits in a single UDP MTU; for lists this method might need to be used // on each list item separately. -NSData * _Nullable MTREncodeTLVFromDataValueDictionary(NSDictionary * value, NSError * __autoreleasing * error); +NSData * _Nullable MTREncodeTLVFromDataValueDictionary(MTRDeviceDataValueDictionary value, NSError * __autoreleasing * error); NS_ASSUME_NONNULL_END diff --git a/src/darwin/Framework/CHIP/MTRDevice_Internal.h b/src/darwin/Framework/CHIP/MTRDevice_Internal.h index df4a8265538dfe..4414b3c6133b07 100644 --- a/src/darwin/Framework/CHIP/MTRDevice_Internal.h +++ b/src/darwin/Framework/CHIP/MTRDevice_Internal.h @@ -176,6 +176,13 @@ MTR_DIRECT_MEMBERS - (void)devicePrivateInternalStateChanged:(MTRDevice *)device internalState:(NSDictionary *)state; @end +// Returns whether a data-value dictionary is well-formed (in the sense that all +// the types of the objects inside are as expected, so it's actually a valid +// representation of some TLV). Implemented in MTRBaseDevice.mm because that's +// where the pieces needed to implement it are, but declared here so our tests +// can see it. +MTR_EXTERN MTR_TESTABLE BOOL MTRDataValueDictionaryIsWellFormed(MTRDeviceDataValueDictionary value); + #pragma mark - Constants static NSString * const kDefaultSubscriptionPoolSizeOverrideKey = @"subscriptionPoolSizeOverride"; diff --git a/src/darwin/Framework/CHIPTests/MTRDeviceTests.m b/src/darwin/Framework/CHIPTests/MTRDeviceTests.m index 9d33649057ddb1..3fa4ff45449f89 100644 --- a/src/darwin/Framework/CHIPTests/MTRDeviceTests.m +++ b/src/darwin/Framework/CHIPTests/MTRDeviceTests.m @@ -4819,6 +4819,374 @@ - (void)test040_AttributeValueExpectationSatisfaction } } +- (void)test041_AttributeDataValueValidation +{ + __auto_type * testData = @[ + @{ + @"input" : @ { + MTRTypeKey : MTRSignedIntegerValueType, + MTRValueKey : @(-5), + }, + // -5 is a valid signed integer. + @"valid" : @(YES), + }, + @{ + @"input" : @ { + MTRTypeKey : MTRSignedIntegerValueType, + MTRValueKey : @ {}, + }, + // A dictionary is not a valid signed integer. + @"valid" : @(NO), + }, + @{ + @"input" : @ { + MTRTypeKey : MTRUnsignedIntegerValueType, + MTRValueKey : @(7), + }, + // 7 is a valid unsigned integer. + @"valid" : @(YES), + }, + @{ + @"input" : @ { + MTRTypeKey : MTRUnsignedIntegerValueType, + MTRValueKey : @("abc"), + }, + // "abc" is not an unsigned integer. + @"valid" : @(NO), + }, + @{ + @"input" : @ { + MTRTypeKey : MTRBooleanValueType, + MTRValueKey : @(YES), + }, + // YES is a boolean. + @"valid" : @(YES), + }, + @{ + @"input" : @ { + MTRTypeKey : MTRBooleanValueType, + MTRValueKey : [NSData data], + }, + // NSData is not a boolean integer. + @"valid" : @(NO), + }, + @{ + @"input" : @ { + MTRTypeKey : MTRFloatValueType, + MTRValueKey : @(8), + }, + // 8 is a valid float. + @"valid" : @(YES), + }, + @{ + @"input" : @ { + MTRTypeKey : MTRFloatValueType, + MTRValueKey : @(8.5), + }, + // 8.5 is a valid float. + @"valid" : @(YES), + }, + @{ + @"input" : @ { + MTRTypeKey : MTRFloatValueType, + MTRValueKey : @[], + }, + // An array is not a float. + @"valid" : @(NO), + }, + @{ + @"input" : @ { + MTRTypeKey : MTRDoubleValueType, + MTRValueKey : @(180), + }, + // 180 is a valid double. + @"valid" : @(YES), + }, + @{ + @"input" : @ { + MTRTypeKey : MTRDoubleValueType, + MTRValueKey : @(9.5), + }, + // 9.5 is a valid double. + @"valid" : @(YES), + }, + @{ + @"input" : @ { + MTRTypeKey : MTRDoubleValueType, + MTRValueKey : [NSDate date], + }, + // A date is not a double. + @"valid" : @(NO), + }, + @{ + @"input" : @ { + MTRTypeKey : MTRNullValueType, + }, + // This is a valid null value. + @"valid" : @(YES), + }, + @{ + @"input" : @ { + MTRTypeKey : MTRUTF8StringValueType, + MTRValueKey : @("def"), + }, + // "def" is a valid string. + @"valid" : @(YES), + }, + @{ + @"input" : @ { + MTRTypeKey : MTRUTF8StringValueType, + MTRValueKey : [NSData data], + }, + // NSData is not a string. + @"valid" : @(NO), + }, + @{ + @"input" : @ { + MTRTypeKey : MTROctetStringValueType, + MTRValueKey : [NSData data], + }, + // NSData is an octet string. + @"valid" : @(YES), + }, + @{ + @"input" : @ { + MTRTypeKey : MTROctetStringValueType, + MTRValueKey : @(7), + }, + // 7 is not an octet string. + @"valid" : @(NO), + }, + @{ + @"input" : @ { + MTRTypeKey : MTROctetStringValueType, + MTRValueKey : @("abc"), + }, + // "abc" is not an octet string. + @"valid" : @(NO), + }, + @{ + @"input" : @ { + MTRTypeKey : MTRStructureValueType, + MTRValueKey : @[], + }, + // This is a valid empty structure. + @"valid" : @(YES), + }, + @{ + @"input" : @ { + MTRTypeKey : MTRStructureValueType, + MTRValueKey : @[], + }, + // This is a valid empty structure. + @"valid" : @(YES), + }, + @{ + @"input" : @ { + MTRTypeKey : MTRStructureValueType, + MTRValueKey : @[ + @{ + MTRContextTagKey : @(7), + MTRDataKey : @ { + MTRTypeKey : MTRNullValueType + }, + }, + ], + }, + // This is a valid structure, one null field. + @"valid" : @(YES), + }, + @{ + @"input" : @ { + MTRTypeKey : MTRStructureValueType, + MTRValueKey : @[ + @{ + MTRContextTagKey : @(1), + MTRDataKey : @ { + MTRTypeKey : MTRNullValueType + }, + }, + @{ + MTRContextTagKey : @(2), + MTRDataKey : @ { + MTRTypeKey : MTRUnsignedIntegerValueType, + MTRValueKey : @(9) + }, + }, + ], + }, + // This is a valid structure with two fields. + @"valid" : @(YES), + }, + @{ + @"input" : @ { + MTRTypeKey : MTRStructureValueType, + MTRValueKey : @(19), + }, + // 19 is not a structure. + @"valid" : @(NO), + }, + @{ + @"input" : @ { + MTRTypeKey : MTRStructureValueType, + MTRValueKey : @[ + @{ + MTRDataKey : @ { + MTRTypeKey : MTRNullValueType + }, + }, + ], + }, + // Field does not have a context tag. + @"valid" : @(NO), + }, + @{ + @"input" : @ { + MTRTypeKey : MTRStructureValueType, + MTRValueKey : @[ + @{ + MTRContextTagKey : @(7), + }, + ], + }, + // Field does not have a value. + @"valid" : @(NO), + }, + @{ + @"input" : @ { + MTRTypeKey : MTRStructureValueType, + MTRValueKey : @[ + @{ + MTRContextTagKey : @(7), + MTRDataKey : @(5), + }, + ], + }, + // Field value is a number, not a data-value + @"valid" : @(NO), + }, + @{ + @"input" : @ { + MTRTypeKey : MTRStructureValueType, + MTRValueKey : @[ + @{ + MTRContextTagKey : @(7), + MTRDataKey : @[], + }, + ], + }, + // Field value is an array, not a data-value + @"valid" : @(NO), + }, + @{ + @"input" : @ { + MTRTypeKey : MTRStructureValueType, + MTRValueKey : @[ + @{ + MTRContextTagKey : @(7), + MTRDataKey : @ {}, + }, + ], + }, + // Field value is an invalid data-value + @"valid" : @(NO), + }, + @{ + @"input" : @ { + MTRTypeKey : MTRStructureValueType, + MTRValueKey : @[ + @{ + MTRContextTagKey : @("abc"), + MTRDataKey : @ { + MTRTypeKey : MTRNullValueType + }, + }, + ], + }, + // Tag is not a number. + @"valid" : @(NO), + }, + @{ + @"input" : @ { + MTRTypeKey : MTRArrayValueType, + MTRValueKey : @[], + }, + // This is a valid empty array. + @"valid" : @(YES), + }, + @{ + @"input" : @ { + MTRTypeKey : MTRArrayValueType, + MTRValueKey : @[ + @{ + MTRDataKey : @ { + MTRTypeKey : MTRNullValueType + }, + }, + ], + }, + // This is an array with a single null value in it. + @"valid" : @(YES), + }, + @{ + @"input" : @ { + MTRTypeKey : MTRArrayValueType, + MTRValueKey : @[ + @{ + MTRDataKey : @ { + MTRTypeKey : MTRUnsignedIntegerValueType, + MTRValueKey : @(8), + }, + }, + @{ + MTRDataKey : @ { + MTRTypeKey : MTRUnsignedIntegerValueType, + MTRValueKey : @(10), + }, + }, + ], + }, + // This is an array with two integers in it. + @"valid" : @(YES), + }, + @{ + @"input" : @ { + MTRTypeKey : MTRArrayValueType, + MTRValueKey : @[ + @{ + MTRTypeKey : MTRUnsignedIntegerValueType, + MTRValueKey : @(8), + }, + ], + }, + // This does not have a proper array-value in the array: missing MTRDataKey. + @"valid" : @(NO), + }, + @{ + @"input" : @ { + MTRTypeKey : MTRArrayValueType, + MTRValueKey : @[ @(7) ], + }, + // This does not have a proper array-value in the array: not a dictionary. + @"valid" : @(NO), + }, + @{ + @"input" : @ { + MTRTypeKey : MTRArrayValueType, + MTRValueKey : @[ @{} ], + }, + // This does not have a proper array-value in the array: empty + // dictionary, so no MTRDataKey. + @"valid" : @(NO), + }, + ]; + + for (NSDictionary * test in testData) { + XCTAssertEqual(MTRDataValueDictionaryIsWellFormed(test[@"input"]), [test[@"valid"] boolValue], + "input: %@", test[@"input"]); + } +} + @end @interface MTRDeviceEncoderTests : XCTestCase