On Tue, Dec 23, 2025 at 10:29 AM Matteo Golin <[email protected]>
wrote:

> Thank you Xiang for the information! It makes sense of course that you're
> not able to share the Xiaomi internal test suites.
>
>
Actually, raiden00pl is working on upstreaming the part of the test suite
which tests NuttX's components to the NuttX community.
The part we can't share is that:

   1. The test suite specific for openvela framework
   2. Internal CI/CD infrastructure which is couple with our workflow and
   very different from github



> Are there any modifications Xiaomi has needed to make to cmocka to improve
> it's ability to run on small devices? I know some of your targets are
> wearables which I imagine are very resource constrained?
>
>
No, we don't do any size optimization for cmocka since it is already a
small unit test framework containing one .h and one .c.
We run many test cases(including cmocka's) on the smallest BLE only module
which has 256KB SRAM and 2MB flash.



> Can you clarify what you mean by monkey test? Is that another test
> framework? I'm interested since you mentioned it running on watches and
> speakers.
>
>
Here is an explanation from wiki:
https://en.wikipedia.org/wiki/Monkey_testing
https://en.wikipedia.org/wiki/Mean_time_between_failures
Here is the our monkey test requirement:

   1. Boot 50 instances for each simulator/qemu/hardware with the product
   config
   2. Generate the random input quickly through the fake drivers(e.g.
   touch/button/audio...)

All devices need to run beyond 24 hours without crash or hang for three
consecutive days.

Thanks,
> Matteo
>
> On Mon, Dec 22, 2025, 9:08 PM Xiang Xiao <[email protected]>
> wrote:
>
> > On Tue, Dec 23, 2025 at 1:08 AM Matteo Golin <[email protected]>
> > wrote:
> >
> > > Hello everyone,
> > >
> > > Thanks for all the feedback! I'm glad I discussed this here first. I'll
> > try
> > > to address everything that was brought up.
> > >
> > > Thanks Guiding for the input! I must just be missing some library on my
> > > machine if you're able to compile it just fine. Maybe I'll track down
> > that
> > > error and see if you can recognize what's wrong.
> > >
> > > I don't intend to replace OS test anymore. I think it serves its
> purpose
> > as
> > > a minimal sanity check. Instead, I think we need something a little
> more
> > > involved to test PRs since OS test can't catch many issues. It is
> > currently
> > > the standard everyone uses for verifying their patches and it would be
> > > better to have more complete, alternate options. I do think that we can
> > all
> > > agree that OS test needs a revision of its console output so that it is
> > > much easier to see pass/fail results, but that is just a matter of
> print
> > > statements and can be done in a different effort.
> > >
> > > I think the overwhelming concern here is mixing two unit testing
> > frameworks
> > > and no longer having one resource where we can go for tests. I share
> > raiden
> > > and Guiding's concern about that, which is why I'm glad I opened for
> > > discussion here. On the one hand, Xiaomi has a pretty substantial
> > > collection of tests in the `testsuite` application which they are using
> > > internally I believe (in their CI). These run well on virtual machines,
> > > which I assume is why the only configurations with that test suite
> > included
> > > is sim and rv-virt. I do not know nearly enough about cmocka to make
> any
> > > claim that it *wouldn't* work on smaller hardware devices, but it also
> > > definitely looks to be less light-weight from the feature set in the
> > > documentation. On the other hand, the Xiaomi test suites are also not a
> > > complete silver bullet since they seem not to be intended to run on
> > > hardware, and there are *a lot *of tests that need hardware
> verification.
> > >
> >
> > The test suite also runs on hardware daily, but sorry it's impossible to
> > share our hardware and internal CI/CD infrastructure for the community.
> > But, we already contract raiden00pl to refactor our test automation
> > framework for public use.
> >
> >
> > > In PRs we often request more than just a simulator test for certain
> > > changes. For instance, sim isn't able to have `/dev/rand`, so that
> needs
> > to
> > > be tested on a different target.
> > >
> >
> > Maybe someone more familiar with Xiaomi's testing practices can weigh in
> on
> > > whether cmocka has been run on hardware. Going purely based off of
> their
> > > PRs, which almost exclusively cite tests on simulators, my guess is
> that
> > > cmocka was not designed with embedded in mind when it was written.
> > >
> > >
> > CI/CD in Xiaomi is far more complex than your description:
> >
> >    1. Each patch will test on 10+ devices(include sim/qemu/hardware,
> >    arm/arm64/riscv/xtensa/x64, smp/up) with 1000+ test case
> >    2. Run the full test suite(10000+ test case) every day
> >    3. Run the monkey test every day on watch and speaker product: 24hour
> X
> >    50 instance X (sim + qemu + hardware)
> >
> > Many stability bugs only happen randomly in monkey test.
> >
> > As for size: unit testing can get large with Unity or cmocka (as raiden
> > > mentioned) as more tests are added. Hence my effort to enable/disable
> > > individual test suites from getting compiled. It might not be possible
> to
> > > ever get good testing ability for AVR just because the devices are so
> > > small. Whatever solution is used there is probably going to involve
> > > flashing the device multiple times with different tests. The size goal
> > > should just be to target the most NuttX devices possible.
> > >
> > > Then there are the pros and cons of each framework (again, I don't know
> > > much about cmocka so take it with a grain of salt):
> > >
> > > Unity's cons:
> > > - Designed for each test-suite to be a standalone binary. This is
> clunky
> > on
> > > NuttX, so `nest` is currently implemented as a mega-suite where test
> > cases
> > > just follow a naming convention to make it clear what is being tested
> > > - setUp/tearDown can't really be leveraged because of the above
> > > - I've noticed some funky behaviour using TEST_IGNORE in certain
> > scenarios
> > > but that's possibly my own configuration issue
> > > - Would be in conflict with existing cmocka tests
> > >
> > > Unity's pros:
> > > - Highly configurable, like NuttX
> > > - Light-weight and works for embedded devices
> > > - Significantly larger user base than cmocka
> > >
> > > Cmocka's cons:
> > > - Possibly (?) not light-weight
> > > - No documentation for existing test cases in NuttX
> > > - Small user base
> > >
> > > Cmocka's pros:
> > > - Seems to have a larger set of features, including setup/teardown
> > > functions per-test case
> > > - Existing tests in NuttX
> > >
> > >
> > Xiaomi selected cmocka just because it has the test suite concept which
> > could help us manage 10000+ tests.
> > But we also use gtest for the c++ code base, and run many test cases from
> > 3rd parties(e.g. LTP, libuv, libcxx testsuite, PSE52...) which may use a
> > different test framework.
> > So, is it hard or meaningless to stick to one unit test framework for an
> > open source project.
> >
> > Irrespective of whether we go with Unity or cmocka, the collection of
> tests
> > > that we write will be intended to run on the actual hardware devices
> > > themselves for the purposes of testing patches and doing regression
> > tests.
> > > As a result, the tests will be separate from the Xiaomi 'testsuite'
> > > application which is intended for CI testing. I think this
> realistically
> > > nullifies choosing which framework to use on the basis of consistency,
> > > since the tests are not coexisting with the cmocka tests Xiaomi has
> > > written. Instead, the choice should be based on what best achieves the
> > goal
> > > from a functionality perspective. Unity seems like a really great
> choice
> > > for this in my opinion, but I am bothered by the fact that it's
> designed
> > > with multiple test binaries in mind.
> > >
> > > Let me know what you think,
> > > Matteo
> > >
> > > On Mon, Dec 22, 2025 at 11:02 AM Alan C. Assis <[email protected]>
> > wrote:
> > >
> > > > Yes, I agree! We need data size from each solution for comparison,
> this
> > > is
> > > > the first step.
> > > >
> > > > Maybe the conversion could be facilitated if we create equivalent
> > > functions
> > > > like those used in the apps/testing/testsuites:
> > > >
> > > > cmocka_run_group_tests -> unity_run_group_tests
> > > > cmocka_unit_test_setup_teardown -> unity_unit_test_setup_teardown
> > > > etc...
> > > >
> > > > This way we avoid end up with two unit test framework, we already
> have
> > > the
> > > > Makefile vs CMake precedent! :-D
> > > >
> > > > On Mon, Dec 22, 2025 at 11:27 AM raiden00pl <[email protected]>
> > > wrote:
> > > >
> > > > > The discussion about small systems doesn't make much sense without
> > > > > data comparing resources of the same test cases for cmock and
> unity.
> > > > >
> > > > > But let's assume that Unity is better. Should we use two frameworks
> > > > > to implement unit tests for OS? Or choose one framework? If we
> choose
> > > > only
> > > > > Unity, who
> > > > > will migrate the current cmocka tests to Unity? Remember that cmoka
> > > tests
> > > > > are used in CI, so all CI tools must be also migrated.
> > > > > Or should we use two different frameworks to test different things
> > and
> > > > make
> > > > > even
> > > > > more mess in apps/testing as it is now?
> > > > >
> > > > > No one is forcing anyone to do anything. This is an open-source
> > > project,
> > > > > everyone
> > > > > should do what they feel is right. But whether the change should be
> > > > merged
> > > > > is
> > > > > a different question. In this case, it's a very important question,
> > > > because
> > > > > unit testing
> > > > > isn't just about test cases. It's about the entire infrastructure
> > that
> > > > > runs, captures and
> > > > > handles test results later. Writing the test cases is the least of
> > the
> > > > > problems.
> > > > > The infrastructure for cmoka testing is already in place, the
> > > > > infrastructure for Unity
> > > > > testing isn't.
> > > > >
> > > > > pon., 22 gru 2025 o 14:16 Alan C. Assis <[email protected]>
> > > napisał(a):
> > > > >
> > > > > > Mateusz,
> > > > > > but some chips like AVR DA have big flash, but not so much RAM.
> > > > > >
> > > > > > It is better to have some possible way to test on a small system,
> > > using
> > > > > > cmocka we are removing this option from the table.
> > > > > >
> > > > > > I liked the test Matteo did with Unity and I think we should let
> > him
> > > > > > continue. Forcing him to migrate to cmocka just because there's a
> > > test
> > > > > > suite from Xiaomi doesn't seem prudent to me.
> > > > > >
> > > > > > This is the advantage of an open mind open-source project: "the
> > > > > possibility
> > > > > > to test new ideas", if someone had said to Michal Lenc he
> couldn't
> > > > create
> > > > > > NXBoot because where is already MCUBoot integrated on NuttX, we
> > > didn't
> > > > > have
> > > > > > the option to use NXBoot today. ;-)
> > > > > >
> > > > > > BR,
> > > > > >
> > > > > > Alan
> > > > > >
> > > > > > On Mon, Dec 22, 2025 at 10:02 AM raiden00pl <
> [email protected]>
> > > > > wrote:
> > > > > >
> > > > > > > Unit testing by itself isn't suitable for small systems. Ostest
> > is
> > > > > > > something
> > > > > > > different (system level testing), so running it on small
> systems
> > > > makes
> > > > > > > sense.
> > > > > > > Running unit tests on small systems is pointless because you
> > won't
> > > > fit
> > > > > in
> > > > > > > FLASH
> > > > > > > either way. You can run the same on large targets (preferably
> on
> > > > host:
> > > > > > sim,
> > > > > > > qemu)
> > > > > > > and achieve the same result.
> > > > > > >
> > > > > > > pon., 22 gru 2025 o 13:35 Alan C. Assis <[email protected]>
> > > > > napisał(a):
> > > > > > >
> > > > > > > > Is it too complicated to rewrite the cmocka tests in Unity?
> > > > > > > >
> > > > > > > > If cmoka is not feasible for small microcontrollers, like
> AVRs
> > > and
> > > > > > > others,
> > > > > > > > our test coverage will be faulty.
> > > > > > > >
> > > > > > > > BR,
> > > > > > > >
> > > > > > > > Alan
> > > > > > > >
> > > > > > > > On Mon, Dec 22, 2025 at 6:14 AM raiden00pl <
> > [email protected]
> > > >
> > > > > > wrote:
> > > > > > > >
> > > > > > > > > I'm a fan of Unity and have been using it in my projects
> for
> > > > years,
> > > > > > > but I
> > > > > > > > > think
> > > > > > > > > we should stick with one testing framework. Currently,
> Cmocka
> > > is
> > > > > used
> > > > > > > in
> > > > > > > > > nuttx-apps, and we should stick with it. The only question
> is
> > > how
> > > > > > well
> > > > > > > > > Cmocka
> > > > > > > > > is suitable for running on small systems? Will ostest still
> > be
> > > > able
> > > > > > to
> > > > > > > > run
> > > > > > > > > on small MCUs?
> > > > > > > > > With Unity this would be quite likely, so maybe an
> exception
> > > for
> > > > > > Unity
> > > > > > > > and
> > > > > > > > > ostest would
> > > > > > > > > be acceptable, but using it for other test cases will only
> > > cause
> > > > > > chaos.
> > > > > > > > >
> > > > > > > > > pon., 22 gru 2025 o 10:05 Guiding Li <[email protected]>
> > > > > napisał(a):
> > > > > > > > >
> > > > > > > > > > Hi Matteo,
> > > > > > > > > >
> > > > > > > > > > Good idea !
> > > > > > > > > >
> > > > > > > > > > But it is best to stick with a single testing framework.
> > > > > Currently,
> > > > > > > > many
> > > > > > > > > > test cases are using cmocka, so I suggest reusing cmocka
> > for
> > > > > > > > consistency.
> > > > > > > > > >
> > > > > > > > > > ostest is a minimal basic test suite, typically used for
> CT
> > > > > > > (continuous
> > > > > > > > > > testing) of each patch.
> > > > > > > > > > If we move ostest to cmocka, it would make ostest
> dependent
> > > on
> > > > a
> > > > > > > > specific
> > > > > > > > > > framework before it can be run.
> > > > > > > > > > And It may increase the code size, which is not very
> > friendly
> > > > for
> > > > > > > > > > configurations with small flash memory.
> > > > > > > > > >
> > > > > > > > > > As Greg mentioned: the answer depends on a tradeoff
> between
> > > > > effort
> > > > > > > and
> > > > > > > > > test
> > > > > > > > > > coverage.
> > > > > > > > > >
> > > > > > > > > > We need to clarify whether we define ostest as a
> > lightweight,
> > > > > > > > > ready-to-run
> > > > > > > > > > test set for quick verification, or as part of the full
> > test
> > > > > suite.
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > The follow is my compiling for cmocka:
> > > > > > > > > >
> > > > > > > > > > *ligd@BAI:~/platform/mainline/nuttx$
> ./tools/configure.sh
> > > > > > sim:citest
> > > > > > > > > -j8*
> > > > > > > > > >   Copy files
> > > > > > > > > >   Select CONFIG_HOST_LINUX=y
> > > > > > > > > >   Refreshing...
> > > > > > > > > > CP: arch/dummy/Kconfig to
> > > > > > > > > >
> /home/ligd/platform/mainline/nuttx/arch/dummy/dummy_kconfig
> > > > > > > > > > CP: boards/dummy/Kconfig to
> > > > > > > > > >
> > /home/ligd/platform/mainline/nuttx/boards/dummy/dummy_kconfig
> > > > > > > > > > LN: include/arch to arch/sim/include
> > > > > > > > > > LN: drivers/platform to
> > > > > > > > /home/ligd/platform/mainline/nuttx/drivers/dummy
> > > > > > > > > > LN: arch/sim/src/chip to
> > > > > > > > > > /home/ligd/platform/mainline/nuttx/arch/sim/src/sim
> > > > > > > > > > LN: arch/sim/src/board to
> > > > > > > > > > /home/ligd/platform/mainline/nuttx/boards/sim/sim/sim/src
> > > > > > > > > > LN: include/arch/board to
> > > > > > > > > >
> > /home/ligd/platform/mainline/nuttx/boards/sim/sim/sim/include
> > > > > > > > > > LN: include/arch/chip to
> > > > > > > > > > /home/ligd/platform/mainline/nuttx/arch/sim/include/sim
> > > > > > > > > > LN: platform/board to
> > > > > > > /home/ligd/platform/mainline/apps/platform/dummy
> > > > > > > > > > mkkconfig in /home/ligd/platform/mainline/apps/audioutils
> > > > > > > > > > mkkconfig in /home/ligd/platform/mainline/apps/benchmarks
> > > > > > > > > > mkkconfig in /home/ligd/platform/mainline/apps/boot
> > > > > > > > > > mkkconfig in /home/ligd/platform/mainline/apps/canutils
> > > > > > > > > > mkkconfig in /home/ligd/platform/mainline/apps/crypto
> > > > > > > > > > mkkconfig in /home/ligd/platform/mainline/apps/database
> > > > > > > > > > mkkconfig in
> > /home/ligd/platform/mainline/apps/examples/rust
> > > > > > > > > > mkkconfig in
> > > /home/ligd/platform/mainline/apps/examples/sotest
> > > > > > > > > > mkkconfig in
> > > /home/ligd/platform/mainline/apps/examples/module
> > > > > > > > > > mkkconfig in
> > > /home/ligd/platform/mainline/apps/examples/mcuboot
> > > > > > > > > > mkkconfig in /home/ligd/platform/mainline/apps/examples
> > > > > > > > > > mkkconfig in /home/ligd/platform/mainline/apps/fsutils
> > > > > > > > > > mkkconfig in /home/ligd/platform/mainline/apps/games
> > > > > > > > > > mkkconfig in /home/ligd/platform/mainline/apps/graphics
> > > > > > > > > > mkkconfig in /home/ligd/platform/mainline/apps/industry
> > > > > > > > > > mkkconfig in /home/ligd/platform/mainline/apps/inertial
> > > > > > > > > > mkkconfig in
> > > > > > > /home/ligd/platform/mainline/apps/interpreters/luamodules
> > > > > > > > > > mkkconfig in
> /home/ligd/platform/mainline/apps/interpreters
> > > > > > > > > > mkkconfig in /home/ligd/platform/mainline/apps/logging
> > > > > > > > > > mkkconfig in /home/ligd/platform/mainline/apps/lte
> > > > > > > > > > mkkconfig in /home/ligd/platform/mainline/apps/math
> > > > > > > > > > mkkconfig in /home/ligd/platform/mainline/apps/mlearning
> > > > > > > > > > mkkconfig in /home/ligd/platform/mainline/apps/netutils
> > > > > > > > > > mkkconfig in /home/ligd/platform/mainline/apps/sdr
> > > > > > > > > > mkkconfig in /home/ligd/platform/mainline/apps/system
> > > > > > > > > > mkkconfig in /home/ligd/platform/mainline/apps/tee
> > > > > > > > > > mkkconfig in
> > > /home/ligd/platform/mainline/apps/testing/drivers
> > > > > > > > > > mkkconfig in
> > /home/ligd/platform/mainline/apps/testing/sched
> > > > > > > > > > mkkconfig in /home/ligd/platform/mainline/apps/testing/fs
> > > > > > > > > > mkkconfig in /home/ligd/platform/mainline/apps/testing/mm
> > > > > > > > > > mkkconfig in
> /home/ligd/platform/mainline/apps/testing/libc
> > > > > > > > > > mkkconfig in
> /home/ligd/platform/mainline/apps/testing/arch
> > > > > > > > > > mkkconfig in
> /home/ligd/platform/mainline/apps/testing/cxx
> > > > > > > > > > mkkconfig in /home/ligd/platform/mainline/apps/testing
> > > > > > > > > > mkkconfig in /home/ligd/platform/mainline/apps/videoutils
> > > > > > > > > > mkkconfig in
> > > > /home/ligd/platform/mainline/apps/wireless/bluetooth
> > > > > > > > > > mkkconfig in
> > > > > /home/ligd/platform/mainline/apps/wireless/ieee802154
> > > > > > > > > > mkkconfig in /home/ligd/platform/mainline/apps/wireless
> > > > > > > > > > mkkconfig in /home/ligd/platform/mainline/apps
> > > > > > > > > > Loaded configuration '.config'
> > > > > > > > > > Configuration saved to '.config'
> > > > > > > > > > ligd@BAI:~/platform/mainline/nuttx$
> > > > > > > > > > *ligd@BAI:~/platform/mainline/nuttx$ make*
> > > > > > > > > > Create version.h
> > > > > > > > > > Downloading: libcxx-17.0.6.src.tar.xz LN: platform/board
> to
> > > > > > > > > > /home/ligd/platform/mainline/apps/platform/dummy
> > > > > > > > > > Downloading: v1.46.0.zip
> > > > > > > > > > ...
> > > > > > > > > > patching file
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> testcases/open_posix_testsuite/conformance/interfaces/pthread_sigmask/18-1.c
> > > > > > > > > > Hunk #1 succeeded at 160 with fuzz 2 (offset -8 lines).
> > > > > > > > > >
> > > > > > > > > > CP:
> > > /home/ligd/platform/mainline/nuttx/include/nuttx/config.h
> > > > > > > > > > CP:
> > > > /home/ligd/platform/mainline/nuttx/include/nuttx/fs/hostfs.h
> > > > > > > > > > LD:  nuttx
> > > > > > > > > > Pac SIM with dynamic libs..
> > > > > > > > > > '/lib/x86_64-linux-gnu/libz.so.1' ->
> > 'sim-pac/libs/libz.so.1'
> > > > > > > > > > '/lib/x86_64-linux-gnu/libstdc++.so.6' ->
> > > > > > > 'sim-pac/libs/libstdc++.so.6'
> > > > > > > > > > '/lib/x86_64-linux-gnu/libc.so.6' ->
> > 'sim-pac/libs/libc.so.6'
> > > > > > > > > > '/lib/x86_64-linux-gnu/libm.so.6' ->
> > 'sim-pac/libs/libm.so.6'
> > > > > > > > > > '/lib/x86_64-linux-gnu/libgcc_s.so.1' ->
> > > > > > 'sim-pac/libs/libgcc_s.so.1'
> > > > > > > > > > '/lib64/ld-linux-x86-64.so.2' ->
> > > 'sim-pac/ld-linux-x86-64.so.2'
> > > > > > > > > > SIM elf with dynamic libs archive in nuttx.tgz
> > > > > > > > > > ligd@BAI:~/platform/mainline/nuttx$
> > > > > > > > > > ligd@BAI:~/platform/mainline/nuttx$
> > > > > > > > > > ligd@BAI:~/platform/mainline/nuttx$
> > > > > > > > > > *ligd@BAI:~/platform/mainline/nuttx$ ./nuttx *
> > > > > > > > > > CHelloWorld: Constructor: mSecret=42
> > > > > > > > > > nsh: init: open failed: 2
> > > > > > > > > >
> > > > > > > > > > NuttShell (NSH) NuttX-12.11.0
> > > > > > > > > > MOTD: username=admin password=Administrator
> > > > > > > > > > nsh>
> > > > > > > > > > nsh> help
> > > > > > > > > > help usage:  help [-v] [<cmd>]
> > > > > > > > > >
> > > > > > > > > >     .           df          ifconfig    mkfifo
> > readlink
> > > > > > > umount
> > > > > > > > > >     [           dmesg       ifdown      mkrd        rm
> > > > > > unset
> > > > > > > > > >     ?           echo        ifup        mount       rmdir
> > > > > > >  uptime
> > > > > > > > > >     alias       env         insmod      mv          rmmod
> > > > > > >  usleep
> > > > > > > > > >     unalias     exec        kill        nslookup    set
> > > > > >  watch
> > > > > > > > > >     basename    exit        pkill       pidof       sleep
> > > > >  xd
> > > > > > > > > >     break       expr        losetup     pmconfig
> source
> > > > > > wait
> > > > > > > > > >     cat         false       ln          poweroff    test
> > > > > > > > > >     cd          fdinfo      ls          quit        time
> > > > > > > > > >     cp          free        lsmod       printf      true
> > > > > > > > > >     cmp         help        mkdir       ps
> > truncate
> > > > > > > > > >     dirname     hexdump     mkfatfs     pwd         uname
> > > > > > > > > >
> > > > > > > > > > Builtin Apps:
> > > > > > > > > >     cmocka
> > > > > > > > > >     cmocka_driver_block
> > > > > > > > > >     cmocka_driver_gpio
> > > > > > > > > >     cmocka_driver_pm
> > > > > > > > > >     cmocka_driver_pm_runtime
> > > > > > > > > >     cmocka_driver_regulator
> > > > > > > > > >
> > > > > > > > > > Matteo Golin <[email protected]> 于2025年12月22日周一
> > > 10:15写道:
> > > > > > > > > >
> > > > > > > > > > > I think so. Best to leave OS test alone and slowly
> > replace
> > > it
> > > > > > with
> > > > > > > a
> > > > > > > > > new
> > > > > > > > > > > tool that has improvements. The only reason I can see
> to
> > > > modify
> > > > > > OS
> > > > > > > > test
> > > > > > > > > > now
> > > > > > > > > > > would just be to have clearer output about what
> > > > passed/failed.
> > > > > > > > > > >
> > > > > > > > > > > I'll come up with an improved proof of concept for a
> new
> > > tool
> > > > > to
> > > > > > > > share
> > > > > > > > > in
> > > > > > > > > > > the next few days.
> > > > > > > > > > >
> > > > > > > > > > > Matteo
> > > > > > > > > > >
> > > > > > > > > > > On Sun, Dec 21, 2025, 9:13 PM Tomek CEDRO <
> > > [email protected]>
> > > > > > > wrote:
> > > > > > > > > > >
> > > > > > > > > > > > Small steps with measurable results may be the best
> > > > approach
> > > > > > > here,
> > > > > > > > to
> > > > > > > > > > > > create some new solution next to existing ostest but
> > not
> > > > > > > replacing
> > > > > > > > it
> > > > > > > > > > > > until ready? :-)
> > > > > > > > > > > >
> > > > > > > > > > > > --
> > > > > > > > > > > > CeDeROM, SQ7MHZ, http://www.tomek.cedro.info
> > > > > > > > > > > >
> > > > > > > > > > > > On Mon, Dec 22, 2025 at 3:06 AM Matteo Golin <
> > > > > > > > [email protected]
> > > > > > > > > >
> > > > > > > > > > > > wrote:
> > > > > > > > > > > > >
> > > > > > > > > > > > > I agree, I think it would take a long time to have
> > > proper
> > > > > > > > coverage
> > > > > > > > > of
> > > > > > > > > > > > NuttX
> > > > > > > > > > > > > as a whole. Perhaps even impossible, since Unity is
> > > more
> > > > > of a
> > > > > > > > unit
> > > > > > > > > > > > testing
> > > > > > > > > > > > > framework and thus there are definitely test cases
> > for
> > > > > NuttX
> > > > > > > that
> > > > > > > > > > would
> > > > > > > > > > > > be
> > > > > > > > > > > > > outside of its realm of "applicability". There is
> > > still a
> > > > > > need
> > > > > > > > for
> > > > > > > > > a
> > > > > > > > > > > > > variety of testing applications and bench-marking
> > > > > > applications
> > > > > > > > for
> > > > > > > > > > > those
> > > > > > > > > > > > > scenarios.
> > > > > > > > > > > > >
> > > > > > > > > > > > > That makes sense, prerequisites would need to be
> > > > > considered.
> > > > > > I
> > > > > > > > > think
> > > > > > > > > > > > > targeting the low-hanging fruit of unit-testable
> code
> > > > would
> > > > > > be
> > > > > > > > easy
> > > > > > > > > > in
> > > > > > > > > > > > that
> > > > > > > > > > > > > case, since prerequisites are mostly encoded in the
> > > > Kconfig
> > > > > > > > > > definitions
> > > > > > > > > > > > > existing or not for features to be tested. Any
> > complex
> > > > > > > behaviour
> > > > > > > > > > > > > (interrupts, multi-threading, etc.) might be out of
> > the
> > > > > realm
> > > > > > > of
> > > > > > > > > > what's
> > > > > > > > > > > > > testable by Unity in the first place. We'll always
> > have
> > > > OS
> > > > > > test
> > > > > > > > in
> > > > > > > > > > that
> > > > > > > > > > > > > case, but maybe then it's better to do what Alan
> > > > suggested
> > > > > > and
> > > > > > > at
> > > > > > > > > > least
> > > > > > > > > > > > > make its output more clear in the meantime. I
> suppose
> > > > RTOS
> > > > > > > > testing
> > > > > > > > > > is a
> > > > > > > > > > > > > whole field in itself.
> > > > > > > > > > > > >
> > > > > > > > > > > > > On Sun, Dec 21, 2025 at 8:40 PM Gregory Nutt <
> > > > > > > > [email protected]>
> > > > > > > > > > > > wrote:
> > > > > > > > > > > > >
> > > > > > > > > > > > > > I think that the answer depends on a tradeoff
> > between
> > > > > > effort
> > > > > > > > and
> > > > > > > > > > test
> > > > > > > > > > > > > > coverage.  I could imagine that a proper job
> could
> > be
> > > > > > > man-years
> > > > > > > > > of
> > > > > > > > > > > > effort.
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > My only concern with a re-design is to be certain
> > > that
> > > > > > tests
> > > > > > > > are
> > > > > > > > > > > > > > arranged so that the prerequisites of later test
> > are
> > > > > tested
> > > > > > > > > first.
> > > > > > > > > > > If
> > > > > > > > > > > > > > tests are grouped by, for example, functional
> area,
> > > > then
> > > > > > > > failures
> > > > > > > > > > can
> > > > > > > > > > > > be
> > > > > > > > > > > > > > difficult to understand if there is a failure in
> an
> > > > > > > unverified
> > > > > > > > > test
> > > > > > > > > > > > > > prerequisite.
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > Some of the "tests" are bogus and only exist to
> > > provide
> > > > > > some
> > > > > > > > > > minimum
> > > > > > > > > > > > > > confidence that we have the functionality to run
> > the
> > > > > test.
> > > > > > > For
> > > > > > > > > > > > > > example:  Can I start tasks?  Can I pass
> > parameters?
> > > > Can
> > > > > I
> > > > > > > > > survive
> > > > > > > > > > a
> > > > > > > > > > > > > > context switch.  Some of the tests were intended
> > only
> > > > to
> > > > > > > > support
> > > > > > > > > > > debug.
> > > > > > > > > > > > > > Some were created only to track down specific
> bugs.
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > On 12/21/25 18:39, Matteo Golin wrote:
> > > > > > > > > > > > > > > LTS being the Long-Term-Stable release of
> NuttX?
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > I'm starting to think that it would be best to
> > > create
> > > > > new
> > > > > > > > suite
> > > > > > > > > > of
> > > > > > > > > > > > tests
> > > > > > > > > > > > > > > using Unity, using what's in OS Test as a basis
> > and
> > > > > then
> > > > > > > > > > expanding
> > > > > > > > > > > it
> > > > > > > > > > > > > > > further. Greg has pointed out that OS test is
> not
> > > > > > intended
> > > > > > > to
> > > > > > > > > be
> > > > > > > > > > a
> > > > > > > > > > > > > > complete
> > > > > > > > > > > > > > > test, so maybe a more solid testing framework
> > base
> > > > in a
> > > > > > new
> > > > > > > > > form
> > > > > > > > > > > > would be
> > > > > > > > > > > > > > > in order. At that point it would also be good
> to
> > > > > document
> > > > > > > and
> > > > > > > > > > > educate
> > > > > > > > > > > > > > users
> > > > > > > > > > > > > > > about other test options, since OS test is a
> > > current
> > > > > > > > favourite
> > > > > > > > > > for
> > > > > > > > > > > > > > showing
> > > > > > > > > > > > > > > PRs haven't broken anything. Maybe that's not
> the
> > > > best
> > > > > > > choice
> > > > > > > > > > > anymore
> > > > > > > > > > > > > > with
> > > > > > > > > > > > > > > this information.
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > I don't want to re-invent the wheel of what's
> > > already
> > > > > in
> > > > > > > > > > > `testsuite`,
> > > > > > > > > > > > > > but I
> > > > > > > > > > > > > > > think Unity might end up being lighter-weight
> in
> > > the
> > > > > long
> > > > > > > > run?
> > > > > > > > > > And
> > > > > > > > > > > > it is
> > > > > > > > > > > > > > > also not a Xiaomi owned/maintained framework so
> > it
> > > > may
> > > > > > > > receive
> > > > > > > > > > > better
> > > > > > > > > > > > > > > external support (i.e. more users rely on
> it?). I
> > > > tried
> > > > > > to
> > > > > > > > > > compile
> > > > > > > > > > > > the
> > > > > > > > > > > > > > > sim:citest configuration to run the testsuite
> > > example
> > > > > and
> > > > > > > see
> > > > > > > > > > what
> > > > > > > > > > > > it was
> > > > > > > > > > > > > > > like, but I was met with a long list of C++
> > > > compilation
> > > > > > > > errors
> > > > > > > > > > that
> > > > > > > > > > > > I'd
> > > > > > > > > > > > > > > rather not deal with. There also seems to be
> zero
> > > > docs
> > > > > > > about
> > > > > > > > it
> > > > > > > > > > or
> > > > > > > > > > > > cmocka
> > > > > > > > > > > > > > > in our NuttX docs at the moment.
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > What do you think? Start a Unity test suite,
> add
> > > some
> > > > > > > > switches
> > > > > > > > > to
> > > > > > > > > > > > choose
> > > > > > > > > > > > > > > which test cases get compiled into the binary,
> > open
> > > > for
> > > > > > > > > > extensions
> > > > > > > > > > > by
> > > > > > > > > > > > > > users
> > > > > > > > > > > > > > > who know more about different subsystems? This
> > way
> > > we
> > > > > can
> > > > > > > > keep
> > > > > > > > > OS
> > > > > > > > > > > > test
> > > > > > > > > > > > > > how
> > > > > > > > > > > > > > > it is for a quick, low-resource sanity check of
> > > > "board
> > > > > > > > bringup"
> > > > > > > > > > > while
> > > > > > > > > > > > > > > having a dedicated testing application for
> > patches?
> > > > > > Someone
> > > > > > > > > > > changing
> > > > > > > > > > > > file
> > > > > > > > > > > > > > > system stuff can just compile to include file
> > > system
> > > > > test
> > > > > > > > cases
> > > > > > > > > > and
> > > > > > > > > > > > run
> > > > > > > > > > > > > > > that suite only as proof that their PR works.
> The
> > > > > output
> > > > > > is
> > > > > > > > > > really
> > > > > > > > > > > > easy
> > > > > > > > > > > > > > to
> > > > > > > > > > > > > > > glance at to determine pass/fail results.
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > Anyways, here's my draft demonstrating how
> Unity
> > > > works
> > > > > > with
> > > > > > > > the
> > > > > > > > > > FPU
> > > > > > > > > > > > test
> > > > > > > > > > > > > > > suite from OS test:
> > > > > > > > > > https://github.com/apache/nuttx-apps/pull/3259
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > Matteo
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > On Sun, Dec 21, 2025 at 7:13 PM Tomek CEDRO <
> > > > > > > > [email protected]>
> > > > > > > > > > > > wrote:
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > >> On Mon, Dec 22, 2025 at 1:02 AM Gregory Nutt <
> > > > > > > > > > [email protected]
> > > > > > > > > > > >
> > > > > > > > > > > > > > wrote:
> > > > > > > > > > > > > > >>> (..)
> > > > > > > > > > > > > > >>> Starting with bits and pieces of something
> like
> > > the
> > > > > LTS
> > > > > > > > might
> > > > > > > > > > > make
> > > > > > > > > > > > more
> > > > > > > > > > > > > > >>> sense other than its licensing problems.
> Since
> > > it
> > > > > > would
> > > > > > > > > never
> > > > > > > > > > be
> > > > > > > > > > > > > > >>> included in a distributed binary, the
> licensing
> > > > > really
> > > > > > > > should
> > > > > > > > > > not
> > > > > > > > > > > > > > matter
> > > > > > > > > > > > > > >>> much in practice.
> > > > > > > > > > > > > > >> Unless its GPL and some company would like to
> > have
> > > > > their
> > > > > > > own
> > > > > > > > > > > > internal
> > > > > > > > > > > > > > >> bits and pieces.. luckily its MIT and the
> whole
> > > > thing
> > > > > is
> > > > > > > > > > > open-source
> > > > > > > > > > > > > > >> anyways :-)
> > > > > > > > > > > > > > >>
> > > > > > > > > > > > > > >> Yes we had many discussions about the LTS and
> > this
> > > > > could
> > > > > > > be
> > > > > > > > > > great
> > > > > > > > > > > > start!
> > > > > > > > > > > > > > >> :-)
> > > > > > > > > > > > > > >>
> > > > > > > > > > > > > > >> --
> > > > > > > > > > > > > > >> CeDeROM, SQ7MHZ, http://www.tomek.cedro.info
> > > > > > > > > > > > > > >>
> > > > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>

Reply via email to