# 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:
    12.4.17. [TC-CNET-4.19] [Ethernet] Verification for attributes check
    [DUT-Client]

PICS:
    - CNET.C.F02

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

tests:
    - label: "DUT reads the MaxNetworks attribute from the TH"
      PICS: CNET.S.A0000
      verification: |
          ./chip-tool networkcommissioning read max-networks 1 0

          Verify MaxNetworks on the TH/All-cluster-app Log:

          [1646226441.815782][2475:2480] CHIP:DMG:        SuppressResponse = true,
          [1646226441.815849][2475:2480] CHIP:DMG:        InteractionModelRevision = 1
          [1646226441.815889][2475:2480] CHIP:DMG: }
          [1646226441.816092][2475:2480] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0031 Attribute 0x0000_0000DataVersion: 3622667250
          [1646226441.816191][2475:2480] CHIP:TOO:   MaxNetworks: 1
          [1646226441.816288][2475:2480] CHIP:EM: Sending Standalone Ack for MessageCounter:14864333 on exchange 39473i
      disabled: true

    - label: "DUT reads the Networks attribute from the TH"
      PICS: CNET.S.A0001
      verification: |
          ./chip-tool networkcommissioning read networks 1 0

          Verify Networks entiries and its status on the TH/All-cluster-app Log:

          [1654076774.294361][33659:33664] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0031 Attribute 0x0000_0001 DataVersion: 609053543
          [1654076774.294505][33659:33664] CHIP:TOO:   Networks: 1 entries
          [1654076774.294625][33659:33664] CHIP:TOO:     [1]: {
          [1654076774.294679][33659:33664] CHIP:TOO:       NetworkID: 6368697035
          [1654076774.294726][33659:33664] CHIP:TOO:       Connected: TRUE
          [1654076774.294774][33659:33664] CHIP:TOO:      }
      disabled: true

    - label: "DUT reads InterfaceEnabled attribute from the TH"
      PICS: CNET.S.A0004
      verification: |
          ./chip-tool networkcommissioning read interface-enabled 1 0

          Verify InterfaceEnabled on the TH/All-cluster-app Log:

          [1646226615.428003][2502:2507] CHIP:DMG:
          [1646226615.428035][2502:2507] CHIP:DMG:        SuppressResponse = true,
          [1646226615.428064][2502:2507] CHIP:DMG:        InteractionModelRevision = 1
          [1646226615.428094][2502:2507] CHIP:DMG: }
          [1646226615.428270][2502:2507] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0031 Attribute 0x0000_0004DataVersion: 3622667250
          [1646226615.428331][2502:2507] CHIP:TOO:   InterfaceEnabled: TRUE
          [1646226615.428415][2502:2507] CHIP:EM: Sending Standalone Ack for MessageCounter:3894401 on exchange 55691i
      disabled: true

    - label: "DUT reads LastNetworkingStatus attribute from the TH"
      PICS: CNET.S.A0005
      verification: |
          ./chip-tool networkcommissioning read last-networking-status 1 0

          Verify LastNetworkingStatus on the TH/All-cluster-app Log:

          [1646227167.614060][2533:2538] CHIP:DMG:        SuppressResponse = true,
          [1646227167.614095][2533:2538] CHIP:DMG:        InteractionModelRevision = 1
          [1646227167.614126][2533:2538] CHIP:DMG: }
          [1646227167.614299][2533:2538] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0031 Attribute 0x0000_0005DataVersion: 3622667250
          [1646227167.614385][2533:2538] CHIP:TOO:   LastNetworkingStatus: 0
          [1646227167.614468][2533:2538] CHIP:EM: Sending Standalone Ack for MessageCounter:8947540 on exchange 12532i
      disabled: true

    - label: "DUT reads LastNetworkID attribute from the TH"
      PICS: CNET.S.A0006
      verification: |
          ./chip-tool networkcommissioning read last-network-id 1

          Verify LastNetworkID on the TH/All-cluster-app Log:

          [1654076802.288579][33669:33674] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0031 Attribute 0x0000_0006 DataVersion: 609053543
          [1654076802.288708][33669:33674] CHIP:TOO:   LastNetworkID: 6368697035
      disabled: true

    - label: "DUT reads LastConnectErrorValue attribute from the TH"
      PICS: CNET.S.A0007
      verification: |
          ./chip-tool networkcommissioning read last-connect-error-value 1 0

          Verify LastConnectErrorValue on the TH/All-cluster-app Log:

          [1653483224.839873][28189:28194] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0031 Attribute 0x0000_0007 DataVersion: 3189790698
          [1653483224.839927][28189:28194] CHIP:TOO:   LastConnectErrorValue: null
          [1653483224.840028][28189:28194] CHIP:EM: Sending Standalone Ack for MessageCounter:289132 on exchange 60682i
      disabled: true
