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

Introduce Python-based freestanding tests #21567

Merged

Conversation

tcarmelveilleux
Copy link
Contributor

Problem

  • Testing with Cirque requires complex setup and it is not easy to add
    tests.
  • Testing with chip-repl is interactive only
  • We needed a way to test more complex test scenarios than possible
    with chip-tool which cannot deal with complex test cases including recomputed
    cryptographic values due to complex logic and data dependencies.

Change overview

  • Uses existing Mobly test framework dependency to add capabilities to
    make freestanding tests (see src/python_testing/hello_test.py)
  • Adds a module that only depends on existing CHIP modules in the virtual
    environment to provide needed scaffolding for tests running, including
    being able to commission a device from the command line
  • Adds needed cryptographic dependencies to environment for upcoming tests
  • Adds an example test (hello_test.py)
  • Added support to Python ChipDeviceCtrl to do on-network commissioning
    (thanks @erjiaqing!)

What will follow-up:

  • Better docs
  • More sample tests
  • A way to re-use credentials from chip-tool with Python (already WIP)

Testing

  • Built a test for TC-DA-1.7 (not included here) and ran it successfully against
    an all-clusters-app
  • Unit tests still pass
  • Integration tests still pass

- Testing with Cirque requires complex setup and it is not easy to add
  tests.
- Testing with chip-repl is interactive only
- We needed a way to test more complex test scenarios than possible
  with chip-tool which cannot deal with complex test cases including recomputed
  cryptographic values due to complex logic and data dependencies.

This PR:

- Uses existing Mobly test framework dependency to add capabilities to
  make freestanding tests (see `src/python_testing/hello_test.py`)
- Adds a module that only depends on existing CHIP modules in the virtual
  environment to provide needed scaffolding for tests running, including
  being able to commission a device from the command line
- Adds needed cryptographic dependencies to environment for upcoming tests
- Adds an example test (`hello_test.py`)
- Added support to Python ChipDeviceCtrl to do on-network commissioning
  (thanks @erjiaqing!)

What will follow-up:
- Better docs
- More sample tests
- A way to re-use credentials from chip-tool with Python (already WIP)

Testing done:
- Built a test for TC-DA-1.7 (not included here) and ran it successfully against
  an all-clusters-app
- Unit tests still pass
- Integration tests still pass
@github-actions
Copy link

github-actions bot commented Aug 3, 2022

PR #21567: Size comparison from 83fb7fd to 7909bc4

