Skip to content

Commit e810cd4

Browse files
nordic-seglnordic-piks
authored andcommitted
tests: drivers: can: Add test for CAN stats init
CAN stats shall be initialized during driver initialization. Add test which confirms that CAN stats are zeroed before any start/stop operation. Signed-off-by: Sebastian Głąb <[email protected]>
1 parent 2da9a08 commit e810cd4

File tree

6 files changed

+85
-0
lines changed

6 files changed

+85
-0
lines changed

CODEOWNERS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -855,6 +855,7 @@
855855
/tests/bluetooth/tester/ @carlescufi @nrfconnect/ncs-paladin
856856
/tests/crypto/ @magnev
857857
/tests/drivers/audio/ @nrfconnect/ncs-low-level-test
858+
/tests/drivers/can/ @nrfconnect/ncs-low-level-test
858859
/tests/drivers/flash/flash_rpc/ @nrfconnect/ncs-eris
859860
/tests/drivers/flash_patch/ @nrfconnect/ncs-eris
860861
/tests/drivers/fprotect/ @nrfconnect/ncs-eris

scripts/ci/tags.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1865,3 +1865,7 @@ ci_tests_subsys_rtt:
18651865
ci_tests_subsys_swo:
18661866
files:
18671867
- nrf/tests/subsys/swo/
1868+
1869+
ci_tests_drivers_can:
1870+
files:
1871+
- zephyr/drivers/can/
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#
2+
# Copyright (c) 2025 Nordic Semiconductor ASA
3+
#
4+
# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
5+
#
6+
7+
cmake_minimum_required(VERSION 3.20.0)
8+
9+
find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})
10+
project(can_stats_init)
11+
12+
FILE(GLOB app_sources src/*.c)
13+
target_sources(app PRIVATE ${app_sources})
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
CONFIG_CAN=y
2+
CONFIG_STATS=y
3+
CONFIG_CAN_STATS=y
4+
CONFIG_ZTEST=y
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
/*
2+
* Copyright (c) 2025 Nordic Semiconductor ASA
3+
*
4+
* SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
5+
*/
6+
7+
#include <zephyr/device.h>
8+
#include <zephyr/drivers/can.h>
9+
#include <zephyr/kernel.h>
10+
11+
#include <zephyr/ztest.h>
12+
13+
#define EXPECTED 0
14+
15+
static const struct device *const can_dev = DEVICE_DT_GET(DT_CHOSEN(zephyr_canbus));
16+
17+
/* Test that CAN statistics are cleared during driver initialization.
18+
*
19+
* Since CAN start/stop will clear CAN stats, it's crucial this test
20+
* is executed immediately after CAN driver initialization.
21+
*/
22+
ZTEST_USER(can_stats_init, test_can_stats_cleared_during_driver_init)
23+
{
24+
uint32_t val;
25+
26+
val = can_stats_get_bit_errors(can_dev);
27+
zassert_true(val == EXPECTED, "CAN bit errors are too high (%u)", val);
28+
val = can_stats_get_bit0_errors(can_dev);
29+
zassert_true(val == EXPECTED, "CAN bit0 errors are too high (%u)", val);
30+
val = can_stats_get_bit1_errors(can_dev);
31+
zassert_true(val == EXPECTED, "CAN bit1 errors are too high (%u)", val);
32+
val = can_stats_get_stuff_errors(can_dev);
33+
zassert_true(val == EXPECTED, "CAN stuff errors are too high (%u)", val);
34+
val = can_stats_get_crc_errors(can_dev);
35+
zassert_true(val == EXPECTED, "CAN crc errors are too high (%u)", val);
36+
val = can_stats_get_form_errors(can_dev);
37+
zassert_true(val == EXPECTED, "CAN form errors are too high (%u)", val);
38+
val = can_stats_get_ack_errors(can_dev);
39+
zassert_true(val == EXPECTED, "CAN ack errors are too high (%u)", val);
40+
val = can_stats_get_rx_overruns(can_dev);
41+
zassert_true(val == EXPECTED, "CAN rx overruns are too high (%u)", val);
42+
}
43+
44+
void *suite_setup(void)
45+
{
46+
zassert_true(device_is_ready(can_dev), "CAN device not ready");
47+
48+
return NULL;
49+
}
50+
51+
ZTEST_SUITE(can_stats_init, NULL, suite_setup, NULL, NULL, NULL);
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
common:
2+
tags:
3+
- drivers
4+
- can
5+
- ci_tests_drivers_can
6+
platform_allow:
7+
- nrf54h20dk/nrf54h20/cpuapp
8+
integration_platforms:
9+
- nrf54h20dk/nrf54h20/cpuapp
10+
11+
tests:
12+
drivers.can.can_stats_init: {}

0 commit comments

Comments
 (0)