Transport integration tests

Iceoryx2 services are real; tests run with --test-threads=1; each test scopes its own Node name.

Test Case: ChannelWriter → ChannelReader round-trip TEST_0120
status: open
verifies: REQ_0205, REQ_0223
links incoming: REQ_0205

End-to-end zero-copy round-trip through a real iceoryx2 service: writer.send(&value) followed by reader.try_recv() yields the same value. Verifies that Publisher::loan is used (no intermediate copies) by asserting on a header field set in-place.

Test Case: Sequence-number monotonicity TEST_0121
status: open
verifies: REQ_0202
links incoming: REQ_0202

Sending N envelopes through a single ChannelWriter and reading them on the corresponding ChannelReader asserts strictly increasing sequence_number values starting at zero.

Test Case: Timestamp populated at send TEST_0122
status: open
verifies: REQ_0203
links incoming: REQ_0203

Captures wall-clock time before and after writer.send; the received envelope’s timestamp_ns falls within the bracket.

Test Case: Correlation ID round-trip TEST_0123
status: open
verifies: REQ_0204
links incoming: REQ_0204

writer.send_with_correlation(&value, id) followed by reader.try_recv() yields a header whose correlation_id bytes equal id. Confirms the framework does not interpret the field — random bytes round-trip unchanged.

Test Case: Per-channel size — 4 KB, 64 KB, 1 MB TEST_0124
status: open
verifies: REQ_0201, BB_0010

Three round-trip tests with channels parameterised at distinct N (4 096, 65 536, 1 048 576). All three succeed; iceoryx2 services have non-overlapping pool sizes per channel.

Test Case: Payload-overflow rejection TEST_0125
status: open
verifies: REQ_0201

writer.send(&value) for a value whose encoded form exceeds the channel’s N returns ConnectorError::PayloadOverflow { actual, max } and emits no envelope on the wire.

Test Case: Service naming derived from descriptor TEST_0126
status: open
verifies: REQ_0206, BB_0011
links incoming: REQ_0206

Two ChannelDescriptor values with identical name produce identical iceoryx2 service names; differing name values produce different service names. Names follow the convention documented in ServiceFactory (sub-block o... (BB_0011).