Increases (1 build for esp32)
platform target config section 83fb7fd 7909bc4 change % change
esp32 all-clusters-app c3devkit (read only) 1024446 1024450 4 0.0
.flash.text 1024446 1024450 4 0.0
Decreases (3 builds for bl602, telink)
platform target config section 83fb7fd 7909bc4 change % change
bl602 lighting-app bl602+rpc (read/write) 1423994 1423986 -8 -0.0
.text 1078704 1078700 -4 -0.0
telink light-switch-app tlsr9518adk80d text 569418 569416 -2 -0.0
lighting-app tlsr9518adk80d text 586306 586304 -2 -0.0
Full report (43 builds for bl602, cc13x2_26x2, cyw30739, efr32, esp32, k32w, linux, mbed, nrfconnect, p6, telink)
platform target config section 83fb7fd 7909bc4 change % change
bl602 lighting-app bl602 (read/write) 1378738 1378738 0 0.0
.bss 119746 119746 0 0.0
.data 4480 4480 0 0.0
.text 1047200 1047200 0 0.0
bl602+rpc (read/write) 1423994 1423986 -8 -0.0
.bss 127186 127186 0 0.0
.data 4600 4600 0 0.0
.text 1078704 1078700 -4 -0.0
cc13x2_26x2 all-clusters-app LP_CC2652R7 (read only) 669979 669979 0 0.0
(read/write) 181404 181404 0 0.0
.bss 74276 74276 0 0.0
.data 3372 3372 0 0.0
.rodata 88467 88467 0 0.0
.text 581196 581196 0 0.0
all-clusters-minimal-app LP_CC2652R7 (read only) 635491 635491 0 0.0
(read/write) 157844 157844 0 0.0
.bss 73556 73556 0 0.0
.data 3372 3372 0 0.0
.rodata 77691 77691 0 0.0
.text 557476 557476 0 0.0
lock-ftd LP_CC2652R7 (read only) 672959 672959 0 0.0
(read/write) 168608 168608 0 0.0
.bss 71348 71348 0 0.0
.data 3296 3296 0 0.0
.rodata 76535 76535 0 0.0
.text 595944 595944 0 0.0
lock-mtd LP_CC2652R7 (read only) 655507 655507 0 0.0
(read/write) 181748 181748 0 0.0
.bss 67036 67036 0 0.0
.data 3296 3296 0 0.0
.rodata 101531 101531 0 0.0
.text 553496 553496 0 0.0
pump-app LP_CC2652R7 (read only) 681447 681447 0 0.0
(read/write) 160928 160928 0 0.0
.bss 71388 71388 0 0.0
.data 3296 3296 0 0.0
.rodata 88919 88919 0 0.0
.text 592044 592044 0 0.0
pump-controller-app LP_CC2652R7 (read only) 667023 667023 0 0.0
(read/write) 175488 175488 0 0.0
.bss 71524 71524 0 0.0
.data 3292 3292 0 0.0
.rodata 84743 84743 0 0.0
.text 581800 581800 0 0.0
shell LP_CC2652R7 (read only) 662678 662678 0 0.0
(read/write) 184224 184224 0 0.0
.bss 76596 76596 0 0.0
.data 3376 3376 0 0.0
.rodata 85446 85446 0 0.0
.text 576916 576916 0 0.0
cyw30739 light cyw930739m2evb_01 (read/write) 584142 584142 0 0.0
.app_xip_area 460952 460952 0 0.0
.bss 65632 65632 0 0.0
.data 744 744 0 0.0
.rodata 0 0 0 0.0
.text 112 112 0 0.0
lock cyw930739m2evb_01 (read/write) 590614 590614 0 0.0
.app_xip_area 462640 462640 0 0.0
.bss 70416 70416 0 0.0
.data 748 748 0 0.0
.rodata 0 0 0 0.0
.text 112 112 0 0.0
ota-requestor-no-progress-logging cyw930739m2evb_01 (read/write) 589850 589850 0 0.0
.app_xip_area 467468 467468 0 0.0
.bss 64880 64880 0 0.0
.data 688 688 0 0.0
.rodata 0 0 0 0.0
.text 112 112 0 0.0
efr32 lighting-app BRD4161A (read/write) 1089152 1089152 0 0.0
.bss 133268 133268 0 0.0
.data 2064 2064 0 0.0
.text 953800 953800 0 0.0
BRD4161A+rpc (read/write) 1143460 1143460 0 0.0
.bss 149948 149948 0 0.0
.data 2276 2276 0 0.0
.text 991216 991216 0 0.0
BRD4161A+rs911x (read/write) 975624 975624 0 0.0
.bss 161752 161752 0 0.0
.data 2048 2048 0 0.0
.text 811804 811804 0 0.0
lock-app BRD4161A+wf200 (read/write) 1130536 1130536 0 0.0
.bss 144400 144400 0 0.0
.data 2056 2056 0 0.0
.text 984060 984060 0 0.0
window-app BRD4161A (read/write) 1082460 1082460 0 0.0
.bss 134748 134748 0 0.0
.data 2092 2092 0 0.0
.text 945596 945596 0 0.0
esp32 all-clusters-app c3devkit (read only) 1024446 1024450 4 0.0
(read/write) 1487042 1487042 0 0.0
.dram0.bss 70336 70336 0 0.0
.dram0.data 14600 14600 0 0.0
.flash.rodata 216672 216672 0 0.0
.flash.text 1024446 1024450 4 0.0
.iram0.text 62902 62902 0 0.0
m5stack (read only) 1077927 1077927 0 0.0
(read/write) 489064 489064 0 0.0
.dram0.bss 75840 75840 0 0.0
.dram0.data 34144 34144 0 0.0
.flash.rodata 247084 247084 0 0.0
.flash.text 1072543 1072543 0 0.0
.iram0.text 123267 123267 0 0.0
k32w light k32w0+release (read/write) 643528 643528 0 0.0
.bss 69720 69720 0 0.0
.data 2044 2044 0 0.0
.text 569036 569036 0 0.0
lock k32w0+release (read/write) 701896 701896 0 0.0
.bss 70184 70184 0 0.0
.data 2052 2052 0 0.0
.text 626932 626932 0 0.0
linux all-clusters-app debug (read only) 3015057 3015057 0 0.0
(read/write) 155720 155720 0 0.0
.bss 61888 61888 0 0.0
.data 2096 2096 0 0.0
.data.rel.ro 85384 85384 0 0.0
.dynamic 608 608 0 0.0
.got 4568 4568 0 0.0
.init 27 27 0 0.0
.init_array 1152 1152 0 0.0
.rodata 271915 271915 0 0.0
.text 2564258 2564258 0 0.0
all-clusters-minimal-app debug (read only) 2856873 2856873 0 0.0
(read/write) 147488 147488 0 0.0
.bss 61152 61152 0 0.0
.data 2064 2064 0 0.0
.data.rel.ro 77992 77992 0 0.0
.dynamic 608 608 0 0.0
.got 4488 4488 0 0.0
.init 27 27 0 0.0
.init_array 1144 1144 0 0.0
.rodata 271947 271947 0 0.0
.text 2408674 2408674 0 0.0
bridge-app debug+rpc (read only) 2362201 2362201 0 0.0
(read/write) 127584 127584 0 0.0
.bss 50592 50592 0 0.0
.data 3600 3600 0 0.0
.data.rel.ro 67544 67544 0 0.0
.dynamic 608 608 0 0.0
.got 4392 4392 0 0.0
.init 27 27 0 0.0
.init_array 824 824 0 0.0
.rodata 202728 202728 0 0.0
.text 1996466 1996466 0 0.0
chip-tool debug (read only) 10558633 10558633 0 0.0
(read/write) 646336 646336 0 0.0
.bss 24856 24856 0 0.0
.data 3266 3266 0 0.0
.data.rel.ro 611704 611704 0 0.0
.dynamic 608 608 0 0.0
.got 5088 5088 0 0.0
.init 27 27 0 0.0
.init_array 768 768 0 0.0
.rodata 539509 539509 0 0.0
.text 8523172 8523172 0 0.0
chip-tool-ipv6only arm64 (read only) 9960892 9960892 0 0.0
(read/write) 694017 694017 0 0.0
.bss 32897 32897 0 0.0
.data 3272 3272 0 0.0
.data.rel.ro 639264 639264 0 0.0
.dynamic 560 560 0 0.0
.got 13624 13624 0 0.0
.init 24 24 0 0.0
.init_array 192 192 0 0.0
.rodata 471180 471180 0 0.0
.text 7862884 7862884 0 0.0
lighting-app debug+rpc (read only) 2584673 2584673 0 0.0
(read/write) 130232 130232 0 0.0
.bss 49728 49728 0 0.0
.data 2096 2096 0 0.0
.data.rel.ro 72456 72456 0 0.0
.dynamic 608 608 0 0.0
.got 4392 4392 0 0.0
.init 27 27 0 0.0
.init_array 912 912 0 0.0
.rodata 218384 218384 0 0.0
.text 2195218 2195218 0 0.0
lock-app debug (read only) 2573337 2573337 0 0.0
(read/write) 125568 125568 0 0.0
.bss 48256 48256 0 0.0
.data 1712 1712 0 0.0
.data.rel.ro 69592 69592 0 0.0
.dynamic 608 608 0 0.0
.got 4464 4464 0 0.0
.init 27 27 0 0.0
.init_array 888 888 0 0.0
.rodata 235920 235920 0 0.0
.text 2170402 2170402 0 0.0
ota-provider-app debug (read only) 2353265 2353265 0 0.0
(read/write) 119048 119048 0 0.0
.bss 47808 47808 0 0.0
.data 1936 1936 0 0.0
.data.rel.ro 63416 63416 0 0.0
.dynamic 608 608 0 0.0
.got 4488 4488 0 0.0
.init 27 27 0 0.0
.init_array 768 768 0 0.0
.rodata 208920 208920 0 0.0
.text 1980466 1980466 0 0.0
ota-requestor-app debug (read only) 2473857 2473857 0 0.0
(read/write) 126440 126440 0 0.0
.bss 50176 50176 0 0.0
.data 2240 2240 0 0.0
.data.rel.ro 68072 68072 0 0.0
.dynamic 608 608 0 0.0
.got 4480 4480 0 0.0
.init 27 27 0 0.0
.init_array 832 832 0 0.0
.rodata 212448 212448 0 0.0
.text 2088914 2088914 0 0.0
shell debug (read only) 2586265 2586265 0 0.0
(read/write) 141872 141872 0 0.0
.bss 57800 57800 0 0.0
.data 1264 1264 0 0.0
.data.rel.ro 77008 77008 0 0.0
.dynamic 608 608 0 0.0
.got 4136 4136 0 0.0
.init 27 27 0 0.0
.init_array 1024 1024 0 0.0
.rodata 232882 232882 0 0.0
.text 2195154 2195154 0 0.0
thermostat-no-ble arm64 (read only) 2350700 2350700 0 0.0
(read/write) 141761 141761 0 0.0
.bss 55329 55329 0 0.0
.data 1672 1672 0 0.0
.data.rel.ro 75976 75976 0 0.0
.dynamic 560 560 0 0.0
.got 5016 5016 0 0.0
.init 24 24 0 0.0
.init_array 408 408 0 0.0
.rodata 139412 139412 0 0.0
.text 1973776 1973776 0 0.0
tv-app debug (read only) 3155729 3155729 0 0.0
(read/write) 257736 257736 0 0.0
.bss 167352 167352 0 0.0
.data 4736 4736 0 0.0
.data.rel.ro 79104 79104 0 0.0
.dynamic 608 608 0 0.0
.got 4848 4848 0 0.0
.init 27 27 0 0.0
.init_array 1064 1064 0 0.0
.rodata 256392 256392 0 0.0
.text 2709762 2709762 0 0.0
tv-casting-app debug (read only) 5393105 5393105 0 0.0
(read/write) 158728 158728 0 0.0
.bss 51384 51384 0 0.0
.data 2432 2432 0 0.0
.data.rel.ro 98504 98504 0 0.0
.dynamic 608 608 0 0.0
.got 4736 4736 0 0.0
.init 27 27 0 0.0
.init_array 1032 1032 0 0.0
.rodata 339825 339825 0 0.0
.text 4785986 4785986 0 0.0
mbed lock-app CY8CPROTO_062_4343W+release (read only) 6224 6224 0 0.0
(read/write) 2453416 2453416 0 0.0
.bss 214548 214548 0 0.0
.data 5872 5872 0 0.0
.text 1416060 1416060 0 0.0
nrfconnect all-clusters-app nrf52840dk_nrf52840 (read/write) 1176571 1176571 0 0.0
bss 143224 143224 0 0.0
rodata 142620 142620 0 0.0
text 811888 811888 0 0.0
all-clusters-minimal-app nrf52840dk_nrf52840 (read/write) 1156459 1156459 0 0.0
bss 142460 142460 0 0.0
rodata 134148 134148 0 0.0
text 801036 801036 0 0.0
p6 all-clusters-app default (read only) 881528 881528 0 0.0
(read/write) 1689292 1689292 0 0.0
.bss 149168 149168 0 0.0
.data 2648 2648 0 0.0
.text 1529088 1529088 0 0.0
all-clusters-minimal-app default (read only) 882248 882248 0 0.0
(read/write) 1633332 1633332 0 0.0
.bss 148448 148448 0 0.0
.data 2648 2648 0 0.0
.text 1473848 1473848 0 0.0
light-app default (read only) 890568 890568 0 0.0
(read/write) 1553556 1553556 0 0.0
.bss 140336 140336 0 0.0
.data 2440 2440 0 0.0
.text 1402392 1402392 0 0.0
lock-app default (read only) 886072 886072 0 0.0
(read/write) 1592204 1592204 0 0.0
.bss 144816 144816 0 0.0
.data 2456 2456 0 0.0
.text 1436544 1436544 0 0.0
telink light-switch-app tlsr9518adk80d (read/write) 805560 805560 0 0.0
bss 70976 70976 0 0.0
noinit 43488 43488 0 0.0
text 569418 569416 -2 -0.0
lighting-app tlsr9518adk80d (read/write) 826000 826000 0 0.0
bss 71820 71820 0 0.0
noinit 43488 43488 0 0.0
text 586306 586304 -2 -0.0

