Skip to content

[Fix] Update IDM_3_2 test step 3 adding attribute filter to resolve writing attribute type of wrong type#43540

Open
j-ororke wants to merge 5 commits intoproject-chip:masterfrom
j-ororke:IDM-3-2_test-step-3_refactor
Open

[Fix] Update IDM_3_2 test step 3 adding attribute filter to resolve writing attribute type of wrong type#43540
j-ororke wants to merge 5 commits intoproject-chip:masterfrom
j-ororke:IDM-3-2_test-step-3_refactor

Conversation

@j-ororke
Copy link
Contributor

@j-ororke j-ororke commented Mar 10, 2026

Summary
Fixes a TypeError: issubclass() arg 1 must be a class crash in test step 3 as reported in issue 43494.

The fix builds a flat list of all unsupported attribute candidates and iterates through them, skipping any that raise TypeError during serialization, until a candidate that can be successfully written is found. The test assertion remains the same: the DUT must respond with UNSUPPORTED_ATTRIBUTE.

Related issues

Fixes #43494

Testing

Verified by running using following command in WSL:

scripts/tests/run_python_test.py --factory-reset --app out/linux-x64-all-clusters/chip-all-clusters-app --app-args "--discriminator 1234 --KVS kvs1" --script-args "--storage-path admin_storage.json --commissioning-method on-network --discriminator 1234 --passcode 20202021 --PICS src/app/tests/suites/certification/ci-pics-values --endpoint 0" --script src/python_testing/TC_IDM_3_2.py

Verified test runs correctly in the TH UI:
image

…ot fail due to finding an unsupported attribute to test that is of incorrect type
@j-ororke j-ororke self-assigned this Mar 10, 2026
@github-actions github-actions bot added the tests label Mar 10, 2026
Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request addresses a TypeError in the TC_IDM_3_2 test case, which occurred when attempting to write to an unsupported attribute of a complex type. The fix refactors the logic to first compile a list of all unsupported attribute candidates. It then iterates through this list, attempting to write a 0 value to each, and uses a try-except block to gracefully handle TypeError for attributes (like structs or lists) that cannot be serialized with a simple integer. The test proceeds upon finding a serializable attribute to verify the expected UNSUPPORTED_ATTRIBUTE error. If no such attribute is found, the test step is now correctly skipped. This change makes the test more robust and effectively resolves the reported issue.

@codecov
Copy link

codecov bot commented Mar 10, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 54.07%. Comparing base (e39dcc1) to head (a7d7340).

Additional details and impacted files
@@           Coverage Diff           @@
##           master   #43540   +/-   ##
=======================================
  Coverage   54.07%   54.07%           
=======================================
  Files        1548     1548           
  Lines      106701   106701           
  Branches    13309    13309           
=======================================
  Hits        57699    57699           
  Misses      49002    49002           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@j-ororke
Copy link
Contributor Author

Additionally ran test in TH CLI, please see screenshot of result below:
image

@github-actions
Copy link

github-actions bot commented Mar 10, 2026

PR #43540: Size comparison from d93b463 to 31699e5

