# 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 Information"
    endpoint: 0

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

    - label:
          "Preconditions: 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: "Preconditions: 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:
          "Preconditions: 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 RemainingNetworkSlots"
      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.C03.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
          OriginalNetworkList"
      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. NetworkIndex 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.C03.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
