# 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
