From 03596feda18dfbd4fe7dfd4edda9d4ea21d040db Mon Sep 17 00:00:00 2001 From: Bjarki Arge Andreasen Date: Thu, 30 May 2024 21:49:19 +0200 Subject: [PATCH] tests: subsys: modem: add test suite for pipelink Add test suite for pipelink module Signed-off-by: Bjarki Arge Andreasen --- .../modem/modem_pipelink/CMakeLists.txt | 8 ++ tests/subsys/modem/modem_pipelink/app.overlay | 4 + tests/subsys/modem/modem_pipelink/prj.conf | 7 ++ tests/subsys/modem/modem_pipelink/src/main.c | 99 +++++++++++++++++++ .../modem/modem_pipelink/src/pipelink.c | 13 +++ .../subsys/modem/modem_pipelink/testcase.yaml | 7 ++ 6 files changed, 138 insertions(+) create mode 100644 tests/subsys/modem/modem_pipelink/CMakeLists.txt create mode 100644 tests/subsys/modem/modem_pipelink/app.overlay create mode 100644 tests/subsys/modem/modem_pipelink/prj.conf create mode 100644 tests/subsys/modem/modem_pipelink/src/main.c create mode 100644 tests/subsys/modem/modem_pipelink/src/pipelink.c create mode 100644 tests/subsys/modem/modem_pipelink/testcase.yaml diff --git a/tests/subsys/modem/modem_pipelink/CMakeLists.txt b/tests/subsys/modem/modem_pipelink/CMakeLists.txt new file mode 100644 index 00000000000..b5947dcdf20 --- /dev/null +++ b/tests/subsys/modem/modem_pipelink/CMakeLists.txt @@ -0,0 +1,8 @@ +# Copyright (c) 2024 Trackunit Corporation +# SPDX-License-Identifier: Apache-2.0 + +cmake_minimum_required(VERSION 3.20.0) +find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE}) +project(modem_pipelink_test) + +target_sources(app PRIVATE src/main.c src/pipelink.c) diff --git a/tests/subsys/modem/modem_pipelink/app.overlay b/tests/subsys/modem/modem_pipelink/app.overlay new file mode 100644 index 00000000000..5c8de457404 --- /dev/null +++ b/tests/subsys/modem/modem_pipelink/app.overlay @@ -0,0 +1,4 @@ +/ { + test_node: test_node { + }; +}; diff --git a/tests/subsys/modem/modem_pipelink/prj.conf b/tests/subsys/modem/modem_pipelink/prj.conf new file mode 100644 index 00000000000..2859d327bcd --- /dev/null +++ b/tests/subsys/modem/modem_pipelink/prj.conf @@ -0,0 +1,7 @@ +# Copyright (c) 2024 Trackunit Corporation +# SPDX-License-Identifier: Apache-2.0 + +CONFIG_MODEM_MODULES=y +CONFIG_MODEM_PIPE=y +CONFIG_MODEM_PIPELINK=y +CONFIG_ZTEST=y diff --git a/tests/subsys/modem/modem_pipelink/src/main.c b/tests/subsys/modem/modem_pipelink/src/main.c new file mode 100644 index 00000000000..cc12a461248 --- /dev/null +++ b/tests/subsys/modem/modem_pipelink/src/main.c @@ -0,0 +1,99 @@ +/* + * Copyright (c) 2024 Trackunit Corporation + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include +#include +#include +#include + +#define TEST_NODE DT_NODELABEL(test_node) +#define TEST_PIPELINK_NAME test_pipelink_0 + +#define TEST_EVENTS_CONNECTED_BIT 0 +#define TEST_EVENTS_DISCONNECTED_BIT 1 + +MODEM_PIPELINK_DT_DECLARE(TEST_NODE, TEST_PIPELINK_NAME); + +static struct modem_pipelink *test_pipelink = + MODEM_PIPELINK_DT_GET(TEST_NODE, TEST_PIPELINK_NAME); + +static struct modem_pipe test_pipe; +static atomic_t events; +static uint32_t test_user_data; + +static void test_pipelink_callback(struct modem_pipelink *link, + enum modem_pipelink_event event, + void *user_data) +{ + zassert_equal(test_pipelink, link); + zassert_equal((void *)(&test_user_data), user_data); + + switch (event) { + case MODEM_PIPELINK_EVENT_CONNECTED: + atomic_set_bit(&events, TEST_EVENTS_CONNECTED_BIT); + break; + + case MODEM_PIPELINK_EVENT_DISCONNECTED: + atomic_set_bit(&events, TEST_EVENTS_DISCONNECTED_BIT); + break; + + default: + zassert(0, "invalid event"); + break; + } +} + +static void test_reset_events(void) +{ + atomic_set(&events, 0); +} + +static void *test_setup(void) +{ + modem_pipelink_init(test_pipelink, &test_pipe); + test_reset_events(); + return NULL; +} + +static void test_before(void *f) +{ + ARG_UNUSED(f); + + modem_pipelink_notify_disconnected(test_pipelink); + modem_pipelink_release(test_pipelink); + test_reset_events(); +} + +ZTEST(modem_pipelink, test_connect_not_attached) +{ + zassert_false(modem_pipelink_is_connected(test_pipelink)); + modem_pipelink_notify_connected(test_pipelink); + zassert_true(modem_pipelink_is_connected(test_pipelink)); + modem_pipelink_notify_disconnected(test_pipelink); + zassert_false(modem_pipelink_is_connected(test_pipelink)); +} + +ZTEST(modem_pipelink, test_connect_attached) +{ + modem_pipelink_attach(test_pipelink, test_pipelink_callback, &test_user_data); + modem_pipelink_notify_connected(test_pipelink); + zassert_true(atomic_test_bit(&events, TEST_EVENTS_CONNECTED_BIT)); + zassert_false(atomic_test_bit(&events, TEST_EVENTS_DISCONNECTED_BIT)); + test_reset_events(); + modem_pipelink_notify_connected(test_pipelink); + zassert_false(atomic_test_bit(&events, TEST_EVENTS_CONNECTED_BIT)); + zassert_false(atomic_test_bit(&events, TEST_EVENTS_DISCONNECTED_BIT)); + modem_pipelink_notify_disconnected(test_pipelink); + zassert_false(atomic_test_bit(&events, TEST_EVENTS_CONNECTED_BIT)); + zassert_true(atomic_test_bit(&events, TEST_EVENTS_DISCONNECTED_BIT)); + test_reset_events(); + modem_pipelink_notify_disconnected(test_pipelink); + zassert_false(atomic_test_bit(&events, TEST_EVENTS_CONNECTED_BIT)); + zassert_false(atomic_test_bit(&events, TEST_EVENTS_DISCONNECTED_BIT)); +} + +ZTEST_SUITE(modem_pipelink, NULL, test_setup, test_before, NULL, NULL); diff --git a/tests/subsys/modem/modem_pipelink/src/pipelink.c b/tests/subsys/modem/modem_pipelink/src/pipelink.c new file mode 100644 index 00000000000..912df8aceb7 --- /dev/null +++ b/tests/subsys/modem/modem_pipelink/src/pipelink.c @@ -0,0 +1,13 @@ +/* + * Copyright (c) 2024 Trackunit Corporation + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include + +#define TEST_NODE DT_NODELABEL(test_node) +#define TEST_PIPELINK_NAME test_pipelink_0 + +/* Define pipelink in separate source file to test MODEM_PIPELINK_DT_DECLARE() */ +MODEM_PIPELINK_DT_DEFINE(TEST_NODE, TEST_PIPELINK_NAME); diff --git a/tests/subsys/modem/modem_pipelink/testcase.yaml b/tests/subsys/modem/modem_pipelink/testcase.yaml new file mode 100644 index 00000000000..52a58437b0a --- /dev/null +++ b/tests/subsys/modem/modem_pipelink/testcase.yaml @@ -0,0 +1,7 @@ +# Copyright (c) 2024 Trackunit Corporation +# SPDX-License-Identifier: Apache-2.0 + +tests: + modem.modem_pipelink: + tags: modem_pipelink + harness: ztest