Commit graph

455 commits

Author SHA1 Message Date
Marvin Ouma
83aafaf1ae tests: posix: xsi_realtime: move more tests into xsi_realtime
move tests with _POSIX_PRIORITY_SCHEDULING Option to
xsi_realtime testsuite

Signed-off-by: Marvin Ouma <pancakesdeath@protonmail.com>
2025-04-23 02:15:17 +02:00
Chris Friedt
9535a69af8 tests: posix: semaphores: ensure test is not skipped
Commit f7633a55aa moved the tests for the
POSIX_SEMAPHORES Option Group from the tests/posix/common testsuite to
its own dedicated testsuite.

However, there was a copy-paste error. Previously, tests would have been
run only once when dynamic threads were enabled, and then skipped when
dynamic threads were disabled, since that follows the posix programming
model better. However, dynamic threads were never actually enabled after
moving to the new testsuite. So all tests were effectively skipped.

Add the necessary options to prj.conf in order to ensure that there are
sufficient dynamic threads available to run the testsuite.

Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
2025-04-22 14:03:10 +02:00
Chris Friedt
a08240ba0d tests: posix: semaphores: coalesce string constants
Just a formatting change, in a separate commit.

Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
2025-04-22 14:03:10 +02:00
Chris Friedt
c2609155b3 tests: posix: semaphores: reduce execution time by 5s
There is no reason to use a 5s wait time in tests. This can add up quite
significantly across multiple platforms that execute in real-time under
qemu (or even just on real hardware).

Speedup observed with qemu_cortex_a53/qemu_cortex_a53/smp

Before:
```
START - test_named_semaphore
 PASS - test_named_semaphore in 5.688 seconds
```

After:
```
START - test_named_semaphore
 PASS - test_named_semaphore in 0.783 seconds
```

Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
2025-04-22 14:03:10 +02:00
Chris Friedt
89dd0ef1c1 tests: posix: rwlocks: ensure test is not skipped
Commit 7e8ee25479 moved the tests for the
POSIX_RW_LOCKS Option Group from the tests/posix/common testsuite to
its own dedicated testsuite.

However, there was a copy-paste error. Previously, tests would have been
run only once when dynamic threads were enabled, and then skipped when
dynamic threads were disabled, since that follows the posix programming
model better. However, dynamic threads were never actually enabled after
moving to the new testsuite. So all tests were effectively skipped.

Add the necessary options to prj.conf in order to ensure that there are
sufficient dynamic threads available to run the testsuite.

Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
2025-04-21 20:05:05 +02:00
Chris Friedt
788369493d tests: posix: timer: do not skip tests
I just happened to try to run this testsuite manually today and
noticed that it was being skipped due to a copy-paste error.

This test was migrated from tests/posix/common, where tests
were skipped for non-dynamic threads, since it would mostly
duplicate tests that had already been run.

However, while migrating, the condition to skip tests was
mistakenly left in when it should not have been.

Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
2025-04-16 08:04:36 +02:00
Chris Friedt
f5cf14cbb1 tests: posix: timers: provide at least 1 dynamic thread
timer_create() will error if there are no dynamic threads to
run the SIGEV_THREAD handler, causing the test to fail (where
it was previously expected to pass).

Ensure that there is at least 1 dynamic thread available to
the POSIX API.

Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
2025-04-16 08:04:36 +02:00
Chris Friedt
2ec7af3474 test: posix: c_lib_ext: reduce memory requirements for testsuite
Previously, these tests were part of tests/posix/common.
In an effort to tie feature tests to specific POSIX features
(Option Groups), these tests were moved to a separate suite in a
previous commit.

However, the memory requirements for the legacy
tests/posix/common testsuite were significantly higher while the
memory requirements for tests in tests/posix/c_lib_ext are
significantly lower.

Remove the minimum flash and ram requirements to run the test so
that it passes tests on the integration platform qemu_cortex_m0.

Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
2025-04-11 22:06:55 +02:00
Tom Hughes
424b255dd7 test: posix: timers: Fix unused function warning
Building with clang warns:

tests/posix/timers/src/clock.c:37:20: error: unused function 'tv_to_ts'
[-Werror,-Wunused-function]
static inline void tv_to_ts(const struct timeval *tv, struct timespec *ts)
                   ^
