# 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.12. [TC-CNET-4.14] [Thread] Verification for ReorderNetwork command
    [DUT-Server]

PICS:
    - CNET.S.F01

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

tests:
    - label: "Commission TH and DUT on Thread setup"
      verification: |

      disabled: true

    - label:
          "The cluster Identifier 49 (0x0031) is present in the ServerList
          attribute"
      verification: |
          ./chip-tool descriptor read server-list 1 0

          Verify the "server-list" on the TH(Chip-tool) log

          [1653474860.462391][29901:29906] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_001D Attribute 0x0000_0001 DataVersion: 1237231415
          [1653474860.462487][29901:29906] CHIP:TOO:   server list: 25 entries
          [1653474860.462524][29901:29906] CHIP:TOO:     [1]: 3
          [1653474860.462549][29901:29906] CHIP:TOO:     [2]: 4
          [1653474860.462574][29901:29906] CHIP:TOO:     [3]: 29
          [1653474860.462598][29901:29906] CHIP:TOO:     [4]: 30
          [1653474860.462622][29901:29906] CHIP:TOO:     [5]: 31
          [1653474860.462646][29901:29906] CHIP:TOO:     [6]: 40
          [1653474860.462670][29901:29906] CHIP:TOO:     [7]: 42
          [1653474860.462693][29901:29906] CHIP:TOO:     [8]: 43
          [1653474860.462717][29901:29906] CHIP:TOO:     [9]: 44
          [1653474860.462741][29901:29906] CHIP:TOO:     [10]: 45
          [1653474860.462765][29901:29906] CHIP:TOO:     [11]: 46
          [1653474860.462788][29901:29906] CHIP:TOO:     [12]: 48
          [1653474860.462812][29901:29906] CHIP:TOO:     [13]: 49
          [1653474860.462836][29901:29906] CHIP:TOO:     [14]: 50
          [1653474860.462859][29901:29906] CHIP:TOO:     [15]: 51
          [1653474860.462883][29901:29906] CHIP:TOO:     [16]: 52
          [1653474860.462906][29901:29906] CHIP:TOO:     [17]: 53
          [1653474860.462930][29901:29906] CHIP:TOO:     [18]: 54
          [1653474860.462954][29901:29906] CHIP:TOO:     [19]: 55
          [1653474860.462977][29901:29906] CHIP:TOO:     [20]: 60
          [1653474860.463001][29901:29906] CHIP:TOO:     [21]: 62
          [1653474860.463024][29901:29906] CHIP:TOO:     [22]: 63
          [1653474860.463048][29901:29906] CHIP:TOO:     [23]: 64
          [1653474860.463071][29901:29906] CHIP:TOO:     [24]: 65
          [1653474860.463095][29901:29906] CHIP:TOO:     [25]: 1029
          [1653474860.463296][29901:29906] CHIP:EM: Sending Standalone Ack for MessageCounter:10703464 on exchange 2435i
      disabled: true

    - label: "The FeatureMap attribute value is 2"
      verification: |
          ./chip-tool networkcommissioning read feature-map 1 0

          Verify the "feature-map" on the TH(Chip-tool) log

          [1653474932.055513][29920:29925] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0031 Attribute 0x0000_FFFC DataVersion: 1600858167
          [1653474932.055578][29920:29925] CHIP:TOO:   FeatureMap: 1
          [1653474932.055675][29920:29925] CHIP:EM: Sending Standalone Ack for MessageCounter:1494059 on exchange 5482i
      disabled: true

    - label:
          "MaxNetworks attribute value is at least 4 which is saved as
          'MaxNetworksValue' for future use"
      verification: |
          The test case is not verifiable. As MaxNetworks value is 1 but expected is 4

          ./chip-tool networkcommissioning read max-networks 1 0

          [1653476960.303444][30164:30169] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0031 Attribute 0x0000_0000 DataVersion: 1600858167
          [1653476960.303531][30164:30169] CHIP:TOO:   MaxNetworks: 1
          [1653476960.303641][30164:30169] CHIP:EM: Sending Standalone Ack for MessageCounter:2083922 on exchange 45120i
      disabled: true

    - label:
          "TH sends  ArmFailSafe  command to the  DUT
          with  ExpiryLengthSeco  nds set to 900"
      verification: |
          ./chip-tool generalcommissioning arm-fail-safe 900 0 1 0

          The test case is not verifiable in RPI platform. As MaxNetworks value is 1 but expected is 4
          ( Pre-Condition)
      disabled: true

    - label:
          "TH reads Networks attribute from the DUT and saves the number of
          entries as NumNetworks"
      PICS: CNET.S.A0001
      verification: |
          ./chip-tool network-commissioning read networks 1 0

          The test case is not verifiable in RPI platform. As MaxNetworks value is 1 but expected is 4
          ( Pre-Condition)
      disabled: true

    - label:
          "TH calculates the  number of  remaining  network slots
          as  MaxNetworksVal  ue -  NumNetworks  and saves
          as  RemainingNetwor  kSlots"
      verification: |
          The test case is not verifiable in RPI platform. As MaxNetworks value is 1 but expected is 4
          ( Pre-Condition)
      disabled: true

    - label:
          "TH calculates the  midpoint of the  network list
          as  floor((MaxNetwor  ksValue + 1)/2)  and saves as  Midpoint"
      verification: |
          ./chip-tool networkcommissioning add-or-update-thread-network hex:1011101122222229 1 0 --Breadcrumb 1

          The test case is not verifiable in RPI platform. As MaxNetworks value is 1 but expected is 4
          ( Pre-Condition)
      disabled: true

    - label:
          "TH sends ArmFailSafe command to the DUT with the ExpiryLengthSeco nds
          field set to 900"
      verification: |
          ./chip-tool generalcommissioning arm-fail-safe 900 0 1 0


          The test case is not verifiable in RPI platform. As MaxNetworks value is 1 but expected is 4
          ( Pre-Condition)
      disabled: true

    - label:
          "TH sends AddOrUpdateThre adNetwork command to the DUT. This step
          should be repeated RemainingNetwor kSlots times using DIFFERENT
          OperationalDatase t values and Breadcrumb set to 1. Note that these
          credentials are NOT required to be connectable."
      PICS: CNET.S.C02.Rsp && CNET.S.C05.Tx
      verification: |
          ./chip-tool networkcommissioning add-or-update-thread-network hex:1011101122222229 1 0 --Breadcrumb 1

          The test case is not verifiable in RPI platform. As MaxNetworks value is 1 but expected is 4
          ( Pre-Condition)
      disabled: true

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

          The test case is not verifiable in RPI platform. As MaxNetworks value is 1 but expected is 4
          ( Pre-Condition)
      disabled: true

    - label:
          "TH sends  ReorderNetwo  rk Command  to the DUT  with
          the  following  fields:  1. NetworkID  is the  extended  PAN ID
          of  PIXIT.CNET  .THREAD_1  ST_OPERA  TIONALDA  TASET  2.  NetworkIn  dex
          is  MaxNetwo  rksValue  3.  Breadcrum  b is 2"
      PICS: CNET.S.C08.Rsp && CNET.S.C05.Tx
      verification: |
          ./chip-tool network-commissioning read networks 1 0

          The test case is not verifiable in RPI platform. As MaxNetworks value is 1 but expected is 4
          ( Pre-Condition)
      disabled: true

    - label:
          "TH reads Breadcumb attribute from the General Commissioning Cluster"
      verification: |
          ./chip-tool generalcommissioning read breadcrumb 1 0

          The test case is not verifiable in RPI platform. As MaxNetworks value is 1 but expected is 4
          ( Pre-Condition)
      disabled: true

    - label:
          "TH sends  ReorderNetwo  rk Command  to the DUT  with
          the  following  fields:  1. NetworkID  is a  NetworkID  value
          NOT  present in  OriginalNe  tworkList  2.  NetworkIn  dex
          is  Midpoint  3.  Breadcrum  b is 2"
      PICS: CNET.S.C08.Rsp && CNET.S.C05.Tx
      verification: |
          The test case is not verifiable in RPI platform. As MaxNetworks value is 1 but expected is 4
          ( Pre-Condition)
      disabled: true

    - label:
          "TH reads Breadcumb attribute from the General Commissioning Cluster"
      verification: |
          ./chip-tool generalcommissioning read breadcrumb 1 0

          The test case is not verifiable in RPI platform. As MaxNetworks value is 1 but expected is 4
          ( Pre-Condition)
      disabled: true

    - label:
          "TH sends  ReorderNetwo  rk Command  to the DUT  with
          the  following  fields:  1. NetworkID  is the  extended  PAN ID
          of  PIXIT.CNET  .THREAD_1  ST_OPERA  TIONALDA  TASET  2.  NetworkIn  dex
          is  Midpoint  3.  Breadcrum  b is 2"
      PICS: CNET.S.C08.Rsp && CNET.S.C05.Tx
      verification: |
          ./chip-tool  networkcommissioning reorder-network  hex:1011101122222229 1 0 --Breadcrumb 1

          The test case is not verifiable in RPI platform. As MaxNetworks value is 1 but expected is 4
          ( Pre-Condition)
      disabled: true

    - label:
          "TH reads  Breadcumb  attribute from
          the  General  Commissioning  Cluster"
      verification: |
          ./chip-tool generalcommissioning read breadcrumb 1 0

          The test case is not verifiable in RPI platform. As MaxNetworks value is 1 but expected is 4
          ( Pre-Condition)
      disabled: true

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

          The test case is not verifiable in RPI platform. As MaxNetworks value is 1 but expected is 4
          ( Pre-Condition)
      disabled: true

    - label:
          "TH sends  ArmFailSafe  command to the  DUT
          with  ExpiryLengthSeco  nds set to 0"
      verification: |
          ./chip-tool generalcommissioning arm-fail-safe 0 0 1 0

          The test case is not verifiable in RPI platform. As MaxNetworks value is 1 but expected is 4
          ( Pre-Condition)
      disabled: true

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

          The test case is not verifiable in RPI platform. As MaxNetworks value is 1 but expected is 4
          ( Pre-Condition)
      disabled: true

    - label:
          "TH sends ArmFailSafe command to the DUT with ExpiryLengthSeco nds set
          to 900"
      verification: |
          ./chip-tool generalcommissioning arm-fail-safe 900 0 1 0


          The test case is not verifiable in RPI platform. As MaxNetworks value is 1 but expected is 4
          ( Pre-Condition)
      disabled: true

    - label:
          "TH sends  AddOrUpdateThre  adNetwork  command to the  DUT. This
          step  should be  repeated  RemainingNetwor  kSlots times
          using  DIFFERENT  OperationalDatase  t values and  Breadcrumb set
          to  1. Note that these  credentials are  NOT required to  be
          connectable"
      PICS: CNET.S.C02.Rsp && CNET.S.C05.Tx
      verification: |
          The test case is not verifiable in RPI platform. As MaxNetworks value is 1 but expected is 4
          ( Pre-Condition)
      disabled: true

    - label:
          "TH sends  ReorderNetwo  rk Command  to the DUT  with
          the  following  fields:  1. NetworkID  is the  extended  PAN ID
          of  PIXIT.CNET  .THREAD_1  ST_OPERA  TIONALDA  TASET  2.  NetworkIn  dex
          is  Midpoint  3.  Breadcrum  b is 2"
      PICS: CNET.S.C08.Rsp && CNET.S.C05.Tx
      verification: |
          The test case is not verifiable in RPI platform. As MaxNetworks value is 1 but expected is 4
          ( Pre-Condition)
      disabled: true

    - label: "TH sends the CommissioningCo mplete command to the DUT"
      verification: |
          ./chip-tool generalcommissioning CommissioningComplete 1 0

          The test case is not verifiable in RPI platform. As MaxNetworks value is 1 but expected is 4
          ( Pre-Condition)
      disabled: true

    - label:
          "TH sends  ArmFailSafe  command to the  DUT
          with  ExpiryLengthSeco  nds set to 0"
      verification: |
          ./chip-tool generalcommissioning arm-fail-safe 0 0 1 0

          The test case is not verifiable in RPI platform. As MaxNetworks value is 1 but expected is 4
          ( Pre-Condition)
      disabled: true

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

          The test case is not verifiable in RPI platform. As MaxNetworks value is 1 but expected is 4
          ( Pre-Condition)
      disabled: true
