# 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: "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
          basic subscribe-event shut-down 20 100 1 0

          2.  run below command in interactive mode shell and  Turn down the DUT


          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
