Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TC-CGEN-2.2 python test #37262

Open
wants to merge 8 commits into
base: master
Choose a base branch
from

Conversation

juandediosg
Copy link
Contributor

@juandediosg juandediosg commented Jan 28, 2025

Description

This PR is focused on implementing and validating the TC-CGEN-2.2
Fixes: project-chip/matter-test-scripts#404
Test plan: https://github.com/CHIP-Specifications/chip-test-plans/blob/master/src/cluster/General_Commissioning.adoc

Purpose

This test case validates the behavior of the failsafe timer during the commissioning process, focusing on its expiration, reset behavior, and interactions with commissioning-related commands. The test ensures that the failsafe behaves as expected in various scenarios and has been adapted to bypass waiting for the failsafe to expire, optimizing test execution in CI environments. This approach simulates real-world scenarios such as network misconfigurations, incorrect credentials, expired certificates, and other issues that might occur during commissioning.

Notes

This PR includes a workaround for the waits related to the failsafe timer expiration. As specified in the test plan, the original behavior expected a wait for the failsafe expiry. However, to improve CI testing times and avoid unnecessary delays, the failsafe timer is set to 0 seconds using the function expire_failsafe_timer().

Testing

To run the automated TC-CGEN-2.2 test, follow these steps:

  1. Ensure your environment is set up and the necessary dependencies are installed.
  2. Run the following command from the command line:

python3 src/python_testing/TC_CGEN_2_2.py --commissioning-method on-network --qr-code MT:-24J0AFN00KA0648G00

Copy link

semanticdiff-com bot commented Jan 28, 2025

Review changes with  SemanticDiff

Changed Files
File Status
  src/python_testing/TC_CGEN_2_2.py  0% smaller

@github-actions github-actions bot added the tests label Jan 28, 2025
@juandediosg juandediosg changed the title Tc cgen 2 2 python test TC-CGEN-2.2 python test Jan 28, 2025
@juandediosg
Copy link
Contributor Author

juandediosg commented Jan 29, 2025

Currently exploring two improvements for the test:

- Handling the waits: The test has long waits, especially in the failsafe process. One option being explored is to minimize these waits in CI by arming the failsafe with a time=0 command, which would trigger the failsafe immediately without unnecessary delays.
- Step before 44: There’s also the need to add a step before 44 to remove TH2, which wasn’t accounted for in the original flow. This will ensure that the number of root certs returns to the expected state before proceeding.
Clean-up and refactoring: I’m also looking into cleaning up the test and refactoring certain parts of the code to improve

@juandediosg juandediosg marked this pull request as ready for review January 30, 2025 01:09
Copy link

PR #37262: Size comparison from b082219 to 36442c5

Full report (3 builds for cc32xx, stm32)
platform target config section b082219 36442c5 change % change
cc32xx air-purifier CC3235SF_LAUNCHXL FLASH 538413 538445 32 0.0
RAM 205192 205192 0 0.0
lock CC3235SF_LAUNCHXL FLASH 572277 572309 32 0.0
RAM 205344 205344 0 0.0
stm32 light STM32WB5MM-DK FLASH 482568 482600 32 0.0
RAM 144672 144672 0 0.0

Copy link

github-actions bot commented Jan 30, 2025

PR #37262: Size comparison from 3044eeb to f2664b2

