Skip to content

Commit 26cd4d0

Browse files
committed
[Python] Adjust tests to use new commissioning error handling
1 parent 0a4a156 commit 26cd4d0

File tree

9 files changed

+80
-55
lines changed

9 files changed

+80
-55
lines changed

src/controller/python/chip/yaml/runner.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -664,10 +664,10 @@ async def run_action(self, dev_ctrl: ChipDeviceController) -> _ActionResult:
664664
if self._command == 'GetCommissionerNodeId':
665665
return _ActionResult(status=_ActionStatus.SUCCESS, response=_GetCommissionerNodeIdResult(dev_ctrl.nodeId))
666666

667-
resp = dev_ctrl.CommissionWithCode(self._setup_payload, self._node_id)
668-
if resp:
667+
try:
668+
dev_ctrl.CommissionWithCode(self._setup_payload, self._node_id)
669669
return _ActionResult(status=_ActionStatus.SUCCESS, response=None)
670-
else:
670+
except ChipStackError:
671671
return _ActionResult(status=_ActionStatus.ERROR, response=None)
672672

673673

src/controller/python/test/test_scripts/base.py

+16-7
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
from chip import ChipDeviceCtrl
4242
from chip.ChipStack import ChipStack
4343
from chip.crypto import p256keypair
44+
from chip.exceptions import ChipStackException
4445
from chip.utils import CommissioningBuildingBlocks
4546
from cirque_restart_remote_device import restartRemoteDevice
4647
from ecdsa import NIST256p
@@ -268,7 +269,9 @@ def TestPaseOnly(self, ip: str, setuppin: int, nodeid: int, devCtrl=None):
268269
def TestCommissionOnly(self, nodeid: int):
269270
self.logger.info(
270271
"Commissioning device with id {}".format(nodeid))
271-
if not self.devCtrl.Commission(nodeid):
272+
try:
273+
self.devCtrl.Commission(nodeid)
274+
except ChipStackException:
272275
self.logger.info(
273276
"Failed to commission device with id {}".format(str(nodeid)))
274277
return False
@@ -311,17 +314,21 @@ def TestCommissionFailureOnReport(self, nodeid: int, failAfter: int):
311314

