# 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.2.2. [TC-BINFO-2.2] Events [DUT-Server]

PICS:
    - BINFO.S

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

tests:
    - label: "Precondition"
      verification: |
          1. DUT and TH can interact with each other. DUT is commissioned.

          2. BINFO.S.A0009(SoftwareVersion) - TH reads SoftwareVersion attribute from DUT and saves for future use

          3. BINFO.S.A0011(Reachable) - TH reads Reachable attribute from DUT and saves for future use(should be true)

          4. BINFO.S.E00(StartUp) | BINFO.S.E01(ShutDown) || BINFO.S.E02(Leave) - TH subscribes to StartUp, ShutDown, Leave and ReachableChanged events on the Basic Information cluster of the DUT

          5. TH saves the FabricIndex during commissioning
      disabled: true

    - label: "Reboot the DUT TH reads the StartUp event from DUT"
      PICS: BINFO.S.E00
      verification: |
          To verify StartUp event follow the below commands , Pls use equivalent command on the respective DUT


          ./chip-tool  basicinformation read-event start-up 1 0

          Verify that StartUp event priority is set is to CRITICAL and software verision is 1 on TH(chip-tool)

          [1657193007.841105][5422:5427] CHIP:DMG:         ],
          [1657193007.841137][5422:5427] CHIP:DMG:
          [1657193007.841162][5422:5427] CHIP:DMG:         SuppressResponse = true,
          [1657193007.841186][5422:5427] CHIP:DMG:         InteractionModelRevision = 1
          [1657193007.841209][5422:5427] CHIP:DMG: }
          [1657193007.841358][5422:5427] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0028 Event 0x0000_0000
          [1657193007.841387][5422:5427] CHIP:TOO:          Event number: 0
          [1657193007.841409][5422:5427] CHIP:TOO:          Priority: Critical
          [1657193007.841431][5422:5427] CHIP:TOO:          Timestamp: 132146
          [1657193007.841531][5422:5427] CHIP:TOO:   StartUp: {
          [1657193007.841570][5422:5427] CHIP:TOO:     SoftwareVersion: 1
          [1657193007.841594][5422:5427] CHIP:TOO:    }
          [1657193007.841691][5422:5427] CHIP:EM: Sending Standalone Ack for MessageCounter:91740387 on exchange 60385i
      disabled: true

    - label: "TH subscribes to the ShutDown event on the DUT. Shutdown DUT."
      PICS: BINFO.S.E01
      verification: |
          To verify ShutDown event follow the below commands , Pls use equivalent command on the respective DUT


          1. Launch chip-tool into interactive mode with the command

          ./chip-tool interactive start

          2.  run below command in interactive mode shell and  Turn down the DUT
          basicinformation subscribe-event shut-down 20 100 1 0

          verify that ShutDown event as priority set has CRITICAL on TH(Chip-tool)

          CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0028 Event 0x0000_0001
          [1653050528.900202][119367:119372] CHIP:TOO:          Event number: 5
          [1653050528.900295][119367:119372] CHIP:TOO:          Priority: Critical
          [1653050528.900386][119367:119372] CHIP:TOO:          Timestamp: 289436805
          [1653050528.900630][119367:119372] CHIP:TOO:   ShutDown: {
          [1653050528.900732][119367:119372] CHIP:TOO:    }
          [1653050528.900892][119367:119372] CHIP:DMG: Refresh LivenessCheckTime for 28000 milliseconds with SubscriptionId = 0x27408c83 Peer = 01:0000000000000001
      disabled: true