Full report (71 builds for bl602, bl702, bl702l, cc13x4_26x4, cc32xx, cyw30739, efr32, esp32, linux, nrfconnect, nxp, psoc6, qpg, stm32, telink, tizen)
platform target config section 3044eeb f2664b2 change % change
bl602 lighting-app bl602+mfd+littlefs+rpc FLASH 1093546 1093546 0 0.0
RAM 103298 103298 0 0.0
bl702 lighting-app bl702+eth FLASH 650158 650158 0 0.0
RAM 25265 25265 0 0.0
bl702+wifi FLASH 828066 828066 0 0.0
RAM 13981 13981 0 0.0
bl706+mfd+rpc+littlefs FLASH 1056626 1056626 0 0.0
RAM 23861 23861 0 0.0
bl702l contact-sensor-app bl702l+mfd+littlefs FLASH 888060 888060 0 0.0
RAM 18504 18504 0 0.0
lighting-app bl702l+mfd+littlefs FLASH 971046 971046 0 0.0
RAM 16368 16368 0 0.0
cc13x4_26x4 lighting-app LP_EM_CC1354P10_6 FLASH 838000 838000 0 0.0
RAM 123464 123464 0 0.0
lock-ftd LP_EM_CC1354P10_6 FLASH 823420 823420 0 0.0
RAM 125344 125344 0 0.0
pump-app LP_EM_CC1354P10_6 FLASH 770644 770644 0 0.0
RAM 113804 113804 0 0.0
pump-controller-app LP_EM_CC1354P10_6 FLASH 754888 754888 0 0.0
RAM 114012 114012 0 0.0
cc32xx air-purifier CC3235SF_LAUNCHXL FLASH 538445 538445 0 0.0
RAM 205192 205192 0 0.0
lock CC3235SF_LAUNCHXL FLASH 572309 572309 0 0.0
RAM 205344 205344 0 0.0
cyw30739 light CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 679409 679409 0 0.0
RAM 78532 78532 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 699261 699261 0 0.0
RAM 81172 81172 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 699261 699261 0 0.0
RAM 81172 81172 0 0.0
CYW930739M2EVB-02 unknown 2040 2040 0 0.0
FLASH 656189 656189 0 0.0
RAM 73600 73600 0 0.0
light-switch CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 615793 615793 0 0.0
RAM 71516 71516 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 635421 635421 0 0.0
RAM 74060 74060 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 635421 635421 0 0.0
RAM 74060 74060 0 0.0
lock CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 635273 635273 0 0.0
RAM 74524 74524 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 654981 654981 0 0.0
RAM 77068 77068 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 654981 654981 0 0.0
RAM 77068 77068 0 0.0
thermostat CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 611709 611709 0 0.0
RAM 68612 68612 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 631569 631569 0 0.0
RAM 71252 71252 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 631569 631569 0 0.0
RAM 71252 71252 0 0.0
efr32 lock-app BRD4187C FLASH 936232 936232 0 0.0
RAM 159904 159904 0 0.0
BRD4338a FLASH 729900 729892 -8 -0.0
RAM 234764 234764 0 0.0
window-app BRD4187C FLASH 1029256 1029248 -8 -0.0
RAM 128040 128040 0 0.0
esp32 all-clusters-app c3devkit DRAM 97296 97296 0 0.0
FLASH 1577036 1577036 0 0.0
IRAM 83820 83820 0 0.0
m5stack DRAM 116092 116092 0 0.0
FLASH 1544978 1544978 0 0.0
IRAM 117039 117039 0 0.0
linux air-purifier-app debug unknown 4760 4760 0 0.0
FLASH 2708921 2708921 0 0.0
RAM 132816 132816 0 0.0
all-clusters-app debug unknown 5568 5568 0 0.0
FLASH 5974944 5974944 0 0.0
RAM 531632 531632 0 0.0
all-clusters-minimal-app debug unknown 5464 5464 0 0.0
FLASH 5323630 5323630 0 0.0
RAM 242744 242744 0 0.0
bridge-app debug unknown 5480 5480 0 0.0
FLASH 4681818 4681818 0 0.0
RAM 221480 221480 0 0.0
chip-tool debug unknown 6120 6120 0 0.0
FLASH 13096130 13096130 0 0.0
RAM 596770 596770 0 0.0
chip-tool-ipv6only arm64 unknown 21848 21848 0 0.0
FLASH 1116208 1116208 0 0.0
RAM 648496 648496 0 0.0
fabric-admin debug unknown 5808 5808 0 0.0
FLASH 11388177 11388177 0 0.0
RAM 596554 596554 0 0.0
fabric-bridge-app debug unknown 4736 4736 0 0.0
FLASH 4506416 4506416 0 0.0
RAM 208664 208664 0 0.0
fabric-sync debug unknown 4976 4976 0 0.0
FLASH 5612789 5612789 0 0.0
RAM 483536 483536 0 0.0
lighting-app debug+rpc+ui unknown 6144 6144 0 0.0
FLASH 5624577 5624577 0 0.0
RAM 231760 231760 0 0.0
lock-app debug unknown 5416 5416 0 0.0
FLASH 4730932 4730932 0 0.0
RAM 207728 207728 0 0.0
ota-provider-app debug unknown 4776 4776 0 0.0
FLASH 4359476 4359476 0 0.0
RAM 201368 201368 0 0.0
ota-requestor-app debug unknown 4728 4728 0 0.0
FLASH 4496948 4496948 0 0.0
RAM 205952 205952 0 0.0
shell debug unknown 4256 4256 0 0.0
FLASH 3004845 3004845 0 0.0
RAM 160504 160504 0 0.0
thermostat-no-ble arm64 unknown 9536 9536 0 0.0
FLASH 4098704 4098704 0 0.0
RAM 246144 246144 0 0.0
tv-app debug unknown 5744 5744 0 0.0
FLASH 5952389 5952389 0 0.0
RAM 606936 606936 0 0.0
tv-casting-app debug unknown 5320 5320 0 0.0
FLASH 11269741 11269741 0 0.0
RAM 710896 710896 0 0.0
nrfconnect all-clusters-app nrf52840dk_nrf52840 FLASH 906972 906972 0 0.0
RAM 142395 142395 0 0.0
nrf7002dk_nrf5340_cpuapp FLASH 901532 901532 0 0.0
RAM 124739 124739 0 0.0
all-clusters-minimal-app nrf52840dk_nrf52840 FLASH 845696 845696 0 0.0
RAM 141323 141323 0 0.0
nxp contact k32w0+release FLASH 584288 584288 0 0.0
RAM 70860 70860 0 0.0
mcxw71+release FLASH 599632 599632 0 0.0
RAM 63080 63080 0 0.0
light k32w0+release FLASH 610732 610732 0 0.0
RAM 70252 70252 0 0.0
k32w1+release FLASH 685192 685192 0 0.0
RAM 48664 48664 0 0.0
lock mcxw71+release FLASH 748664 748664 0 0.0
RAM 67476 67476 0 0.0
psoc6 all-clusters cy8ckit_062s2_43012 FLASH 1646372 1646372 0 0.0
RAM 211560 211560 0 0.0
all-clusters-minimal cy8ckit_062s2_43012 FLASH 1553148 1553148 0 0.0
RAM 208376 208376 0 0.0
light cy8ckit_062s2_43012 FLASH 1468828 1468828 0 0.0
RAM 200352 200352 0 0.0
lock cy8ckit_062s2_43012 FLASH 1466860 1466860 0 0.0
RAM 224688 224688 0 0.0
qpg lighting-app qpg6105+debug FLASH 661984 661984 0 0.0
RAM 105204 105204 0 0.0
lock-app qpg6105+debug FLASH 619788 619788 0 0.0
RAM 99648 99648 0 0.0
stm32 light STM32WB5MM-DK FLASH 482600 482600 0 0.0
RAM 144672 144672 0 0.0
telink bridge-app tlsr9258a FLASH 681290 681290 0 0.0
RAM 91084 91084 0 0.0
contact-sensor-app tlsr9528a_retention FLASH 621322 621322 0 0.0
RAM 31484 31484 0 0.0
light-app-ota-compress-lzma-shell-factory-data tl3218x FLASH 770160 770160 0 0.0
RAM 49344 49344 0 0.0
light-app-ota-shell-factory-data tl7218x FLASH 774590 774590 0 0.0
RAM 99648 99648 0 0.0
light-switch-app-ota-compress-lzma-shell-factory-data tlsr9528a FLASH 708494 708494 0 0.0
RAM 73376 73376 0 0.0
lighting-app-ota-factory-data tlsr9118bdk40d FLASH 625592 625592 0 0.0
RAM 142016 142016 0 0.0
lighting-app-ota-rpc-factory-data-4mb tlsr9518adk80d FLASH 812972 812972 0 0.0
RAM 99560 99560 0 0.0
tizen all-clusters-app arm unknown 5116 5116 0 0.0
FLASH 1751892 1751892 0 0.0
RAM 93524 93524 0 0.0
chip-tool-ubsan arm unknown 11408 11408 0 0.0
FLASH 18696094 18696094 0 0.0
RAM 8183744 8183744 0 0.0