Full report (34 builds for bl602, bl616, bl702, bl702l, cc13x4_26x4, cc32xx, efr32, esp32, nrfconnect, nxp, psoc6, qpg, realtek, stm32, telink)
platform target config section d93b463 31699e50 change % change
bl602 lighting-app bl602+mfd+littlefs+rpc FLASH 1089430 1089430 0 0.0
RAM 144762 144762 0 0.0
bl616 lighting-app bl616+thread FLASH 1100108 1100108 0 0.0
RAM 104184 104184 0 0.0
bl616+wifi+shell FLASH 1586972 1586972 0 0.0
RAM 98080 98080 0 0.0
bl702 lighting-app bl702+eth FLASH 1052790 1052790 0 0.0
RAM 108357 108357 0 0.0
bl702l contact-sensor-app bl702l+mfd+littlefs FLASH 890814 890814 0 0.0
RAM 105748 105748 0 0.0
cc13x4_26x4 lighting-app LP_EM_CC1354P10_6 FLASH 779236 779236 0 0.0
RAM 103324 103324 0 0.0
lock-ftd LP_EM_CC1354P10_6 FLASH 786576 786576 0 0.0
RAM 108508 108508 0 0.0
pump-app LP_EM_CC1354P10_6 FLASH 732812 732812 0 0.0
RAM 97316 97316 0 0.0
pump-controller-app LP_EM_CC1354P10_6 FLASH 716248 716248 0 0.0
RAM 97476 97476 0 0.0
cc32xx air-purifier CC3235SF_LAUNCHXL FLASH 558130 558130 0 0.0
RAM 204504 204504 0 0.0
lock CC3235SF_LAUNCHXL FLASH 591262 591262 0 0.0
RAM 204744 204744 0 0.0
efr32 lock-app BRD4187C FLASH 971260 971260 0 0.0
RAM 125796 125796 0 0.0
BRD4338a FLASH 769676 769668 -8 -0.0
RAM 236528 236528 0 0.0
window-app BRD4187C FLASH 1074944 1074944 0 0.0
RAM 126440 126440 0 0.0
esp32 all-clusters-app c3devkit DRAM 98356 98356 0 0.0
FLASH 1596670 1596670 0 0.0
IRAM 93514 93514 0 0.0
nrfconnect all-clusters-app nrf52840dk_nrf52840 FLASH 857656 857656 0 0.0
RAM 161999 161999 0 0.0
nxp contact mcxw71+release FLASH 735904 735904 0 0.0
RAM 66936 66936 0 0.0
psoc6 all-clusters cy8ckit_062s2_43012 FLASH 1708852 1708852 0 0.0
RAM 213940 213940 0 0.0
all-clusters-minimal cy8ckit_062s2_43012 FLASH 1607524 1607524 0 0.0
RAM 210812 210812 0 0.0
light cy8ckit_062s2_43012 FLASH 1470668 1470668 0 0.0
RAM 196988 196988 0 0.0
lock cy8ckit_062s2_43012 FLASH 1497364 1497364 0 0.0
RAM 224732 224732 0 0.0
qpg lighting-app qpg6200+debug FLASH 840748 840748 0 0.0
RAM 127780 127780 0 0.0
lock-app qpg6200+debug FLASH 779408 779408 0 0.0
RAM 118728 118728 0 0.0
realtek light-switch-app rtl8777g FLASH 720776 720776 0 0.0
RAM 113448 113448 0 0.0
lighting-app rtl8777g FLASH 767984 767984 0 0.0
RAM 114688 114688 0 0.0
stm32 light STM32WB5MM-DK FLASH 478904 478904 0 0.0
RAM 141324 141324 0 0.0
telink bridge-app tl7218x FLASH 728880 728880 0 0.0
RAM 95768 95768 0 0.0
light-app-ota-compress-lzma-shell-factory-data tl3218x FLASH 853046 853046 0 0.0
RAM 44184 44184 0 0.0
tl7218x FLASH 844446 844446 0 0.0
RAM 99572 99572 0 0.0
light-switch-app-ota-compress-lzma-factory-data tl7218x_retention FLASH 725726 725726 0 0.0
RAM 55740 55740 0 0.0
light-switch-app-ota-compress-lzma-shell-factory-data tlsr9528a FLASH 788290 788290 0 0.0
RAM 74924 74924 0 0.0
light-switch-app-ota-factory-data tl3218x_retention FLASH 725726 725726 0 0.0
RAM 33228 33228 0 0.0
lighting-app-ota-factory-data tlsr9118bdk40d FLASH 615502 615502 0 0.0
RAM 118232 118232 0 0.0
lighting-app-ota-rpc-factory-data-4mb tlsr9518adk80d FLASH 843242 843246 4 0.0
RAM 97280 97280 0 0.0

@j-ororke
Copy link
Contributor Author

/gemini review

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request effectively resolves a TypeError in test step 3 of TC_IDM_3_2.py by introducing a more robust method for finding and testing unsupported attributes. The logic now gracefully handles attributes that are not serializable with a default value, which is a good improvement. The increased timeout is also a sensible addition given the more exhaustive search. My only concern is a small, out-of-scope change affecting steps 5 and 6, which would be better placed in a separate PR to keep changes focused.

Removed skips from test step 5 and 6 as not needed since skip is handled by the attribute_guard()
@github-actions
Copy link

github-actions bot commented Mar 12, 2026

PR #43540: Size comparison from e39dcc1 to a7d7340

