| # 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 |