Skip to content

phase 20h: TX-direction SD wire-format conformance + CI gate#111

Draft
JustinKovacich wants to merge 1 commit into
feature/phase20g_vsomeip_docker_setupfrom
feature/phase20h_bidirectional_sd_conformance
Draft

phase 20h: TX-direction SD wire-format conformance + CI gate#111
JustinKovacich wants to merge 1 commit into
feature/phase20g_vsomeip_docker_setupfrom
feature/phase20h_bidirectional_sd_conformance

Conversation

@JustinKovacich
Copy link
Copy Markdown
Contributor

Adds two TX-direction tests covering simple-someip's SD emit path:

tx_announcement_loop_emits_wire_format_offer (no docker, CI-gated): drives Server::announcement_loop and captures the emitted bytes on a second multicast socket joined to the SD group. Asserts every field of the SOME/IP envelope (service/method/message-type/protocol+iface versions, return code), the SD flags (unicast set), the OfferService entry body (service+instance+major+minor+TTL>0), and the IPv4 endpoint option (interface, port, UDP). Catches silent regressions in the emit path without requiring vsomeip up.

vsomeip_sees_simple_someip_offer_service (full cross-impl, optional): keeps the existing docker-based subscriber test for cross-impl validation when run on a second host. Module docs now record the same-host caveat we hit: vsomeip's routing-host architecture binds both endpoints to 0.0.0.0:30490 with SO_REUSEPORT, and same-host multicast delivery between two such instances is non-deterministic (reproduced with vsomeip-offerer → vsomeip-subscriber on the same box). The docker test should be run on a second host sharing the multicast-capable network.

CI: new step in the test job flips MULTICAST on lo and runs the no-docker test with --ignored --exact so only that test runs (the docker-dependent ignored tests stay skipped).

Both vsomeip JSON configs aligned to multicast 239.255.0.255 to match simple-someip's hardcoded MULTICAST_IP. The subscriber.cpp / subscriber.json / entrypoint.sh role dispatcher round out the docker image so both offerer and subscriber roles ship in one container.

Follow-up: simple-someip's SD MULTICAST_IP is hardcoded to the Luminar-internal 239.255.0.255; making it configurable would let us run vsomeip with its spec-default 224.0.23.0 for stricter conformance.

Adds two TX-direction tests covering simple-someip's SD emit path:

`tx_announcement_loop_emits_wire_format_offer` (no docker, CI-gated):
drives Server::announcement_loop and captures the emitted bytes on a
second multicast socket joined to the SD group. Asserts every field
of the SOME/IP envelope (service/method/message-type/protocol+iface
versions, return code), the SD flags (unicast set), the OfferService
entry body (service+instance+major+minor+TTL>0), and the IPv4
endpoint option (interface, port, UDP). Catches silent regressions
in the emit path without requiring vsomeip up.

`vsomeip_sees_simple_someip_offer_service` (full cross-impl, optional):
keeps the existing docker-based subscriber test for cross-impl
validation when run on a second host. Module docs now record the
same-host caveat we hit: vsomeip's routing-host architecture binds
both endpoints to 0.0.0.0:30490 with SO_REUSEPORT, and same-host
multicast delivery between two such instances is non-deterministic
(reproduced with vsomeip-offerer → vsomeip-subscriber on the same
box). The docker test should be run on a second host sharing the
multicast-capable network.

CI: new step in the `test` job flips MULTICAST on `lo` and runs the
no-docker test with `--ignored --exact` so only that test runs (the
docker-dependent ignored tests stay skipped).

Both vsomeip JSON configs aligned to multicast 239.255.0.255 to
match simple-someip's hardcoded MULTICAST_IP. The subscriber.cpp /
subscriber.json / entrypoint.sh role dispatcher round out the docker
image so both offerer and subscriber roles ship in one container.

Follow-up: simple-someip's SD MULTICAST_IP is hardcoded to the
Luminar-internal 239.255.0.255; making it configurable would let us
run vsomeip with its spec-default 224.0.23.0 for stricter
conformance.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This was referenced Apr 30, 2026
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.

1 participant