# 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: 50.3.4. [TC-DGTHREAD-3.4] ResetCounts Command[DUT-Client]

PICS:
    - DGTHREAD.C

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

tests:
    - label: "Commission TH to DUT"
      verification: |

      disabled: true

    - label: "DUT sends ResetCounts Command to TH"
      PICS: DGTHREAD.C.C00.Tx
      verification: |
          ./chip-tool threadnetworkdiagnostics reset-counts 65 0
          Verify on the TH Log:

          [1649229224.437208][22196:22201] CHIP:DMG:                                 StatusIB =
          [1649229224.437366][22196:22201] CHIP:DMG:                                 {
          [1649229224.437574][22196:22201] CHIP:DMG:                                         status = 0x00 (SUCCESS),
          [1649229224.437744][22196:22201] CHIP:DMG:                                 },
          [1649229224.437859][22196:22201] CHIP:DMG:
          [1649229224.438046][22196:22201] CHIP:DMG:                         },
          [1649229224.438207][22196:22201] CHIP:DMG:
          [1649229224.438349][22196:22201] CHIP:DMG:                 },
          [1649229224.438500][22196:22201] CHIP:DMG:
          [1649229224.438640][22196:22201] CHIP:DMG:         ],
          [1649229224.438790][22196:22201] CHIP:DMG:
          [1649229224.438857][22196:22201] CHIP:DMG:         InteractionModelRevision = 1
          [1649229224.438998][22196:22201] CHIP:DMG: },
          [1649229224.439236][22196:22201] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_0035 Command=0x0000_0000 Status=0x0
          [1649229224.439461][22196:22201] CHIP:DMG: ICR moving to [AwaitingDe]
          [1649229224.439668][22196:22201] CHIP:EM: Sending Standalone Ack for MessageCounter:5619016 on exchange 39890i
      disabled: true

    - label: "DUT reads OverrunCount attribute from TH"
      PICS: DGTHREAD.C.A0006
      verification: |
          ./chip-tool threadnetworkdiagnostics read overrun-count 180 0
           Verify on the TH Log:

          [1649827143.462761][3767:3772] CHIP:DMG:        SuppressResponse = true,
          [1649827143.462823][3767:3772] CHIP:DMG:        InteractionModelRevision = 1
          [1649827143.462880][3767:3772] CHIP:DMG: }
          [1649827143.463177][3767:3772] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0035 Attribute 0x0000_0006 DataVersion: 2758196590
          [1649827143.463312][3767:3772] CHIP:TOO:   OverrunCount: 0
      disabled: true
