Skip to content

Conversation

@vvcarvalho-csw
Copy link

No description provided.

jan-jensen and others added 30 commits December 29, 2025 15:36
Subtracting 1 makes no sense as std::string_view::size() does not include any
null-terminator byte, so we are effectivity truncating the last char in the message.
I can only guess that the current platforms all have an old version of DLT without
SIZED_CSTRING, since no one complained about this.
Ref: https://github.com/COVESA/dlt-daemon/blob/master/include/dlt/dlt_user_macros.h#L350
There is no meaningful use of is_closed() at all, and
cei_state_e::CLOSED was redundantly set
Remove redundant/pointless size checks
Rework/simplify logic
Add references where sensible
Add wrappers for service availability
Add a couple of availability tests
In this test, the client builds increasingly-large messages filled with
a specific byte, and the server then checks the message. It
unfortunately does so byte-by-byte, which is dogslow without compiler
optimizations
CI often takes > 700s in this particular test
While at it, remove nonsense sleeps, minor typo fixes
create_local_server does setup, and caller (rmc, rms) will anyhow
hold another mutex
Fix suspend_resume test
The test ran correctly, but the trace
'[TEST] STR simulation: exit' was not visible
in the log file. The only possible cause is
that the notification to terminate the
runner thread was not received. This
change repeats the notification until it
is acknowledged.
Preparatory step in refactoring routing manager states.
The routing_state_e is not really a state, but rather an
event that informs the routing manager of a lifecycle-related
event. The end goal is to correct this.
As a preliminary step, it will be removed from
routing_manager_client that currently ignores it.
Prior to this commit, there is only support to forward to DLTs, and
special handling for Android. Implement handling for generic logging
With DLTs, as before, messages appear as a trace
With Android/console/file logging, messages appear as a hex dump
While at it, enable tracing for all of the tests; it makes sense,
because this is also the configuration used in a real ECU
COVESA#726
It is deprecated, unused, and not worth the maintenance cost
Furthermore, it's even dangerous, as ICON_NAD was accidentally using the
compile option
vSomeIP assign client command comprehends the following fields:

Desired client id (if != 0xFFFF);
Application name size;
Application name;

If an application is called test, the sent size will be 4 (null character not included).
Currently, when parsing the assign_client command, the name is stripped of its last
character, this might lead to a possible race condition if two applications name differ
by the last character e.g., client1 and client2.
The -O is being appended to build options thus making vsomeipd and
libvsomeip (another commit and repository) force optimisation level
while projects/build systems should decide on these settings. Other
compiler settings should be checked but for now focus on optimisation
level directly.
Support current versions of cmake and boost
Change return type of get_sec_client.
The former signature was not thread-safe.
Granting any access to internal
memory, when the content of this memory could change
(set_sec_client_port), is not thread safe.
At the moment the memory is guarded by the higher order protocol
(a port is only set during the init phase) for which
reason this is not a practical problem at the moment.
But changing the port only during the "init" is at least a
theoretically problem, as the port is temporarily freed
on a reconnect and could be "stolen".
Add a common testing framework for VSOMEIP, including process management, interprocess synchronisation,
and scenario orchestration utilities.

