tests: posix: common: separate posix semaphores tests into standalone test
posix.common contains testsuites that can be separated into smaller groups of tests. This change moves semaphore into a singular testsuite at tests/posix/semaphores app directory. Signed-off-by: Marvin Ouma <pancakesdeath@protonmail.com>
This commit is contained in:
parent
ed5ce47437
commit
f7633a55aa
5 changed files with 61 additions and 10 deletions
9
tests/posix/semaphores/CMakeLists.txt
Normal file
9
tests/posix/semaphores/CMakeLists.txt
Normal file
|
@ -0,0 +1,9 @@
|
|||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
cmake_minimum_required(VERSION 3.20.0)
|
||||
find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})
|
||||
project(posix_semaphores)
|
||||
|
||||
target_sources(app PRIVATE src/main.c)
|
||||
|
||||
target_compile_options(app PRIVATE -U_POSIX_C_SOURCE -D_POSIX_C_SOURCE=200809L)
|
11
tests/posix/semaphores/Kconfig
Normal file
11
tests/posix/semaphores/Kconfig
Normal file
|
@ -0,0 +1,11 @@
|
|||
# Copyright (c) 2023, Meta
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
config TEST_SEM_N_LOOPS
|
||||
int "Number of loops in semaphore test"
|
||||
range 16 1024
|
||||
default 32
|
||||
help
|
||||
This option is specific to semaphore.test_named_semaphore in semaphore.c
|
||||
|
||||
source "Kconfig.zephyr"
|
5
tests/posix/semaphores/prj.conf
Normal file
5
tests/posix/semaphores/prj.conf
Normal file
|
@ -0,0 +1,5 @@
|
|||
CONFIG_POSIX_API=y
|
||||
CONFIG_ZTEST=y
|
||||
|
||||
CONFIG_POSIX_AEP_CHOICE_BASE=y
|
||||
CONFIG_POSIX_SEMAPHORES=y
|
|
@ -49,8 +49,7 @@ static void semaphore_test(sem_t *sem)
|
|||
ret = pthread_create(&thread1, NULL, child_func, sem);
|
||||
zassert_equal(ret, 0, "Thread creation failed");
|
||||
|
||||
zassert_equal(clock_gettime(CLOCK_REALTIME, &abstime), 0,
|
||||
"clock_gettime failed");
|
||||
zassert_equal(clock_gettime(CLOCK_REALTIME, &abstime), 0, "clock_gettime failed");
|
||||
|
||||
abstime.tv_sec += 5;
|
||||
|
||||
|
@ -72,15 +71,15 @@ static void semaphore_test(sem_t *sem)
|
|||
zassert_equal(sem_getvalue(sem, &val), 0);
|
||||
zassert_equal(val, 1);
|
||||
|
||||
zassert_equal(sem_destroy(sem), -1, "acquired semaphore"
|
||||
zassert_equal(sem_destroy(sem), -1,
|
||||
"acquired semaphore"
|
||||
" is destroyed");
|
||||
zassert_equal(errno, EBUSY);
|
||||
|
||||
/* TESTPOINT: take semaphore which is initialized with 1 */
|
||||
zassert_equal(sem_trywait(sem), 0);
|
||||
|
||||
zassert_equal(pthread_create(&thread2, NULL, child_func, sem), 0,
|
||||
"Thread creation failed");
|
||||
zassert_equal(pthread_create(&thread2, NULL, child_func, sem), 0, "Thread creation failed");
|
||||
|
||||
/* TESTPOINT: Wait and acquire semaphore till thread2 gives */
|
||||
zassert_equal(sem_wait(sem), 0, "sem_wait failed");
|
||||
|
@ -90,17 +89,19 @@ static void semaphore_test(sem_t *sem)
|
|||
zassert_ok(pthread_join(thread2, NULL));
|
||||
}
|
||||
|
||||
ZTEST(semaphore, test_semaphore)
|
||||
ZTEST(posix_semaphores, test_semaphore)
|
||||
{
|
||||
sem_t sema;
|
||||
|
||||
/* TESTPOINT: Call sem_post with invalid kobject */
|
||||
zassert_equal(sem_post(NULL), -1, "sem_post of"
|
||||
zassert_equal(sem_post(NULL), -1,
|
||||
"sem_post of"
|
||||
" invalid semaphore object didn't fail");
|
||||
zassert_equal(errno, EINVAL);
|
||||
|
||||
/* TESTPOINT: sem_destroy with invalid kobject */
|
||||
zassert_equal(sem_destroy(NULL), -1, "invalid"
|
||||
zassert_equal(sem_destroy(NULL), -1,
|
||||
"invalid"
|
||||
" semaphore is destroyed");
|
||||
zassert_equal(errno, EINVAL);
|
||||
|
||||
|
@ -141,7 +142,7 @@ static void *nsem_close_func(void *p)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
ZTEST(semaphore, test_named_semaphore)
|
||||
ZTEST(posix_semaphores, test_named_semaphore)
|
||||
{
|
||||
pthread_t thread1, thread2;
|
||||
sem_t *sem1, *sem2, *different_sem1;
|
||||
|
@ -321,4 +322,4 @@ static void before(void *arg)
|
|||
}
|
||||
}
|
||||
|
||||
ZTEST_SUITE(semaphore, NULL, NULL, before, NULL, NULL);
|
||||
ZTEST_SUITE(posix_semaphores, NULL, NULL, before, NULL, NULL);
|
25
tests/posix/semaphores/testcase.yaml
Normal file
25
tests/posix/semaphores/testcase.yaml
Normal file
|
@ -0,0 +1,25 @@
|
|||
common:
|
||||
filter: not CONFIG_NATIVE_LIBC
|
||||
tags:
|
||||
- posix
|
||||
- semaphores
|
||||
# 1 tier0 platform per supported architecture
|
||||
platform_key:
|
||||
- arch
|
||||
- simulation
|
||||
min_flash: 64
|
||||
min_ram: 32
|
||||
tests:
|
||||
portability.posix.semaphores: {}
|
||||
portability.posix.semaphores.minimal:
|
||||
extra_configs:
|
||||
- CONFIG_MINIMAL_LIBC=y
|
||||
portability.posix.semaphores.newlib:
|
||||
filter: TOOLCHAIN_HAS_NEWLIB == 1
|
||||
extra_configs:
|
||||
- CONFIG_NEWLIB_LIBC=y
|
||||
portability.posix.semaphores.picolibc:
|
||||
tags: picolibc
|
||||
filter: CONFIG_PICOLIBC_SUPPORTED
|
||||
extra_configs:
|
||||
- CONFIG_PICOLIBC=y
|
Loading…
Add table
Add a link
Reference in a new issue