TC8 Conformance Traceability#
This document provides the single source of truth for tracing OPEN Alliance TC8 test cases from the external specification through the project’s internal requirements to the implementing test functions.
Source Document#
Title: OA Automotive Ethernet ECU Test Specification — Layers 3–7
Version: v3.0
Chapter: 5 — SOME/IP
Publisher: OPEN Alliance SIG
Note
OA Spec References use test case identifiers from Chapter 5 of the
OA Automotive Ethernet ECU Test Specification v3.0 (October 2019).
SOMEIPSRV_* IDs are from §5.1.5 (SOME/IP Server Tests) and
SOMEIP_ETS_* IDs are from §5.1.6 (Enhanced Testability Service Tests).
Full Traceability Matrix#
The following table links each OA TC8 specification test case to the
project’s internal test ID, component requirement, and implementing
Python test function(s). All requirement IDs use the
comp_req__tc8_conformance__ prefix (omitted for brevity).
Service Discovery#
OA Spec Reference (Ch. 5) |
Internal ID |
Requirement |
Test Function(s) |
|---|---|---|---|
§5.1.5.3 — SOMEIPSRV_SD_MESSAGE_08 |
TC8-SD-001 |
|
|
§5.1.5.1 — SOMEIPSRV_FORMAT_14–18 |
TC8-SD-002 |
|
|
§5.1.5.4 — SOMEIPSRV_SD_BEHAVIOR_02 |
TC8-SD-003 |
|
|
§5.1.6 — SOMEIP_ETS_171 |
TC8-SD-004 |
|
|
§5.1.5.4 — implied by SD_BEHAVIOR_03/04 |
TC8-SD-005 |
|
|
§5.1.5.3 — SOMEIPSRV_SD_MESSAGE_13 |
TC8-SD-006 |
|
|
§5.1.5.3 — SOMEIPSRV_SD_MESSAGE_14; §5.1.6 — SOMEIP_ETS_140 |
TC8-SD-007 |
|
|
§5.1.6 — SOMEIP_ETS_108, SOMEIP_ETS_092 |
TC8-SD-008 |
|
|
§5.1.5.4 — SOMEIPSRV_SD_BEHAVIOR_01 |
TC8-SD-009 |
|
|
§5.1.5.4 — SOMEIPSRV_SD_BEHAVIOR_01 |
TC8-SD-010 |
|
|
§5.1.5.2 — SOMEIPSRV_OPTIONS_01–07 |
TC8-SD-011 |
|
|
§5.1.5.1 — SOMEIPSRV_FORMAT_02, FORMAT_07 |
TC8-SD-012 |
|
test_sd_reboot::test_tc8_sd_012_reboot_flag_set_after_restarttest_sd_reboot::test_tc8_sd_012_session_id_resets_after_restart |
§5.1.5.2 — SOMEIPSRV_OPTIONS_08–14 |
TC8-SD-013 |
|
|
§5.1.6 — SOMEIP_ETS_095 |
TC8-SD-014 |
|
|
SOME/IP Message Format#
OA Spec Reference (Ch. 5) |
Internal ID |
Requirement |
Test Function(s) |
|---|---|---|---|
§5.1.5.6 — SOMEIPSRV_ONWIRE_05 |
TC8-MSG-001 |
|
|
§5.1.5.6 — SOMEIPSRV_ONWIRE_07 |
TC8-MSG-002 |
|
test_someip_message_format::test_tc8_msg_002_message_type_responsetest_someip_message_format::test_tc8_msg_002_no_response_for_request_no_return |
§5.1.5.6 — SOMEIPSRV_ONWIRE_10; §5.1.6 — SOMEIP_ETS_077 |
TC8-MSG-003 |
|
|
§5.1.5.6 — SOMEIPSRV_ONWIRE_12; §5.1.6 — SOMEIP_ETS_076 |
TC8-MSG-004 |
|
|
§5.1.5.6 — SOMEIPSRV_ONWIRE_03 |
TC8-MSG-005 |
|
|
§5.1.6 — SOMEIP_ETS_074 |
TC8-MSG-006 |
|
|
§5.1.6 — SOMEIP_ETS_054, 055, 058, 078 |
TC8-MSG-007 |
|
test_someip_message_format::test_tc8_msg_007_truncated_message_no_crashtest_someip_message_format::test_tc8_msg_007_wrong_protocol_version_no_crashtest_someip_message_format::test_tc8_msg_007_oversized_length_field_no_crash |
§5.1.5.6 — SOMEIPSRV_ONWIRE_03 |
TC8-MSG-008 |
|
|
Event Notification#
OA Spec Reference (Ch. 5) |
Internal ID |
Requirement |
Test Function(s) |
|---|---|---|---|
§5.1.5.5 — SOMEIPSRV_BASIC_03; §5.1.6 — SOMEIP_ETS_147 |
TC8-EVT-001 |
|
|
§5.1.5.5 — SOMEIPSRV_BASIC_03 |
TC8-EVT-002 |
|
|
§5.1.6 — SOMEIP_ETS_147 |
TC8-EVT-003 |
|
|
§5.1.6 — SOMEIP_ETS_147 (pre-subscribe) |
TC8-EVT-004 |
|
|
§5.1.6 — SOMEIP_ETS_150 |
TC8-EVT-005 |
|
|
§5.1.6 — SOMEIP_ETS_108 |
TC8-EVT-006 |
|
|
§5.1.5.7 — SOMEIPSRV_RPC_16 |
TC8-EVT-007 |
|
|
§5.1.5.7 — SOMEIPSRV_RPC_15 |
TC8-EVT-008 |
|
|
Field Conformance#
OA Spec Reference (Ch. 5) |
Internal ID |
Requirement |
Test Function(s) |
|---|---|---|---|
§5.1.6 — SOMEIP_ETS_121 |
TC8-FLD-001 |
|
|
§5.1.6 — SOMEIP_ETS_121 |
TC8-FLD-002 |
|
|
§5.1.5.7 — SOMEIPSRV_RPC_03; §5.1.6 — SOMEIP_ETS_166 |
TC8-FLD-003 |
|
|
§5.1.5.7 — SOMEIPSRV_RPC_11; §5.1.6 — SOMEIP_ETS_166 |
TC8-FLD-004 |
|
|
TCP Transport Binding#
OA Spec Reference (Ch. 5) |
Internal ID |
Requirement |
Test Function(s) |
|---|---|---|---|
§5.1.5.7 — SOMEIPSRV_RPC_01 |
TC8-TCP-001 |
|
|
§5.1.5.7 — SOMEIPSRV_RPC_01 |
TC8-TCP-002 |
|
|
§5.1.5.7 — SOMEIPSRV_RPC_01 |
TC8-TCP-003 |
|
|
§5.1.5.7 — SOMEIPSRV_RPC_02 |
TC8-TCP-004 |
|
|
§5.1.5.2 — SOMEIPSRV_OPTIONS_15 |
TC8-TCP-005 |
|
|
§5.1.5.7 — SOMEIPSRV_RPC_17 |
TC8-TCP-006 |
|
|
§5.1.5.7 — SOMEIPSRV_RPC_17 |
TC8-TCP-007 |
|
|
§5.1.5.7 — SOMEIPSRV_RPC_17 |
TC8-TCP-008 |
|
|
SOMEIP_ETS_068 |
TC8-TCP-009 |
|
|
Note
SOMEIPSRV_RPC_17 partial coverage: TC8-TCP-006, TC8-TCP-007, and TC8-TCP-008 verify TCP transport for field GET/SET and event notification operations using a single service instance; the full SOMEIPSRV_RPC_17 requirement (each service instance on a separate TCP connection) is not covered — multi-instance TCP is a known gap.
UDP Transport Binding#
OA Spec Reference (Ch. 5) |
Internal ID |
Requirement |
Test Function(s) |
|---|---|---|---|
SOMEIP_ETS_069 |
TC8-UDP-001 |
|
|
Multi-service and Multi-instance#
OA Spec Reference (Ch. 5) |
Internal ID |
Requirement |
Test Function(s) |
|---|---|---|---|
§5.1.5.7 — SOMEIPSRV_RPC_13 |
TC8-MULTI-001 |
|
|
§5.1.5.7 — SOMEIPSRV_RPC_14 |
TC8-MULTI-002 |
|
test_multi_service::TestMultiServiceInstanceRouting::test_rpc_14_service_a_advertises_configured_udp_porttest_multi_service::TestMultiServiceInstanceRouting::test_rpc_14_no_unexpected_service_ids_in_offers |
SD Format and Options Compliance#
OA Spec Reference (Ch. 5) |
Internal ID |
Requirement |
Test Function(s) |
|---|---|---|---|
§5.1.5.1 — SOMEIPSRV_FORMAT_01 |
TC8-SDF-001 |
|
|
§5.1.5.1 — SOMEIPSRV_FORMAT_02 |
TC8-SDF-002 |
|
|
§5.1.5.1 — SOMEIPSRV_FORMAT_04 |
TC8-SDF-003 |
|
|
§5.1.5.1 — SOMEIPSRV_FORMAT_05 |
TC8-SDF-004 |
|
|
§5.1.5.1 — SOMEIPSRV_FORMAT_06 |
TC8-SDF-005 |
|
|
§5.1.5.1 — SOMEIPSRV_FORMAT_09 |
TC8-SDF-006 |
|
|
§5.1.5.1 — SOMEIPSRV_FORMAT_10 |
TC8-SDF-007 |
|
|
§5.1.5.1 — SOMEIPSRV_FORMAT_11 |
TC8-SDF-008 |
|
|
§5.1.5.1 — SOMEIPSRV_FORMAT_12 |
TC8-SDF-009 |
|
|
§5.1.5.1 — SOMEIPSRV_FORMAT_13 |
TC8-SDF-010 |
|
|
§5.1.5.1 — SOMEIPSRV_FORMAT_15 |
TC8-SDF-011 |
|
|
§5.1.5.1 — SOMEIPSRV_FORMAT_16 |
TC8-SDF-012 |
|
|
§5.1.5.1 — SOMEIPSRV_FORMAT_18 |
TC8-SDF-013 |
|
|
§5.1.5.1 — SOMEIPSRV_FORMAT_19 |
TC8-SDF-014 |
|
|
§5.1.5.1 — SOMEIPSRV_FORMAT_20 |
TC8-SDF-015 |
|
|
§5.1.5.1 — SOMEIPSRV_FORMAT_21 |
TC8-SDF-016 |
|
|
§5.1.5.1 — SOMEIPSRV_FORMAT_23 |
TC8-SDF-017 |
|
|
§5.1.5.1 — SOMEIPSRV_FORMAT_24 |
TC8-SDF-018 |
|
|
§5.1.5.1 — SOMEIPSRV_FORMAT_25 |
TC8-SDF-019 |
|
|
§5.1.5.1 — SOMEIPSRV_FORMAT_26 |
TC8-SDF-020 |
|
|
§5.1.5.1 — SOMEIPSRV_FORMAT_27 |
TC8-SDF-021 |
|
|
§5.1.5.1 — SOMEIPSRV_FORMAT_28 |
TC8-SDF-022 |
|
|
§5.1.5.2 — SOMEIPSRV_OPTIONS_01 |
TC8-SDF-023 |
|
|
§5.1.5.2 — SOMEIPSRV_OPTIONS_02 |
TC8-SDF-024 |
|
|
§5.1.5.2 — SOMEIPSRV_OPTIONS_03 |
TC8-SDF-025 |
|
|
§5.1.5.2 — SOMEIPSRV_OPTIONS_05 |
TC8-SDF-026 |
|
|
§5.1.5.2 — SOMEIPSRV_OPTIONS_06 |
TC8-SDF-027 |
|
|
§5.1.5.2 — SOMEIPSRV_OPTIONS_08 |
TC8-SDF-028 |
|
|
§5.1.5.2 — SOMEIPSRV_OPTIONS_09 |
TC8-SDF-029 |
|
|
§5.1.5.2 — SOMEIPSRV_OPTIONS_10 |
TC8-SDF-030 |
|
|
§5.1.5.2 — SOMEIPSRV_OPTIONS_11 |
TC8-SDF-031 |
|
|
§5.1.5.2 — SOMEIPSRV_OPTIONS_12 |
TC8-SDF-032 |
|
|
§5.1.5.2 — SOMEIPSRV_OPTIONS_13 |
TC8-SDF-033 |
|
|
§5.1.5.2 — SOMEIPSRV_OPTIONS_14 |
TC8-SDF-034 |
|
|
§5.1.5.3 — SOMEIPSRV_SD_MESSAGE_12 |
TC8-SDF-035 |
|
|
§5.1.5.1 — SOMEIPSRV_FORMAT_03 |
TC8-SDF-036 |
|
|
§5.1.5.1 — SOMEIPSRV_FORMAT_08 |
TC8-SDF-037 |
|
|
§5.1.5.1 — SOMEIPSRV_FORMAT_14 |
TC8-SDF-038 |
|
|
§5.1.5.1 — SOMEIPSRV_FORMAT_17 |
TC8-SDF-039 |
|
|
§5.1.5.1 — SOMEIPSRV_FORMAT_22 |
TC8-SDF-040 |
|
|
Note
TC8-SDF-028 through TC8-SDF-034 (SOMEIPSRV_OPTIONS_08–14, multicast option
fields) require a non-loopback interface and are skipped on loopback with
@pytest.mark.network.
Note
TC8-SDF-037 naming: The test function is named
test_format_07_unicast_flag_set but verifies the Unicast Flag (bit 6)
of the SD Flags byte, which corresponds to SOMEIPSRV_FORMAT_08 in the OA
spec. SOMEIPSRV_FORMAT_07 (Reboot Flag) is a separate requirement covered
by TC8-SD-012.
SD Entry Semantics#
OA Spec Reference (Ch. 5) |
Internal ID |
Requirement |
Test Function(s) |
|---|---|---|---|
§5.1.5.3 — SOMEIPSRV_SD_MESSAGE_01 |
TC8-SDM-001 |
|
|
§5.1.5.3 — SOMEIPSRV_SD_MESSAGE_02 |
TC8-SDM-002 |
|
|
§5.1.5.3 — SOMEIPSRV_SD_MESSAGE_03 |
TC8-SDM-003 |
|
|
§5.1.5.3 — SOMEIPSRV_SD_MESSAGE_04 |
TC8-SDM-004 |
|
|
§5.1.5.3 — SOMEIPSRV_SD_MESSAGE_05 |
TC8-SDM-005 |
|
|
§5.1.5.3 — SOMEIPSRV_SD_MESSAGE_06 |
TC8-SDM-006 |
|
|
§5.1.5.3 — SOMEIPSRV_SD_MESSAGE_14 |
TC8-SDM-007 |
|
|
§5.1.5.3 — SOMEIPSRV_SD_MESSAGE_15 |
TC8-SDM-008 |
|
|
§5.1.5.3 — SOMEIPSRV_SD_MESSAGE_16 |
TC8-SDM-009 |
|
|
§5.1.5.3 — SOMEIPSRV_SD_MESSAGE_17 |
TC8-SDM-010 |
|
|
§5.1.5.3 — SOMEIPSRV_SD_MESSAGE_18 |
TC8-SDM-011 |
|
|
§5.1.5.3 — SOMEIPSRV_SD_MESSAGE_19 |
TC8-SDM-012 |
|
|
§5.1.5.4 — SOMEIPSRV_SD_BEHAVIOR_03 |
TC8-SDM-013 |
|
|
§5.1.5.4 — SOMEIPSRV_SD_BEHAVIOR_04 |
TC8-SDM-014 |
|
|
§5.1.5.3 — SOMEIPSRV_SD_MESSAGE_07 |
TC8-SDM-015 |
|
|
§5.1.5.3 — SOMEIPSRV_SD_MESSAGE_08 |
TC8-SDM-016 |
|
|
§5.1.5.3 — SOMEIPSRV_SD_MESSAGE_09 |
TC8-SDM-017 |
|
|
§5.1.5.3 — SOMEIPSRV_SD_MESSAGE_11 |
TC8-SDM-018 |
|
|
Note
SOMEIPSRV_SD_MESSAGE_08 dual coverage: TC8-SD-001 verifies that an
OfferService message is present on multicast at startup (behavioural
assertion). TC8-SDM-016 verifies the option_index_2 byte in the
serialised entry is zero — a distinct field-level assertion from the same
spec requirement.
Note
TC8-SDM-012 (SOMEIPSRV_SD_MESSAGE_19) is expected to FAIL against vsomeip 3.6.1: the stack sends a positive ACK instead of NAck for a SubscribeEventgroup with reserved bits set. See Known SOME/IP Stack Limitations.
SD Lifecycle Advanced#
OA Spec Reference (Ch. 5) |
Internal ID |
Requirement |
Test Function(s) |
|---|---|---|---|
§5.1.6 — SOMEIP_ETS_088 |
TC8-SDLC-001 |
|
|
§5.1.6 — SOMEIP_ETS_092 |
TC8-SDLC-002 |
|
|
§5.1.6 — SOMEIP_ETS_098 |
TC8-SDLC-003 |
|
|
§5.1.6 — SOMEIP_ETS_107 |
TC8-SDLC-004 |
|
|
§5.1.6 — SOMEIP_ETS_120 |
TC8-SDLC-005 |
|
|
§5.1.6 — SOMEIP_ETS_122 |
TC8-SDLC-006 |
|
|
§5.1.6 — SOMEIP_ETS_155 |
TC8-SDLC-007 |
|
|
§5.1.6 — SOMEIP_ETS_091 |
TC8-SDLC-008 |
|
|
§5.1.6 — SOMEIP_ETS_099 |
TC8-SDLC-009 |
|
|
§5.1.6 — SOMEIP_ETS_100 |
TC8-SDLC-010 |
|
|
§5.1.6 — SOMEIP_ETS_101 |
TC8-SDLC-011 |
|
|
§5.1.6 — SOMEIP_ETS_128 |
TC8-SDLC-012 |
|
|
§5.1.6 — SOMEIP_ETS_130 |
TC8-SDLC-013 |
|
|
§5.1.6 — SOMEIP_ETS_084 |
TC8-SDLC-014 |
|
|
§5.1.6 — SOMEIP_ETS_081 |
TC8-SDLC-015 |
|
|
§5.1.6 — SOMEIP_ETS_082 |
TC8-SDLC-016 |
|
|
§5.1.6 — SOMEIP_ETS_093 |
TC8-SDLC-017 |
|
|
§5.1.6 — SOMEIP_ETS_094 |
TC8-SDLC-018 |
|
|
§5.1.6 — SOMEIP_ETS_095 |
TC8-SDLC-019 |
|
|
§5.1.6 — SOMEIP_ETS_105 |
TC8-SDLC-020 |
|
|
§5.1.6 — SOMEIP_ETS_106 |
TC8-SDLC-021 |
|
|
§5.1.6 — SOMEIP_ETS_121 |
TC8-SDLC-022 |
|
|
§5.1.6 — SOMEIP_ETS_173 |
TC8-SDLC-023 |
|
|
§5.1.6 — SOMEIP_ETS_104 |
TC8-SDLC-024 |
|
|
§5.1.6 — SOMEIP_ETS_127 |
TC8-SDLC-025 |
|
|
Note
TC8-SDLC-011 (SOMEIP_ETS_101) is implemented as pytest.skip because
stopping the DUT’s own OfferService from an external tester requires a
dedicated reverse-direction SD client target; the current target does not
include that capability.
SD Robustness#
OA Spec Reference (Ch. 5) |
Internal ID |
Requirement |
Test Function(s) |
|---|---|---|---|
§5.1.6 — SOMEIP_ETS_111 |
TC8-SDROBUST-001 |
|
|
§5.1.6 — SOMEIP_ETS_112/113 |
TC8-SDROBUST-002 |
|
|
§5.1.6 — SOMEIP_ETS_114 |
TC8-SDROBUST-003 |
|
test_sd_robustness::TestSDMalformedEntries::test_ets_114_entries_length_zerotest_sd_robustness::TestSDMalformedEntries::test_ets_114_entries_length_mismatched |
§5.1.6 — SOMEIP_ETS_115 |
TC8-SDROBUST-004 |
|
|
§5.1.6 — SOMEIP_ETS_116 |
TC8-SDROBUST-005 |
|
|
§5.1.6 — SOMEIP_ETS_117 |
TC8-SDROBUST-006 |
|
|
§5.1.6 — SOMEIP_ETS_118 |
TC8-SDROBUST-007 |
|
|
§5.1.6 — SOMEIP_ETS_123/124 |
TC8-SDROBUST-008 |
|
|
§5.1.6 — SOMEIP_ETS_125 |
TC8-SDROBUST-009 |
|
|
§5.1.6 — SOMEIP_ETS_134 |
TC8-SDROBUST-010 |
|
|
§5.1.6 — SOMEIP_ETS_135 |
TC8-SDROBUST-011 |
|
|
§5.1.6 — SOMEIP_ETS_136 |
TC8-SDROBUST-012 |
|
|
§5.1.6 — SOMEIP_ETS_137 |
TC8-SDROBUST-013 |
|
|
§5.1.6 — SOMEIP_ETS_138 |
TC8-SDROBUST-014 |
|
|
§5.1.6 — SOMEIP_ETS_139 |
TC8-SDROBUST-015 |
|
|
§5.1.6 — SOMEIP_ETS_174 |
TC8-SDROBUST-016 |
|
|
§5.1.6 — SOMEIP_ETS_109 |
TC8-SDROBUST-017 |
|
|
§5.1.6 — SOMEIP_ETS_110 |
TC8-SDROBUST-018 |
|
|
§5.1.6 — SOMEIP_ETS_119 |
TC8-SDROBUST-019 |
|
|
§5.1.6 — SOMEIP_ETS_140 |
TC8-SDROBUST-020 |
|
|
§5.1.6 — SOMEIP_ETS_141 |
TC8-SDROBUST-021 |
|
|
§5.1.6 — SOMEIP_ETS_142 |
TC8-SDROBUST-022 |
|
|
§5.1.6 — SOMEIP_ETS_143 |
TC8-SDROBUST-023 |
|
|
§5.1.6 — SOMEIP_ETS_144 |
TC8-SDROBUST-024 |
|
|
§5.1.6 — SOMEIP_ETS_152 |
TC8-SDROBUST-025 |
|
test_sd_robustness::TestSDMessageFramingErrors::test_ets_152_high_session_id_0xfffetest_sd_robustness::TestSDMessageFramingErrors::test_ets_152_session_id_0xfffftest_sd_robustness::TestSDMessageFramingErrors::test_ets_152_session_id_one |
§5.1.6 — SOMEIP_ETS_153 |
TC8-SDROBUST-026 |
|
test_sd_robustness::TestSDMessageFramingErrors::test_ets_153_someip_length_too_smalltest_sd_robustness::TestSDMessageFramingErrors::test_ets_153_someip_length_too_large |
§5.1.6 — SOMEIP_ETS_178 |
TC8-SDROBUST-027 |
|
|
§5.1.6 — SOMEIP_ETS_058 |
TC8-SDROBUST-028 |
|
|
§5.1.6 — SOMEIP_ETS_113 |
TC8-SDROBUST-029 |
|
|
§5.1.6 — SOMEIP_ETS_124 |
TC8-SDROBUST-030 |
|
|
§5.1.6 — SOMEIP_ETS_154 |
TC8-SDROBUST-031 |
|
|
§5.1.6 — SOMEIP_ETS_162 |
TC8-SDROBUST-032 |
|
|
§5.1.6 — SOMEIP_ETS_163 |
TC8-SDROBUST-033 |
|
|
§5.1.6 — SOMEIP_ETS_175 |
TC8-SDROBUST-034 |
|
|
§5.1.6 — SOMEIP_ETS_176 |
TC8-SDROBUST-035 |
|
|
§5.1.6 — SOMEIP_ETS_177 |
TC8-SDROBUST-036 |
|
|
SOME/IP Message Protocol Compliance#
OA Spec Reference (Ch. 5) |
Internal ID |
Requirement |
Test Function(s) |
|---|---|---|---|
§5.1.5.5 — SOMEIPSRV_BASIC_01 |
TC8-MSG-009 |
|
|
§5.1.5.5 — SOMEIPSRV_BASIC_02 |
TC8-MSG-010 |
|
|
§5.1.5.5 — SOMEIPSRV_BASIC_03 |
TC8-MSG-011 |
|
|
§5.1.5.6 — SOMEIPSRV_ONWIRE_01 |
TC8-MSG-012 |
|
|
§5.1.5.6 — SOMEIPSRV_ONWIRE_02 |
TC8-MSG-013 |
|
|
§5.1.5.6 — SOMEIPSRV_ONWIRE_04 |
TC8-MSG-014 |
|
|
§5.1.5.6 — SOMEIPSRV_ONWIRE_06 |
TC8-MSG-015 |
|
|
§5.1.5.6 — SOMEIPSRV_ONWIRE_11 |
TC8-MSG-016 |
|
|
§5.1.5.7 — SOMEIPSRV_RPC_18 |
TC8-MSG-017 |
|
|
§5.1.5.7 — SOMEIPSRV_RPC_20 |
TC8-MSG-018 |
|
|
§5.1.5.7 — SOMEIPSRV_RPC_05 |
TC8-MSG-019 |
|
|
§5.1.5.7 — SOMEIPSRV_RPC_06 |
TC8-MSG-020 |
|
|
§5.1.5.7 — SOMEIPSRV_RPC_07 |
TC8-MSG-021 |
|
|
§5.1.5.7 — SOMEIPSRV_RPC_08 |
TC8-MSG-022 |
|
|
§5.1.5.7 — SOMEIPSRV_RPC_09 |
TC8-MSG-023 |
|
|
§5.1.5.7 — SOMEIPSRV_RPC_10 |
TC8-MSG-024 |
|
|
§5.1.6 — SOMEIP_ETS_004 |
TC8-MSG-025 |
|
|
§5.1.6 — SOMEIP_ETS_054 |
TC8-MSG-026 |
|
|
§5.1.6 — SOMEIP_ETS_059 |
TC8-MSG-027 |
|
|
§5.1.6 — SOMEIP_ETS_061 |
TC8-MSG-028 |
|
|
§5.1.6 — SOMEIP_ETS_075 |
TC8-MSG-029 |
|
|
§5.1.6 — SOMEIP_ETS_005 |
TC8-MSG-030 |
|
|
§5.1.6 — SOMEIP_ETS_058 |
TC8-MSG-031 |
|
|
§5.1.5.7 — SOMEIPSRV_RPC_19 |
TC8-MSG-032 |
|
|
Note
TC8-MSG-022 (SOMEIPSRV_RPC_08) is expected to FAIL against vsomeip 3.6.1: the stack replies to a REQUEST with non-zero return_code when the spec requires no reply. See Known SOME/IP Stack Limitations.
TC8-MSG-010 (SOMEIPSRV_BASIC_02) is expected to FAIL against vsomeip 3.6.1: the stack silently drops unknown-service requests rather than responding with E_UNKNOWN_SERVICE.
Coverage Summary#
All 189 internal TC8 test IDs are implemented and mapped to OA spec references. Some IDs are covered by multiple pytest functions (~215 total). Three tests are expected to fail against vsomeip 3.6.1 — see Known SOME/IP Stack Limitations.
For the full OA TC8 v3.0 Chapter 5 scope analysis (including blocked tests requiring the ETS application), see TC8 Specification Alignment Analysis below.
TC8 Specification Alignment Analysis#
This section maps the 230 test cases in Chapter 5 of the OPEN Alliance TC8 ECU Test Specification Layer 3-7 v3.0 (October 2019) to the current implementation status. It answers three questions for every TC8 group:
What is already tested and passing?
What can be tested today without any new software?
What requires new software before the tests can run?
For the full test case catalog see
tests/tc8_conformance/tc8_ecu_test_chapter5_someip_v3.0_oct2019.md.
The specification organizes Chapter 5 into two top-level groups:
SOME/IP Server Tests (
SOMEIPSRV_*, 93 items, Section 5.1.5) — wire-level protocol checks. Onlysomeipdand a raw socket are needed. No application code is required.Enhanced Testability Service Tests (
SOMEIP_ETS_*, 137 items, Section 5.1.6) — behavior tests that range from wire-level SD tests (needing onlysomeipd) to full-pipeline serialization tests that require a C++ test application.
Coverage at a Glance#
The table below shows the top-level status for all five TC8 test groups.
TC8 Group |
Total |
✅ Tested |
⚠ Can add |
Infrastructure needed |
|---|---|---|---|---|
SOMEIPSRV Protocol (§5.1.5) |
93 |
93 |
0 |
N/A — all wire-level tests complete |
ETS SD Protocol (§5.1.6 SD) |
74 |
60 |
0 |
14 tests blocked — ETS application required (ETS_089/096/097/103/146–151/164/166–168 require ETS C++ application) |
ETS Robustness (§5.1.6 robustness) |
14 |
14 |
0 |
N/A — all tests complete |
ETS Serialization / Echo (§5.1.6 echo) |
44 |
0 |
0 |
ETS application + gatewayd — see ETS Application Gap |
ETS Client / Control (§5.1.6 client) |
5 |
3 |
0 |
2 of 5 require ETS control methods — see ETS Application Gap |
Key points:
The first three groups (181 specification items total) need only
someipdand the existing pytest framework. 167 of these items have passing tests; 14 ETS SD items remain blocked pending the ETS C++ application (see ETS Application Gap).The last two groups (49 tests total) are blocked. They cannot be written until a C++ ETS test application is implemented. See ETS Application Gap for what is needed.
SOME/IP Server Tests Coverage#
These 93 tests check the SOME/IP wire protocol at the byte level. The DUT is
someipd in standalone mode. Each test sends a raw UDP or TCP packet and
checks the DUT’s response. No C++ application code or gatewayd is needed.
The table below uses these status labels:
Complete — every specification item in this category has a passing test.
All 93 SOMEIPSRV specification items have passing tests across the seven subsections (SD Message Format, SD Options, SD Message Entries, SD Communication Behavior, Basic Service Identifiers, On-Wire Format, Remote Procedure Call).
ETS Tests Coverage#
The ETS test cases split into two tracks based on what infrastructure they need.
Track A — Wire-level tests (88 items, pytest)
These tests check the SOME/IP wire protocol directly. They use someipd
in standalone mode and send raw packets — exactly the same setup as the
SOMEIPSRV tests above. All wire-level ETS tests are now implemented; 14
tests in the ETS SD Protocol group remain blocked pending the ETS C++
application.
ETS SD Protocol (74 items)
This group covers Service Discovery at the wire level: FindService, SubscribeEventgroup with various option types, NAck conditions, session ID behavior, TTL expiry, reboot detection, and multicast/unicast interactions.
Status: 60 of 74 implemented (14 blocked — require ETS application).
All wire-level ETS SD tests that can run without the ETS C++ application are now implemented. The 60 implemented tests cover session ID behavior, FindService responses, subscribe edge cases, malformed SD entries and options, TTL expiry, reboot detection, and multicast/unicast interactions.
ETS SD Protocol — Blocked Tests (14 items, require ETS application)
The following 14 ETS SD test cases cannot be implemented without the ETS C++ application:
SOMEIP_ETS_089—suspendInterfacecontrol method requiredSOMEIP_ETS_096— TCP connection prerequisite for subscription (needs ETS app for TCP server)SOMEIP_ETS_097— TCP reconnection recovery (needs ETS app for TCP server)SOMEIP_ETS_103—SD_ClientServiceGetLastValueOfEventTCP(TCP event delivery, needs ETS app)SOMEIP_ETS_146—resetInterfacecontrol method requiredSOMEIP_ETS_147–151—triggerEvent*methods required (event push triggers)SOMEIP_ETS_164—suspendInterfacecontrol method requiredSOMEIP_ETS_166–168—TestField*methods required (field read/write via ETS app)
These are tracked in ETS Application Gap and will be unblocked when the ETS C++ application is implemented.
ETS Robustness (14 items)
These tests send wrong protocol versions, wrong message types, wrong IDs, truncated messages, oversized messages, and unaligned packets.
Status: 14 of 14 implemented.
Track B — Tests requiring an ETS application (49 items)
These tests cannot run yet because they require a C++ test application that does not exist. The tests cannot be written until that application is built. This is the only infrastructure gap for ETS tests.
What is the ETS application?
It is a small C++ program (a score::mw::com Skeleton) that implements
the TC8 service interface defined in Section 5.1.4 of the specification.
The planned location is tests/tc8_conformance/application/ (the
directory structure and README are already in place, but no code exists yet).
It must expose:
Echo methods — receive a value and return it unchanged (
echoUINT8,echoUINT8Array,echoUTF8DYNAMIC,echoUNION, and ~40 others). These let the tester verify that the full pipeline (mw::com Skeleton → gatewayd → someipd → network) serializes every SOME/IP data type correctly.Event triggers — fire an event on demand (
triggerEventUINT8,triggerEventUINT8Reliable, etc.)Field accessors — getter, setter, and notifier for TC8 test fields
Control methods —
resetInterface,suspendInterface,clientServiceActivate/clientServiceDeactivate
ETS Serialization / Echo (44 items) SOMEIP_ETS_001–053, 063–073
The tester sends an echo request with a specific data value. The DUT must
return the same value through the full pipeline. This validates the
Payload Transformation component inside gatewayd.
Status: 0 of 44 implemented. These tests cannot be written until both the ETS application and the Payload Transformation component in gatewayd exist and are working correctly.
Data types covered by echo tests: UINT8, INT8, INT64, FLOAT64, arrays (static and dynamic, 1D and 2D), strings (UTF-8 and UTF-16, fixed and dynamic length), unions, enums, bitfields, E2E-protected messages, and common data type combinations.
ETS Client / Control (5 items)
Three of these (SOMEIP_ETS_081/082/084) are already implemented in
test_sd_client.py because they only need wire-level SD messages. The
remaining two (SOMEIP_ETS_089/164) use resetInterface and
suspendInterface control methods, which require the ETS application.
Status: 3 of 5 implemented; 2 blocked on ETS application.
Known SOME/IP Stack Limitations#
The following table records the known limitations of vsomeip 3.6.1 against the OA TC8 v3.0 specification. This table must be reviewed and updated whenever the SOME/IP stack version changes.
Each test listed here is decorated with @pytest.mark.xfail(strict=True)
so that CI passes despite the known non-conformance. strict=True ensures
that if the limitation is fixed in a future stack version, the unexpected pass
(XPASS) will cause CI to fail, prompting removal of the marker.
OA Spec Reference |
Specification Requirement |
vsomeip 3.6.1 Actual Behaviour |
Test Result |
|---|---|---|---|
§5.1.5.3 — SOMEIPSRV_SD_MESSAGE_19 |
SubscribeEventgroup with reserved bits set in the entry MUST be responded to with a NAck (SubscribeEventgroupAck with TTL = 0). |
Sends a positive SubscribeEventgroupAck (TTL > 0) regardless of reserved bits. |
XFAIL —
|
§5.1.5.5 — SOMEIPSRV_BASIC_03 |
When the DUT receives a message with method_id bit 15 = 1 (event notification ID), it MUST NOT send a RESPONSE (message_type 0x80). |
Sends a RESPONSE (message_type 0x80) for event-ID messages even though the spec prohibits it. |
XFAIL —
|
§5.1.5.7 — SOMEIPSRV_RPC_08 |
The DUT MUST NOT send a reply to a REQUEST message that already carries a non-zero return code. |
Processes the REQUEST normally and sends a RESPONSE, ignoring the return code field. |
XFAIL —
|