# 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.4.3. [TC-SC-4.3] Operational Discovery - Node

PICS:
    - MCORE.ROLE.COMMISSIONEE

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

tests:
    - label: "TH is instructed to start advertising a service using DNS-SD"
      verification: |
          verification step to be updated.
      disabled: true

    - label: "Scan for DNS-SD advertising"
      PICS:
          MCORE.COM.WIFI && MCORE.COM.ETH && MCORE.COM.THR &&
          MCORE.SC.SII_OP_DISCOVERY_KEY && MCORE.SC.SAI_OP_DISCOVERY_KEY &&
          MCORE.SC.T_KEY
      verification: |
          ubuntu@ubuntu:~$ avahi-browse -rt _matter._tcp

          Verify on the TH Log:

          + veth721e1d9 IPv6 433B62F8F07F4327-0000000000000001             _matter._tcp         local
          = veth721e1d9 IPv6 433B62F8F07F4327-0000000000000001             _matter._tcp         local
             hostname = [E45F0149AE290000.local]
             address = [fe80::28e0:95ff:fed9:3085]
             port = [5540]
             txt = ["T=1" "SAI=300" "SII=5000"]
      disabled: true

    - label:
          "TH is instructed to start advertising an operational service using
          DNS-SD with non-standard TXT record keys"
      verification: |
          Run the publish service command on TH:

          avahi-publish-service --subtype=_S3._sub._matter._tcp --subtype=_L840._sub._matter._tcp DD200C20D25AE5F7 --subtype=_CM._sub._matter._tcp _matter._tcp 11111 D=840 CM=2  INVALID_TEST=40
      disabled: true

    - label:
          "DUT is rebooted and Commissioned again, then put in Commissioning
          Mode using Open Basic Commissioning Window command, DUT is instructed
          to advertise its service with the modified TXT record."
      verification: |
          ./chip-tool administratorcommissioning open-basic-commissioning-window 200 1 0 --timedInteractionTimeoutMs 1000

          verify on TH (Chip-tool) logs:

          [1650873075.234374][7964:7969] CHIP:DMG:                                         EndpointId = 0x0,
          [1650873075.234449][7964:7969] CHIP:DMG:                                         ClusterId = 0x3c,
          [1650873075.234542][7964:7969] CHIP:DMG:                                         CommandId = 0x1,
          [1650873075.234613][7964:7969] CHIP:DMG:                                 },
          [1650873075.234693][7964:7969] CHIP:DMG:
          [1650873075.234758][7964:7969] CHIP:DMG:                                 StatusIB =
          [1650873075.234829][7964:7969] CHIP:DMG:                                 {
          [1650873075.234909][7964:7969] CHIP:DMG:                                         status = 0x00 (SUCCESS),
          [1650873075.234984][7964:7969] CHIP:DMG:                                 },
      disabled: true

    - label: "Scan for DNS-SD advertising"
      PICS:
          MCORE.COM.WIFI && MCORE.COM.ETH && MCORE.COM.THR &&
          MCORE.SC.SII_OP_DISCOVERY_KEY && MCORE.SC.SAI_OP_DISCOVERY_KEY &&
          MCORE.SC.T_KEY
      verification: |
          ubuntu@ubuntu:~$ avahi-browse -rt _matter._tcp
          Verify on the TH Log:

          +   eth0 IPv6 B1605B84E886EDCF-0000000000000258             _matter._tcp         local
          =   eth0 IPv6 21F41C9933CAAF62-000000000000003C             _matter._tcp         local
             hostname = [E45F010EBE440000.local]
             address = [fe80::e65f:1ff:fe0e:be44]
             port = [5540]
             txt = ["T=1" "SAI=300" "SII=5000"]
      disabled: true
