blob: febff676e13b64c899852d2b495a1b3f1a0f8350 [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:
nodeId: 0x12344321
endpoint: 0
discriminator:
type: int16u
defaultValue: 3840
vendorId:
type: int16u
defaultValue: 65521
productId:
type: int16u
defaultValue: 32769
deviceType:
type: int16u
defaultValue: 5
tests:
- label: "Stop target device"
cluster: "SystemCommands"
command: "Stop"
- label:
"Start target device with the provided discriminator for basic
commissioning advertisement"
cluster: "SystemCommands"
command: "Start"
arguments:
values:
- name: "discriminator"
value: discriminator
- label: "Wait for the commissioned device to be retrieved"
cluster: "DelayCommands"
command: "WaitForCommissionee"
arguments:
values:
- name: "nodeId"
value: nodeId
- label: "Open Commissioning Window with too-short timeout"
cluster: "AdministratorCommissioning"
command: "OpenBasicCommissioningWindow"
timedInteractionTimeoutMs: 10000
arguments:
values:
- name: "CommissioningTimeout"
value: 120
response:
error: INVALID_COMMAND
- label: "Open Commissioning Window with too-long timeout"
cluster: "AdministratorCommissioning"
command: "OpenBasicCommissioningWindow"
timedInteractionTimeoutMs: 10000
arguments:
values:
- name: "CommissioningTimeout"
value: 1000
response:
error: INVALID_COMMAND
- label: "Open Commissioning Window"
cluster: "AdministratorCommissioning"
command: "OpenBasicCommissioningWindow"
timedInteractionTimeoutMs: 10000
arguments:
values:
- name: "CommissioningTimeout"
value: 180
- 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"
constraints:
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: "Stop target device"
cluster: "SystemCommands"
command: "Stop"
- label:
"Start target device with the provided discriminator for basic
commissioning advertisement"
cluster: "SystemCommands"
command: "Start"
arguments:
values:
- name: "discriminator"
value: discriminator
- label: "Wait for the commissioned device to be retrieved"
cluster: "DelayCommands"
command: "WaitForCommissionee"
arguments:
values:
- name: "nodeId"
value: nodeId
- label: "Open Commissioning Window"
cluster: "AdministratorCommissioning"
command: "OpenBasicCommissioningWindow"
timedInteractionTimeoutMs: 10000
arguments:
values:
- name: "CommissioningTimeout"
value: 180
- label: "Check Instance Name"
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "instanceName"
constraints:
minLength: 16
maxLength: 16
isUpperCase: true
isHexString: true
notValue: deviceInstanceNameBeforeReboot