[PATCH can-next v1 0/8] selftests: can: add J1939 socket and transport tests

From: Oleksij Rempel

Date: Wed Oct 14 2026 - 11:51:12 EST


net/can/j1939 has had no in-tree selftests. This series adds a kselftest
suite for the J1939 socket layer and the TP/ETP transport, run on vcan with
a CAN_RAW socket as an independent on-the-wire peer.

The whole suite runs on vcan under QEMU and passes. Two limits span the
series and are left for follow-up: the transport timers are checked only
with wide windows, not tight bounds, and the ETP abort/timeout edge cases
are not covered yet (the abort/timeout tests are TP only).

Oleksij Rempel (8):
selftests: can: add J1939 test helper header and library
selftests: can: add J1939 base functional tests
selftests: can: add J1939 socket option and metadata tests
selftests: can: add J1939 addressing and concurrency tests
selftests: can: add J1939 wire-format tests against CAN_RAW
selftests: can: add J1939 TP/ETP multi-frame tests against CAN_RAW
selftests: can: cover J1939 transport abort and timeout paths
selftests: can: check SO_J1939_PROMISC receive effect

tools/testing/selftests/net/can/.gitignore | 5 +
tools/testing/selftests/net/can/Makefile | 20 +-
tools/testing/selftests/net/can/config | 2 +
tools/testing/selftests/net/can/j1939_lib.sh | 74 ++
tools/testing/selftests/net/can/j1939_tests.h | 460 +++++++++++++
.../selftests/net/can/test_j1939_addr.c | 336 +++++++++
.../selftests/net/can/test_j1939_addr.sh | 5 +
.../selftests/net/can/test_j1939_base.c | 160 +++++
.../selftests/net/can/test_j1939_base.sh | 5 +
.../selftests/net/can/test_j1939_multi.c | 638 ++++++++++++++++++
.../selftests/net/can/test_j1939_multi.sh | 5 +
.../selftests/net/can/test_j1939_opts.c | 347 ++++++++++
.../selftests/net/can/test_j1939_opts.sh | 5 +
.../selftests/net/can/test_j1939_wire.c | 170 +++++
.../selftests/net/can/test_j1939_wire.sh | 5 +
15 files changed, 2235 insertions(+), 2 deletions(-)
create mode 100644 tools/testing/selftests/net/can/j1939_lib.sh
create mode 100644 tools/testing/selftests/net/can/j1939_tests.h
create mode 100644 tools/testing/selftests/net/can/test_j1939_addr.c
create mode 100755 tools/testing/selftests/net/can/test_j1939_addr.sh
create mode 100644 tools/testing/selftests/net/can/test_j1939_base.c
create mode 100755 tools/testing/selftests/net/can/test_j1939_base.sh
create mode 100644 tools/testing/selftests/net/can/test_j1939_multi.c
create mode 100755 tools/testing/selftests/net/can/test_j1939_multi.sh
create mode 100644 tools/testing/selftests/net/can/test_j1939_opts.c
create mode 100755 tools/testing/selftests/net/can/test_j1939_opts.sh
create mode 100644 tools/testing/selftests/net/can/test_j1939_wire.c
create mode 100755 tools/testing/selftests/net/can/test_j1939_wire.sh

--
2.47.3