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

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

tests:
    - label:
          "Reboot the DUT (i.e. restart by power cycle, not by making it factory
          new) TH receives the StartUp event from DUT"
      PICS: BRBINFO.S.E00
      verification: |
          Optional Event -

          ./chip-tool bridgeddevicebasic read-event start-up 1 3

          Verify in TH Log:

          [1657698138.901928][15596:15601] CHIP:DMG: ReportDataMessage =
          [1657698138.901978][15596:15601] CHIP:DMG: {
          [1657698138.902023][15596:15601] CHIP:DMG:         SuppressResponse = true,
          [1657698138.902081][15596:15601] CHIP:DMG:         InteractionModelRevision = 1
          [1657698138.902126][15596:15601] CHIP:DMG: }
      disabled: true

    - label:
          "Make the device on the bridged endpoint unreachable across the
          bridge, such that the Reachable attribute changes, in a
          manufacturer-specific way, such as powering off or otherwise disabling
          the bridged device or the connectivity to it."
      PICS: BRBINFO.S.E03
      verification: |
          Verify in TH Log:

           ./chip-tool bridgeddevicebasic read-event reachable-changed  1 3
      disabled: true

    - label: "TH subscribes to the shutdown event on the DUT. Shutdown DUT."
      PICS: BRBINFO.S.E01
      verification: |
          Optional Event -

          ./chip-tool bridgeddevicebasic read-event shut-down  1 3

          Verify in TH Log:
          [1657698198.023273][15606:15611] CHIP:DMG: ReportDataMessage =
          [1657698198.023302][15606:15611] CHIP:DMG: {
          [1657698198.023326][15606:15611] CHIP:DMG:         SuppressResponse = true,
          [1657698198.023352][15606:15611] CHIP:DMG:         InteractionModelRevision = 1
          [1657698198.023376][15606:15611] CHIP:DMG: }
      disabled: true