@woody-apple woody-apple merged commit 88bc0b2 into project-chip:master Aug 3, 2022
isiu-apple pushed a commit to isiu-apple/connectedhomeip that referenced this pull request Sep 16, 2022
* Introduce Python-based freestanding tests

- Testing with Cirque requires complex setup and it is not easy to add
  tests.
- Testing with chip-repl is interactive only
- We needed a way to test more complex test scenarios than possible
  with chip-tool which cannot deal with complex test cases including recomputed
  cryptographic values due to complex logic and data dependencies.

This PR:

- Uses existing Mobly test framework dependency to add capabilities to
  make freestanding tests (see `src/python_testing/hello_test.py`)
- Adds a module that only depends on existing CHIP modules in the virtual
  environment to provide needed scaffolding for tests running, including
  being able to commission a device from the command line
- Adds needed cryptographic dependencies to environment for upcoming tests
- Adds an example test (`hello_test.py`)
- Added support to Python ChipDeviceCtrl to do on-network commissioning
  (thanks @erjiaqing!)

What will follow-up:
- Better docs
- More sample tests
- A way to re-use credentials from chip-tool with Python (already WIP)

Testing done:
- Built a test for TC-DA-1.7 (not included here) and ran it successfully against
  an all-clusters-app
- Unit tests still pass
- Integration tests still pass

