# 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.3.1. [TC-DLOG-3.1] Diagnostic Logs Cluster Commands Checks[DUT-Client]

PICS:
    - DLOG.C

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

tests:
    - label: "Note"
      verification: |
          For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command.
      disabled: true

    - label: "Precondition"
      verification: |
          DUT supports BDX
          TH supports BDX
      disabled: true

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

      disabled: true

    - label: "DUT sends RetrieveLogsRequest Command to TH"
      PICS: DLOG.C.C00.Tx
      verification: |
          ./chip-tool diagnosticlogs retrieve-logs-request 0 0 "test.txt" 1 0


          [1646215088531] [15387:2221674] CHIP: [DMG]
          [1646215088531] [15387:2221674] CHIP: [DMG]                                 StatusIB =
          [1646215088531] [15387:2221674] CHIP: [DMG]                                 {
          [1646215088531] [15387:2221674] CHIP: [DMG]                                         status = 0x0,
          [1646215088531] [15387:2221674] CHIP: [DMG]                                 },
          [1646215088531] [15387:2221674] CHIP: [DMG]
          [1646215088531] [15387:2221674] CHIP: [DMG]                         },
          [1646215088531] [15387:2221674] CHIP: [DMG]
          [1646215088531] [15387:2221674] CHIP: [DMG]                 },
          [1646215088531] [15387:2221674] CHIP: [DMG]
          [1646215088531] [15387:2221674] CHIP: [DMG]         ],
          [1646215088532] [15387:2221674] CHIP: [DMG]
          [1646215088532] [15387:2221674] CHIP: [DMG]         InteractionModelRevision = 1
          [1646215088532] [15387:2221674] CHIP: [DMG] },
          [1646215088532] [15387:2221674] CHIP: [DMG] Received Command Response Status for Endpoint=0 Cluster=0x0000_0032 Command=0x0000_0000 Status=0x0
      disabled: true

    - label: "In case TH initiates a BDX Transfer"
      verification: |
          grl_matter@GRL-Matters-MacBook-Air debug % sudo ./chip-tool diagnosticlogs retrieve-logs-request 0 1 "test.txt" 1 0


          [1646208340.192138][3171:3176] CHIP:DMG:
          [1646208340.192177][3171:3176] CHIP:DMG:                                StatusIB =
          [1646208340.192224][3171:3176] CHIP:DMG:                                {
          [1646208340.192271][3171:3176] CHIP:DMG:                                   status = 0x0,
          [1646208340.192319][3171:3176] CHIP:DMG:                                },
          [1646208340.192362][3171:3176] CHIP:DMG:
          [1646208340.192401][3171:3176] CHIP:DMG:                        },
          [1646208340.192450][3171:3176] CHIP:DMG:
          [1646208340.192486][3171:3176] CHIP:DMG:                },
          [1646208340.192530][3171:3176] CHIP:DMG:
          [1646208340.192562][3171:3176] CHIP:DMG:        ],
          [1646208340.192602][3171:3176] CHIP:DMG:
          [1646208340.192634][3171:3176] CHIP:DMG:        InteractionModelRevision = 1
          [1646208340.192665][3171:3176] CHIP:DMG: },
          [1646208340.192744][3171:3176] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_0032 Command=0x0000_0000 Status=0x0
      disabled: true

    - label: "In case TH does not initiate BDX Transfer"
      verification: |
          ./chip-tool diagnosticlogs retrieve-logs-request 0 0 "test.txt" 1 0


          [1646215088531] [15387:2221674] CHIP: [DMG]
          [1646215088531] [15387:2221674] CHIP: [DMG]                                 StatusIB =
          [1646215088531] [15387:2221674] CHIP: [DMG]                                 {
          [1646215088531] [15387:2221674] CHIP: [DMG]                                         status = 0x0,
          [1646215088531] [15387:2221674] CHIP: [DMG]                                 },
          [1646215088531] [15387:2221674] CHIP: [DMG]
          [1646215088531] [15387:2221674] CHIP: [DMG]                         },
          [1646215088531] [15387:2221674] CHIP: [DMG]
          [1646215088531] [15387:2221674] CHIP: [DMG]                 },
          [1646215088531] [15387:2221674] CHIP: [DMG]
          [1646215088531] [15387:2221674] CHIP: [DMG]         ],
          [1646215088532] [15387:2221674] CHIP: [DMG]
          [1646215088532] [15387:2221674] CHIP: [DMG]         InteractionModelRevision = 1
          [1646215088532] [15387:2221674] CHIP: [DMG] },
          [1646215088532] [15387:2221674] CHIP: [DMG] Received Command Response Status for Endpoint=0 Cluster=0x0000_0032 Command=0x0000_0000 Status=0x0
      disabled: true