tests/posix/timers/src/clock.c:51:16: error: unused function 'tp_eq'
[-Werror,-Wunused-function]
_decl_op(bool, tp_eq, ==);     /* a == b */
               ^
tests/posix/timers/src/clock.c:52:16: error: unused function 'tp_lt'
[-Werror,-Wunused-function]
_decl_op(bool, tp_lt, &lt;);      /* a &lt; b */
               ^
tests/posix/timers/src/clock.c:53:16: error: unused function 'tp_gt'
[-Werror,-Wunused-function]
_decl_op(bool, tp_gt, &gt;);      /* a &gt; b */
               ^
tests/posix/timers/src/clock.c:54:16: error: unused function 'tp_le'
[-Werror,-Wunused-function]
_decl_op(bool, tp_le, &lt;=);     /* a &lt;= b */

tests/posix/timers/src/clock.c:59:20: error: unused function
'tp_diff_in_range_ns' [-Werror,-Wunused-function]
static inline bool tp_diff_in_range_ns(const struct timespec *a,
                   ^                   const struct timespec *b,

tests/posix/timers/src/clock.c:49:20: error: unused function
'tp_diff_in_range_ns' [-Werror,-Wunused-function]
static inline bool tp_diff_in_range_ns(const struct timespec *a,
                   ^                   const struct timespec *b,

Signed-off-by: Tom Hughes <tomhughes@chromium.org>
2025-03-24 07:53:10 +01:00
Chris Friedt
85aebac1c0 tests: posix: add one integration platform per suite
Add one integration platform per testsuite to reduce the number
of issues reported by the qa log level introduced in #86571.

Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
2025-03-12 02:28:23 +01:00
Jari Tervonen
3b1e60da90 lib: posix: Fix NULL pointer to strcmp in posix mqueue.
When a queue has been unlinked but not removed the name pointer is set to
NULL. The queue is still in the list when adding new queues and the name
pointer is passed to strcmp.

Signed-off-by: Jari Tervonen <jari.tervonen@nordicsemi.no>
2025-03-08 03:37:48 +01:00
Alberto Escolar Piedras
6c38bc8ec4 boards native_posix: Remove twister support
native_posix is being removed as it has reached its end of life in 4.2,
after being deprecated since 4.0.

Remove the twister support for native_posix[//64] and therefore all
references to them from the testcases and samples yamls, so twister
does not error out.

Signed-off-by: Alberto Escolar Piedras <alberto.escolar.piedras@nordicsemi.no>
2025-03-07 19:16:14 +01:00
Fabio Baltieri
2a4f374fa4 tests: posix: override qemu_x86_tiny by label
This changes the board override to track the nodelabel rather than the
absolute node path, which happened to have changed in 0edc89c63b
breaking the test.

Verified with:

west build -p -b qemu_x86_tiny/atom tests/posix/common -T \
portability.posix.common.userspace

Signed-off-by: Fabio Baltieri <fabiobaltieri@google.com>
2025-02-20 21:30:52 +01:00
Chris Friedt
784f5b5bbd test: posix: xsi_realtime: do not exclude intel_ish platforms
Previously, intel_ish platforms would fail to link due to
missing `arch_mem_map()` and `arch_mem_unmap()` symbols due
to nuances in the x86 architecture on those platforms.

A separate commit has made MMU a non-user-configurable option,
which removes the ambiguity in POSIX.

Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
2025-02-19 04:59:33 +01:00
Tom Hughes
01e412951b tests: posix: timers: Fix -Wsometimes-uninitialized warning
Building portability.posix.timers with clang warns:

tests/posix/timers/src/nanosleep.c:180:2: error: variable 'actual_ns' is
used uninitialized whenever switch default is taken
[-Werror,-Wsometimes-uninitialized]
        default:
        ^~~~~~~
tests/posix/timers/src/nanosleep.c:197:15: note: uninitialized use
occurs here
        zassert_true(actual_ns >= exp_ns, "actual: %llu expected: %llu",
                     ^~~~~~~~~                          actual_ns, exp_ns);
subsys/testsuite/ztest/include/zephyr/ztest_assert.h:275:41: note:
                                      ^~ expanded from macro 'zassert_true'
subsys/testsuite/ztest/include/zephyr/ztest_assert.h:194:14: note:
expanded from macro 'zassert'
        _zassert_va(cond, default_msg, COND_CODE_1(__VA_OPT__(1),
                    ^~~~               (__VA_ARGS__), (NULL)))
subsys/testsuite/ztest/include/zephyr/ztest_assert.h:191:16: note:
expanded from macro '_zassert_va'
        _zassert_base(cond, default_msg, msg, ##__VA_ARGS__)
                      ^~~~
subsys/testsuite/ztest/include/zephyr/ztest_assert.h:180:14: note:
expanded from macro '_zassert_base'
                        z_zassert(cond, _msg ? ("(" default_msg ")") :
                                  ^~~~   (default_msg), __FILE__,    \
tests/posix/timers/src/nanosleep.c:152:20: note: initialize the variable
'actual_ns' to silence this warning
        uint64_t actual_ns;
                          ^
                           = 0

Not really necessary since there is a zassert_unreachable(), but doesn't
hurt to initialize the variable.

Signed-off-by: Tom Hughes <tomhughes@chromium.org>
2025-02-07 02:23:35 +01:00
Tom Hughes
1a18f4bbb0 tests: posix: Re-enable -Wunused-value warning
Rather than disabling -Wunused-value for the entire file, explicitly
mark variables that are unused.

Signed-off-by: Tom Hughes <tomhughes@chromium.org>
2025-02-06 03:18:25 +01:00
Tom Hughes
916928a122 tests: posix: Annotate unused variables with __unused
Instead of disabling the -Wunused-variable warning for the entire file,
we can explicitly mark the variables that are unused with __unused.

Signed-off-by: Tom Hughes <tomhughes@chromium.org>
2025-02-06 03:18:02 +01:00
Tom Hughes
3bbe56060f tests: posix: headers: net: Re-enable warning
CI passes with the warning removed.

Signed-off-by: Tom Hughes <tomhughes@chromium.org>
2025-02-05 23:49:04 +01:00
Marvin Ouma
6b3750f73c tests: posix: common: separate xsi realtime passing to standalone test
posix.common contains testsuites that can be separated into smaller
groups of tests. This change moves mqueue into a singular
testsuite at tests/posix/message_passing app directory.

Signed-off-by: Marvin Ouma <pancakesdeath@protonmail.com>
2025-02-04 15:00:24 +01:00
Chris Friedt
c0e0fc5d7f tests: posix: fs: declare entry statically
qemu_x86/atom was failing tests/posix/fs in
test_fs_readdir_threadsafe for some reason and only for that
platform.

All other platforms pass the testsuite properly with the dirent
declared on the stack.

Declare the dirent object statically so that qemu_x86/atom will
pass test cases.

Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
2025-01-08 01:29:06 +01:00
Chris Friedt
fa841fe7bd posix: fs: declare _POSIX_C_SOURCE in a consistent way
Declare _POSIX_C_SOURCE in a consistent way for both the
posix/options library as well as the tests/posix/fs
testsuite.

Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
2025-01-08 01:29:06 +01:00
Marvin Ouma
6737f6b283 tests: posix: common: separate posix timer tests into a smaller testsuite
posix.common contains testsuites that can be separated into smaller
groups of tests. This change moves clock, sleep, nanosleep and timer
into a singular testsuite at tests/posix/timer app directory.

Signed-off-by: Marvin Ouma <pancakesdeath@protonmail.com>
2025-01-07 11:47:35 +01:00
Chris Friedt
bc5aff3582 posix: options: fs: separate file_system_r to its own file
Move the functionality of POSIX_FILE_SYSTEM_R to its own
compilation unit and remove the unnecessary dependency on
POSIX_FILE_SYSTEM.

Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
2025-01-02 09:18:57 +01:00
Chris Friedt
fc860e1010 tests: posix: fs: increase ztest stack size from 1k to 2k
The default stack size was causing qemu_arc/qemu_arc_em and
qemu_arc/qemu_arc_hs to fail when a dirent object was
stack-allocated.

Increase the default stack size to accomodate for additional
usage.

Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
2025-01-02 09:18:57 +01:00
Chris Friedt
e967120b9a tests: posix: fs: correct arguments to readdir_r()
Previously, a NULL pointer was passed as the second argument to
readdir_r(). This is incorrect. The passed pointer should be
to a valid, externally-allocated struct direct.

Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
2025-01-02 09:18:57 +01:00
Marvin Ouma
d27e4dc463 tests: posix: common: separate xsi_threads_ext into standalone test
posix.common contains testsuites that can be separated into smaller
groups of tests. This change moves tests in the xsi_threads_ext
option group into a singular testsuite tests/posix/xsi_threads_ext
app directory.

Signed-off-by: Marvin Ouma <pancakesdeath@protonmail.com>
2024-12-17 09:48:49 +01:00
Cla Galliard
b0baeee03e tests/posix: Add test for pthread_timed_join and pthread_try_join
Test for the non-standard but useful pthread_timed_join- and
pthread_try_join-functions.

Signed-off-by: Cla Galliard <clamattia@gmail.com>
2024-12-15 19:24:33 +01:00
Chris Friedt
6aa760a4d9 tests: posix: env: colocate with single_process option group
Move the previously singular env testsuite to be with the
other features that are part of the POSIX_SINGLE_PROCESS
Option Group.

Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
2024-12-09 03:55:02 +01:00
Jakub Michalski
191d38dee8 posix: define POLLPRI in posix/poll.h
Add the POLLPRI constant defined by POSIX and test for it.

Signed-off-by: Jakub Michalski <jmichalski@antmicro.com>
Signed-off-by: Maciej Sobkowski <msobkowski@antmicro.com>
2024-12-07 14:17:11 +01:00
Jakub Michalski
f4cb7e35ec posix: define nfds_t in posix/poll.h
Add the nfds_t type defined by POSIX and test for it.

Signed-off-by: Jakub Michalski <jmichalski@antmicro.com>
Signed-off-by: Maciej Sobkowski <msobkowski@antmicro.com>
2024-12-07 14:17:11 +01:00
Chris Friedt
55db0d84a8 tests: posix: threads_ext: remove stale comment
For a long time now, it's been possible to call
`pthread_attr_init()` and have it just to The Right Thing (TM)
without having to statically assign a stack.

Remove the stale comment and commented-out code.

Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
2024-12-07 14:16:34 +01:00
Chris Friedt
3f60489fae tests: benchmarks: move pthread_pressure to benchmarks/posix
The pthread_pressure test was not a typical test per se. It was
a benchmark in search of the proper home.

Let's move it to the correct place in the Zephyr tree, add a
doc, and provide some reporting.

Currently, k_threads out-perform pthreads by almost a factor of
2. The theoretical maximum performance of pthreads would be at
parity of k_threads, since pthreads are a wrapper around kernel
threads. It would be great to reduce the gap.

Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
2024-12-06 06:51:13 +01:00
Fabio Baltieri
98ecf25873 tests: threads_ext: move min_flash and min_ram parameters to test level
One of the tests is failing since it was split out in 1a633609a0
triggering an assertion:

ASSERTION FAIL [((((size_t)(16)) << 10) - (((uintptr_t) (&_end)) -
0x20000000)) >= 8192] @
WEST_TOPDIR/zephyr/lib/libc/newlib/libc-hooks.c:139

Fix it by making the min_flash and min_ram parameters up to overall
test level.

Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
Signed-off-by: Fabio Baltieri <fabiobaltieri@google.com>
2024-12-04 02:02:29 +01:00
Marvin Ouma
1a633609a0 tests: posix: common: separate posix threads_ext to standalone test
posix.common contains testsuites that can be separated into smaller
groups of tests. This change moves pthread_attr into a singular
testsuite at tests/posix/threads/ext app directory.

Signed-off-by: Marvin Ouma <pancakesdeath@protonmail.com>
2024-12-03 04:01:56 +01:00
Marvin Ouma
8faa486430 tests: posix: common: separate posix signal tests into a smaller testsuite
posix.common contains testsuites that can be separated into smaller
groups of tests. This change moves signal tests into a singular
testsuite at tests/posix/signals app directory.

Signed-off-by: Marvin Ouma <pancakesdeath@protonmail.com>
2024-11-29 05:42:17 +01:00
Marvin Ouma
69e8152fc1 tests: posix: common: separate posix spinlock tests into standalone test
posix.common contains testsuites that can be separated into smaller
groups of tests. This change moves spinlock into a singular
testsuite at tests/posix/spinlocks app directory.

Signed-off-by: Marvin Ouma <pancakesdeath@protonmail.com>
2024-11-27 22:52:56 -05:00
Ilya Tagunov
b3a943d2d5 Revert "tests: posix: common: userspace: temporarily disable qemu_arc_em"
This reverts commit f415724831.
This is fine, as the underlying issue is solved.

Signed-off-by: Ilya Tagunov <Ilya.Tagunov@synopsys.com>
2024-11-27 06:57:23 -05:00
Marvin Ouma
3977703ebb tests: posix: common: separate posix c_lib_ext to standalone test
posix.common contains testsuites that can be separated into smaller
groups of tests. This change moves fnmatch, getopt and getentropy
into a singular testsuite at tests/posix/c_lib_ext app directory.

Signed-off-by: Marvin Ouma <pancakesdeath@protonmail.com>
2024-11-27 08:16:35 +01:00
Chris Friedt
f415724831 tests: posix: common: userspace: temporarily disable qemu_arc_em
This build would fail in CI for reasons that are not obvious.

```
west twister -i -p qemu_arc/qemu_arc_em \
  -s tests/posix/common/portability.posix.common.userspace

scripts/build/gen_kobject_placeholders.py did not reserve \
  enough space for kobject rodata.
```

It's the only platform that fails this way.

Exclude it from this test temporarily until #82059 is fixed.

Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
2024-11-26 15:45:50 -05:00
Marvin Ouma
9211abcde6 tests: posix: common: separate posix xsi system logging to standalone test
posix.common contains testsuites that can be separated into smaller
groups of tests. This change moves syslog into a singular
testsuite at tests/posix/xsi_system_logging app directory.

Signed-off-by: Marvin Ouma <pancakesdeath@protonmail.com>
2024-11-26 08:45:43 +01:00
Jakub Michalski
43f917111b posix: add pthread specific data deallocation test
This commit adds test to assert that thread specific data is deallocated
on thread termination.

Signed-off-by: Jakub Michalski <jmichalski@antmicro.com>
2024-11-25 08:31:08 +01:00
Chris Friedt
2a1fa8e4c7 tests: posix: getopt: move filter to testcase.yml common area
Similar to #81766, move the filter to the common area.

Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
2024-11-25 01:02:50 +01:00
Chris Friedt
b0352db95c tests: posix: rwlocks: move filter to testcase.yml common area
Similar to #81766, move the filter to the common area.

Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
2024-11-25 01:02:50 +01:00
Chris Friedt
932e8708b1 tests: posix: single_process: correct typo and filter
What looks to be a copy-paste typo was not caught in
code review.

Change .rwlocks to nothing and move the filter to the
common area.

Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
2024-11-22 08:22:30 -05:00
Marvin Ouma
91749dfeb3 tests: posix: common: separate posix xsi streams to standalone test
posix.common contains testsuites that can be separated into smaller
groups of tests. This change moves stropts into a singular
testsuite at tests/posix/xsi_streams app directory.

Signed-off-by: Marvin Ouma <pancakesdeath@protonmail.com>
2024-11-20 15:58:26 -05:00
Daniel Leung
b889360b36 tests: posix/common: set CONFIG_MAX_THREAD_BYTES=3
Boards intel_adsp/ace30/ptl* needs more for thread objects.

Signed-off-by: Daniel Leung <daniel.leung@intel.com>
2024-11-18 13:18:22 -05:00
Chris Friedt
93a9a0966e tests: posix: common: mitigate warning for qemu_arc_em
Previously, twister would fail due to a warning being escalated to
an error because CONFIG_NET_TEST was set.

Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
2024-11-18 07:24:52 -05:00
Noemie Gillet
4355d07fcd test: posix: timer: fix format
change { 0 } to {0}

Signed-off-by: Noemie Gillet <ngillet@sequans.com>
2024-11-16 15:26:42 -05:00
Noemie Gillet
cbec9a342b test: posix: add test_one_shot__SIGEV_SIGNAL testcase
increase test coverage for newly added code

Signed-off-by: Noemie Gillet <ngillet@sequans.com>
2024-11-16 15:26:42 -05:00
Marvin Ouma
7e8ee25479 tests: posix: common: separate posix rwlocks tests into a standalone test
posix.common contains testsuites that can be separated into smaller
groups of tests. This change moves rwlocks into a singular
testsuite at tests/posix/rwlocks app directory.

Signed-off-by: Marvin Ouma <pancakesdeath@protonmail.com>
2024-11-16 14:56:16 -05:00