* Restyled by clang-format

* Restyled by gn

* Restyled by autopep8

Co-authored-by: Restyled.io <[email protected]>
agners added a commit to agners/connectedhomeip that referenced this pull request May 16, 2023
PR project-chip#21567 introduced an unecessary dependency to pycrypto. From PyPI it
seems that pycrypto is largely unmaintained, and I did not found a use
in the Python bindings or in the Python test.

Also drop the comment about cyryptography and ecdsa usage as the library
is meanwhile used in the core CHIP Python libraries.
agners added a commit to agners/connectedhomeip that referenced this pull request May 16, 2023
PR project-chip#21567 introduced an unnecessary dependency to pycrypto. From PyPI it
seems that pycrypto is largely unmaintained, and I did not found a use
in the Python bindings or in the Python test.

Also drop the comment about cryptography and ecdsa usage as the library
is meanwhile used in the core CHIP Python libraries.
agners added a commit to agners/connectedhomeip that referenced this pull request May 17, 2023
PR project-chip#21567 introduced an unnecessary dependency to pycrypto. From PyPI it
seems that pycrypto is largely unmaintained, and I did not found a use
in the Python bindings or in the Python test.

Also drop the comment about cryptography and ecdsa usage as the library
is meanwhile used in the core CHIP Python libraries.
andy31415 pushed a commit that referenced this pull request May 18, 2023
PR #21567 introduced an unnecessary dependency to pycrypto. From PyPI it
seems that pycrypto is largely unmaintained, and I did not found a use
in the Python bindings or in the Python test.

