# 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.5.1. [TC-IDM-5.1] Timed Request Action from DUT to TH. [{DUT_Client}]

PICS:
    - MCORE.IDM.C

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

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

    - label:
          "DUT sends the Timed Request to the TH and then sends an Invoke
          Request Message to the TH after receiving the status response message
          from the TH. The Timed Request Message should contain a timeout value
          in milliseconds. (Example - 200 milliseconds)"
      PICS: MCORE.IDM.C.InvokeRequest
      verification: |
          Product maker needs to provide instructions for how to trigger the command on the DUT. For comparison, the DUT behavior for this test step can be simulated using chip-tool (when DUT is a commissioner/Client)

          ./chip-tool onoff on 1 1 --timedInteractionTimeoutMs 200

          On TH (On the reference app) Verify if DUT is responding with the below status response for the above command
          [1655797318.624018][7331:7331] CHIP:EM: Handling via exchange: 28067r, Delegate: 0xaaaad9aed418
          [1655797318.624129][7331:7331] CHIP:DMG: TimedRequestMessage =
          [1655797318.624185][7331:7331] CHIP:DMG: {
          [1655797318.624235][7331:7331] CHIP:DMG:         TimeoutMs = 0xc8,
          [1655797318.624289][7331:7331] CHIP:DMG:         InteractionModelRevision = 1
          [1655797318.624339][7331:7331] CHIP:DMG: }
          [1655797318.624394][7331:7331] CHIP:DMG: Got Timed Request with timeout 200: handler 0xaaaaf9f93440 exchange 28067r

          [1655797318.626273][7331:7331] CHIP:DMG: Handing timed invoke to IM engine: handler 0xaaaaf9f93440 exchange 28067r
          [1655797318.626358][7331:7331] CHIP:DMG: InvokeRequestMessage =
          [1655797318.626411][7331:7331] CHIP:DMG: {
          [1655797318.626460][7331:7331] CHIP:DMG:         suppressResponse = false,
          [1655797318.626517][7331:7331] CHIP:DMG:         timedRequest = true,
          [1655797318.626569][7331:7331] CHIP:DMG:         InvokeRequests =
          [1655797318.626633][7331:7331] CHIP:DMG:         [
          [1655797318.626684][7331:7331] CHIP:DMG:                 CommandDataIB =
          [1655797318.626742][7331:7331] CHIP:DMG:                 {
          [1655797318.626796][7331:7331] CHIP:DMG:                         CommandPathIB =
          [1655797318.626866][7331:7331] CHIP:DMG:                         {
          [1655797318.626934][7331:7331] CHIP:DMG:                                 EndpointId = 0x1,
          [1655797318.627002][7331:7331] CHIP:DMG:                                 ClusterId = 0x6,
          [1655797318.627037][7331:7331] CHIP:DMG:                                 CommandId = 0x1,
          [1655797318.627070][7331:7331] CHIP:DMG:                         },
          [1655797318.627148][7331:7331] CHIP:DMG:
          [1655797318.627179][7331:7331] CHIP:DMG:                         CommandFields =
          [1655797318.627209][7331:7331] CHIP:DMG:                         {
          [1655797318.627243][7331:7331] CHIP:DMG:                         },
          [1655797318.627274][7331:7331] CHIP:DMG:                 },
          [1655797318.627306][7331:7331] CHIP:DMG:
          [1655797318.627330][7331:7331] CHIP:DMG:         ],
          [1655797318.627359][7331:7331] CHIP:DMG:
          [1655797318.627383][7331:7331] CHIP:DMG:         InteractionModelRevision = 1
          [1655797318.627406][7331:7331] CHIP:DMG: },
          [1655797318.627467][7331:7331] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0006 e=1 p=o


          On DUT as a client side, verify that TH all-clusters-app sent success response
          [1657886182.184612][3396:3401] CHIP:DMG: StatusResponseMessage =
          [1657886182.184642][3396:3401] CHIP:DMG: {
          [1657886182.184667][3396:3401] CHIP:DMG:         Status = 0x00 (SUCCESS),
          [1657886182.184693][3396:3401] CHIP:DMG:         InteractionModelRevision = 1
          [1657886182.184716][3396:3401] CHIP:DMG: }
          [1657886182.184742][3396:3401] CHIP:IM: Received status response, status is 0x00 (SUCCESS)


          61453140 from RetransTable on exchange 17901i
          [1657886182.190976][3396:3401] CHIP:DMG: ICR moving to [ResponseRe]
          [1657886182.191027][3396:3401] CHIP:DMG: InvokeResponseMessage =
          [1657886182.191052][3396:3401] CHIP:DMG: {
          [1657886182.191076][3396:3401] CHIP:DMG:         suppressResponse = false,
          [1657886182.191101][3396:3401] CHIP:DMG:         InvokeResponseIBs =
          [1657886182.191132][3396:3401] CHIP:DMG:         [
          [1657886182.191157][3396:3401] CHIP:DMG:                 InvokeResponseIB =
          [1657886182.191190][3396:3401] CHIP:DMG:                 {
          [1657886182.191216][3396:3401] CHIP:DMG:                         CommandStatusIB =
          [1657886182.191253][3396:3401] CHIP:DMG:                         {
          [1657886182.191286][3396:3401] CHIP:DMG:                                 CommandPathIB =
          [1657886182.191325][3396:3401] CHIP:DMG:                                 {
          [1657886182.191365][3396:3401] CHIP:DMG:                                         EndpointId = 0x1,
          [1657886182.191400][3396:3401] CHIP:DMG:                                         ClusterId = 0x6,
          [1657886182.191439][3396:3401] CHIP:DMG:                                         CommandId = 0x1,
          [1657886182.191472][3396:3401] CHIP:DMG:                                 },
          [1657886182.191510][3396:3401] CHIP:DMG:
          [1657886182.191541][3396:3401] CHIP:DMG:                                 StatusIB =
          [1657886182.191575][3396:3401] CHIP:DMG:                                 {
          [1657886182.191613][3396:3401] CHIP:DMG:                                         status = 0x00 (SUCCESS),
          [1657886182.191649][3396:3401] CHIP:DMG:                                 },
          [1657886182.191683][3396:3401] CHIP:DMG:
          [1657886182.191712][3396:3401] CHIP:DMG:                         },
          [1657886182.191746][3396:3401] CHIP:DMG:
          [1657886182.191772][3396:3401] CHIP:DMG:                 },
          [1657886182.191802][3396:3401] CHIP:DMG:
          [1657886182.191826][3396:3401] CHIP:DMG:         ],
          [1657886182.191856][3396:3401] CHIP:DMG:
          [1657886182.191880][3396:3401] CHIP:DMG:         InteractionModelRevision = 1
          [1657886182.191903][3396:3401] CHIP:DMG: },
          [1657886182.191963][3396:3401] CHIP:DMG: Received Command Response Status for Endpoint=1 Cluster=0x0000_0006 Command=0x0000_0001 Status=0x0
      disabled: true

    - label:
          "DUT sends the Timed Request to the TH and then sends a
          WriteRequestMessage to the TH after receiving the status response
          message from the TH. The Timed Request Message should contain a
          timeout value in milliseconds. (Example - 200 milliseconds)"
      PICS: MCORE.IDM.C.WriteRequest
      verification: |
          Product maker needs to provide instructions for how to trigger the command on the DUT. For comparison, the DUT behavior for this test step can be simulated using chip-tool (when DUT is a commissioner/Client)

           ./chip-tool onoff write  on-time 2 1 1 --timedInteractionTimeoutMs 200

          On TH (On the reference app) Verify if DUT is responding with the below status response for the above command

          [1657459639.597900][11525:11525] CHIP:EM: Handling via exchange: 17116r, Delegate: 0xaaaae00c1430
          [1657459639.598014][11525:11525] CHIP:DMG: TimedRequestMessage =
          [1657459639.598055][11525:11525] CHIP:DMG: {
          [1657459639.598091][11525:11525] CHIP:DMG:      TimeoutMs = 0xc8,
          [1657459639.598147][11525:11525] CHIP:DMG:      InteractionModelRevision = 1
          [1657459639.598174][11525:11525] CHIP:DMG: }
          [1657459639.598204][11525:11525] CHIP:DMG: Got Timed Request with timeout 200: handler 0xaaab1651bac0 exchange 17116r
          [1657459639.598282][11525:11525] CHIP:EM: Piggybacking Ack for MessageCounter:161619532 on exchange: 17116r

          [1657459639.599816][11525:11525] CHIP:IM: Received Write request
          [1657459639.599844][11525:11525] CHIP:DMG: IM WH moving to [Initialized]
          [1657459639.599908][11525:11525] CHIP:DMG: WriteRequestMessage =
          [1657459639.599942][11525:11525] CHIP:DMG: {
          [1657459639.599973][11525:11525] CHIP:DMG:      suppressResponse = false,
          [1657459639.600009][11525:11525] CHIP:DMG:      timedRequest = true,
          [1657459639.600041][11525:11525] CHIP:DMG:      AttributeDataIBs =
          [1657459639.600081][11525:11525] CHIP:DMG:      [
          [1657459639.600114][11525:11525] CHIP:DMG:              AttributeDataIB =
          [1657459639.600151][11525:11525] CHIP:DMG:              {
          [1657459639.600185][11525:11525] CHIP:DMG:                      AttributePathIB =
          [1657459639.600231][11525:11525] CHIP:DMG:                      {
          [1657459639.600273][11525:11525] CHIP:DMG:                              Endpoint = 0x1,
          [1657459639.600323][11525:11525] CHIP:DMG:                              Cluster = 0x6,
          [1657459639.600368][11525:11525] CHIP:DMG:                              Attribute = 0x0000_4001,
          [1657459639.600409][11525:11525] CHIP:DMG:                      }
          [1657459639.600452][11525:11525] CHIP:DMG:
          [1657459639.600497][11525:11525] CHIP:DMG:                      Data = 2,
          [1657459639.600535][11525:11525] CHIP:DMG:              },
          [1657459639.600578][11525:11525] CHIP:DMG:
          [1657459639.600610][11525:11525] CHIP:DMG:      ],
          [1657459639.600648][11525:11525] CHIP:DMG:
          [1657459639.600681][11525:11525] CHIP:DMG:      moreChunkedMessages = false,
          [1657459639.600715][11525:11525] CHIP:DMG:      InteractionModelRevision = 1
          [1657459639.600746][11525:11525] CHIP:DMG: },
          [1657459639.600842][11525:11525] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0006 e=1 p=o
          [1657459639.600888][11525:11525] CHIP:DMG: AccessControl: allowed
          [1657459639.600936][11525:11525] CHIP:DMG: Endpoint 1, Cluster 0x0000_0006 update version to 1979c48


          On DUT as a client side, verify that TH all-clusters-app sent success response

          [1657886272.645704][3404:3409] CHIP:DMG: StatusResponseMessage =
          [1657886272.645751][3404:3409] CHIP:DMG: {
          [1657886272.645792][3404:3409] CHIP:DMG:         Status = 0x00 (SUCCESS),
          [1657886272.645839][3404:3409] CHIP:DMG:         InteractionModelRevision = 1
          [1657886272.645878][3404:3409] CHIP:DMG: }
          [1657886272.645918][3404:3409] CHIP:IM: Received status response, status is 0x00 (SUCCESS)

          [1657886272.648220][3404:3409] CHIP:DMG: WriteClient moving to [ResponseRe]
          [1657886272.648285][3404:3409] CHIP:DMG: WriteResponseMessage =
          [1657886272.648326][3404:3409] CHIP:DMG: {
          [1657886272.648361][3404:3409] CHIP:DMG:         AttributeStatusIBs =
          [1657886272.648410][3404:3409] CHIP:DMG:         [
          [1657886272.648450][3404:3409] CHIP:DMG:                 AttributeStatusIB =
          [1657886272.648494][3404:3409] CHIP:DMG:                 {
          [1657886272.648535][3404:3409] CHIP:DMG:                         AttributePathIB =
          [1657886272.648593][3404:3409] CHIP:DMG:                         {
          [1657886272.648644][3404:3409] CHIP:DMG:                                 Endpoint = 0x1,
          [1657886272.648698][3404:3409] CHIP:DMG:                                 Cluster = 0x6,
          [1657886272.648752][3404:3409] CHIP:DMG:                                 Attribute = 0x0000_4001,
          [1657886272.648803][3404:3409] CHIP:DMG:                         }
          [1657886272.648860][3404:3409] CHIP:DMG:
          [1657886272.648910][3404:3409] CHIP:DMG:                         StatusIB =
          [1657886272.648959][3404:3409] CHIP:DMG:                         {
          [1657886272.649011][3404:3409] CHIP:DMG:                                 status = 0x00 (SUCCESS),
          [1657886272.649067][3404:3409] CHIP:DMG:                         },
          [1657886272.649115][3404:3409] CHIP:DMG:
          [1657886272.649161][3404:3409] CHIP:DMG:                 },
          [1657886272.649212][3404:3409] CHIP:DMG:
          [1657886272.649250][3404:3409] CHIP:DMG:         ],
          [1657886272.649283][3404:3409] CHIP:DMG:
          [1657886272.649308][3404:3409] CHIP:DMG:         InteractionModelRevision = 1
          [1657886272.649333][3404:3409] CHIP:DMG: }
          [1657886272.649415][3404:3409] CHIP:DMG: WriteClient moving to [AwaitingDe]
          [1657886272.649481][3404:3409] CHIP:EM: Sending Standalone Ack for MessageCounter:137181137 on exchange 234i
      disabled: true

    - label:
          "DUT sends the Timed Request to the TH The Timed Request Message
          should contain a timeout value in milliseconds. (Example - 200
          milliseconds) Force the TH to not send a response back to the DUT for
          the received timed request."
      PICS: MCORE.IDM.C.WriteRequest || MCORE.IDM.C.InvokeRequest
      verification: |
          This is not testable in normal scenario, and needs to be tested as part of Unit test.
          https://github.com/CHIP-Specifications/chip-test-plans/issues/1885
      disabled: true