312315
def TestCommissioning(self, ip: str, setuppin: int, nodeid: int):
313316
self.logger.info("Commissioning device {}".format(ip))
314-
if not self.devCtrl.CommissionIP(ip, setuppin, nodeid):
315-
self.logger.info(
317+
try:
318+
self.devCtrl.CommissionIP(ip, setuppin, nodeid)
319+
except ChipStackException:
320+
self.logger.exception(
316321
"Failed to finish commissioning device {}".format(ip))
317322
return False
318323
self.logger.info("Commissioning finished.")
319324
return True
320325

321326
def TestCommissioningWithSetupPayload(self, setupPayload: str, nodeid: int, discoveryType: int = 2):
322327
self.logger.info("Commissioning device with setup payload {}".format(setupPayload))
323-
if not self.devCtrl.CommissionWithCode(setupPayload, nodeid, chip.discovery.DiscoveryType(discoveryType)):
324-
self.logger.info(
328+
try:
329+
self.devCtrl.CommissionWithCode(setupPayload, nodeid, chip.discovery.DiscoveryType(discoveryType))
330+
except ChipStackException:
331+
self.logger.exception(
325332
"Failed to finish commissioning device {}".format(setupPayload))
326333
return False
327334
self.logger.info("Commissioning finished.")
@@ -783,8 +790,10 @@ async def TestMultiFabric(self, ip: str, setuppin: int, nodeid: int):
783790
self.devCtrl2 = self.fabricAdmin2.NewController(
784791
self.controllerNodeId, self.paaTrustStorePath)
785792

786-
if not self.devCtrl2.CommissionIP(ip, setuppin, nodeid):
787-
self.logger.info(
793+
try:
794+
self.devCtrl2.CommissionIP(ip, setuppin, nodeid)
795+
except ChipStackException:
796+
self.logger.exception(
788797
"Failed to finish key exchange with device {}".format(ip))
789798
return False
790799

src/python_testing/TC_ACE_1_5.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,10 @@ async def test_TC_ACE_1_5(self):
5454
params = self.openCommissioningWindow(self.th1, self.dut_node_id)
5555
self.print_step(2, "TH1 opens the commissioning window on the DUT")
5656

57-
errcode = self.th2.CommissionOnNetwork(
57+
self.th2.CommissionOnNetwork(
5858
nodeId=self.dut_node_id, setupPinCode=params.commissioningParameters.setupPinCode,
5959
filterType=ChipDeviceCtrl.DiscoveryFilterType.LONG_DISCRIMINATOR, filter=params.randomDiscriminator)
60-
logging.info('Commissioning complete done. Successful? {}, errorcode = {}'.format(errcode.is_success, errcode))
60+
logging.info('Commissioning complete done. Successful.')
6161
self.print_step(3, "TH2 commissions DUT using admin node ID N2")
6262

6363
self.print_step(4, "TH2 reads its fabric index from the Operational Credentials cluster CurrentFabricIndex attribute")

src/python_testing/TC_CGEN_2_4.py

+9-7
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import chip.FabricAdmin
2626
from chip import ChipDeviceCtrl
2727
from chip.ChipDeviceCtrl import CommissioningParameters
28+
from chip.exception import ChipStackError
2829
from matter_testing_support import MatterBaseTest, async_test_body, default_matter_test_main
2930
from mobly import asserts
3031

@@ -60,11 +61,12 @@ async def CommissionToStageSendCompleteAndCleanup(
6061
# This will run the commissioning up to the point where stage x is run and the
6162
# response is sent before the test commissioner simulates a failure
6263
self.th2.SetTestCommissionerPrematureCompleteAfter(stage)
63-
errcode = self.th2.CommissionOnNetwork(
64-
nodeId=self.dut_node_id, setupPinCode=params.setupPinCode,
65-
filterType=ChipDeviceCtrl.DiscoveryFilterType.LONG_DISCRIMINATOR, filter=self.discriminator)
66-
logging.info('Commissioning complete done. Successful? {}, errorcode = {}'.format(errcode.is_success, errcode))
67-
asserts.assert_false(errcode.is_success, 'Commissioning complete did not error as expected')
64+
raises_assert = asserts.assert_raises(ChipStackError)
65+
with raises_assert:
66+
self.th2.CommissionOnNetwork(
67+
nodeId=self.dut_node_id, setupPinCode=params.setupPinCode,
68+
filterType=ChipDeviceCtrl.DiscoveryFilterType.LONG_DISCRIMINATOR, filter=self.discriminator)
69+
errcode = raises_assert.exception.chip_error
6870
asserts.assert_true(errcode.sdk_part == expectedErrorPart, 'Unexpected error type returned from CommissioningComplete')
6971
asserts.assert_true(errcode.sdk_code == expectedErrCode, 'Unexpected error code returned from CommissioningComplete')
7072
revokeCmd = Clusters.AdministratorCommissioning.Commands.RevokeCommissioning()
@@ -101,10 +103,10 @@ async def test_TC_CGEN_2_4(self):
101103

102104
logging.info('Step 16 - TH2 fully commissions the DUT')
103105
self.th2.ResetTestCommissioner()
104-
errcode = self.th2.CommissionOnNetwork(
106+
self.th2.CommissionOnNetwork(
105107
nodeId=self.dut_node_id, setupPinCode=params.setupPinCode,
106108
filterType=ChipDeviceCtrl.DiscoveryFilterType.LONG_DISCRIMINATOR, filter=self.discriminator)
107-
logging.info('Commissioning complete done. Successful? {}, errorcode = {}'.format(errcode.is_success, errcode))
109+
logging.info('Commissioning complete done. Successful.')
108110

109111
logging.info('Step 17 - TH1 sends an arm failsafe')
110112
cmd = Clusters.GeneralCommissioning.Commands.ArmFailSafe(expiryLengthSeconds=900, breadcrumb=0)

src/python_testing/TC_DA_1_5.py

+1-2
Original file line numberDiff line numberDiff line change
@@ -170,10 +170,9 @@ async def test_TC_DA_1_5(self):
170170
new_fabric_admin = new_certificate_authority.NewFabricAdmin(vendorId=0xFFF1, fabricId=2)
171171
TH2 = new_fabric_admin.NewController(nodeId=112233)
172172

173-
errcode = TH2.CommissionOnNetwork(
173+
TH2.CommissionOnNetwork(
174174
nodeId=self.dut_node_id, setupPinCode=params.setupPinCode,
175175
filterType=ChipDeviceCtrl.DiscoveryFilterType.LONG_DISCRIMINATOR, filter=1234)
176-
asserts.assert_true(errcode.is_success, 'Commissioning on TH2 did not complete successfully')
177176

178177
self.print_step(15, "Read NOCs list for TH1")
179178
temp = await self.read_single_attribute_check_success(

src/python_testing/TC_TIMESYNC_2_13.py

+1-2
Original file line numberDiff line numberDiff line change
@@ -53,10 +53,9 @@ async def test_TC_TIMESYNC_2_13(self):
5353
new_fabric_admin = new_certificate_authority.NewFabricAdmin(vendorId=0xFFF1, fabricId=2)
5454
TH2 = new_fabric_admin.NewController(nodeId=112233)
5555

56-
errcode = TH2.CommissionOnNetwork(
56+
TH2.CommissionOnNetwork(
5757
nodeId=self.dut_node_id, setupPinCode=params.setupPinCode,
5858
filterType=ChipDeviceCtrl.DiscoveryFilterType.LONG_DISCRIMINATOR, filter=1234)
59-
asserts.assert_true(errcode.is_success, 'Commissioning on TH2 did not complete successfully')
6059

6160
self.print_step(3, "TH2 reads the current fabric")
6261
th2_fabric_idx = await self.read_single_attribute_check_success(

src/python_testing/TestCommissioningTimeSync.py

+1-2
Original file line numberDiff line numberDiff line change
@@ -58,10 +58,9 @@ async def teardown_test(self):
5858
async def commission_and_base_checks(self):
5959
params = self.default_controller.OpenCommissioningWindow(
6060
nodeid=self.dut_node_id, timeout=600, iteration=10000, discriminator=1234, option=1)
61-
errcode = self.commissioner.CommissionOnNetwork(
61+
self.commissioner.CommissionOnNetwork(
6262
nodeId=self.dut_node_id, setupPinCode=params.setupPinCode,
6363
filterType=ChipDeviceCtrl.DiscoveryFilterType.LONG_DISCRIMINATOR, filter=1234)
64-
asserts.assert_true(errcode.is_success, 'Commissioning did not complete successfully')
6564
self.commissioned = True
6665

6766
# Check the feature map - if we have a time cluster, we want UTC time to be set

src/python_testing/matter_testing_support.py

+46-26
Original file line numberDiff line numberDiff line change
@@ -1542,35 +1542,55 @@ def _commission_device(self, i) -> bool:
15421542
info.filter_value = conf.discriminators[i]
15431543

15441544
if conf.commissioning_method == "on-network":
1545-
return dev_ctrl.CommissionOnNetwork(
1546-
nodeId=conf.dut_node_ids[i],
1547-
setupPinCode=info.passcode,
1548-
filterType=info.filter_type,
1549-
filter=info.filter_value
1550-
)
1545+
try:
1546+
dev_ctrl.CommissionOnNetwork(
1547+
nodeId=conf.dut_node_ids[i],
1548+
setupPinCode=info.passcode,
1549+
filterType=info.filter_type,
1550+
filter=info.filter_value
1551+
)
1552+
return True
1553+
except ChipStackError as e:
1554+
logging.error("Commissioning failed: %s" % e)
1555+
return False
15511556
elif conf.commissioning_method == "ble-wifi":
1552-
return dev_ctrl.CommissionWiFi(
1553-
info.filter_value,
1554-
info.passcode,
1555-
conf.dut_node_ids[i],
1556-
conf.wifi_ssid,
1557-
conf.wifi_passphrase,
1558-
isShortDiscriminator=(info.filter_type == DiscoveryFilterType.SHORT_DISCRIMINATOR)
1559-
)
1557+
try:
1558+
dev_ctrl.CommissionWiFi(
1559+
info.filter_value,
1560+
info.passcode,
1561+
conf.dut_node_ids[i],
1562+
conf.wifi_ssid,
1563+
conf.wifi_passphrase,
1564+
isShortDiscriminator=(info.filter_type == DiscoveryFilterType.SHORT_DISCRIMINATOR)
1565+
)
1566+
return True
1567+
except ChipStackError as e:
1568+
logging.error("Commissioning failed: %s" % e)
1569+
return False
15601570
elif conf.commissioning_method == "ble-thread":
1561-
return dev_ctrl.CommissionThread(
1562-
info.filter_value,
1563-
info.passcode,
1564-
conf.dut_node_ids[i],
1565-
conf.thread_operational_dataset,
1566-
isShortDiscriminator=(info.filter_type == DiscoveryFilterType.SHORT_DISCRIMINATOR)
1567-
)
1571+
try:
1572+
dev_ctrl.CommissionThread(
1573+
info.filter_value,
1574+
info.passcode,
1575+
conf.dut_node_ids[i],
1576+
conf.thread_operational_dataset,
1577+
isShortDiscriminator=(info.filter_type == DiscoveryFilterType.SHORT_DISCRIMINATOR)
1578+
)
1579+
return True
1580+
except ChipStackError as e:
1581+
logging.error("Commissioning failed: %s" % e)
1582+
return False
15681583
elif conf.commissioning_method == "on-network-ip":
1569-
logging.warning("==== USING A DIRECT IP COMMISSIONING METHOD NOT SUPPORTED IN THE LONG TERM ====")
1570-
return dev_ctrl.CommissionIP(
1571-
ipaddr=conf.commissionee_ip_address_just_for_testing,
1572-
setupPinCode=info.passcode, nodeid=conf.dut_node_ids[i]
1573-
)
1584+
try:
1585+
logging.warning("==== USING A DIRECT IP COMMISSIONING METHOD NOT SUPPORTED IN THE LONG TERM ====")
1586+
dev_ctrl.CommissionIP(
1587+
ipaddr=conf.commissionee_ip_address_just_for_testing,
1588+
setupPinCode=info.passcode, nodeid=conf.dut_node_ids[i]
1589+
)
1590+
return True
1591+
except ChipStackError as e:
1592+
logging.error("Commissioning failed: %s" % e)
1593+
return False
15741594
else:
15751595
raise ValueError("Invalid commissioning method %s!" % conf.commissioning_method)
15761596

src/test_driver/openiotsdk/integration-tests/common/utils.py

+1-4
Original file line numberDiff line numberDiff line change
@@ -92,14 +92,11 @@ def connect_device(devCtrl, setupPayload, commissionableDevice, nodeId=None):
9292

9393
pincode = int(setupPayload.attributes['SetUpPINCode'])
9494
try:
95-
res = devCtrl.CommissionOnNetwork(
95+
devCtrl.CommissionOnNetwork(
9696
nodeId, pincode, filterType=discovery.FilterType.INSTANCE_NAME, filter=commissionableDevice.instanceName)
9797
except exceptions.ChipStackError as ex:
9898
log.error("Commission discovered device failed {}".format(str(ex)))
9999
return None
100-
if not res:
101-
log.info("Commission discovered device failed: %r" % res)
102-
return None
103100
return nodeId
104101

105102

0 commit comments

Comments
 (0)