# 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: 3.3.1. [TC-FLW-3.1] Attributes with client as DUT

PICS:
    - FLW.C
    - FLW.C.AM-READ
    - FLW.C.AO-READ
    - FLW.C.AM-WRITE
    - FLW.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 flowmeasurement read measured-value 1 1

          Verify read command is received in DUT as client side log

          [1658853801.750840][29347:29347] CHIP:IM: Received Read request
          [1658853801.750918][29347:29347] CHIP:DMG: ReadRequestMessage =
          [1658853801.750945][29347:29347] CHIP:DMG: {
          [1658853801.750968][29347:29347] CHIP:DMG:         AttributePathIBs =
          [1658853801.750993][29347:29347] CHIP:DMG:         [
          [1658853801.751017][29347:29347] CHIP:DMG:                 AttributePathIB =
          [1658853801.751044][29347:29347] CHIP:DMG:                 {
          [1658853801.751072][29347:29347] CHIP:DMG:                         Endpoint = 0x1,
          [1658853801.751105][29347:29347] CHIP:DMG:                         Cluster = 0x404,
          [1658853801.751137][29347:29347] CHIP:DMG:                         Attribute = 0x0000_0000,
          [1658853801.751167][29347:29347] CHIP:DMG:                 }
          [1658853801.751195][29347:29347] CHIP:DMG:
          [1658853801.751220][29347:29347] CHIP:DMG:         ],
          [1658853801.751248][29347:29347] CHIP:DMG:
          [1658853801.751275][29347:29347] CHIP:DMG:         isFabricFiltered = true,
          [1658853801.751300][29347:29347] CHIP:DMG:         InteractionModelRevision = 1
          [1658853801.751323][29347:29347] CHIP:DMG: },
          [1658853801.751396][29347:29347] CHIP:DMG: IM RH moving to [GeneratingReports]
          [1658853801.751480][29347:29347] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0
          [1658853801.751510][29347:29347] CHIP:DMG: <RE:Run> Cluster 404, Attribute 0 is dirty
          [1658853801.751532][29347:29347] CHIP:DMG: Reading attribute: Cluster=0x0000_0404 Endpoint=1 AttributeId=0x0000_0000 (expanded=0)





          "./chip-tool flowmeasurement read min-measured-value 1 1

          Verify read command is received in DUT as client side log

          [1658853849.969073][29347:29347] CHIP:IM: Received Read request
          [1658853849.969151][29347:29347] CHIP:DMG: ReadRequestMessage =
          [1658853849.969192][29347:29347] CHIP:DMG: {
          [1658853849.969214][29347:29347] CHIP:DMG:         AttributePathIBs =
          [1658853849.969240][29347:29347] CHIP:DMG:         [
          [1658853849.969272][29347:29347] CHIP:DMG:                 AttributePathIB =
          [1658853849.969301][29347:29347] CHIP:DMG:                 {
          [1658853849.969337][29347:29347] CHIP:DMG:                         Endpoint = 0x1,
          [1658853849.969369][29347:29347] CHIP:DMG:                         Cluster = 0x404,
          [1658853849.969410][29347:29347] CHIP:DMG:                         Attribute = 0x0000_0001,
          [1658853849.969447][29347:29347] CHIP:DMG:                 }
          [1658853849.969476][29347:29347] CHIP:DMG:
          [1658853849.969511][29347:29347] CHIP:DMG:         ],
          [1658853849.969539][29347:29347] CHIP:DMG:
          [1658853849.969574][29347:29347] CHIP:DMG:         isFabricFiltered = true,
          [1658853849.969600][29347:29347] CHIP:DMG:         InteractionModelRevision = 1
          [1658853849.969628][29347:29347] CHIP:DMG: },
          [1658853849.969697][29347:29347] CHIP:DMG: IM RH moving to [GeneratingReports]
          [1658853849.969791][29347:29347] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0
          [1658853849.969831][29347:29347] CHIP:DMG: <RE:Run> Cluster 404, Attribute 1 is dirty



          "./chip-tool flowmeasurement read max-measured-value 1 1

          Verify read command is received in DUT as client side log

          [1658853898.416395][29347:29347] CHIP:IM: Received Read request
          [1658853898.416472][29347:29347] CHIP:DMG: ReadRequestMessage =
          [1658853898.416513][29347:29347] CHIP:DMG: {
          [1658853898.416536][29347:29347] CHIP:DMG:         AttributePathIBs =
          [1658853898.416571][29347:29347] CHIP:DMG:         [
          [1658853898.416596][29347:29347] CHIP:DMG:                 AttributePathIB =
          [1658853898.416633][29347:29347] CHIP:DMG:                 {
          [1658853898.416662][29347:29347] CHIP:DMG:                         Endpoint = 0x1,
          [1658853898.416703][29347:29347] CHIP:DMG:                         Cluster = 0x404,
          [1658853898.416746][29347:29347] CHIP:DMG:                         Attribute = 0x0000_0002,
          [1658853898.416776][29347:29347] CHIP:DMG:                 }
          [1658853898.416813][29347:29347] CHIP:DMG:
          [1658853898.416839][29347:29347] CHIP:DMG:         ],
          [1658853898.416876][29347:29347] CHIP:DMG:
          [1658853898.416903][29347:29347] CHIP:DMG:         isFabricFiltered = true,
          [1658853898.416937][29347:29347] CHIP:DMG:         InteractionModelRevision = 1
          [1658853898.416960][29347:29347] CHIP:DMG: },
          [1658853898.417051][29347:29347] CHIP:DMG: IM RH moving to [GeneratingReports]
          [1658853898.417141][29347:29347] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0
          [1658853898.417179][29347:29347] CHIP:DMG: <RE:Run> Cluster 404, Attribute 2 is dirty
      disabled: true

    - label:
          "DUT reads all supported optional attributes from TH one at a time in
          a manufacturer specific order"
      verification: |
          chip-tool flowmeasurement read tolerance 1 1

          Verify in DUT as client side log

          [1658853991.266232][29347:29347] CHIP:IM: Received Read request
          [1658853991.266328][29347:29347] CHIP:DMG: ReadRequestMessage =
          [1658853991.266382][29347:29347] CHIP:DMG: {
          [1658853991.266413][29347:29347] CHIP:DMG:         AttributePathIBs =
          [1658853991.266461][29347:29347] CHIP:DMG:         [
          [1658853991.266494][29347:29347] CHIP:DMG:                 AttributePathIB =
          [1658853991.266545][29347:29347] CHIP:DMG:                 {
          [1658853991.266584][29347:29347] CHIP:DMG:                         Endpoint = 0x1,
          [1658853991.266640][29347:29347] CHIP:DMG:                         Cluster = 0x404,
          [1658853991.266694][29347:29347] CHIP:DMG:                         Attribute = 0x0000_0003,
          [1658853991.266736][29347:29347] CHIP:DMG:                 }
          [1658853991.266785][29347:29347] CHIP:DMG:
          [1658853991.266820][29347:29347] CHIP:DMG:         ],
          [1658853991.266869][29347:29347] CHIP:DMG:
          [1658853991.266905][29347:29347] CHIP:DMG:         isFabricFiltered = true,
          [1658853991.266952][29347:29347] CHIP:DMG:         InteractionModelRevision = 1
          [1658853991.266984][29347:29347] CHIP:DMG: },
          [1658853991.267091][29347:29347] CHIP:DMG: IM RH moving to [GeneratingReports]
          [1658853991.267218][29347:29347] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0
          [1658853991.267257][29347:29347] CHIP:DMG: <RE:Run> Cluster 404, Attribute 3 is dirty
      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: |
          This cluster doesn"t have any writable attributes
      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: |
          This cluster doesn"t have any writable attributes
      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 flowmeasurement read attribute-list 1 1

          Verify a list of supported attributes which contains mandatory in DUT as client side log

          [1656478164937] [49517:5732586] CHIP: [TOO] Endpoint: 1 Cluster: 0x0000_0404 Attribute 0x0000_FFFB DataVersion: 3423686907
          [1656478164937] [49517:5732586] CHIP: [TOO]   AttributeList: 8 entries
          [1656478164937] [49517:5732586] CHIP: [TOO]     [1]: 0
          [1656478164937] [49517:5732586] CHIP: [TOO]     [2]: 1
          [1656478164937] [49517:5732586] CHIP: [TOO]     [3]: 2
          [1656478164937] [49517:5732586] CHIP: [TOO]     [4]: 65528
          [1656478164937] [49517:5732586] CHIP: [TOO]     [5]: 65529
          [1656478164937] [49517:5732586] CHIP: [TOO]     [6]: 65531
          [1656478164937] [49517:5732586] CHIP: [TOO]     [7]: 65532
          [1656478164937] [49517:5732586] CHIP: [TOO]     [8]: 65533

          ./chip-tool flowmeasurement read feature-map 1 1

          Verify featuremap value is 0 in DUT as client side log

          [1656478242820] [49526:5733040] CHIP: [TOO] Endpoint: 1 Cluster: 0x0000_0404 Attribute 0x0000_FFFC DataVersion: 3423686907
          [1656478242820] [49526:5733040] CHIP: [TOO]   FeatureMap: 0


          "./chip-tool flowmeasurement read measured-value 1 1

          Verify read command is received in DUT as client side log

          [1658853801.750840][29347:29347] CHIP:IM: Received Read request
          [1658853801.750918][29347:29347] CHIP:DMG: ReadRequestMessage =
          [1658853801.750945][29347:29347] CHIP:DMG: {
          [1658853801.750968][29347:29347] CHIP:DMG:         AttributePathIBs =
          [1658853801.750993][29347:29347] CHIP:DMG:         [
          [1658853801.751017][29347:29347] CHIP:DMG:                 AttributePathIB =
          [1658853801.751044][29347:29347] CHIP:DMG:                 {
          [1658853801.751072][29347:29347] CHIP:DMG:                         Endpoint = 0x1,
          [1658853801.751105][29347:29347] CHIP:DMG:                         Cluster = 0x404,
          [1658853801.751137][29347:29347] CHIP:DMG:                         Attribute = 0x0000_0000,
          [1658853801.751167][29347:29347] CHIP:DMG:                 }
          [1658853801.751195][29347:29347] CHIP:DMG:
          [1658853801.751220][29347:29347] CHIP:DMG:         ],
          [1658853801.751248][29347:29347] CHIP:DMG:
          [1658853801.751275][29347:29347] CHIP:DMG:         isFabricFiltered = true,
          [1658853801.751300][29347:29347] CHIP:DMG:         InteractionModelRevision = 1
          [1658853801.751323][29347:29347] CHIP:DMG: },
          [1658853801.751396][29347:29347] CHIP:DMG: IM RH moving to [GeneratingReports]
          [1658853801.751480][29347:29347] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0
          [1658853801.751510][29347:29347] CHIP:DMG: <RE:Run> Cluster 404, Attribute 0 is dirty
          [1658853801.751532][29347:29347] CHIP:DMG: Reading attribute: Cluster=0x0000_0404 Endpoint=1 AttributeId=0x0000_0000 (expanded=0)





          ""./chip-tool flowmeasurement read min-measured-value 1 1

          Verify read command is received in DUT as client side log

          [1658853849.969073][29347:29347] CHIP:IM: Received Read request
          [1658853849.969151][29347:29347] CHIP:DMG: ReadRequestMessage =
          [1658853849.969192][29347:29347] CHIP:DMG: {
          [1658853849.969214][29347:29347] CHIP:DMG:         AttributePathIBs =
          [1658853849.969240][29347:29347] CHIP:DMG:         [
          [1658853849.969272][29347:29347] CHIP:DMG:                 AttributePathIB =
          [1658853849.969301][29347:29347] CHIP:DMG:                 {
          [1658853849.969337][29347:29347] CHIP:DMG:                         Endpoint = 0x1,
          [1658853849.969369][29347:29347] CHIP:DMG:                         Cluster = 0x404,
          [1658853849.969410][29347:29347] CHIP:DMG:                         Attribute = 0x0000_0001,
          [1658853849.969447][29347:29347] CHIP:DMG:                 }
          [1658853849.969476][29347:29347] CHIP:DMG:
          [1658853849.969511][29347:29347] CHIP:DMG:         ],
          [1658853849.969539][29347:29347] CHIP:DMG:
          [1658853849.969574][29347:29347] CHIP:DMG:         isFabricFiltered = true,
          [1658853849.969600][29347:29347] CHIP:DMG:         InteractionModelRevision = 1
          [1658853849.969628][29347:29347] CHIP:DMG: },
          [1658853849.969697][29347:29347] CHIP:DMG: IM RH moving to [GeneratingReports]
          [1658853849.969791][29347:29347] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0
          [1658853849.969831][29347:29347] CHIP:DMG: <RE:Run> Cluster 404, Attribute 1 is dirty



          ""./chip-tool flowmeasurement read max-measured-value 1 1

          Verify read command is received in DUT as client side log

          [1658853898.416395][29347:29347] CHIP:IM: Received Read request
          [1658853898.416472][29347:29347] CHIP:DMG: ReadRequestMessage =
          [1658853898.416513][29347:29347] CHIP:DMG: {
          [1658853898.416536][29347:29347] CHIP:DMG:         AttributePathIBs =
          [1658853898.416571][29347:29347] CHIP:DMG:         [
          [1658853898.416596][29347:29347] CHIP:DMG:                 AttributePathIB =
          [1658853898.416633][29347:29347] CHIP:DMG:                 {
          [1658853898.416662][29347:29347] CHIP:DMG:                         Endpoint = 0x1,
          [1658853898.416703][29347:29347] CHIP:DMG:                         Cluster = 0x404,
          [1658853898.416746][29347:29347] CHIP:DMG:                         Attribute = 0x0000_0002,
          [1658853898.416776][29347:29347] CHIP:DMG:                 }
          [1658853898.416813][29347:29347] CHIP:DMG:
          [1658853898.416839][29347:29347] CHIP:DMG:         ],
          [1658853898.416876][29347:29347] CHIP:DMG:
          [1658853898.416903][29347:29347] CHIP:DMG:         isFabricFiltered = true,
          [1658853898.416937][29347:29347] CHIP:DMG:         InteractionModelRevision = 1
          [1658853898.416960][29347:29347] CHIP:DMG: },
          [1658853898.417051][29347:29347] CHIP:DMG: IM RH moving to [GeneratingReports]
          [1658853898.417141][29347:29347] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0
          [1658853898.417179][29347:29347] CHIP:DMG: <RE:Run> Cluster 404, Attribute 2 is dirty
          "
      disabled: true

    - label:
          "DUT reads all supported optional attributes from TH one at a time in
          a manufacturer specific order"
      verification: |
          Verify in DUT as client side log

          ./chip-tool flowmeasurement read tolerance 1 1

           General error: 0x86 (UNSUPPORTED_ATTRIBUTE)
      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: |
          This cluster doesn"t have any writable attributes
      disabled: true