Introduced a new common framework with reusable utilities:
Process management (process.hpp/cpp): Launch and control external processes for test orchestration.
Note that this deprecates the existing common/process_manager.hpp, which is retained for backwards compatibility.
Interprocess synchronisation (interprocess.hpp): Shared memory barriers and bounded channels
for multi-process test coordination.
Scenario runner (scenario.hpp): Define and synchronise ordered test steps across processes.
VSOMEIP app builder (vsomeip_app.hpp/cpp): Simplifies setup of test/service applications.
Policy helpers (policy.hpp/cpp): Utilities for loading and manipulating VSOMEIP security policies.
Test timer (test_timer.hpp): Minor improvements and namespace update.
Added documentation (README.md) explaining the framework, usage patterns, and example test cases.
Integrated a minimal cross-platform process library (TinyProcessLib) for process spawning.
Updated existing network and memory tests to use common::test_timer_t and improved lambda captures.
67c9443 introduced a superfluous semi colon.
Namely, an uninitialized variable caught by valgrind
Also a tiny compilation failure, while at it
Some of it slipped back in with 74c3b90
In most cases this is not necessary, as the receiver_->stop() will lead to a deletion.
But if a reconnect is attempted, during stop the receiver_ can be restarted.
To ensure that the socket_manager breaks the circle (as io_context would usually do),
also the acceptor handlers should be cleared on io_stop.
Cosmetic logs on unset payload
Log RM state on boot
Matching ON_OFFER and ON_STOP_OFFER
Extra logs on Stop Offer
Other cosmetic logs
Detect the timing of stop offers during STR
suspend_resume_test_client.cpp updated to detect when unavailability is detected and measure the time until
receiving the next availability to verify if the StopOffer was sent during suspend or resume. We cannot read the
messages directly in the test, but considering that the network is down for at least 2 seconds, if the time between
unavailable and available is less than 2 seconds, it can be considered that the StopOffer was sent during Resume
(all tests performed showed that whenever the StopOffer is sent during resume, the time between unavailable and
available is almost instantaneous, with the highest observed value being 300ms).
This change can be important to detect problems introduced in the suspend process in the future.
Note: With the current state of the suspend process, considering that sending StopOffers is asynchronous and we
don't have full control over the Suspend process, the test sporadically fails because in some STRs the server endpoints
end up being closed before the StopOffer is sent.
cc7247e forgot most of them.. bad regex!
No functional change, ANY_EVENT was wrongly provided for argument _remove

Fix argument _remove
Remove misleading comment dummy call
Sync delay resume with net changes
In the log, in the ticket, sd_route_set_ and if_state_running_
have been set to true but 2.7ms afterwards vsomeipd printed:
Network not running,. It could be the known issue with the
missing synchronization. Here we are doing a dirty fix.
Consistency accross all logging
There are no functional changes, pure logging.
For log consistency prefix rmi:: is used across
routing_manager_impl class.
Note: some logs remain untouched purposely has
some tests might be looking to exact messages
(e.g vSomeIP Security: (..))
This change fixes a memory leak in the initial_event_test_service
due to it improperly handling the kill signal from the test script.
It also addresses some minor code smells.
libvsomeip (without "3" suffix) is the compatibility lib, built only
with VSOMEIP_COMPAT_NAME - except in the Android build, where it was
built by default
Unfortunately that means a lot of Android HALs are linking against it by
default, so deploy a libvsomeip as a dummy lib to keep breakage minimal
Reset flags is_sending_ and was_not_connected on connect_cbk
Adds proper state flag reset during connection error recovery to ensure clean reconnection.
These flags ensure:

Clean state reset on connection failures
Proper queue resumption after reconnection
Synchronization between endpoint state and actual network connectivity
Current sequence:

client sends SUBSCRIBE
server receives SUBSCRIBE, accepts, sends SUB_ACK
server inserts subscription
client receives SUB_ACK (and somehow instructs server)
server sends notification

Because 3) and 4)+5) are independent events, they can happen in the
opposite order, exactly because the subscription insertion happens after
the SUBSCRIPTION_ACK is sent. A fake_socket test shows it
Fix the order, add an explicit (but unfortunately probablistic) test
ricardolleite and others added 2 commits December 30, 2025 08:32
It survived the purge in 98b3beb, somehow
misc: delete forgotten compat file
routing: ensure sub ack is sent after sub insert
Reset flags on connect_cbk
zuul: remove clang-tidy
build: keep libvsomeip for Android
Fix initial event tests
rmi: Consistency across logging
delayed-resume, sync with net change
service-discovery, fix parameter
tests: enable tracing for all tests
doc and fix memory_test
suspend_resume_test_initial - Detect StopOffers
Minor logging changes
Clear accept handlers on io_stop
misc: cleanup ANDROID+USE_DLT
tests: fix application_test_availability
remove superfluous semicolon
common utilities for network tests
Change return type of get_sec_client
Support recent versions (cmake, boost)
Remove hardcoded CXX FLAGS for optimisation level
Deserialize full name on assign_client command
misc: drop vsomeip2 compatibility
Change maintain 3.5 to 3.6 log
tracing: add support for forwarding to logs
restrict routing state to routing_manager_impl
ci-test failure suspend_resume_test_initial
emi: remove pointless mutex
tests: speedup huge_payload
tests: minor fake_socket test enhancements
rmi: small rework of on_message
endpoint: cleanup is_closed+cei_state_e::CLOSED
Fix logging of SIZED_CSTRING
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants