# Copyright (c) 2021 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: 84.2.1. [TC-DESC-2.1] Descriptor Cluster Attributes [DUT-Server]

PICS:
    - DESC.S

config:
    nodeId: 0x12344321
    cluster: "Basic Information"
    endpoint: 0

tests:
    - label: "Note"
      verification: |
          Mandatory cluster requirements for each device type can be found here.
          https://github.com/CHIP-Specifications/chip-test-plans/tree/master/tools/device-type-requirements
          Use the correct json required for the DUT, this file is PIXIT.DESC.DeviceTypeConformanceList.
      disabled: true

    - label: "Precondition"
      verification: |
          TH and DUT are commissioned
      disabled: true

    - label:
          "Step 1a: TH reads DeviceTypeList and PartsList attributes from DUT
          for Endpoint 0"
      PICS: DESC.S.A0000 && DESC.S.A0003
      verification: |
          Send a read request to the DUT using chip-tool to read the partsList attribute in the descriptor cluster on Endpoint 0.
          Make a note of all the items(Endpoint id’s) in the list. In the below example there are 2 endpoint id's listed [1,2]

          ./chip-tool descriptor read  parts-list 1 0

          Verify "PartsList" attribute is not empty (use this list of endpoints in step 1b) on the TH (Chip-tool) and below is the sample log provided for the raspi platform:

          [1672919206.069327][33426:33428] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_001D Attribute 0x0000_0003 DataVersion: 2847656117
          [1672919206.069380][33426:33428] CHIP:TOO:   PartsList: 2 entries
          [1672919206.069398][33426:33428] CHIP:TOO:     [1]: 1
          [1672919206.069410][33426:33428] CHIP:TOO:     [2]: 2

          ./chip-tool descriptor read device-type-list 1 0

          on TH (Chip-tool) log, Verify that the DeviceTypeList contains one Root Node Device Type and may only contain other Node Device Types (device types with scope=node, it can be any of the following Power Source, OTA Requestor, OTA Provider) next to the Root Node Device Type. (here DeviceType: 17 is power source )
          - Revision value is not less than 1 and it should match the Revision of the DeviceType and below is the sample log provided for the raspi platform

          [1674552598.748946][21129:21131] CHIP:DMG: }
          [[1692617243.785786][31325:31327] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 1437984882
          [1692617243.785840][31325:31327] CHIP:TOO:   DeviceTypeList: 2 entries
          [1692617243.785862][31325:31327] CHIP:TOO:     [1]: {
          [1692617243.785881][31325:31327] CHIP:TOO:       DeviceType: 17
          [1692617243.785892][31325:31327] CHIP:TOO:       Revision: 1
          [1692617243.785901][31325:31327] CHIP:TOO:      }
          [1692617243.785917][31325:31327] CHIP:TOO:     [2]: {
          [1692617243.785926][31325:31327] CHIP:TOO:       DeviceType: 22
          [1692617243.785936][31325:31327] CHIP:TOO:       Revision: 1
          [1692617243.785944][31325:31327] CHIP:TOO:      }
      disabled: true

    - label:
          "Step 1b: TH reads DeviceTypeList and PartsList attributes from DUT
          for each Endpoint supported by DUT (except Endpoint 0)."
      PICS: DESC.S.A0000 && DESC.S.A0003
      verification: |
          For all the Endpoint’s listed from the previous step run the following steps. The device type should correspond to the id value in the device_type.json
          Chip tool outputs all values in integer, convert to hex before comparing.

          ./chip-tool descriptor read parts-list 1 1

          Verify  parts-list response contains 0 entries on the TH (Chip-tool) and below is the sample log provided for the raspi platform:

          [1660127331.634565][46437:46442] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_001D Attribute 0x0000_0003 DataVersion: 934889243
          [1660127331.634631][46437:46442] CHIP:TOO:   parts list: 0 entries

          ./chip-tool descriptor read device-type-list 1 1

          On TH (Chip-tool) log, Verify that  the DeviceTypeList count is at least one.
            - If the DeviceTypeList contains more than one Application Device Type, verify that all the Application Device Types are part of the same superset.
            - Verify the DeviceTypeList does not contain the Root Node Device Type.
            - Revision value  is not less than 1 and it should match the Revision of the DeviceType and below is the sample log provided for the raspi platform

          [1674552599.264189][21135:21137] CHIP:DMG: }
          [1692617790.900384][31584:31586] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 2832593371
          [1692617790.900398][31584:31586] CHIP:TOO:   DeviceTypeList: 2 entries
          [1692617790.900410][31584:31586] CHIP:TOO:     [1]: {
          [1692617790.900413][31584:31586] CHIP:TOO:       DeviceType: 256
          [1692617790.900416][31584:31586] CHIP:TOO:       Revision: 1
          [1692617790.900419][31584:31586] CHIP:TOO:      }
          [1692617790.900423][31584:31586] CHIP:TOO:     [2]: {
          [1692617790.900425][31584:31586] CHIP:TOO:       DeviceType: 17
          [1692617790.900428][31584:31586] CHIP:TOO:       Revision: 1
          [1692617790.900430][31584:31586] CHIP:TOO:      }

          ./chip-tool descriptor read parts-list 1 2

          Verify parts-list response contains 0 entries on the TH (Chip-tool) and below is the sample log provided for the raspi platform:

          [1660127879.565330][46472:46477] CHIP:TOO: Endpoint: 2 Cluster: 0x0000_001D Attribute 0x0000_0003 DataVersion: 1237610137
          [1660127879.565473][46472:46477] CHIP:TOO:   parts list: 0 entries

          ./chip-tool descriptor read device-type-list 1 2

          On TH (Chip-tool) log, Verify that  the DeviceTypeList count is at least one.
            - If the DeviceTypeList contains more than one Application Device Type, verify that all the Application Device Types are part of the same superset.
            - Verify the DeviceTypeList does not contain the Root Node Device Type.
            - Revision value  is not less than 1 and it should match the Revision of the DeviceType and below is the sample log provided for the raspi platform

          [1692618454.794870][31669:31671] CHIP:TOO: Endpoint: 2 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 1103199808
          [1692618454.794946][31669:31671] CHIP:TOO:   DeviceTypeList: 2 entries
          [1692618454.794990][31669:31671] CHIP:TOO:     [1]: {
          [1692618454.795027][31669:31671] CHIP:TOO:       DeviceType: 256
          [1692618454.795038][31669:31671] CHIP:TOO:       Revision: 1
          [1692618454.795048][31669:31671] CHIP:TOO:      }
          [1692618454.795063][31669:31671] CHIP:TOO:     [2]: {
          [1692618454.795072][31669:31671] CHIP:TOO:       DeviceType: 17
          [1692618454.795080][31669:31671] CHIP:TOO:       Revision: 1
          [1692618454.795089][31669:31671] CHIP:TOO:      }
      disabled: true

    - label: "Step 2: TH reads 'ServerList' attribute."
      PICS: DESC.S.A0001
      verification: |
          For all the Endpoint id’s listed in step 1a run the following steps. For all the server list entries listed in the output - Convert them to Hex values. For example 29 is 0x001D. Verify that these are also present in the device_type.json. Every server cluster listed in the JSON should correspond to a number here in the output.

          The cluster ID's listed in the below log is from the All-Cluster-app. Please run the below command in all the Reference apps (bridge-app, tv-app, microwave-oven-app, Lock-app, Energy-Management-app and Thermostat-app).

          ./chip-tool descriptor read server-list 1 1

          Verify ServerList entries on the TH (Chip-tool) and below is the sample log provided for the raspi platform,

          [1707996554.409850][20755:20757] CHIP:DMG: }
          [1707996554.410814][20755:20757] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_001D Attribute 0x0000_0001 DataVersion: 3583190746
          [1707996554.410955][20755:20757] CHIP:TOO:   ServerList: 71 entries
          [1707996554.410990][20755:20757] CHIP:TOO:     [1]: 3
          [1707996554.411002][20755:20757] CHIP:TOO:     [2]: 4
          [1707996554.411013][20755:20757] CHIP:TOO:     [3]: 6
          [1707996554.411024][20755:20757] CHIP:TOO:     [4]: 7
          [1707996554.411034][20755:20757] CHIP:TOO:     [5]: 8
          [1707996554.411045][20755:20757] CHIP:TOO:     [6]: 15
          [1707996554.411056][20755:20757] CHIP:TOO:     [7]: 29
          [1707996554.411067][20755:20757] CHIP:TOO:     [8]: 30
          [1707996554.411078][20755:20757] CHIP:TOO:     [9]: 37
          [1707996554.411092][20755:20757] CHIP:TOO:     [10]: 47
          [1707996554.411103][20755:20757] CHIP:TOO:     [11]: 59
          [1707996554.411113][20755:20757] CHIP:TOO:     [12]: 64
          [1707996554.411124][20755:20757] CHIP:TOO:     [13]: 65
          [1707996554.411135][20755:20757] CHIP:TOO:     [14]: 69
          [1707996554.411146][20755:20757] CHIP:TOO:     [15]: 72
          [1707996554.411156][20755:20757] CHIP:TOO:     [16]: 73
          [1707996554.411167][20755:20757] CHIP:TOO:     [17]: 74
          [1707996554.411177][20755:20757] CHIP:TOO:     [18]: 80
          [1707996554.411188][20755:20757] CHIP:TOO:     [19]: 81
          [1707996554.411199][20755:20757] CHIP:TOO:     [20]: 82
          [1707996554.411209][20755:20757] CHIP:TOO:     [21]: 83
          [1707996554.411220][20755:20757] CHIP:TOO:     [22]: 84
          [1707996554.411231][20755:20757] CHIP:TOO:     [23]: 85
          [1707996554.411240][20755:20757] CHIP:TOO:     [24]: 86
          [1707996554.411251][20755:20757] CHIP:TOO:     [25]: 87
          [1707996554.411261][20755:20757] CHIP:TOO:     [26]: 89
          [1707996554.411271][20755:20757] CHIP:TOO:     [27]: 91
          [1707996554.411282][20755:20757] CHIP:TOO:     [28]: 92
          [1707996554.411293][20755:20757] CHIP:TOO:     [29]: 93
          [1707996554.411303][20755:20757] CHIP:TOO:     [30]: 94
          [1707996554.411313][20755:20757] CHIP:TOO:     [31]: 96
          [1707996554.411323][20755:20757] CHIP:TOO:     [32]: 97
          [1707996554.411334][20755:20757] CHIP:TOO:     [33]: 98
          [1707996554.411345][20755:20757] CHIP:TOO:     [34]: 113
          [1707996554.411355][20755:20757] CHIP:TOO:     [35]: 114
          [1707996554.411367][20755:20757] CHIP:TOO:     [36]: 128
          [1707996554.411376][20755:20757] CHIP:TOO:     [37]: 129
          [1707996554.411387][20755:20757] CHIP:TOO:     [38]: 144
          [1707996554.411396][20755:20757] CHIP:TOO:     [39]: 145
          [1707996554.411406][20755:20757] CHIP:TOO:     [40]: 152
          [1707996554.411417][20755:20757] CHIP:TOO:     [41]: 153
          [1707996554.411427][20755:20757] CHIP:TOO:     [42]: 157
          [1707996554.411437][20755:20757] CHIP:TOO:     [43]: 159
          [1707996554.411449][20755:20757] CHIP:TOO:     [44]: 258
          [1707996554.411459][20755:20757] CHIP:TOO:     [45]: 259
          [1707996554.411469][20755:20757] CHIP:TOO:     [46]: 512
          [1707996554.411480][20755:20757] CHIP:TOO:     [47]: 513
          [1707996554.411490][20755:20757] CHIP:TOO:     [48]: 514
          [1707996554.411500][20755:20757] CHIP:TOO:     [49]: 516
          [1707996554.411511][20755:20757] CHIP:TOO:     [50]: 768
          [1707996554.411521][20755:20757] CHIP:TOO:     [51]: 769
          [1707996554.411532][20755:20757] CHIP:TOO:     [52]: 1024
          [1707996554.411559][20755:20757] CHIP:TOO:     [53]: 1026
          [1707996554.411562][20755:20757] CHIP:TOO:     [54]: 1027
          [1707996554.411565][20755:20757] CHIP:TOO:     [55]: 1028
          [1707996554.411568][20755:20757] CHIP:TOO:     [56]: 1029
          [1707996554.411571][20755:20757] CHIP:TOO:     [57]: 1030
          [1707996554.411575][20755:20757] CHIP:TOO:     [58]: 1036
          [1707996554.411578][20755:20757] CHIP:TOO:     [59]: 1037
          [1707996554.411581][20755:20757] CHIP:TOO:     [60]: 1043
          [1707996554.411584][20755:20757] CHIP:TOO:     [61]: 1045
          [1707996554.411587][20755:20757] CHIP:TOO:     [62]: 1066
          [1707996554.411589][20755:20757] CHIP:TOO:     [63]: 1067
          [1707996554.411592][20755:20757] CHIP:TOO:     [64]: 1068
          [1707996554.411595][20755:20757] CHIP:TOO:     [65]: 1069
          [1707996554.411598][20755:20757] CHIP:TOO:     [66]: 1070
          [1707996554.411601][20755:20757] CHIP:TOO:     [67]: 1071
          [1707996554.411604][20755:20757] CHIP:TOO:     [68]: 1283
          [1707996554.411607][20755:20757] CHIP:TOO:     [69]: 1288
          [1707996554.411610][20755:20757] CHIP:TOO:     [70]: 2820
          [1707996554.411613][20755:20757] CHIP:TOO:     [71]: 4294048773


          ./chip-tool descriptor read server-list 1 2

          Verify ServerList entries on TH (Chip-tool) Log and below is the sample log provided for the raspi platform, Here ServerList entries are 7.

          [1692618559.962829][31688:31690] CHIP:TOO: Endpoint: 2 Cluster: 0x0000_001D Attribute 0x0000_0001 DataVersion: 1103199808
          [1692618559.962884][31688:31690] CHIP:TOO:   ServerList: 7 entries
          [1692618559.962910][31688:31690] CHIP:TOO:     [1]: 3
          [1692618559.962922][31688:31690] CHIP:TOO:     [2]: 4
          [1692618559.962933][31688:31690] CHIP:TOO:     [3]: 5
          [1692618559.962945][31688:31690] CHIP:TOO:     [4]: 6
          [1692618559.962955][31688:31690] CHIP:TOO:     [5]: 29
          [1692618559.962966][31688:31690] CHIP:TOO:     [6]: 47
          [1692618559.962978][31688:31690] CHIP:TOO:     [7]: 1030
      disabled: true

    - label: "Step 3: TH reads 'ClientList' attribute"
      PICS: DESC.S.A0002
      verification: |
          For all the Endpoint id’s listed in step 1a run the following steps. For all the client list entries listed in the output - Convert them to Hex values. For example 29 is 0x001D. Verify that these are also present in the device_type.json. Every server cluster listed in the JSON should correspond to a number here in the output.

          The cluster ID's listed in the below log is from the All-Cluster-app. Please run the below command in all the Reference apps (bridge-app, tv-app, microwave-oven-app, Lock-app, Energy-Management-app and Thermostat-app).

          ./chip-tool descriptor read client-list 1 1

          Verify client list entries on the TH (Chip-tool) and below is the sample log provided for the raspi platform, Here ClientList entries are 1.

          [1676367470.160199][9805:9807] CHIP:DMG: }
          [1676367470.160268][9805:9807] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_001D Attribute 0x0000_0002 DataVersion: 3336430903
          [1676367470.160282][9805:9807] CHIP:TOO:   ClientList: 1 entries
          [1676367470.160289][9805:9807] CHIP:TOO:     [1]: 6

          ./chip-tool descriptor read client-list 1 2

          Verify client list entries on the TH (Chip-tool) and below is the sample log provided for the raspi platform, Here ClientList entries are 0.

          [1660146160.390200][46818:46823] CHIP:TOO: Endpoint: 2 Cluster: 0x0000_001D Attribute 0x0000_0002 DataVersion: 1051414887
          [1660146160.390211][46818:46823] CHIP:TOO:   ClientList: 0 entries
      disabled: true

    - label: "Step 4: TH reads 'PartsList' attribute."
      PICS: DESC.S.A0003
      verification: |
          ./chip-tool descriptor read  parts-list 1 0

          Verify PartsList response  greater than 0 and  Endpoint is in the range of 1 to 65534 on the TH (Chip-tool) and below is the sample log provided for the raspi platform:

          [1672919326.178697][33468:33470] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_001D Attribute 0x0000_0003 DataVersion: 2847656117
          [1672919326.178739][33468:33470] CHIP:TOO:   PartsList: 2 entries
          [1672919326.178765][33468:33470] CHIP:TOO:     [1]: 1
          [1672919326.178777][33468:33470] CHIP:TOO:     [2]: 2
      disabled: true

    - label: "Step 5: TH reads from the DUT the 'TagList' attribute."
      PICS: DESC.S.A0004
      verification: |
          ./chip-tool descriptor read tag-list 1 0

          - Verify that the DUT response contains a TagList and SHALL contain at least one element.
          - Read each TagStruct from the list and check for the following:
            - Number of entries in TagList is in the range of 1 to 6 and each entry contains at least a NamespaceID and a Tag property. Confirm that each entry is unique (i.e. no duplicate tags).
            - If the MfgCode field is not null, confirm that it is the Vendor ID of the manufacturer who has defined a certain namespace and that the NamespaceID field indicates which namespace from the manufacturer is associated with the Tag field.
            - Confirm that each non-manufacturer specific tag is from a namespace defined in the spec (either from an common namespace or from a namespace for the particular device type).
            - If a manufacturer specific Tag field is indicated, at least one standardized tag which is not from any manufacturer’s namespace shall be included in the TagList.
            - Tag field is the ID of a semantic tag within the namespace indicated by the NamespaceID property.

          [1692959866.253223][12664:12666] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_001D Attribute 0x0000_0004 DataVersion: 2088189574
          [1692959866.253237][12664:12666] CHIP:TOO:   TagList: 2 entries
          [1692959866.253248][12664:12666] CHIP:TOO:     [1]: {
          [1692959866.253251][12664:12666] CHIP:TOO:       MfgCode: null
          [1692959866.253255][12664:12666] CHIP:TOO:       NamespaceID: 7
          [1692959866.253257][12664:12666] CHIP:TOO:       Tag: 0
          [1692959866.253260][12664:12666] CHIP:TOO:      }
          [1692959866.253265][12664:12666] CHIP:TOO:     [2]: {
          [1692959866.253267][12664:12666] CHIP:TOO:       MfgCode: null
          [1692959866.253270][12664:12666] CHIP:TOO:       NamespaceID: 8
          [1692959866.253272][12664:12666] CHIP:TOO:       Tag: 3
          [1692959866.253274][12664:12666] CHIP:TOO:      }
      disabled: true

    - label:
          "Step 5: The cluster tests applicable to each Device Type should be
          executed to make sure all mandatory (and applicable optional)
          attributes/commands are implemented."
      verification: |
          This step is redundant as during certification the appropriate tests are being run
      disabled: true
