# 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: 59.3.1. [TC-I-3.1] Attributes with Client as DUT

PICS:
    - I.C
    - I.C.AM-READ
    - I.C.AO-READ
    - I.C.AM-WRITE
    - I.C.AO-WRITE

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

tests:
    - label:
          "DUT reads all supported mandatory attributes from TH one at a time in
          a manufacturer specific order"
      verification: |
          ./chip-tool identify read identify-time 1 1
          verify On TH(Reference app) receives the right Read Request Message for the data sent in the above command

          [1648015371.159715][2506:2506] CHIP:IM: Received Read request
          [1648015371.159805][2506:2506] CHIP:DMG: ReadRequestMessage =
          [1648015371.159840][2506:2506] CHIP:DMG: {
          [1648015371.159866][2506:2506] CHIP:DMG:         AttributePathIBs =
          [1648015371.159903][2506:2506] CHIP:DMG:         [
          [1648015371.159932][2506:2506] CHIP:DMG:                 AttributePathIB =
          [1648015371.159968][2506:2506] CHIP:DMG:                 {
          [1648015371.160006][2506:2506] CHIP:DMG:                         Endpoint = 0x1,
          [1648015371.160047][2506:2506] CHIP:DMG:                         Cluster = 0x3,
          [1648015371.160087][2506:2506] CHIP:DMG:                         Attribute = 0x0000_0000,
          [1648015371.160127][2506:2506] CHIP:DMG:                 }
          [1648015371.160164][2506:2506] CHIP:DMG:
          [1648015371.160201][2506:2506] CHIP:DMG:         ],
          [1648015371.160238][2506:2506] CHIP:DMG:
          [1648015371.160270][2506:2506] CHIP:DMG:         isFabricFiltered = true,
          [1648015371.160300][2506:2506] CHIP:DMG:         InteractionModelRevision = 1
          [1648015371.160324][2506:2506] CHIP:DMG: },

          On DUT as a client side, verify that TH all-clusters-app sent identify time attribute value
          [1658144129.651688][8964:8969] CHIP:DMG: }
          [1658144129.651919][8964:8969] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0003 Attribute 0x0000_0000 DataVersion: 774797081
          [1658144129.652113][8964:8969] CHIP:TOO:   identify time: 0
          [1658144129.652237][8964:8969] CHIP:EM: Sending Standalone Ack for MessageCounter:17091478 on exchange 42014i


           ./chip-tool identify  read   identify-type 1 1
          verify On TH(Reference app) receives the right Read Request Message for the data sent in the above command

          [1648015519.017225][2506:2506] CHIP:IM: Received Read request
          [1648015519.017293][2506:2506] CHIP:DMG: ReadRequestMessage =
          [1648015519.017332][2506:2506] CHIP:DMG: {
          [1648015519.017363][2506:2506] CHIP:DMG:         AttributePathIBs =
          [1648015519.017403][2506:2506] CHIP:DMG:         [
          [1648015519.017437][2506:2506] CHIP:DMG:                 AttributePathIB =
          [1648015519.017577][2506:2506] CHIP:DMG:                 {
          [1648015519.017624][2506:2506] CHIP:DMG:                         Endpoint = 0x1,
          [1648015519.017673][2506:2506] CHIP:DMG:                         Cluster = 0x3,
          [1648015519.017721][2506:2506] CHIP:DMG:                         Attribute = 0x0000_0001,
          [1648015519.017768][2506:2506] CHIP:DMG:                 }
          [1648015519.017813][2506:2506] CHIP:DMG:
          [1648015519.017853][2506:2506] CHIP:DMG:         ],
          [1648015519.017894][2506:2506] CHIP:DMG:
          [1648015519.017932][2506:2506] CHIP:DMG:         isFabricFiltered = true,
          [1648015519.017969][2506:2506] CHIP:DMG:         InteractionModelRevision = 1
          [1648015519.018003][2506:2506] CHIP:DMG: },

          On DUT as a client side, verify that TH all-clusters-app sent identify type attribute value
          [1658144152.172514][8970:8975] CHIP:DMG: }
          [1658144152.172661][8970:8975] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0003 Attribute 0x0000_0001 DataVersion: 774797081
          [1658144152.172726][8970:8975] CHIP:TOO:   identify type: 2
          [1658144152.172813][8970:8975] CHIP:EM: Sending Standalone Ack for MessageCounter:190112026 on exchange 9214i
      disabled: true

    - label:
          "DUT reads all supported optional attributes from TH one at a time in
          a manufacturer specific order"
      verification: |
          There is no optional attibute for this cluster
      disabled: true

    - label:
          "DUT writes a suitable value to all supported mandatory attributes on
          the TH one at a time in a manufacturer specific order"
      verification: |
          ./chip-tool identify  write   identify-time  1 1 1

          verify On TH(Reference app) receives the right write Request Message for the data sent in the above command
          [1646012277.591912][33190:33190] CHIP:IM: Received Write request
          [1646012277.591936][33190:33190] CHIP:DMG: IM WH moving to [Initialized]
          [1646012277.591987][33190:33190] CHIP:DMG: WriteRequestMessage =
          [1646012277.592013][33190:33190] CHIP:DMG: {
          [1646012277.592036][33190:33190] CHIP:DMG:         timedRequest = false,
          [1646012277.592064][33190:33190] CHIP:DMG:         AttributeDataIBs =
          [1646012277.592094][33190:33190] CHIP:DMG:         [
          [1646012277.592118][33190:33190] CHIP:DMG:                 AttributeDataIB =
          [1646012277.592149][33190:33190] CHIP:DMG:                 {
          [1646012277.592175][33190:33190] CHIP:DMG:                         AttributePathIB =
          [1646012277.592208][33190:33190] CHIP:DMG:                         {
          [1646012277.592239][33190:33190] CHIP:DMG:                                 Endpoint = 0x1,
          [1646012277.592273][33190:33190] CHIP:DMG:                                 Cluster = 0x3,
          [1646012277.592306][33190:33190] CHIP:DMG:                                 Attribute = 0x0000_0000,
          [1646012277.592336][33190:33190] CHIP:DMG:                         }
          [1646012277.592368][33190:33190] CHIP:DMG:
          [1646012277.592400][33190:33190] CHIP:DMG:                                 Data = 60,
          [1646012277.592433][33190:33190] CHIP:DMG:                 },
          [1646012277.592463][33190:33190] CHIP:DMG:
          [1646012277.592488][33190:33190] CHIP:DMG:         ],
          [1646012277.592516][33190:33190] CHIP:DMG:
          [1646012277.592540][33190:33190] CHIP:DMG:         moreChunkedMessages = false,
          [1646012277.592566][33190:33190] CHIP:DMG:         InteractionModelRevision = 1
          [1646012277.592589][33190:33190] CHIP:DMG: },
          [1646012277.592669][33190:33190] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0003 e=1 p=o
          [1646012277.592721][33190:33190] CHIP:DMG: Endpoint 1, Cluster 0x0000_0003 update version to d4fdf520

          On DUT as a client side, verify that TH all-clusters-app sent success response
          [1658144181.287676][8979:8984] CHIP:DMG:
          [1658144181.287736][8979:8984] CHIP:DMG:                         StatusIB =
          [1658144181.287792][8979:8984] CHIP:DMG:                         {
          [1658144181.287849][8979:8984] CHIP:DMG:                                 status = 0x00 (SUCCESS),
          [1658144181.287907][8979:8984] CHIP:DMG:                         },
      disabled: true

    - label:
          "DUT writes a suitable value to all supported optional attributes on
          the TH one at a time in a manufacturer specific order"
      verification: |
          There is no optional attibute for this cluster
      disabled: true

    - label:
          "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 identify read identify-time 1 1
          verify On TH(Reference app) receives the right Read Request Message for the data sent in the above command

          [1648015371.159715][2506:2506] CHIP:IM: Received Read request
          [1648015371.159805][2506:2506] CHIP:DMG: ReadRequestMessage =
          [1648015371.159840][2506:2506] CHIP:DMG: {
          [1648015371.159866][2506:2506] CHIP:DMG:         AttributePathIBs =
          [1648015371.159903][2506:2506] CHIP:DMG:         [
          [1648015371.159932][2506:2506] CHIP:DMG:                 AttributePathIB =
          [1648015371.159968][2506:2506] CHIP:DMG:                 {
          [1648015371.160006][2506:2506] CHIP:DMG:                         Endpoint = 0x1,
          [1648015371.160047][2506:2506] CHIP:DMG:                         Cluster = 0x3,
          [1648015371.160087][2506:2506] CHIP:DMG:                         Attribute = 0x0000_0000,
          [1648015371.160127][2506:2506] CHIP:DMG:                 }
          [1648015371.160164][2506:2506] CHIP:DMG:
          [1648015371.160201][2506:2506] CHIP:DMG:         ],
          [1648015371.160238][2506:2506] CHIP:DMG:
          [1648015371.160270][2506:2506] CHIP:DMG:         isFabricFiltered = true,
          [1648015371.160300][2506:2506] CHIP:DMG:         InteractionModelRevision = 1
          [1648015371.160324][2506:2506] CHIP:DMG: },

          On DUT as a client side, verify that TH all-clusters-app sent identify time attribute value
          [1658144129.651688][8964:8969] CHIP:DMG: }
          [1658144129.651919][8964:8969] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0003 Attribute 0x0000_0000 DataVersion: 774797081
          [1658144129.652113][8964:8969] CHIP:TOO:   identify time: 0
          [1658144129.652237][8964:8969] CHIP:EM: Sending Standalone Ack for MessageCounter:17091478 on exchange 42014i


           ./chip-tool identify  read   identify-type 1 1
          verify On TH(Reference app) receives the right Read Request Message for the data sent in the above command

          [1648015519.017225][2506:2506] CHIP:IM: Received Read request
          [1648015519.017293][2506:2506] CHIP:DMG: ReadRequestMessage =
          [1648015519.017332][2506:2506] CHIP:DMG: {
          [1648015519.017363][2506:2506] CHIP:DMG:         AttributePathIBs =
          [1648015519.017403][2506:2506] CHIP:DMG:         [
          [1648015519.017437][2506:2506] CHIP:DMG:                 AttributePathIB =
          [1648015519.017577][2506:2506] CHIP:DMG:                 {
          [1648015519.017624][2506:2506] CHIP:DMG:                         Endpoint = 0x1,
          [1648015519.017673][2506:2506] CHIP:DMG:                         Cluster = 0x3,
          [1648015519.017721][2506:2506] CHIP:DMG:                         Attribute = 0x0000_0001,
          [1648015519.017768][2506:2506] CHIP:DMG:                 }
          [1648015519.017813][2506:2506] CHIP:DMG:
          [1648015519.017853][2506:2506] CHIP:DMG:         ],
          [1648015519.017894][2506:2506] CHIP:DMG:
          [1648015519.017932][2506:2506] CHIP:DMG:         isFabricFiltered = true,
          [1648015519.017969][2506:2506] CHIP:DMG:         InteractionModelRevision = 1
          [1648015519.018003][2506:2506] CHIP:DMG: },

          On DUT as a client side, verify that TH all-clusters-app sent identify type attribute value
          [1658144152.172514][8970:8975] CHIP:DMG: }
          [1658144152.172661][8970:8975] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0003 Attribute 0x0000_0001 DataVersion: 774797081
          [1658144152.172726][8970:8975] CHIP:TOO:   identify type: 2
          [1658144152.172813][8970:8975] CHIP:EM: Sending Standalone Ack for MessageCounter:190112026 on exchange 9214i
      disabled: true

    - label:
          "DUT reads all supported optional attributes from TH one at a time in
          a manufacturer specific order"
      verification: |
          There is no optional attibute for this cluster
      disabled: true

    - label:
          "DUT writes a suitable value to all supported optional attributes on
          the TH one at a time in a manufacturer specific order"
      verification: |
          There is no optional attibute for this cluster
      disabled: true