Full report (34 builds for bl602, bl616, bl702, bl702l, cc13x4_26x4, cc32xx, efr32, esp32, nrfconnect, nxp, psoc6, qpg, realtek, stm32, telink)
platform target config section e39dcc1 a7d7340 change % change
bl602 lighting-app bl602+mfd+littlefs+rpc FLASH 1089396 1089396 0 0.0
RAM 144762 144762 0 0.0
bl616 lighting-app bl616+thread FLASH 1100324 1100324 0 0.0
RAM 104184 104184 0 0.0
bl616+wifi+shell FLASH 1586916 1586916 0 0.0
RAM 98080 98080 0 0.0
bl702 lighting-app bl702+eth FLASH 1052752 1052752 0 0.0
RAM 108357 108357 0 0.0
bl702l contact-sensor-app bl702l+mfd+littlefs FLASH 890764 890764 0 0.0
RAM 105748 105748 0 0.0
cc13x4_26x4 lighting-app LP_EM_CC1354P10_6 FLASH 779164 779164 0 0.0
RAM 103324 103324 0 0.0
lock-ftd LP_EM_CC1354P10_6 FLASH 786528 786528 0 0.0
RAM 108508 108508 0 0.0
pump-app LP_EM_CC1354P10_6 FLASH 732724 732724 0 0.0
RAM 97316 97316 0 0.0
pump-controller-app LP_EM_CC1354P10_6 FLASH 716160 716160 0 0.0
RAM 97476 97476 0 0.0
cc32xx air-purifier CC3235SF_LAUNCHXL FLASH 558106 558106 0 0.0
RAM 204504 204504 0 0.0
lock CC3235SF_LAUNCHXL FLASH 591230 591230 0 0.0
RAM 204744 204744 0 0.0
efr32 lock-app BRD4187C FLASH 971196 971196 0 0.0
RAM 125796 125796 0 0.0
BRD4338a FLASH 769284 769276 -8 -0.0
RAM 236528 236528 0 0.0
window-app BRD4187C FLASH 1074656 1074656 0 0.0
RAM 126440 126440 0 0.0
esp32 all-clusters-app c3devkit DRAM 98356 98356 0 0.0
FLASH 1596564 1596564 0 0.0
IRAM 93514 93514 0 0.0
nrfconnect all-clusters-app nrf52840dk_nrf52840 FLASH 857588 857588 0 0.0
RAM 161999 161999 0 0.0
nxp contact mcxw71+release FLASH 735808 735808 0 0.0
RAM 66936 66936 0 0.0
psoc6 all-clusters cy8ckit_062s2_43012 FLASH 1708508 1708508 0 0.0
RAM 213940 213940 0 0.0
all-clusters-minimal cy8ckit_062s2_43012 FLASH 1607180 1607180 0 0.0
RAM 210812 210812 0 0.0
light cy8ckit_062s2_43012 FLASH 1470412 1470412 0 0.0
RAM 196988 196988 0 0.0
lock cy8ckit_062s2_43012 FLASH 1497092 1497092 0 0.0
RAM 224732 224732 0 0.0
qpg lighting-app qpg6200+debug FLASH 840636 840636 0 0.0
RAM 127780 127780 0 0.0
lock-app qpg6200+debug FLASH 779312 779312 0 0.0
RAM 118728 118728 0 0.0
realtek light-switch-app rtl8777g FLASH 720520 720520 0 0.0
RAM 113448 113448 0 0.0
lighting-app rtl8777g FLASH 767736 767736 0 0.0
RAM 114688 114688 0 0.0
stm32 light STM32WB5MM-DK FLASH 478820 478820 0 0.0
RAM 141324 141324 0 0.0
telink bridge-app tl7218x FLASH 728648 728648 0 0.0
RAM 95760 95760 0 0.0
light-app-ota-compress-lzma-shell-factory-data tl3218x FLASH 852792 852792 0 0.0
RAM 44176 44176 0 0.0
tl7218x FLASH 844196 844196 0 0.0
RAM 99564 99564 0 0.0
light-switch-app-ota-compress-lzma-factory-data tl7218x_retention FLASH 725462 725462 0 0.0
RAM 55740 55740 0 0.0
light-switch-app-ota-compress-lzma-shell-factory-data tlsr9528a FLASH 788030 788030 0 0.0
RAM 74916 74916 0 0.0
light-switch-app-ota-factory-data tl3218x_retention FLASH 725458 725458 0 0.0
RAM 33220 33220 0 0.0
lighting-app-ota-factory-data tlsr9118bdk40d FLASH 616200 616200 0 0.0
RAM 118232 118232 0 0.0
lighting-app-ota-rpc-factory-data-4mb tlsr9518adk80d FLASH 842966 842970 4 0.0
RAM 97272 97272 0 0.0

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.

2 participants