@@ -0,0 +1,796 @@
#
# Copyright (c) 2022 Project CHIP Authors
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
# Copyright (c) 2022 Project CHIP Authors
# Copyright (c) 2025 Project CHIP Authors



class TC_CGEN_2_2(MatterBaseTest):
async def FindAndEstablishPase(self, longDiscriminator: int, setupPinCode: int, nodeid: int, dev_ctrl: ChipDeviceCtrl = None):
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can this be replaced with the FindOrEstablishPASESession function from ChipDeviceCtrl.py to avoid duplication?

def steps_TC_CGEN_2_2(self) -> list[TestStep]:
steps = [
TestStep(0, "Commissioning, already done", is_commissioning=True),
TestStep(1, """TH1 reads the TrustedRootCertificates attribute from the Node Operational Credentials cluster
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

None of these are multiline, so I think single quotes are fine here.

async def test_TC_CGEN_2_2(self):
cluster_opcreds = Clusters.OperationalCredentials
cluster_cgen = Clusters.GeneralCommissioning
# maxFailsafe_tmp = 60
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
# maxFailsafe_tmp = 60


self.step(0)

# Read the Spteps
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
# Read the Spteps
# Read the Steps

logger.info("Step 38 skipped: Saving Tstart (current wall time clock) is bypassed due to failsafe expiration workaround.")

self.step(39)
trusted_root_list_original_updated = await self.read_single_attribute_check_success(
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this isn't from the test plan...

logger.info(
f'Step #39 - The updated size of the num_trusted_roots_original list: {trusted_root_list_original_size_updated}')

# Flow generates a new TrustedRootCertificate - Request CSR (Certificate Signing Request) and update NOC (Node Operational Certificate)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can re-use the previously generated one.

"Step #31 - Unexpected number of entries in the TrustedRootCertificates table after update")

self.step(41)
# Step 41 - Skipped
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

keep this in for cert testing, skip for CI.

# which immediately expires the failsafe timer (sets it to 0), bypassing the natural wait and speeding up the test execution.

# This function bypasses the wait for the FailsafeTimer to expire for TH1 as originally defined in the test plan.
resp = await self.expire_failsafe_timer(dev_ctrl=self.default_controller, node_id=self.dut_node_id)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

gate on CI

cmd = Clusters.OperationalCredentials.Commands.RemoveFabric(fabricIndex=fabric_idx)
await self.send_single_cmd(dev_ctrl=TH2, node_id=newNodeId+1, cmd=cmd)

# The expected number of root certificates should be 1 after removing the fabric
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
# The expected number of root certificates should be 1 after removing the fabric
# The expected number of root certificates should be numTrustedRootsOriginal after removing the fabric

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

TC-CGEN-2.2: Automate
2 participants