# 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:
    55.2.2. [TC-DLOG-2.2] Diagnostic Logs Cluster Commands Checks without BDX
    [DUT-Server]

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

tests:
    - label: "Commission DUT to TH"
      verification: |

      disabled: true

    - label:
          "TH sends RetrieveLogsRequest Command (Intent =
          EndUserSupport,TransferFileDesignator = 'test.txt',RequestedProtocol=
          BDX) to DUT"
      verification: |
          sudo ./chip-tool diagnosticlogs retrieve-logs-request 0 0 "test.txt" 1 0

          [1646209207.288823][3223:3228] CHIP:DMG: InvokeResponseMessage =
          [1646209207.288859][3223:3228] CHIP:DMG: {
          [1646209207.288893][3223:3228] CHIP:DMG:        suppressResponse = false,
          [1646209207.288928][3223:3228] CHIP:DMG:        InvokeResponseIBs =
          [1646209207.288972][3223:3228] CHIP:DMG:        [
          [1646209207.289006][3223:3228] CHIP:DMG:                InvokeResponseIB =
          [1646209207.289056][3223:3228] CHIP:DMG:                {
          [1646209207.289096][3223:3228] CHIP:DMG:                        CommandStatusIB =
          [1646209207.289146][3223:3228] CHIP:DMG:                        {
          [1646209207.289189][3223:3228] CHIP:DMG:                                CommandPathIB =
          [1646209207.289237][3223:3228] CHIP:DMG:                                {
          [1646209207.289285][3223:3228] CHIP:DMG:                                   EndpointId = 0x0,
          [1646209207.289338][3223:3228] CHIP:DMG:                                   ClusterId = 0x32,
          [1646209207.289391][3223:3228] CHIP:DMG:                                   CommandId = 0x0,
          [1646209207.289434][3223:3228] CHIP:DMG:                                },
          [1646209207.289479][3223:3228] CHIP:DMG:
          [1646209207.289521][3223:3228] CHIP:DMG:                                StatusIB =
          [1646209207.289573][3223:3228] CHIP:DMG:                                {
          [1646209207.289619][3223:3228] CHIP:DMG:                                   status = 0x0,
          [1646209207.289666][3223:3228] CHIP:DMG:                                },
          [1646209207.289715][3223:3228] CHIP:DMG:
          [1646209207.289756][3223:3228] CHIP:DMG:                        },
          [1646209207.289804][3223:3228] CHIP:DMG:
          [1646209207.289842][3223:3228] CHIP:DMG:                },
          [1646209207.289889][3223:3228] CHIP:DMG:
          [1646209207.289923][3223:3228] CHIP:DMG:        ],
          [1646209207.289966][3223:3228] CHIP:DMG:
          [1646209207.289999][3223:3228] CHIP:DMG:        InteractionModelRevision = 1
          [1646209207.290032][3223:3228] CHIP:DMG: },
          [1646209207.290116][3223:3228] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_0032 Command=0x0000_0000 Status=0x0
      disabled: true
