# 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"
    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 basic read-event start-up 1 0

          verify that StartUp event as priority set has CRITICAL and software verision 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 leave 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
          basic 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
