blob: 2987f8ee77908b77fc6918aad57a529adfb86908 [file] [log] [blame]
# 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.
name: Test Discovery
config:
endpoint: 0
discriminator:
type: INT16U
defaultValue: GetUniqueDiscriminator()
vendorId:
type: INT16U
defaultValue: 65521
productId:
type: INT16U
defaultValue: 32768
deviceType:
type: INT16U
defaultValue: 5
tests:
- label: "Reboot target device"
cluster: "SystemCommands"
command: "Reboot"
arguments:
values:
- name: "discriminator"
value: discriminator
- label: "Wait for the commissioned device to be retrieved"
cluster: "DelayCommands"
command: "WaitForCommissionee"
- label: "Open Commissioning Window"
cluster: "AdministratorCommissioning"
command: "OpenBasicCommissioningWindow"
timedInteractionTimeoutMs: 10000
arguments:
values:
- name: "CommissioningTimeout"
value: 120
- label: "Wait 1000ms for the mdns advertisement to be published"
cluster: "DelayCommands"
command: "WaitForMs"
arguments:
values:
- name: "ms"
value: 1000
- label: "Check Instance Name"
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "instanceName"
saveAs: deviceInstanceNameBeforeReboot
constraints:
minLength: 16
maxLength: 16
isUpperCase: true
isHexString: true
# TODO:
# Find a way to validate the service type and the service domain
- label: "Check Hostname"
PICS: "(WIFI || ETH) && !THREAD"
# On macOS the hostname is the device name and because of it this test is disabled for now.
disabled: true
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "hostName"
constraints:
minLength: 12
maxLength: 12
isUpperCase: true
isHexString: true
- label: "Check Hostname"
PICS: "(!WIFI && !ETH) && THREAD"
# On macOS the hostname is the device name and because of it this test is disabled for now.
disabled: true
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "hostName"
constraints:
minLength: 16
maxLength: 16
isUpperCase: true
isHexString: true
# Commissioning Subtypes
- label: "Check Long Discriminator _L"
cluster: "DiscoveryCommands"
command: "FindCommissionableByLongDiscriminator"
arguments:
values:
- name: "value"
value: discriminator
- label: "Check Short Discriminator (_S)"
cluster: "DiscoveryCommands"
command: "FindCommissionableByShortDiscriminator"
arguments:
values:
- name: "value"
value: discriminator
- label: "Check Commissioning Mode (_CM)"
cluster: "DiscoveryCommands"
command: "FindCommissionableByCommissioningMode"
- label: "Check Vendor ID (_V)"
PICS: VENDOR_SUBTYPE
cluster: "DiscoveryCommands"
command: "FindCommissionableByVendorId"
arguments:
values:
- name: "value"
value: vendorId
- label: "Check Device Type ID (_T)"
# The device type is not broadcasted by the accessory under CI.
disabled: true
PICS: DEVTYPE_SUBTYPE
cluster: "DiscoveryCommands"
command: "FindCommissionableByDeviceType"
arguments:
values:
- name: "value"
value: deviceType
# TXT Records
- label: "TXT key for discriminator (D)"
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "longDiscriminator"
value: discriminator
constraints:
minValue: 0
maxValue: 4096
- label: "TXT key for Vendor ID and Product ID (VP)"
PICS: VP_KEY
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "vendorId"
value: vendorId
# Maybe it should be a PICS code to differentiate between manufacturer that wants to broadcast the
# product id ?
- label: "TXT key for Vendor ID and Product ID (VP)"
PICS: VP_KEY
optional: true
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "productId"
value: productId
- label: "Optional TXT key for MRP Retry Interval Idle (CRI)"
PICS: CRI_COMM_DISCOVERY_KEY
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "mrpRetryIntervalIdle"
constraints:
maxValue: 3600000
- label: "Optional TXT key for MRP Retry Interval Active (CRA)"
PICS: CRA_COMM_DISCOVERY_KEY
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "mrpRetryIntervalActive"
constraints:
maxValue: 3600000
- label: "TXT key for commissioning mode (CM)"
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "commissioningMode"
value: 1
- label: "Optional TXT key for device type (DT)"
disabled: true
PICS: DT_KEY
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "deviceType"
value: deviceType
constraints:
# The specification says this is a number expressed as <ddd>, but it seems like it can goes
# up to 0xBFFF (49151).
maxValue: 999
- label: "Optional TXT key for device name (DN)"
PICS: DN_KEY
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "deviceName"
constraints:
maxLength: 32
- label: "Optional TXT key for rotating device identifier (RI)"
PICS: RI_KEY
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "rotatingIdLen"
constraints:
maxValue: 100
- label: "Optional TXT key for pairing hint (PH)"
PICS: PH_KEY
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "pairingHint"
notValue: 0
- label: "Optional TXT key for pairing instructions (PI)"
PICS: PI_KEY
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "pairingInstruction"
constraints:
maxLength: 128
- label: "Check IPs"
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "numIPs"
constraints:
minValue: 1
- label: "Reboot target device"
cluster: "SystemCommands"
command: "Reboot"
arguments:
values:
- name: "discriminator"
value: discriminator
- label: "Wait for the commissioned device to be retrieved"
cluster: "DelayCommands"
command: "WaitForCommissionee"
- label: "Open Commissioning Window"
cluster: "AdministratorCommissioning"
command: "OpenBasicCommissioningWindow"
timedInteractionTimeoutMs: 10000
arguments:
values:
- name: "CommissioningTimeout"
value: 120
- label: "Wait 1000ms for the mdns advertisement to be published"
cluster: "DelayCommands"
command: "WaitForMs"
arguments:
values:
- name: "ms"
value: 1000
- label: "Check Instance Name"
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "instanceName"
constraints:
minLength: 16
maxLength: 16
isUpperCase: true
isHexString: true
notValue: deviceInstanceNameBeforeReboot