Also drop the comment about cryptography and ecdsa usage as the library
is meanwhile used in the core CHIP Python libraries.
agners added a commit to agners/connectedhomeip that referenced this pull request May 22, 2023
PR project-chip#21567 added mobly as a default dependency of the Python Core CHIP
library. The mobly package is only used by the Python testing framework
in `src/python_testing/`. Allow to install extra dependency via
`script/build_python.sh` flag and install them only when needed.
agners added a commit to agners/connectedhomeip that referenced this pull request May 23, 2023
PR project-chip#21567 added mobly as a default dependency of the Python Core CHIP
library. The mobly package is only used by the Python testing framework
in `src/python_testing/`. Allow to install extra dependency via
`script/build_python.sh` flag and install them only when needed.
agners added a commit to agners/connectedhomeip that referenced this pull request May 25, 2023
PR project-chip#21567 added mobly as a default dependency of the Python Core CHIP
library. The mobly package is only used by the Python testing framework
in `src/python_testing/`. Allow to install extra dependency via
`script/build_python.sh` flag and install them only when needed.
agners added a commit to agners/connectedhomeip that referenced this pull request May 26, 2023
PR project-chip#21567 added mobly as a default dependency of the Python Core CHIP
library. The mobly package is only used by the Python testing framework
in `src/python_testing/`. Allow to install extra dependency via
`script/build_python.sh` flag and install them only when needed.
bzbarsky-apple pushed a commit that referenced this pull request May 26, 2023
* [python] Remove dependency only used in testing

PR #21567 added mobly as a default dependency of the Python Core CHIP
library. The mobly package is only used by the Python testing framework
in `src/python_testing/`. Allow to install extra dependency via
`script/build_python.sh` flag and install them only when needed.

* [python] remove now unnecessary dependency mobly

* Apply restyle changes
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.

4 participants