Verification

This section documents the test cases and their traceability to requirements. It is automatically generated from the source code.

Test Case: hierarchical_parent_drops_routing_across_multiple_peers TEST_AggregationClassification_hierarchical_parent_drops_routing_across_multiple_peers
status: verified
verifies: REQ_INTEROP_003

multi_ecu_aggregation demo case: primary + 2 peers all declare “robot” as parent; each peer brings its own ECU-leaf child. “robot” stays local, each ECU-leaf routes to the peer that contributed it.

Implementation: src/ros2_medkit_gateway/test/test_aggregation_classification.cpp#L119 (Test: hierarchical_parent_drops_routing_across_multiple_peers)

Test Case: hierarchical_parent_drops_routing_when_local_subcomponents_exist TEST_AggregationClassification_hierarchical_parent_drops_routing_when_local_subcomponents_exist
status: verified
verifies: REQ_INTEROP_003

Primary declares “robot” as parent of its local “perception-ecu”. Peer also declares “robot” (collision). Because “perception-ecu” in the merged set references “robot” as parent, “robot” is a hierarchical parent -> removed from routing table (served locally with merged view).

Implementation: src/ros2_medkit_gateway/test/test_aggregation_classification.cpp#L76 (Test: hierarchical_parent_drops_routing_when_local_subcomponents_exist)

Test Case: hierarchical_parent_drops_routing_when_remote_subcomponents_exist TEST_AggregationClassification_hierarchical_parent_drops_routing_when_remote_subcomponents_exist
status: verified
verifies: REQ_INTEROP_003

Primary has only “robot” (no local children). Peer brings both “robot” (collision) and “planning-ecu” with parent_component_id=robot. After merge, “planning-ecu” in the set references “robot” -> still hierarchical parent -> no routing entry.

Implementation: src/ros2_medkit_gateway/test/test_aggregation_classification.cpp#L96 (Test: hierarchical_parent_drops_routing_when_remote_subcomponents_exist)

Test Case: leaf_collision_across_multiple_peers_emits_warning TEST_AggregationClassification_leaf_collision_across_multiple_peers_emits_warning
status: verified
verifies: REQ_INTEROP_003

Two peers both claim the same leaf ECU “ecu-shared” (deployment anomaly - two peers exposing the same physical ECU). Routing uses last-writer; a structured warning lists all colliding peers.

Implementation: src/ros2_medkit_gateway/test/test_aggregation_classification.cpp#L176 (Test: leaf_collision_across_multiple_peers_emits_warning)

Test Case: leaf_collision_keeps_routing_to_peer TEST_AggregationClassification_leaf_collision_keeps_routing_to_peer
status: verified
verifies: REQ_INTEROP_003

Two peers each with an ECU-level leaf “ecu-x” that collides with primary’s local one. No Component references “ecu-x” as its parent -> leaf -> stays in routing table (peer authoritative for runtime state).

Implementation: src/ros2_medkit_gateway/test/test_aggregation_classification.cpp#L53 (Test: leaf_collision_keeps_routing_to_peer)

Test Case: leaf_collision_routing_respects_input_order TEST_AggregationClassification_leaf_collision_routing_respects_input_order
status: verified
verifies: REQ_INTEROP_003

Flipped input: peer_b last -> routing must resolve to peer_b. Guards against regressions that sort peer_claims before classification and thus break the documented last-writer-wins contract.

Implementation: src/ros2_medkit_gateway/test/test_aggregation_classification.cpp#L205 (Test: leaf_collision_routing_respects_input_order)

Test Case: parent_references_nonexistent_component_falls_back_to_leaf TEST_AggregationClassification_parent_references_nonexistent_component_falls_back_to_leaf
status: verified
verifies: REQ_INTEROP_003

Peer declares a Component whose parent_component_id points at an ID not present anywhere in the merged set. Prior behaviour silently excluded the ghost ID from routing while leaving the child as a routed leaf; that caused a dangling parent pointer in the serialised child response and no operator signal. The classifier now ignores the ghost edge and records a diagnostic so the misconfiguration surfaces via RCLCPP_WARN.

Implementation: src/ros2_medkit_gateway/test/test_aggregation_classification.cpp#L230 (Test: parent_references_nonexistent_component_falls_back_to_leaf)

Test Case: self_parent_is_ignored_and_warned TEST_AggregationClassification_self_parent_is_ignored_and_warned
status: verified
verifies: REQ_INTEROP_003

A Component declaring itself as parent would otherwise be excluded from the routing table AND never render children (it has none), effectively disappearing into the local merged cache. Treat it as a leaf and warn.

Implementation: src/ros2_medkit_gateway/test/test_aggregation_classification.cpp#L255 (Test: self_parent_is_ignored_and_warned)

Test Case: subcomponents_of_hierarchical_parent_still_route_to_peer TEST_AggregationClassification_subcomponents_of_hierarchical_parent_still_route_to_peer
status: verified
verifies: REQ_INTEROP_003

Confirms that removing routing for a hierarchical parent does NOT cascade to its sub-components - those remain peer-owned leaves.

Implementation: src/ros2_medkit_gateway/test/test_aggregation_classification.cpp#L153 (Test: subcomponents_of_hierarchical_parent_still_route_to_peer)

Test Case: two_way_parent_cycle_falls_back_to_leaves_with_warning TEST_AggregationClassification_two_way_parent_cycle_falls_back_to_leaves_with_warning
status: verified
verifies: REQ_INTEROP_003

A<->B cycle: prior behaviour marked both A and B as hierarchical parents of each other, excluded both from the routing table, then served empty local stubs instead of forwarding to the owning peer. The classifier now detects the cycle, drops both edges, and emits a single diagnostic listing the cycle members.

Implementation: src/ros2_medkit_gateway/test/test_aggregation_classification.cpp#L276 (Test: two_way_parent_cycle_falls_back_to_leaves_with_warning)

Test Case: fan_out_returns_partial_when_peers_unreachable TEST_AggregationManager_fan_out_returns_partial_when_peers_unreachable
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_gateway/test/test_aggregation_manager.cpp#L247 (Test: fan_out_returns_partial_when_peers_unreachable)

Test Case: forward_returns_502_for_unknown_peer TEST_AggregationManager_forward_returns_502_for_unknown_peer
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_gateway/test/test_aggregation_manager.cpp#L279 (Test: forward_returns_502_for_unknown_peer)

Test Case: forward_strips_peer_prefix_from_path TEST_AggregationManager_forward_strips_peer_prefix_from_path
status: verified
verifies: REQ_INTEROP_003

This tests the path rewriting logic: when a collision-renamed entity (e.g., peer_0__camera_driver) is forwarded to the peer, the peer prefix must be stripped so the peer receives the original entity ID.

Implementation: src/ros2_medkit_gateway/test/test_aggregation_manager.cpp#L522 (Test: forward_strips_peer_prefix_from_path)

Test Case: routing_table_update_and_find TEST_AggregationManager_routing_table_update_and_find
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_gateway/test/test_aggregation_manager.cpp#L349 (Test: routing_table_update_and_find)

Test Case: ToJson_ContainsRequiredFields TEST_AppModelTest_ToJson_ContainsRequiredFields
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_gateway/test/test_discovery_models.cpp#L211 (Test: ToJson_ContainsRequiredFields)

Test Case: ToJson_ContainsRequiredFields TEST_AreaModelTest_ToJson_ContainsRequiredFields
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_gateway/test/test_discovery_models.cpp#L60 (Test: ToJson_ContainsRequiredFields)

Test Case: AuthorizeErrorBodyFollowsOAuth2Format TEST_AuthHandlersAuthorizeTest_AuthorizeErrorBodyFollowsOAuth2Format
status: verified
verifies: REQ_INTEROP_086

Verify that error responses follow RFC 6749 OAuth2 error format

Implementation: src/ros2_medkit_gateway/test/test_auth_handlers.cpp#L182 (Test: AuthorizeErrorBodyFollowsOAuth2Format)

Test Case: ReturnsBadRequestForEmptyClientId TEST_AuthHandlersAuthorizeTest_ReturnsBadRequestForEmptyClientId
status: verified
verifies: REQ_INTEROP_086

Implementation: src/ros2_medkit_gateway/test/test_auth_handlers.cpp#L140 (Test: ReturnsBadRequestForEmptyClientId)

Test Case: ReturnsBadRequestForEmptyClientSecret TEST_AuthHandlersAuthorizeTest_ReturnsBadRequestForEmptyClientSecret
status: verified
verifies: REQ_INTEROP_086

Implementation: src/ros2_medkit_gateway/test/test_auth_handlers.cpp#L168 (Test: ReturnsBadRequestForEmptyClientSecret)

Test Case: ReturnsBadRequestForMissingClientId TEST_AuthHandlersAuthorizeTest_ReturnsBadRequestForMissingClientId
status: verified
verifies: REQ_INTEROP_086

Implementation: src/ros2_medkit_gateway/test/test_auth_handlers.cpp#L126 (Test: ReturnsBadRequestForMissingClientId)

Test Case: ReturnsBadRequestForMissingClientSecret TEST_AuthHandlersAuthorizeTest_ReturnsBadRequestForMissingClientSecret
status: verified
verifies: REQ_INTEROP_086

Implementation: src/ros2_medkit_gateway/test/test_auth_handlers.cpp#L154 (Test: ReturnsBadRequestForMissingClientSecret)

Test Case: ReturnsBadRequestForWrongGrantType TEST_AuthHandlersAuthorizeTest_ReturnsBadRequestForWrongGrantType
status: verified
verifies: REQ_INTEROP_086

Implementation: src/ros2_medkit_gateway/test/test_auth_handlers.cpp#L112 (Test: ReturnsBadRequestForWrongGrantType)

Test Case: AuthorizeErrorBodyContainsErrorCode TEST_AuthHandlersDisabledTest_AuthorizeErrorBodyContainsErrorCode
status: verified
verifies: REQ_INTEROP_086

Implementation: src/ros2_medkit_gateway/test/test_auth_handlers.cpp#L70 (Test: AuthorizeErrorBodyContainsErrorCode)

Test Case: AuthorizeReturns404WhenAuthDisabled TEST_AuthHandlersDisabledTest_AuthorizeReturns404WhenAuthDisabled
status: verified
verifies: REQ_INTEROP_086

Implementation: src/ros2_medkit_gateway/test/test_auth_handlers.cpp#L62 (Test: AuthorizeReturns404WhenAuthDisabled)

Test Case: RevokeReturns404WhenAuthDisabled TEST_AuthHandlersDisabledTest_RevokeReturns404WhenAuthDisabled
status: verified
verifies: REQ_INTEROP_086

Implementation: src/ros2_medkit_gateway/test/test_auth_handlers.cpp#L88 (Test: RevokeReturns404WhenAuthDisabled)

Test Case: TokenReturns404WhenAuthDisabled TEST_AuthHandlersDisabledTest_TokenReturns404WhenAuthDisabled
status: verified
verifies: REQ_INTEROP_087

Implementation: src/ros2_medkit_gateway/test/test_auth_handlers.cpp#L80 (Test: TokenReturns404WhenAuthDisabled)

Test Case: ReturnsBadRequestForInvalidJson TEST_AuthHandlersRevokeTest_ReturnsBadRequestForInvalidJson
status: verified
verifies: REQ_INTEROP_086

Implementation: src/ros2_medkit_gateway/test/test_auth_handlers.cpp#L269 (Test: ReturnsBadRequestForInvalidJson)

Test Case: ReturnsBadRequestForMissingTokenField TEST_AuthHandlersRevokeTest_ReturnsBadRequestForMissingTokenField
status: verified
verifies: REQ_INTEROP_086

Implementation: src/ros2_medkit_gateway/test/test_auth_handlers.cpp#L284 (Test: ReturnsBadRequestForMissingTokenField)

Test Case: ReturnsBadRequestForNonStringToken TEST_AuthHandlersRevokeTest_ReturnsBadRequestForNonStringToken
status: verified
verifies: REQ_INTEROP_086

Implementation: src/ros2_medkit_gateway/test/test_auth_handlers.cpp#L298 (Test: ReturnsBadRequestForNonStringToken)

Test Case: ReturnsBadRequestForEmptyRefreshToken TEST_AuthHandlersTokenTest_ReturnsBadRequestForEmptyRefreshToken
status: verified
verifies: REQ_INTEROP_087

Implementation: src/ros2_medkit_gateway/test/test_auth_handlers.cpp#L240 (Test: ReturnsBadRequestForEmptyRefreshToken)

Test Case: ReturnsBadRequestForMissingRefreshToken TEST_AuthHandlersTokenTest_ReturnsBadRequestForMissingRefreshToken
status: verified
verifies: REQ_INTEROP_087

Implementation: src/ros2_medkit_gateway/test/test_auth_handlers.cpp#L226 (Test: ReturnsBadRequestForMissingRefreshToken)

Test Case: ReturnsBadRequestForWrongGrantType TEST_AuthHandlersTokenTest_ReturnsBadRequestForWrongGrantType
status: verified
verifies: REQ_INTEROP_087

Implementation: src/ros2_medkit_gateway/test/test_auth_handlers.cpp#L212 (Test: ReturnsBadRequestForWrongGrantType)

Test Case: AuthorizeReturnsTokensForValidCredentials TEST_AuthHandlersWithManagerTest_AuthorizeReturnsTokensForValidCredentials
status: verified
verifies: REQ_INTEROP_086

Implementation: src/ros2_medkit_gateway/test/test_auth_handlers.cpp#L349 (Test: AuthorizeReturnsTokensForValidCredentials)

Test Case: AuthorizeReturnsUnauthorizedForInvalidCredentials TEST_AuthHandlersWithManagerTest_AuthorizeReturnsUnauthorizedForInvalidCredentials
status: verified
verifies: REQ_INTEROP_086

Implementation: src/ros2_medkit_gateway/test/test_auth_handlers.cpp#L361 (Test: AuthorizeReturnsUnauthorizedForInvalidCredentials)

Test Case: RevokeRevokesRefreshTokenForSubsequentTokenRequest TEST_AuthHandlersWithManagerTest_RevokeRevokesRefreshTokenForSubsequentTokenRequest
status: verified
verifies: REQ_INTEROP_086

Implementation: src/ros2_medkit_gateway/test/test_auth_handlers.cpp#L401 (Test: RevokeRevokesRefreshTokenForSubsequentTokenRequest)

Test Case: TokenReturnsNewAccessTokenForValidRefreshToken TEST_AuthHandlersWithManagerTest_TokenReturnsNewAccessTokenForValidRefreshToken
status: verified
verifies: REQ_INTEROP_087

Implementation: src/ros2_medkit_gateway/test/test_auth_handlers.cpp#L373 (Test: TokenReturnsNewAccessTokenForValidRefreshToken)

Test Case: TokenReturnsUnauthorizedForInvalidRefreshToken TEST_AuthHandlersWithManagerTest_TokenReturnsUnauthorizedForInvalidRefreshToken
status: verified
verifies: REQ_INTEROP_087

Implementation: src/ros2_medkit_gateway/test/test_auth_handlers.cpp#L390 (Test: TokenReturnsUnauthorizedForInvalidRefreshToken)

Test Case: RS256WithMissingPrivateKeyThrows TEST_AuthManagerRS256Test_RS256WithMissingPrivateKeyThrows
status: verified
verifies: REQ_INTEROP_087

Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L470 (Test: RS256WithMissingPrivateKeyThrows)

Test Case: AuthenticateValidCredentials TEST_AuthManagerTest_AuthenticateValidCredentials
status: verified
verifies: REQ_INTEROP_086

Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L167 (Test: AuthenticateValidCredentials)

Test Case: AuthorizeViewerCanRead TEST_AuthManagerTest_AuthorizeViewerCanRead
status: verified
verifies: REQ_INTEROP_086

Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L340 (Test: AuthorizeViewerCanRead)

Test Case: DisabledClientTokenBecomesInvalid TEST_AuthManagerTest_DisabledClientTokenBecomesInvalid
status: verified
verifies: REQ_INTEROP_087

Authenticate first

Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L516 (Test: DisabledClientTokenBecomesInvalid)

Test Case: RefreshAccessToken TEST_AuthManagerTest_RefreshAccessToken
status: verified
verifies: REQ_INTEROP_087

Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L277 (Test: RefreshAccessToken)

Test Case: RefreshRevocationPropagatestoAccessToken TEST_AuthManagerTest_RefreshRevocationPropagatestoAccessToken
status: verified
verifies: REQ_INTEROP_087

Get tokens

Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L320 (Test: RefreshRevocationPropagatestoAccessToken)

Test Case: RefreshWithAccessTokenFails TEST_AuthManagerTest_RefreshWithAccessTokenFails
status: verified
verifies: REQ_INTEROP_087

Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L264 (Test: RefreshWithAccessTokenFails)

Test Case: ValidateTokenWithCorrectType TEST_AuthManagerTest_ValidateTokenWithCorrectType
status: verified
verifies: REQ_INTEROP_087

Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L230 (Test: ValidateTokenWithCorrectType)

Test Case: ValidateTokenWithWrongTypeRejectsToken TEST_AuthManagerTest_ValidateTokenWithWrongTypeRejectsToken
status: verified
verifies: REQ_INTEROP_087

Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L247 (Test: ValidateTokenWithWrongTypeRejectsToken)

Test Case: ValidateValidToken TEST_AuthManagerTest_ValidateValidToken
status: verified
verifies: REQ_INTEROP_087

Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L194 (Test: ValidateValidToken)

Test Case: AuthEndpointsNeverRequireAuth TEST_AuthMiddlewareTest_AuthEndpointsNeverRequireAuth
status: verified
verifies: REQ_INTEROP_086

Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L970 (Test: AuthEndpointsNeverRequireAuth)

Test Case: DisabledMiddlewareAllowsAll TEST_AuthMiddlewareTest_DisabledMiddlewareAllowsAll
status: verified
verifies: REQ_INTEROP_086

Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L981 (Test: DisabledMiddlewareAllowsAll)

Test Case: ExtractBearerToken_CaseInsensitive TEST_AuthMiddlewareTest_ExtractBearerToken_CaseInsensitive
status: verified
verifies: REQ_INTEROP_086

Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L876 (Test: ExtractBearerToken_CaseInsensitive)

Test Case: ExtractBearerToken_EmptyHeader TEST_AuthMiddlewareTest_ExtractBearerToken_EmptyHeader
status: verified
verifies: REQ_INTEROP_086

Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L883 (Test: ExtractBearerToken_EmptyHeader)

Test Case: ExtractBearerToken_EmptyToken TEST_AuthMiddlewareTest_ExtractBearerToken_EmptyToken
status: verified
verifies: REQ_INTEROP_086

Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L895 (Test: ExtractBearerToken_EmptyToken)

Test Case: ExtractBearerToken_InvalidPrefix TEST_AuthMiddlewareTest_ExtractBearerToken_InvalidPrefix
status: verified
verifies: REQ_INTEROP_086

Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L889 (Test: ExtractBearerToken_InvalidPrefix)

Test Case: ExtractBearerToken_ValidToken TEST_AuthMiddlewareTest_ExtractBearerToken_ValidToken
status: verified
verifies: REQ_INTEROP_086

Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L869 (Test: ExtractBearerToken_ValidToken)

Test Case: ProcessGetRequestWithoutAuth TEST_AuthMiddlewareTest_ProcessGetRequestWithoutAuth
status: verified
verifies: REQ_INTEROP_086

GET requests don’t require auth when require_auth_for=WRITE

Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L901 (Test: ProcessGetRequestWithoutAuth)

Test Case: ProcessWriteRequestWithInsufficientPermissions TEST_AuthMiddlewareTest_ProcessWriteRequestWithInsufficientPermissions
status: verified
verifies: REQ_INTEROP_086

Authenticate as viewer

Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L953 (Test: ProcessWriteRequestWithInsufficientPermissions)

Test Case: ProcessWriteRequestWithInvalidToken TEST_AuthMiddlewareTest_ProcessWriteRequestWithInvalidToken
status: verified
verifies: REQ_INTEROP_086

Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L940 (Test: ProcessWriteRequestWithInvalidToken)

Test Case: ProcessWriteRequestWithValidToken TEST_AuthMiddlewareTest_ProcessWriteRequestWithValidToken
status: verified

Authenticate first to get a valid token

Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L924 (Test: ProcessWriteRequestWithValidToken)

Test Case: ProcessWriteRequestWithoutAuth TEST_AuthMiddlewareTest_ProcessWriteRequestWithoutAuth
status: verified
verifies: REQ_INTEROP_086

POST requests require auth when require_auth_for=WRITE

Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L912 (Test: ProcessWriteRequestWithoutAuth)

Test Case: AllAuthPolicyAlwaysRequiresAuth TEST_AuthRequirementPolicyTest_AllAuthPolicyAlwaysRequiresAuth
status: verified
verifies: REQ_INTEROP_086

Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L1027 (Test: AllAuthPolicyAlwaysRequiresAuth)

Test Case: ConfigurablePolicyExactMatch TEST_AuthRequirementPolicyTest_ConfigurablePolicyExactMatch
status: verified
verifies: REQ_INTEROP_086

Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L1060 (Test: ConfigurablePolicyExactMatch)

Test Case: ConfigurablePolicyLongestMatchWins TEST_AuthRequirementPolicyTest_ConfigurablePolicyLongestMatchWins
status: verified
verifies: REQ_INTEROP_086

Create a policy where /api/v1/public is public, but /api/v1/public/secret/* requires auth

Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L1101 (Test: ConfigurablePolicyLongestMatchWins)

Test Case: ConfigurablePolicyMultipleWildcards TEST_AuthRequirementPolicyTest_ConfigurablePolicyMultipleWildcards
status: verified
verifies: REQ_INTEROP_086

Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L1083 (Test: ConfigurablePolicyMultipleWildcards)

Test Case: ConfigurablePolicyUnknownPathsRequireAuth TEST_AuthRequirementPolicyTest_ConfigurablePolicyUnknownPathsRequireAuth
status: verified
verifies: REQ_INTEROP_086

Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L1092 (Test: ConfigurablePolicyUnknownPathsRequireAuth)

Test Case: ConfigurablePolicyWildcardMatch TEST_AuthRequirementPolicyTest_ConfigurablePolicyWildcardMatch
status: verified
verifies: REQ_INTEROP_086

Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L1070 (Test: ConfigurablePolicyWildcardMatch)

Test Case: FactoryCreatesAllAuthFromConfig TEST_AuthRequirementPolicyTest_FactoryCreatesAllAuthFromConfig
status: verified
verifies: REQ_INTEROP_086

Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L1144 (Test: FactoryCreatesAllAuthFromConfig)

Test Case: FactoryCreatesNoAuthPolicy TEST_AuthRequirementPolicyTest_FactoryCreatesNoAuthPolicy
status: verified
verifies: REQ_INTEROP_086

Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L1118 (Test: FactoryCreatesNoAuthPolicy)

Test Case: FactoryCreatesWriteOnlyFromConfig TEST_AuthRequirementPolicyTest_FactoryCreatesWriteOnlyFromConfig
status: verified
verifies: REQ_INTEROP_086

Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L1130 (Test: FactoryCreatesWriteOnlyFromConfig)

Test Case: NoAuthPolicyNeverRequiresAuth TEST_AuthRequirementPolicyTest_NoAuthPolicyNeverRequiresAuth
status: verified
verifies: REQ_INTEROP_086

Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L1017 (Test: NoAuthPolicyNeverRequiresAuth)

status: verified
verifies: REQ_INTEROP_086

Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L1158 (Test: PolicyDescriptions)

Test Case: WriteOnlyPolicyForGetRequests TEST_AuthRequirementPolicyTest_WriteOnlyPolicyForGetRequests
status: verified
verifies: REQ_INTEROP_086

Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L1037 (Test: WriteOnlyPolicyForGetRequests)

Test Case: WriteOnlyPolicyForWriteRequests TEST_AuthRequirementPolicyTest_WriteOnlyPolicyForWriteRequests
status: verified
verifies: REQ_INTEROP_086

Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L1049 (Test: WriteOnlyPolicyForWriteRequests)

Test Case: ParseRequestFormUrlEncoded TEST_AuthorizeRequestTest_ParseRequestFormUrlEncoded
status: verified
verifies: REQ_INTEROP_086

Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L799 (Test: ParseRequestFormUrlEncoded)

Test Case: ParseRequestInvalidContentType TEST_AuthorizeRequestTest_ParseRequestInvalidContentType
status: verified
verifies: REQ_INTEROP_086

Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L811 (Test: ParseRequestInvalidContentType)

Test Case: ParseRequestInvalidJson TEST_AuthorizeRequestTest_ParseRequestInvalidJson
status: verified
verifies: REQ_INTEROP_086

Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L821 (Test: ParseRequestInvalidJson)

Test Case: ParseRequestJson TEST_AuthorizeRequestTest_ParseRequestJson
status: verified
verifies: REQ_INTEROP_086

Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L787 (Test: ParseRequestJson)

Test Case: ParseRequestJsonWithCharset TEST_AuthorizeRequestTest_ParseRequestJsonWithCharset
status: verified
verifies: REQ_INTEROP_086

Content-Type may include charset

Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L831 (Test: ParseRequestJsonWithCharset)

Test Case: DescriptorToJsonConversion TEST_BulkDataHandlersTest_DescriptorToJsonConversion
status: verified
verifies: REQ_INTEROP_074

Implementation: src/ros2_medkit_gateway/test/test_bulkdata_handlers.cpp#L112 (Test: DescriptorToJsonConversion)

Test Case: DescriptorToJsonWithMetadata TEST_BulkDataHandlersTest_DescriptorToJsonWithMetadata
status: verified
verifies: REQ_INTEROP_074

Implementation: src/ros2_medkit_gateway/test/test_bulkdata_handlers.cpp#L139 (Test: DescriptorToJsonWithMetadata)

Test Case: DescriptorToJsonWithoutDescription TEST_BulkDataHandlersTest_DescriptorToJsonWithoutDescription
status: verified
verifies: REQ_INTEROP_074

Implementation: src/ros2_medkit_gateway/test/test_bulkdata_handlers.cpp#L165 (Test: DescriptorToJsonWithoutDescription)

Test Case: FormatTimestampNsEpoch TEST_BulkDataHandlersTest_FormatTimestampNsEpoch
status: verified
verifies: REQ_INTEROP_071

Implementation: src/ros2_medkit_gateway/test/test_bulkdata_handlers.cpp#L88 (Test: FormatTimestampNsEpoch)

Test Case: FormatTimestampNsNegativeFallback TEST_BulkDataHandlersTest_FormatTimestampNsNegativeFallback
status: verified
verifies: REQ_INTEROP_071

Negative timestamps should return fallback

Implementation: src/ros2_medkit_gateway/test/test_bulkdata_handlers.cpp#L102 (Test: FormatTimestampNsNegativeFallback)

Test Case: FormatTimestampNsValidTimestamp TEST_BulkDataHandlersTest_FormatTimestampNsValidTimestamp
status: verified
verifies: REQ_INTEROP_071

2026-02-08T00:00:00.000Z

Implementation: src/ros2_medkit_gateway/test/test_bulkdata_handlers.cpp#L78 (Test: FormatTimestampNsValidTimestamp)

Test Case: FormatTimestampNsWithMilliseconds TEST_BulkDataHandlersTest_FormatTimestampNsWithMilliseconds
status: verified
verifies: REQ_INTEROP_071

1 second + 123 ms

Implementation: src/ros2_medkit_gateway/test/test_bulkdata_handlers.cpp#L94 (Test: FormatTimestampNsWithMilliseconds)

Test Case: GetRosbagMimetypeCasesSensitive TEST_BulkDataHandlersTest_GetRosbagMimetypeCasesSensitive
status: verified
verifies: REQ_INTEROP_071

MCAP should not match mcap (case sensitive)

Implementation: src/ros2_medkit_gateway/test/test_bulkdata_handlers.cpp#L69 (Test: GetRosbagMimetypeCasesSensitive)

Test Case: GetRosbagMimetypeDb3 TEST_BulkDataHandlersTest_GetRosbagMimetypeDb3
status: verified
verifies: REQ_INTEROP_071

Implementation: src/ros2_medkit_gateway/test/test_bulkdata_handlers.cpp#L54 (Test: GetRosbagMimetypeDb3)

Test Case: GetRosbagMimetypeEmpty TEST_BulkDataHandlersTest_GetRosbagMimetypeEmpty
status: verified
verifies: REQ_INTEROP_071

Implementation: src/ros2_medkit_gateway/test/test_bulkdata_handlers.cpp#L64 (Test: GetRosbagMimetypeEmpty)

Test Case: GetRosbagMimetypeMcap TEST_BulkDataHandlersTest_GetRosbagMimetypeMcap
status: verified
verifies: REQ_INTEROP_071

Implementation: src/ros2_medkit_gateway/test/test_bulkdata_handlers.cpp#L44 (Test: GetRosbagMimetypeMcap)

Test Case: GetRosbagMimetypeSqlite3 TEST_BulkDataHandlersTest_GetRosbagMimetypeSqlite3
status: verified
verifies: REQ_INTEROP_071

Implementation: src/ros2_medkit_gateway/test/test_bulkdata_handlers.cpp#L49 (Test: GetRosbagMimetypeSqlite3)

Test Case: GetRosbagMimetypeUnknown TEST_BulkDataHandlersTest_GetRosbagMimetypeUnknown
status: verified
verifies: REQ_INTEROP_071

Implementation: src/ros2_medkit_gateway/test/test_bulkdata_handlers.cpp#L59 (Test: GetRosbagMimetypeUnknown)

Test Case: PayloadTooLargeErrorCodeDefined TEST_BulkDataHandlersTest_PayloadTooLargeErrorCodeDefined
status: verified
verifies: REQ_INTEROP_074

Implementation: src/ros2_medkit_gateway/test/test_bulkdata_handlers.cpp#L195 (Test: PayloadTooLargeErrorCodeDefined)

Test Case: EmptyCategories TEST_BulkDataStoreTest_EmptyCategories
status: verified
verifies: REQ_INTEROP_071

Implementation: src/ros2_medkit_gateway/test/test_bulk_data_store.cpp#L221 (Test: EmptyCategories)

Test Case: GenerateUniqueIds TEST_BulkDataStoreTest_GenerateUniqueIds
status: verified
verifies: REQ_INTEROP_074

Implementation: src/ros2_medkit_gateway/test/test_bulk_data_store.cpp#L185 (Test: GenerateUniqueIds)

Test Case: GetFilePath TEST_BulkDataStoreTest_GetFilePath
status: verified
verifies: REQ_INTEROP_073

Implementation: src/ros2_medkit_gateway/test/test_bulk_data_store.cpp#L168 (Test: GetFilePath)

Test Case: GetFilePathNonexistent TEST_BulkDataStoreTest_GetFilePathNonexistent
status: verified
verifies: REQ_INTEROP_074

Implementation: src/ros2_medkit_gateway/test/test_bulk_data_store.cpp#L340 (Test: GetFilePathNonexistent)

Test Case: IdFormatIsReadable TEST_BulkDataStoreTest_IdFormatIsReadable
status: verified
verifies: REQ_INTEROP_074

Implementation: src/ros2_medkit_gateway/test/test_bulk_data_store.cpp#L327 (Test: IdFormatIsReadable)

Test Case: ListCategories TEST_BulkDataStoreTest_ListCategories
status: verified
verifies: REQ_INTEROP_071

Implementation: src/ros2_medkit_gateway/test/test_bulk_data_store.cpp#L123 (Test: ListCategories)

Test Case: ListItemsEmptyCategory TEST_BulkDataStoreTest_ListItemsEmptyCategory
status: verified
verifies: REQ_INTEROP_074

Implementation: src/ros2_medkit_gateway/test/test_bulk_data_store.cpp#L271 (Test: ListItemsEmptyCategory)

Test Case: ListItemsInCategory TEST_BulkDataStoreTest_ListItemsInCategory
status: verified
verifies: REQ_INTEROP_074

Implementation: src/ros2_medkit_gateway/test/test_bulk_data_store.cpp#L104 (Test: ListItemsInCategory)

Test Case: ListItemsWrongEntity TEST_BulkDataStoreTest_ListItemsWrongEntity
status: verified
verifies: REQ_INTEROP_074

Implementation: src/ros2_medkit_gateway/test/test_bulk_data_store.cpp#L279 (Test: ListItemsWrongEntity)

Test Case: MaxUploadSizeEnforced TEST_BulkDataStoreTest_MaxUploadSizeEnforced
status: verified
verifies: REQ_INTEROP_074

Implementation: src/ros2_medkit_gateway/test/test_bulk_data_store.cpp#L198 (Test: MaxUploadSizeEnforced)

Test Case: MaxUploadZeroMeansUnlimited TEST_BulkDataStoreTest_MaxUploadZeroMeansUnlimited
status: verified
verifies: REQ_INTEROP_074

Implementation: src/ros2_medkit_gateway/test/test_bulk_data_store.cpp#L348 (Test: MaxUploadZeroMeansUnlimited)

Test Case: PathTraversalRejected TEST_BulkDataStoreTest_PathTraversalRejected
status: verified
verifies: REQ_INTEROP_074

Implementation: src/ros2_medkit_gateway/test/test_bulk_data_store.cpp#L229 (Test: PathTraversalRejected)

Test Case: RemoveItem TEST_BulkDataStoreTest_RemoveItem
status: verified
verifies: REQ_INTEROP_074

Implementation: src/ros2_medkit_gateway/test/test_bulk_data_store.cpp#L136 (Test: RemoveItem)

Test Case: RemoveNonexistent TEST_BulkDataStoreTest_RemoveNonexistent
status: verified
verifies: REQ_INTEROP_074

Implementation: src/ros2_medkit_gateway/test/test_bulk_data_store.cpp#L159 (Test: RemoveNonexistent)

Test Case: RemoveThenListDoesNotInclude TEST_BulkDataStoreTest_RemoveThenListDoesNotInclude
status: verified
verifies: REQ_INTEROP_074

Implementation: src/ros2_medkit_gateway/test/test_bulk_data_store.cpp#L311 (Test: RemoveThenListDoesNotInclude)

Test Case: StoreAndRetrieve TEST_BulkDataStoreTest_StoreAndRetrieve
status: verified
verifies: REQ_INTEROP_074

Implementation: src/ros2_medkit_gateway/test/test_bulk_data_store.cpp#L48 (Test: StoreAndRetrieve)

Test Case: StoreAtomicWriteDescriptorExists TEST_BulkDataStoreTest_StoreAtomicWriteDescriptorExists
status: verified
verifies: REQ_INTEROP_074

Implementation: src/ros2_medkit_gateway/test/test_bulk_data_store.cpp#L248 (Test: StoreAtomicWriteDescriptorExists)

Test Case: StoreCreatesDirectoryStructure TEST_BulkDataStoreTest_StoreCreatesDirectoryStructure
status: verified
verifies: REQ_INTEROP_074

Implementation: src/ros2_medkit_gateway/test/test_bulk_data_store.cpp#L71 (Test: StoreCreatesDirectoryStructure)

Test Case: StoreEmptyFile TEST_BulkDataStoreTest_StoreEmptyFile
status: verified
verifies: REQ_INTEROP_074

Implementation: src/ros2_medkit_gateway/test/test_bulk_data_store.cpp#L289 (Test: StoreEmptyFile)

Test Case: StoreEmptyFilename TEST_BulkDataStoreTest_StoreEmptyFilename
status: verified
verifies: REQ_INTEROP_074

Implementation: src/ros2_medkit_gateway/test/test_bulk_data_store.cpp#L302 (Test: StoreEmptyFilename)

Test Case: StoreLargeFile TEST_BulkDataStoreTest_StoreLargeFile
status: verified
verifies: REQ_INTEROP_074

Implementation: src/ros2_medkit_gateway/test/test_bulk_data_store.cpp#L356 (Test: StoreLargeFile)

Test Case: StoreUnknownCategoryRejected TEST_BulkDataStoreTest_StoreUnknownCategoryRejected
status: verified
verifies: REQ_INTEROP_074

Implementation: src/ros2_medkit_gateway/test/test_bulk_data_store.cpp#L262 (Test: StoreUnknownCategoryRejected)

Test Case: StoreWithMetadata TEST_BulkDataStoreTest_StoreWithMetadata
status: verified
verifies: REQ_INTEROP_074

Implementation: src/ros2_medkit_gateway/test/test_bulk_data_store.cpp#L84 (Test: StoreWithMetadata)

Test Case: UnknownCategory TEST_BulkDataStoreTest_UnknownCategory
status: verified
verifies: REQ_INTEROP_074

Implementation: src/ros2_medkit_gateway/test/test_bulk_data_store.cpp#L212 (Test: UnknownCategory)

Test Case: EntityCollectionDetailPathHasParameters TEST_CapabilityGeneratorTest_EntityCollectionDetailPathHasParameters
status: verified
verifies: REQ_INTEROP_002

Entity collection specs use template paths (/apps/{app_id}), so they should include path parameters for the entity ID

Implementation: src/ros2_medkit_gateway/test/test_capability_generator.cpp#L392 (Test: EntityCollectionDetailPathHasParameters)

Test Case: GenerateEntityCollectionReturnsSpec TEST_CapabilityGeneratorTest_GenerateEntityCollectionReturnsSpec
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_capability_generator.cpp#L261 (Test: GenerateEntityCollectionReturnsSpec)

Test Case: GenerateInvalidPathReturnsNullopt TEST_CapabilityGeneratorTest_GenerateInvalidPathReturnsNullopt
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_capability_generator.cpp#L241 (Test: GenerateInvalidPathReturnsNullopt)

Test Case: GenerateRootContainsEntityCollections TEST_CapabilityGeneratorTest_GenerateRootContainsEntityCollections
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_capability_generator.cpp#L175 (Test: GenerateRootContainsEntityCollections)

Test Case: GenerateRootContainsEntityDetailPaths TEST_CapabilityGeneratorTest_GenerateRootContainsEntityDetailPaths
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_capability_generator.cpp#L188 (Test: GenerateRootContainsEntityDetailPaths)

Test Case: GenerateRootContainsGlobalFaults TEST_CapabilityGeneratorTest_GenerateRootContainsGlobalFaults
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_capability_generator.cpp#L201 (Test: GenerateRootContainsGlobalFaults)

Test Case: GenerateRootContainsHealthEndpoint TEST_CapabilityGeneratorTest_GenerateRootContainsHealthEndpoint
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_capability_generator.cpp#L153 (Test: GenerateRootContainsHealthEndpoint)

Test Case: GenerateRootContainsVersionInfo TEST_CapabilityGeneratorTest_GenerateRootContainsVersionInfo
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_capability_generator.cpp#L164 (Test: GenerateRootContainsVersionInfo)

Test Case: GenerateRootReturnsValidOpenApiSpec TEST_CapabilityGeneratorTest_GenerateRootReturnsValidOpenApiSpec
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_capability_generator.cpp#L125 (Test: GenerateRootReturnsValidOpenApiSpec)

Test Case: CgroupV1FormatNotSupported TEST_CgroupReader_CgroupV1FormatNotSupported
status: verified
verifies: REQ_INTEROP_003

cgroup v1 uses “hierarchy-ID:controller-list:cgroup-path” format. Our reader only supports cgroup v2 (“0::<path>”). This test documents the intentional limitation.

Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_cgroup_reader.cpp#L223 (Test: CgroupV1FormatNotSupported)

Test Case: ExtractContainerdContainerId TEST_CgroupReader_ExtractContainerdContainerId
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_cgroup_reader.cpp#L42 (Test: ExtractContainerdContainerId)

Test Case: ExtractDockerContainerId TEST_CgroupReader_ExtractDockerContainerId
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_cgroup_reader.cpp#L24 (Test: ExtractDockerContainerId)

Test Case: ExtractDockerOldStyleContainerId TEST_CgroupReader_ExtractDockerOldStyleContainerId
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_cgroup_reader.cpp#L216 (Test: ExtractDockerOldStyleContainerId)

Test Case: ExtractNoContainerId TEST_CgroupReader_ExtractNoContainerId
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_cgroup_reader.cpp#L51 (Test: ExtractNoContainerId)

Test Case: ExtractPodmanContainerId TEST_CgroupReader_ExtractPodmanContainerId
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_cgroup_reader.cpp#L33 (Test: ExtractPodmanContainerId)

Test Case: IsContainerizedSyntheticProc TEST_CgroupReader_IsContainerizedSyntheticProc
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_cgroup_reader.cpp#L65 (Test: IsContainerizedSyntheticProc)

Test Case: ReadCgroupInfoMissingCgroupFile TEST_CgroupReader_ReadCgroupInfoMissingCgroupFile
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_cgroup_reader.cpp#L203 (Test: ReadCgroupInfoMissingCgroupFile)

Test Case: ReadCgroupInfoMissingResourceFiles TEST_CgroupReader_ReadCgroupInfoMissingResourceFiles
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_cgroup_reader.cpp#L179 (Test: ReadCgroupInfoMissingResourceFiles)

Test Case: ReadCgroupInfoUnlimitedResources TEST_CgroupReader_ReadCgroupInfoUnlimitedResources
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_cgroup_reader.cpp#L136 (Test: ReadCgroupInfoUnlimitedResources)

Test Case: ReadCgroupInfoWithResourceLimits TEST_CgroupReader_ReadCgroupInfoWithResourceLimits
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_cgroup_reader.cpp#L91 (Test: ReadCgroupInfoWithResourceLimits)

Test Case: ToJson_ContainsRequiredFields TEST_ComponentModelTest_ToJson_ContainsRequiredFields
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_gateway/test/test_discovery_models.cpp#L135 (Test: ToJson_ContainsRequiredFields)

Test Case: EnterRange_NonNumericReturnsFalse TEST_ConditionEvaluator_EnterRange_NonNumericReturnsFalse
status: verified
verifies: REQ_INTEROP_097

Implementation: src/ros2_medkit_gateway/test/test_condition_evaluator.cpp#L239 (Test: EnterRange_NonNumericReturnsFalse)

Test Case: LeaveRange_NonNumericReturnsFalse TEST_ConditionEvaluator_LeaveRange_NonNumericReturnsFalse
status: verified
verifies: REQ_INTEROP_097

Implementation: src/ros2_medkit_gateway/test/test_condition_evaluator.cpp#L329 (Test: LeaveRange_NonNumericReturnsFalse)

Test Case: OnChangeTo_ValidateParams_MissingTarget TEST_ConditionEvaluator_OnChangeTo_ValidateParams_MissingTarget
status: verified
verifies: REQ_INTEROP_029

Implementation: src/ros2_medkit_gateway/test/test_condition_evaluator.cpp#L123 (Test: OnChangeTo_ValidateParams_MissingTarget)

Test Case: OnChangeTo_ValidateParams_Valid TEST_ConditionEvaluator_OnChangeTo_ValidateParams_Valid
status: verified
verifies: REQ_INTEROP_029

Implementation: src/ros2_medkit_gateway/test/test_condition_evaluator.cpp#L131 (Test: OnChangeTo_ValidateParams_Valid)

Test Case: OnChange_ValidateParams TEST_ConditionEvaluator_OnChange_ValidateParams
status: verified
verifies: REQ_INTEROP_029

Implementation: src/ros2_medkit_gateway/test/test_condition_evaluator.cpp#L64 (Test: OnChange_ValidateParams)

Test Case: CgroupInfoToJsonAllFields TEST_ContainerPlugin_CgroupInfoToJsonAllFields
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_container_plugin.cpp#L21 (Test: CgroupInfoToJsonAllFields)

Test Case: CgroupInfoToJsonMissingOptionals TEST_ContainerPlugin_CgroupInfoToJsonMissingOptionals
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_container_plugin.cpp#L38 (Test: CgroupInfoToJsonMissingOptionals)

Test Case: NotContainerizedSkipped TEST_ContainerPlugin_NotContainerizedSkipped
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_container_plugin.cpp#L53 (Test: NotContainerizedSkipped)

Test Case: ContainsAllRequiredFields TEST_CyclicSubscriptionJsonTest_ContainsAllRequiredFields
status: verified
verifies: REQ_INTEROP_089

Implementation: src/ros2_medkit_gateway/test/test_cyclic_subscription_handlers.cpp#L173 (Test: ContainsAllRequiredFields)

Test Case: ServerLevelUpdateResource TEST_CyclicSubscriptionJsonTest_ServerLevelUpdateResource
status: verified
verifies: REQ_INTEROP_089

Implementation: src/ros2_medkit_gateway/test/test_cyclic_subscription_handlers.cpp#L207 (Test: ServerLevelUpdateResource)

Test Case: set_topic_data_provider_nullptr_detaches_provider TEST_DataAccessManagerWithPublisherTest_set_topic_data_provider_nullptr_detaches_provider
status: verified
verifies: REQ_INTEROP_019

Sanity: provider is attached after SetUp.

Implementation: src/ros2_medkit_gateway/test/test_data_access_manager.cpp#L302 (Test: set_topic_data_provider_nullptr_detaches_provider)

Test Case: DataCategoriesErrorBodyContainsFeatureParameter TEST_DataHandlersTest_DataCategoriesErrorBodyContainsFeatureParameter
status: verified
verifies: REQ_INTEROP_016

Implementation: src/ros2_medkit_gateway/test/test_data_handlers.cpp#L85 (Test: DataCategoriesErrorBodyContainsFeatureParameter)

Test Case: DataCategoriesErrorBodyContainsMessage TEST_DataHandlersTest_DataCategoriesErrorBodyContainsMessage
status: verified
verifies: REQ_INTEROP_016

Implementation: src/ros2_medkit_gateway/test/test_data_handlers.cpp#L76 (Test: DataCategoriesErrorBodyContainsMessage)

Test Case: DataCategoriesErrorCodeIsNotImplemented TEST_DataHandlersTest_DataCategoriesErrorCodeIsNotImplemented
status: verified
verifies: REQ_INTEROP_016

Implementation: src/ros2_medkit_gateway/test/test_data_handlers.cpp#L66 (Test: DataCategoriesErrorCodeIsNotImplemented)

Test Case: DataCategoriesResponseBodyIsValidJson TEST_DataHandlersTest_DataCategoriesResponseBodyIsValidJson
status: verified
verifies: REQ_INTEROP_016

Implementation: src/ros2_medkit_gateway/test/test_data_handlers.cpp#L58 (Test: DataCategoriesResponseBodyIsValidJson)

Test Case: DataCategoriesReturns501 TEST_DataHandlersTest_DataCategoriesReturns501
status: verified
verifies: REQ_INTEROP_016

Implementation: src/ros2_medkit_gateway/test/test_data_handlers.cpp#L50 (Test: DataCategoriesReturns501)

Test Case: DataGroupsErrorBodyContainsFeatureParameter TEST_DataHandlersTest_DataGroupsErrorBodyContainsFeatureParameter
status: verified
verifies: REQ_INTEROP_017

Implementation: src/ros2_medkit_gateway/test/test_data_handlers.cpp#L134 (Test: DataGroupsErrorBodyContainsFeatureParameter)

Test Case: DataGroupsErrorBodyContainsMessage TEST_DataHandlersTest_DataGroupsErrorBodyContainsMessage
status: verified
verifies: REQ_INTEROP_017

Implementation: src/ros2_medkit_gateway/test/test_data_handlers.cpp#L125 (Test: DataGroupsErrorBodyContainsMessage)

Test Case: DataGroupsErrorCodeIsNotImplemented TEST_DataHandlersTest_DataGroupsErrorCodeIsNotImplemented
status: verified
verifies: REQ_INTEROP_017

Implementation: src/ros2_medkit_gateway/test/test_data_handlers.cpp#L115 (Test: DataGroupsErrorCodeIsNotImplemented)

Test Case: DataGroupsResponseBodyIsValidJson TEST_DataHandlersTest_DataGroupsResponseBodyIsValidJson
status: verified
verifies: REQ_INTEROP_017

Implementation: src/ros2_medkit_gateway/test/test_data_handlers.cpp#L107 (Test: DataGroupsResponseBodyIsValidJson)

Test Case: DataGroupsReturns501 TEST_DataHandlersTest_DataGroupsReturns501
status: verified
verifies: REQ_INTEROP_017

Implementation: src/ros2_medkit_gateway/test/test_data_handlers.cpp#L99 (Test: DataGroupsReturns501)

Test Case: GetDataItemBadRequestBodyContainsInvalidRequestErrorCode TEST_DataHandlersTest_GetDataItemBadRequestBodyContainsInvalidRequestErrorCode
status: verified
verifies: REQ_INTEROP_019

Implementation: src/ros2_medkit_gateway/test/test_data_handlers.cpp#L179 (Test: GetDataItemBadRequestBodyContainsInvalidRequestErrorCode)

Test Case: GetDataItemReturnsBadRequestWhenMatchesMissing TEST_DataHandlersTest_GetDataItemReturnsBadRequestWhenMatchesMissing
status: verified
verifies: REQ_INTEROP_019

Default-constructed req has empty matches (size 0 < 3)

Implementation: src/ros2_medkit_gateway/test/test_data_handlers.cpp#L170 (Test: GetDataItemReturnsBadRequestWhenMatchesMissing)

Test Case: ListDataBadRequestBodyContainsErrorCode TEST_DataHandlersTest_ListDataBadRequestBodyContainsErrorCode
status: verified
verifies: REQ_INTEROP_018

Implementation: src/ros2_medkit_gateway/test/test_data_handlers.cpp#L157 (Test: ListDataBadRequestBodyContainsErrorCode)

Test Case: ListDataReturnsBadRequestWhenMatchesMissing TEST_DataHandlersTest_ListDataReturnsBadRequestWhenMatchesMissing
status: verified
verifies: REQ_INTEROP_018

Default-constructed req has empty matches (size 0 < 2)

Implementation: src/ros2_medkit_gateway/test/test_data_handlers.cpp#L148 (Test: ListDataReturnsBadRequestWhenMatchesMissing)

Test Case: PutDataItemBadRequestBodyContainsInvalidRequestErrorCode TEST_DataHandlersTest_PutDataItemBadRequestBodyContainsInvalidRequestErrorCode
status: verified
verifies: REQ_INTEROP_020

Implementation: src/ros2_medkit_gateway/test/test_data_handlers.cpp#L202 (Test: PutDataItemBadRequestBodyContainsInvalidRequestErrorCode)

Test Case: PutDataItemReturnsBadRequestWhenMatchesMissing TEST_DataHandlersTest_PutDataItemReturnsBadRequestWhenMatchesMissing
status: verified
verifies: REQ_INTEROP_020

Default-constructed req has empty matches (size 0 < 3)

Implementation: src/ros2_medkit_gateway/test/test_data_handlers.cpp#L193 (Test: PutDataItemReturnsBadRequestWhenMatchesMissing)

status: verified
verifies: REQ_INTEROP_044

Create a script that sleeps briefly

Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L724 (Test: ConcurrencyLimit)

Test Case: ControlCompletedExecutionReturnsNotRunning TEST_DefaultScriptProviderTest_ControlCompletedExecutionReturnsNotRunning
status: verified
verifies: REQ_INTEROP_047

Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L1014 (Test: ControlCompletedExecutionReturnsNotRunning)

status: verified
verifies: REQ_INTEROP_047

Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L843 (Test: ControlStopExecution)

Test Case: CrossEntityExecutionAccessRejected TEST_DefaultScriptProviderTest_CrossEntityExecutionAccessRejected
status: verified
verifies: REQ_INTEROP_046

Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L911 (Test: CrossEntityExecutionAccessRejected)

Test Case: DeleteManifestScriptFails TEST_DefaultScriptProviderTest_DeleteManifestScriptFails
status: verified
verifies: REQ_INTEROP_043

Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L283 (Test: DeleteManifestScriptFails)

Test Case: DeleteNonexistentScriptFails TEST_DefaultScriptProviderTest_DeleteNonexistentScriptFails
status: verified
verifies: REQ_INTEROP_043

Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L405 (Test: DeleteNonexistentScriptFails)

Test Case: DeleteScriptWithRunningExecutionBlocked TEST_DefaultScriptProviderTest_DeleteScriptWithRunningExecutionBlocked
status: verified
verifies: REQ_INTEROP_043

Create a long-running sleep script on the filesystem (uploaded, not manifest)

Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L954 (Test: DeleteScriptWithRunningExecutionBlocked)

status: verified
verifies: REQ_INTEROP_043

Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L256 (Test: DeleteUploadedScript)

status: verified
verifies: REQ_INTEROP_044

Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L675 (Test: EnvVars)

status: verified
verifies: REQ_INTEROP_046

Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L779 (Test: ExecutionNotFound)

status: verified
verifies: REQ_INTEROP_044

Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L642 (Test: FlagArgs)

status: verified
verifies: REQ_INTEROP_042

Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L222 (Test: GetManifestScript)

status: verified
verifies: REQ_INTEROP_042

Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L295 (Test: GetNonexistentScript)

status: verified
verifies: REQ_INTEROP_042

Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L237 (Test: GetUploadedScript)

Test Case: ListMergesManifestAndUploaded TEST_DefaultScriptProviderTest_ListMergesManifestAndUploaded
status: verified
verifies: REQ_INTEROP_041

Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L189 (Test: ListMergesManifestAndUploaded)

Test Case: ManifestScriptWithParametersSchema TEST_DefaultScriptProviderTest_ManifestScriptWithParametersSchema
status: verified
verifies: REQ_INTEROP_042

Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L415 (Test: ManifestScriptWithParametersSchema)

status: verified
verifies: REQ_INTEROP_041

Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L124 (Test: ManifestScriptsLoaded)

status: verified
verifies: REQ_INTEROP_044

Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L609 (Test: NamedArgs)

status: verified
verifies: REQ_INTEROP_044

Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L580 (Test: PositionalArgs)

Test Case: ScriptNotFoundExecution TEST_DefaultScriptProviderTest_ScriptNotFoundExecution
status: verified
verifies: REQ_INTEROP_044

Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L874 (Test: ScriptNotFoundExecution)

status: verified
verifies: REQ_INTEROP_044

Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L699 (Test: StdinJsonFallback)

Test Case: SubprocessExecutionBash TEST_DefaultScriptProviderTest_SubprocessExecutionBash
status: verified
verifies: REQ_INTEROP_044

Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L483 (Test: SubprocessExecutionBash)

Test Case: SubprocessExecutionPython TEST_DefaultScriptProviderTest_SubprocessExecutionPython
status: verified
verifies: REQ_INTEROP_044

Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L459 (Test: SubprocessExecutionPython)

status: verified
verifies: REQ_INTEROP_044

Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L500 (Test: SubprocessExecutionSh)

status: verified
verifies: REQ_INTEROP_044

Create a script that exits with code 1

Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L517 (Test: SubprocessFailure)

status: verified
verifies: REQ_INTEROP_044

Create a script that sleeps for a long time

Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L549 (Test: SubprocessTimeout)

Test Case: UnsupportedExecutionType TEST_DefaultScriptProviderTest_UnsupportedExecutionType
status: verified
verifies: REQ_INTEROP_044

Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L767 (Test: UnsupportedExecutionType)

Test Case: UploadDisabledReturnsError TEST_DefaultScriptProviderTest_UploadDisabledReturnsError
status: verified
verifies: REQ_INTEROP_040

Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L1001 (Test: UploadDisabledReturnsError)

Test Case: UploadExceedingFileSizeRejected TEST_DefaultScriptProviderTest_UploadExceedingFileSizeRejected
status: verified
verifies: REQ_INTEROP_040

Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L989 (Test: UploadExceedingFileSizeRejected)

status: verified
verifies: REQ_INTEROP_040

Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L156 (Test: UploadToFilesystem)

Test Case: UploadWithParametersSchema TEST_DefaultScriptProviderTest_UploadWithParametersSchema
status: verified
verifies: REQ_INTEROP_040

Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L337 (Test: UploadWithParametersSchema)

status: verified
verifies: REQ_INTEROP_040

Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L354 (Test: UploadWithoutMetadata)

Test Case: UploadedScriptsIsolatedByEntity TEST_DefaultScriptProviderTest_UploadedScriptsIsolatedByEntity
status: verified
verifies: REQ_INTEROP_041

Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L429 (Test: UploadedScriptsIsolatedByEntity)

Test Case: AppDependsOnReturnsResolvedAndMissingDependencies TEST_DiscoveryHandlersFixtureTest_AppDependsOnReturnsResolvedAndMissingDependencies
status: verified
verifies: REQ_INTEROP_009

Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L693 (Test: AppDependsOnReturnsResolvedAndMissingDependencies)

Test Case: AppDependsOnUnknownAppReturns404 TEST_DiscoveryHandlersFixtureTest_AppDependsOnUnknownAppReturns404
status: verified
verifies: REQ_INTEROP_009

Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L721 (Test: AppDependsOnUnknownAppReturns404)

Test Case: AppIsLocatedOnReturnsEmptyWhenAppHasNoComponent TEST_DiscoveryHandlersFixtureTest_AppIsLocatedOnReturnsEmptyWhenAppHasNoComponent
status: verified
verifies: REQ_INTEROP_105

Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L629 (Test: AppIsLocatedOnReturnsEmptyWhenAppHasNoComponent)

Test Case: AppIsLocatedOnReturnsMissingItemWhenHostComponentUnresolved TEST_DiscoveryHandlersFixtureTest_AppIsLocatedOnReturnsMissingItemWhenHostComponentUnresolved
status: verified
verifies: REQ_INTEROP_105

Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L643 (Test: AppIsLocatedOnReturnsMissingItemWhenHostComponentUnresolved)

Test Case: AppIsLocatedOnReturnsParentComponent TEST_DiscoveryHandlersFixtureTest_AppIsLocatedOnReturnsParentComponent
status: verified
verifies: REQ_INTEROP_105

Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L612 (Test: AppIsLocatedOnReturnsParentComponent)

Test Case: AppIsLocatedOnUnknownAppReturns404 TEST_DiscoveryHandlersFixtureTest_AppIsLocatedOnUnknownAppReturns404
status: verified
verifies: REQ_INTEROP_105

Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L683 (Test: AppIsLocatedOnUnknownAppReturns404)

Test Case: AreaComponentsReturnsMatchingComponentsOnly TEST_DiscoveryHandlersFixtureTest_AreaComponentsReturnsMatchingComponentsOnly
status: verified
verifies: REQ_INTEROP_006

Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L314 (Test: AreaComponentsReturnsMatchingComponentsOnly)

Test Case: AreaComponentsUnknownAreaReturns404 TEST_DiscoveryHandlersFixtureTest_AreaComponentsUnknownAreaReturns404
status: verified
verifies: REQ_INTEROP_006

Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L336 (Test: AreaComponentsUnknownAreaReturns404)

Test Case: ComponentDependsOnReturnsResolvedAndMissingDependencies TEST_DiscoveryHandlersFixtureTest_ComponentDependsOnReturnsResolvedAndMissingDependencies
status: verified
verifies: REQ_INTEROP_008

Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L523 (Test: ComponentDependsOnReturnsResolvedAndMissingDependencies)

Test Case: ComponentDependsOnUnknownComponentReturns404 TEST_DiscoveryHandlersFixtureTest_ComponentDependsOnUnknownComponentReturns404
status: verified
verifies: REQ_INTEROP_008

Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L548 (Test: ComponentDependsOnUnknownComponentReturns404)

Test Case: FunctionHostsReturnsHostingApps TEST_DiscoveryHandlersFixtureTest_FunctionHostsReturnsHostingApps
status: verified
verifies: REQ_INTEROP_007

Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L798 (Test: FunctionHostsReturnsHostingApps)

Test Case: FunctionHostsUnknownFunctionReturns404 TEST_DiscoveryHandlersFixtureTest_FunctionHostsUnknownFunctionReturns404
status: verified
verifies: REQ_INTEROP_007

Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L788 (Test: FunctionHostsUnknownFunctionReturns404)

Test Case: GetAppReturnsLinksAndCapabilities TEST_DiscoveryHandlersFixtureTest_GetAppReturnsLinksAndCapabilities
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L594 (Test: GetAppReturnsLinksAndCapabilities)

status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L584 (Test: GetAppUnknownIdReturns404)

status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L290 (Test: GetAreaUnknownIdReturns404)

Test Case: GetComponentReturnsRelationshipsAndCapabilities TEST_DiscoveryHandlersFixtureTest_GetComponentReturnsRelationshipsAndCapabilities
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L438 (Test: GetComponentReturnsRelationshipsAndCapabilities)

Test Case: GetContainsReturnsAreaComponents TEST_DiscoveryHandlersFixtureTest_GetContainsReturnsAreaComponents
status: verified
verifies: REQ_INTEROP_006

Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L379 (Test: GetContainsReturnsAreaComponents)

Test Case: GetContainsUnknownAreaReturns404 TEST_DiscoveryHandlersFixtureTest_GetContainsUnknownAreaReturns404
status: verified
verifies: REQ_INTEROP_006

Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L403 (Test: GetContainsUnknownAreaReturns404)

Test Case: GetFunctionUnknownIdReturns404 TEST_DiscoveryHandlersFixtureTest_GetFunctionUnknownIdReturns404
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L754 (Test: GetFunctionUnknownIdReturns404)

status: verified
verifies: REQ_INTEROP_007

Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L488 (Test: GetHostsReturnsHostedApps)

Test Case: GetHostsUnknownComponentReturns404 TEST_DiscoveryHandlersFixtureTest_GetHostsUnknownComponentReturns404
status: verified
verifies: REQ_INTEROP_007

Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L513 (Test: GetHostsUnknownComponentReturns404)

status: verified
verifies: REQ_INTEROP_004

Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L346 (Test: GetSubareasReturnsChildAreas)

Test Case: GetSubareasUnknownAreaReturns404 TEST_DiscoveryHandlersFixtureTest_GetSubareasUnknownAreaReturns404
status: verified
verifies: REQ_INTEROP_004

Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L369 (Test: GetSubareasUnknownAreaReturns404)

Test Case: GetSubcomponentsReturnsChildren TEST_DiscoveryHandlersFixtureTest_GetSubcomponentsReturnsChildren
status: verified
verifies: REQ_INTEROP_005

Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L453 (Test: GetSubcomponentsReturnsChildren)

Test Case: GetSubcomponentsUnknownComponentReturns404 TEST_DiscoveryHandlersFixtureTest_GetSubcomponentsUnknownComponentReturns404
status: verified
verifies: REQ_INTEROP_005

Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L477 (Test: GetSubcomponentsUnknownComponentReturns404)

Test Case: ListAppsReturnsSeededMetadata TEST_DiscoveryHandlersFixtureTest_ListAppsReturnsSeededMetadata
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L569 (Test: ListAppsReturnsSeededMetadata)

status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L265 (Test: ListAreasReturnsSeededItems)

Test Case: ListComponentsReturnsMetadata TEST_DiscoveryHandlersFixtureTest_ListComponentsReturnsMetadata
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L413 (Test: ListComponentsReturnsMetadata)

Test Case: ListFunctionsReturnsSeededFunctions TEST_DiscoveryHandlersFixtureTest_ListFunctionsReturnsSeededFunctions
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L741 (Test: ListFunctionsReturnsSeededFunctions)

status: verified
verifies: REQ_INTEROP_009

Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L711 (Test: AppDependsOnInvalidIdReturns400)

status: verified
verifies: REQ_INTEROP_105

Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L673 (Test: AppIsLocatedOnInvalidIdReturns400)

status: verified
verifies: REQ_INTEROP_006

Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L326 (Test: AreaComponentsInvalidIdReturns400)

Test Case: ComponentDependsOnInvalidIdReturns400 TEST_DiscoveryHandlersValidationTest_ComponentDependsOnInvalidIdReturns400
status: verified
verifies: REQ_INTEROP_008

Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L538 (Test: ComponentDependsOnInvalidIdReturns400)

status: verified
verifies: REQ_INTEROP_007

Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L778 (Test: FunctionHostsInvalidIdReturns400)

status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L559 (Test: GetAppInvalidIdReturns400)

status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L280 (Test: GetAreaInvalidIdReturns400)

status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L179 (Test: GetAreaMissingMatchesReturns400)

status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L428 (Test: GetComponentInvalidIdReturns400)

status: verified
verifies: REQ_INTEROP_006

Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L393 (Test: GetContainsInvalidIdReturns400)

status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L731 (Test: GetFunctionInvalidIdReturns400)

status: verified
verifies: REQ_INTEROP_007

Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L503 (Test: GetHostsInvalidIdReturns400)

status: verified
verifies: REQ_INTEROP_004

Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L359 (Test: GetSubareasInvalidIdReturns400)

Test Case: GetSubcomponentsInvalidIdReturns400 TEST_DiscoveryHandlersValidationTest_GetSubcomponentsInvalidIdReturns400
status: verified
verifies: REQ_INTEROP_005

Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L466 (Test: GetSubcomponentsInvalidIdReturns400)

Test Case: SetTopicDataProviderNullptrIsAcceptedAfterAttach TEST_DiscoveryManagerTest_SetTopicDataProviderNullptrIsAcceptedAfterAttach
status: verified
verifies: REQ_INTEROP_018

The discovery manager has a provider attached in SetUp (line 57). The teardown sequence in main() (commit ab558e0d) calls GatewayNode::set_topic_data_provider(nullptr), which propagates through the discovery manager. Confirm that path does not throw and that subsequent discovery calls still work (no provider just means topic-map enrichment is skipped).

Implementation: src/ros2_medkit_gateway/test/test_discovery_manager.cpp#L86 (Test: SetTopicDataProviderNullptrIsAcceptedAfterAttach)

Test Case: DocsAnyPathReturns200ForEntityCollection TEST_DocsHandlersTest_DocsAnyPathReturns200ForEntityCollection
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_docs_handlers.cpp#L143 (Test: DocsAnyPathReturns200ForEntityCollection)

Test Case: DocsAnyPathReturns404ForInvalidPath TEST_DocsHandlersTest_DocsAnyPathReturns404ForInvalidPath
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_docs_handlers.cpp#L177 (Test: DocsAnyPathReturns404ForInvalidPath)

Test Case: DocsDisabledReturns501 TEST_DocsHandlersTest_DocsDisabledReturns501
status: verified
verifies: REQ_INTEROP_002

Override docs.enabled to false (GatewayNode already declares it as true by default)

Implementation: src/ros2_medkit_gateway/test/test_docs_handlers.cpp#L93 (Test: DocsDisabledReturns501)

Test Case: DocsRootReturnsValidJson TEST_DocsHandlersTest_DocsRootReturnsValidJson
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_docs_handlers.cpp#L115 (Test: DocsRootReturnsValidJson)

Test Case: apps_collision_prefixed_gets_peer_contributor_only TEST_EntityMerger_apps_collision_prefixed_gets_peer_contributor_only
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_gateway/test/test_entity_merger.cpp#L468 (Test: apps_collision_prefixed_gets_peer_contributor_only)

Test Case: apps_collision_sets_original_id TEST_EntityMerger_apps_collision_sets_original_id
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_gateway/test/test_entity_merger.cpp#L259 (Test: apps_collision_sets_original_id)

Test Case: apps_prefix_on_collision TEST_EntityMerger_apps_prefix_on_collision
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_gateway/test/test_entity_merger.cpp#L237 (Test: apps_prefix_on_collision)

Test Case: areas_merge_by_id TEST_EntityMerger_areas_merge_by_id
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_gateway/test/test_entity_merger.cpp#L74 (Test: areas_merge_by_id)

Test Case: builds_routing_table_for_remote_entities TEST_EntityMerger_builds_routing_table_for_remote_entities
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_gateway/test/test_entity_merger.cpp#L310 (Test: builds_routing_table_for_remote_entities)

Test Case: components_collision_appends_peer_contributor TEST_EntityMerger_components_collision_appends_peer_contributor
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_gateway/test/test_entity_merger.cpp#L439 (Test: components_collision_appends_peer_contributor)

Test Case: components_merge_by_id TEST_EntityMerger_components_merge_by_id
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_gateway/test/test_entity_merger.cpp#L177 (Test: components_merge_by_id)

Test Case: components_remote_only_gets_peer_contributor_only TEST_EntityMerger_components_remote_only_gets_peer_contributor_only
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_gateway/test/test_entity_merger.cpp#L455 (Test: components_remote_only_gets_peer_contributor_only)

Test Case: contributors_no_duplicate_on_repeat_merge TEST_EntityMerger_contributors_no_duplicate_on_repeat_merge
status: verified
verifies: REQ_INTEROP_003

If the same peer is merged twice (defensive check), contributors must stay unique.

Implementation: src/ros2_medkit_gateway/test/test_entity_merger.cpp#L487 (Test: contributors_no_duplicate_on_repeat_merge)

Test Case: functions_merge_by_id_combining_hosts TEST_EntityMerger_functions_merge_by_id_combining_hosts
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_gateway/test/test_entity_merger.cpp#L136 (Test: functions_merge_by_id_combining_hosts)

Test Case: merged_component_hybrid_synthetic_collision_routes_to_peer TEST_EntityMerger_merged_component_hybrid_synthetic_collision_routes_to_peer
status: verified
verifies: REQ_INTEROP_003

Scenario: primary in hybrid mode creates a synthetic component from its namespace (source “node”), and a peer announces a real component with the same ID. The peer is the authoritative owner of runtime state - all sub-resource requests (/logs, /hosts, /data, /operations) must forward to the peer instead of being handled locally.

Implementation: src/ros2_medkit_gateway/test/test_entity_merger.cpp#L361 (Test: merged_component_hybrid_synthetic_collision_routes_to_peer)

Test Case: multi_peer_overlapping_app_ids_no_data_loss TEST_EntityMerger_multi_peer_overlapping_app_ids_no_data_loss
status: verified
verifies: REQ_INTEROP_003

Scenario: local gateway has “camera_driver”, two different peers also have an app named “camera_driver”. After merging both peers sequentially (as AggregationManager does), all three apps must exist with correct routing.

Implementation: src/ros2_medkit_gateway/test/test_entity_merger.cpp#L606 (Test: multi_peer_overlapping_app_ids_no_data_loss)

Test Case: ListFaultsForEntityEmptyResult TEST_FaultEventPublishingTest_ListFaultsForEntityEmptyResult
status: verified
verifies: REQ_INTEROP_012

Report faults from a different entity

Implementation: src/ros2_medkit_fault_manager/test/test_fault_manager.cpp#L1111 (Test: ListFaultsForEntityEmptyResult)

Test Case: ListFaultsForEntitySuccess TEST_FaultEventPublishingTest_ListFaultsForEntitySuccess
status: verified
verifies: REQ_INTEROP_012

Report faults from different sources

Implementation: src/ros2_medkit_fault_manager/test/test_fault_manager.cpp#L1085 (Test: ListFaultsForEntitySuccess)

Test Case: ListFaultsForEntityWithEmptyId TEST_FaultEventPublishingTest_ListFaultsForEntityWithEmptyId
status: verified
verifies: REQ_INTEROP_012

Implementation: src/ros2_medkit_fault_manager/test/test_fault_manager.cpp#L1126 (Test: ListFaultsForEntityWithEmptyId)

Test Case: BuildSovdFaultResponseBasicFields TEST_FaultHandlersTest_BuildSovdFaultResponseBasicFields
status: verified
verifies: REQ_INTEROP_013

Implementation: src/ros2_medkit_gateway/test/test_fault_handlers.cpp#L37 (Test: BuildSovdFaultResponseBasicFields)

Test Case: BuildSovdFaultResponseExtendedDataRecords TEST_FaultHandlersTest_BuildSovdFaultResponseExtendedDataRecords
status: verified
verifies: REQ_INTEROP_013

Implementation: src/ros2_medkit_gateway/test/test_fault_handlers.cpp#L241 (Test: BuildSovdFaultResponseExtendedDataRecords)

Test Case: BuildSovdFaultResponseMixedSnapshots TEST_FaultHandlersTest_BuildSovdFaultResponseMixedSnapshots
status: verified
verifies: REQ_INTEROP_013

Implementation: src/ros2_medkit_gateway/test/test_fault_handlers.cpp#L315 (Test: BuildSovdFaultResponseMixedSnapshots)

Test Case: BuildSovdFaultResponseMultipleSources TEST_FaultHandlersTest_BuildSovdFaultResponseMultipleSources
status: verified
verifies: REQ_INTEROP_013

Implementation: src/ros2_medkit_gateway/test/test_fault_handlers.cpp#L298 (Test: BuildSovdFaultResponseMultipleSources)

Test Case: BuildSovdFaultResponseNestedEntityPath TEST_FaultHandlersTest_BuildSovdFaultResponseNestedEntityPath
status: verified
verifies: REQ_INTEROP_013

Implementation: src/ros2_medkit_gateway/test/test_fault_handlers.cpp#L123 (Test: BuildSovdFaultResponseNestedEntityPath)

Test Case: BuildSovdFaultResponsePrimaryValueExtraction TEST_FaultHandlersTest_BuildSovdFaultResponsePrimaryValueExtraction
status: verified
verifies: REQ_INTEROP_013

Implementation: src/ros2_medkit_gateway/test/test_fault_handlers.cpp#L263 (Test: BuildSovdFaultResponsePrimaryValueExtraction)

Test Case: BuildSovdFaultResponseSeverityLabels TEST_FaultHandlersTest_BuildSovdFaultResponseSeverityLabels
status: verified
verifies: REQ_INTEROP_013

Implementation: src/ros2_medkit_gateway/test/test_fault_handlers.cpp#L172 (Test: BuildSovdFaultResponseSeverityLabels)

Test Case: BuildSovdFaultResponseStatusCleared TEST_FaultHandlersTest_BuildSovdFaultResponseStatusCleared
status: verified
verifies: REQ_INTEROP_013

Implementation: src/ros2_medkit_gateway/test/test_fault_handlers.cpp#L140 (Test: BuildSovdFaultResponseStatusCleared)

Test Case: BuildSovdFaultResponseStatusPassive TEST_FaultHandlersTest_BuildSovdFaultResponseStatusPassive
status: verified
verifies: REQ_INTEROP_013

Implementation: src/ros2_medkit_gateway/test/test_fault_handlers.cpp#L157 (Test: BuildSovdFaultResponseStatusPassive)

Test Case: BuildSovdFaultResponseWithFreezeFrame TEST_FaultHandlersTest_BuildSovdFaultResponseWithFreezeFrame
status: verified
verifies: REQ_INTEROP_013

Implementation: src/ros2_medkit_gateway/test/test_fault_handlers.cpp#L72 (Test: BuildSovdFaultResponseWithFreezeFrame)

Test Case: BuildSovdFaultResponseWithInvalidJson TEST_FaultHandlersTest_BuildSovdFaultResponseWithInvalidJson
status: verified
verifies: REQ_INTEROP_013

Implementation: src/ros2_medkit_gateway/test/test_fault_handlers.cpp#L220 (Test: BuildSovdFaultResponseWithInvalidJson)

Test Case: BuildSovdFaultResponseWithRosbag TEST_FaultHandlersTest_BuildSovdFaultResponseWithRosbag
status: verified
verifies: REQ_INTEROP_013

Implementation: src/ros2_medkit_gateway/test/test_fault_handlers.cpp#L98 (Test: BuildSovdFaultResponseWithRosbag)

Test Case: GetRosbagNotFound TEST_FaultManagerTest_GetRosbagNotFound
status: verified
verifies: REQ_INTEROP_088

Implementation: src/ros2_medkit_gateway/test/test_fault_manager.cpp#L570 (Test: GetRosbagNotFound)

Test Case: GetRosbagServiceNotAvailable TEST_FaultManagerTest_GetRosbagServiceNotAvailable
status: verified
verifies: REQ_INTEROP_088

Implementation: src/ros2_medkit_gateway/test/test_fault_manager.cpp#L307 (Test: GetRosbagServiceNotAvailable)

Test Case: GetRosbagSuccess TEST_FaultManagerTest_GetRosbagSuccess
status: verified
verifies: REQ_INTEROP_088

Implementation: src/ros2_medkit_gateway/test/test_fault_manager.cpp#L321 (Test: GetRosbagSuccess)

Test Case: GetRosbagUsesConfiguredFaultManagerNamespace TEST_FaultManagerTest_GetRosbagUsesConfiguredFaultManagerNamespace
status: verified
verifies: REQ_INTEROP_088

Implementation: src/ros2_medkit_gateway/test/test_fault_manager.cpp#L346 (Test: GetRosbagUsesConfiguredFaultManagerNamespace)

Test Case: GetSnapshotsEmptyResponse TEST_FaultManagerTest_GetSnapshotsEmptyResponse
status: verified
verifies: REQ_INTEROP_088

Implementation: src/ros2_medkit_gateway/test/test_fault_manager.cpp#L286 (Test: GetSnapshotsEmptyResponse)

Test Case: GetSnapshotsErrorResponse TEST_FaultManagerTest_GetSnapshotsErrorResponse
status: verified
verifies: REQ_INTEROP_088

Implementation: src/ros2_medkit_gateway/test/test_fault_manager.cpp#L248 (Test: GetSnapshotsErrorResponse)

Test Case: GetSnapshotsInvalidJsonFallback TEST_FaultManagerTest_GetSnapshotsInvalidJsonFallback
status: verified
verifies: REQ_INTEROP_088

Implementation: src/ros2_medkit_gateway/test/test_fault_manager.cpp#L266 (Test: GetSnapshotsInvalidJsonFallback)

Test Case: GetSnapshotsServiceNotAvailable TEST_FaultManagerTest_GetSnapshotsServiceNotAvailable
status: verified
verifies: REQ_INTEROP_088

Implementation: src/ros2_medkit_gateway/test/test_fault_manager.cpp#L127 (Test: GetSnapshotsServiceNotAvailable)

Test Case: GetSnapshotsSuccessWithTopicFilter TEST_FaultManagerTest_GetSnapshotsSuccessWithTopicFilter
status: verified
verifies: REQ_INTEROP_088

Create mock service that verifies topic filter is passed

Implementation: src/ros2_medkit_gateway/test/test_fault_manager.cpp#L228 (Test: GetSnapshotsSuccessWithTopicFilter)

Test Case: GetSnapshotsSuccessWithValidJson TEST_FaultManagerTest_GetSnapshotsSuccessWithValidJson
status: verified
verifies: REQ_INTEROP_088

Create mock service

Implementation: src/ros2_medkit_gateway/test/test_fault_manager.cpp#L141 (Test: GetSnapshotsSuccessWithValidJson)

Test Case: GetSnapshotsUsesConfiguredFaultManagerNamespace TEST_FaultManagerTest_GetSnapshotsUsesConfiguredFaultManagerNamespace
status: verified
verifies: REQ_INTEROP_088

Implementation: src/ros2_medkit_gateway/test/test_fault_manager.cpp#L170 (Test: GetSnapshotsUsesConfiguredFaultManagerNamespace)

Test Case: ToJson_ContainsRequiredFields TEST_FunctionModelTest_ToJson_ContainsRequiredFields
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_gateway/test/test_discovery_models.cpp#L374 (Test: ToJson_ContainsRequiredFields)

status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_gateway/test/test_function_resource_collections.cpp#L173 (Test: AreaSupportsFaults)

status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_gateway/test/test_function_resource_collections.cpp#L215 (Test: FunctionChildAppIds)

Test Case: FunctionDataAggregatesFromHostedApps TEST_FunctionResourceCollections_FunctionDataAggregatesFromHostedApps
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_gateway/test/test_function_resource_collections.cpp#L304 (Test: FunctionDataAggregatesFromHostedApps)

status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_gateway/test/test_function_resource_collections.cpp#L126 (Test: FunctionSupportsFaults)

Test Case: DefaultAllowsAll TEST_GapFillConfigTest_DefaultAllowsAll
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_gateway/test/test_merge_pipeline.cpp#L533 (Test: DefaultAllowsAll)

Test Case: NamespaceBlacklistFiltersAreas TEST_GapFillConfigTest_NamespaceBlacklistFiltersAreas
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_gateway/test/test_merge_pipeline.cpp#L967 (Test: NamespaceBlacklistFiltersAreas)

Test Case: NamespaceWhitelistFiltersAreas TEST_GapFillConfigTest_NamespaceWhitelistFiltersAreas
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_gateway/test/test_merge_pipeline.cpp#L952 (Test: NamespaceWhitelistFiltersAreas)

Test Case: RegistersFunctionCapabilityOnContext TEST_GraphProviderPluginRouteTest_RegistersFunctionCapabilityOnContext
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_plugins/ros2_medkit_graph_provider/test/test_graph_provider_plugin.cpp#L662 (Test: RegistersFunctionCapabilityOnContext)

Test Case: RegistersSamplerForCyclicSubscriptions TEST_GraphProviderPluginRouteTest_RegistersSamplerForCyclicSubscriptions
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_plugins/ros2_medkit_graph_provider/test/test_graph_provider_plugin.cpp#L736 (Test: RegistersSamplerForCyclicSubscriptions)

Test Case: ServesFunctionGraphFromCachedSnapshot TEST_GraphProviderPluginRouteTest_ServesFunctionGraphFromCachedSnapshot
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_plugins/ros2_medkit_graph_provider/test/test_graph_provider_plugin.cpp#L625 (Test: ServesFunctionGraphFromCachedSnapshot)

Test Case: HandleRootAuthDisabledNoAuthEndpoints TEST_HealthHandlersTest_HandleRootAuthDisabledNoAuthEndpoints
status: verified
verifies: REQ_INTEROP_010

With auth disabled (default), auth endpoints must not appear in the list

Implementation: src/ros2_medkit_gateway/test/test_health_handlers.cpp#L189 (Test: HandleRootAuthDisabledNoAuthEndpoints)

Test Case: HandleRootAuthEnabledAddsAuthEndpoints TEST_HealthHandlersTest_HandleRootAuthEnabledAddsAuthEndpoints
status: verified
verifies: REQ_INTEROP_010

Implementation: src/ros2_medkit_gateway/test/test_health_handlers.cpp#L215 (Test: HandleRootAuthEnabledAddsAuthEndpoints)

Test Case: HandleRootAuthEnabledIncludesAuthMetadataBlock TEST_HealthHandlersTest_HandleRootAuthEnabledIncludesAuthMetadataBlock
status: verified
verifies: REQ_INTEROP_010

Implementation: src/ros2_medkit_gateway/test/test_health_handlers.cpp#L244 (Test: HandleRootAuthEnabledIncludesAuthMetadataBlock)

Test Case: HandleRootCapabilitiesAuthDisabled TEST_HealthHandlersTest_HandleRootCapabilitiesAuthDisabled
status: verified
verifies: REQ_INTEROP_010

Implementation: src/ros2_medkit_gateway/test/test_health_handlers.cpp#L200 (Test: HandleRootCapabilitiesAuthDisabled)

Test Case: HandleRootCapabilitiesContainsDiscovery TEST_HealthHandlersTest_HandleRootCapabilitiesContainsDiscovery
status: verified
verifies: REQ_INTEROP_010

Implementation: src/ros2_medkit_gateway/test/test_health_handlers.cpp#L180 (Test: HandleRootCapabilitiesContainsDiscovery)

Test Case: HandleRootCapabilitiesTlsDisabled TEST_HealthHandlersTest_HandleRootCapabilitiesTlsDisabled
status: verified
verifies: REQ_INTEROP_010

Implementation: src/ros2_medkit_gateway/test/test_health_handlers.cpp#L207 (Test: HandleRootCapabilitiesTlsDisabled)

Test Case: HandleRootEndpointsIsNonEmptyArray TEST_HealthHandlersTest_HandleRootEndpointsIsNonEmptyArray
status: verified
verifies: REQ_INTEROP_010

Implementation: src/ros2_medkit_gateway/test/test_health_handlers.cpp#L172 (Test: HandleRootEndpointsIsNonEmptyArray)

Test Case: HandleRootResponseContainsRequiredTopLevelFields TEST_HealthHandlersTest_HandleRootResponseContainsRequiredTopLevelFields
status: verified
verifies: REQ_INTEROP_010

Implementation: src/ros2_medkit_gateway/test/test_health_handlers.cpp#L158 (Test: HandleRootResponseContainsRequiredTopLevelFields)

Test Case: HandleRootTlsEnabledIncludesTlsMetadataBlock TEST_HealthHandlersTest_HandleRootTlsEnabledIncludesTlsMetadataBlock
status: verified
verifies: REQ_INTEROP_010

Implementation: src/ros2_medkit_gateway/test/test_health_handlers.cpp#L262 (Test: HandleRootTlsEnabledIncludesTlsMetadataBlock)

Test Case: HandleVersionInfoContainsItemsArray TEST_HealthHandlersTest_HandleVersionInfoContainsItemsArray
status: verified
verifies: REQ_INTEROP_001

Implementation: src/ros2_medkit_gateway/test/test_health_handlers.cpp#L119 (Test: HandleVersionInfoContainsItemsArray)

Test Case: HandleVersionInfoItemsEntryHasBaseUri TEST_HealthHandlersTest_HandleVersionInfoItemsEntryHasBaseUri
status: verified
verifies: REQ_INTEROP_001

Implementation: src/ros2_medkit_gateway/test/test_health_handlers.cpp#L138 (Test: HandleVersionInfoItemsEntryHasBaseUri)

Test Case: HandleVersionInfoItemsEntryHasVendorInfo TEST_HealthHandlersTest_HandleVersionInfoItemsEntryHasVendorInfo
status: verified
verifies: REQ_INTEROP_001

Implementation: src/ros2_medkit_gateway/test/test_health_handlers.cpp#L146 (Test: HandleVersionInfoItemsEntryHasVendorInfo)

Test Case: HandleVersionInfoItemsEntryHasVersionField TEST_HealthHandlersTest_HandleVersionInfoItemsEntryHasVersionField
status: verified
verifies: REQ_INTEROP_001

Implementation: src/ros2_medkit_gateway/test/test_health_handlers.cpp#L128 (Test: HandleVersionInfoItemsEntryHasVersionField)

Test Case: creates_default_component TEST_HostInfoProviderTest_creates_default_component
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_gateway/test/test_host_info_provider.cpp#L40 (Test: creates_default_component)

Test Case: sanitizes_hostname_to_valid_entity_id TEST_HostInfoProviderTest_sanitizes_hostname_to_valid_entity_id
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_gateway/test/test_host_info_provider.cpp#L70 (Test: sanitizes_hostname_to_valid_entity_id)

Test Case: ParsesValidIntervals TEST_IntervalParsingTest_ParsesValidIntervals
status: verified
verifies: REQ_INTEROP_089

Implementation: src/ros2_medkit_gateway/test/test_subscription_manager.cpp#L28 (Test: ParsesValidIntervals)

Test Case: ExpiredTriggerMarkedTerminatedOnLoad TEST_LoadPersistentTriggers_ExpiredTriggerMarkedTerminatedOnLoad
status: verified
verifies: REQ_INTEROP_029

Implementation: src/ros2_medkit_gateway/test/test_trigger_manager.cpp#L887 (Test: ExpiredTriggerMarkedTerminatedOnLoad)

Test Case: NewTriggerIdIsHigherThanRestoredId TEST_LoadPersistentTriggers_NewTriggerIdIsHigherThanRestoredId
status: verified
verifies: REQ_INTEROP_029

Implementation: src/ros2_medkit_gateway/test/test_trigger_manager.cpp#L923 (Test: NewTriggerIdIsHigherThanRestoredId)

Test Case: ResetBehaviorDoesNotRestoreTriggers TEST_LoadPersistentTriggers_ResetBehaviorDoesNotRestoreTriggers
status: verified
verifies: REQ_INTEROP_029

Implementation: src/ros2_medkit_gateway/test/test_trigger_manager.cpp#L862 (Test: ResetBehaviorDoesNotRestoreTriggers)

Test Case: RestoreBehaviorLoadsActiveTrigger TEST_LoadPersistentTriggers_RestoreBehaviorLoadsActiveTrigger
status: verified
verifies: REQ_INTEROP_029

Implementation: src/ros2_medkit_gateway/test/test_trigger_manager.cpp#L831 (Test: RestoreBehaviorLoadsActiveTrigger)

Test Case: test_acquire_already_locked TEST_LockManagerTest_test_acquire_already_locked
status: verified
verifies: REQ_INTEROP_100

Implementation: src/ros2_medkit_gateway/test/test_lock_manager.cpp#L123 (Test: test_acquire_already_locked)

Test Case: test_acquire_break_lock TEST_LockManagerTest_test_acquire_break_lock
status: verified
verifies: REQ_INTEROP_100

Implementation: src/ros2_medkit_gateway/test/test_lock_manager.cpp#L138 (Test: test_acquire_break_lock)

Test Case: test_acquire_break_lock_not_breakable TEST_LockManagerTest_test_acquire_break_lock_not_breakable
status: verified
verifies: REQ_INTEROP_100

Implementation: src/ros2_medkit_gateway/test/test_lock_manager.cpp#L158 (Test: test_acquire_break_lock_not_breakable)

Test Case: test_acquire_invalid_expiration TEST_LockManagerTest_test_acquire_invalid_expiration
status: verified
verifies: REQ_INTEROP_100

Implementation: src/ros2_medkit_gateway/test/test_lock_manager.cpp#L183 (Test: test_acquire_invalid_expiration)

Test Case: test_acquire_invalid_scope TEST_LockManagerTest_test_acquire_invalid_scope
status: verified
verifies: REQ_INTEROP_100

Implementation: src/ros2_medkit_gateway/test/test_lock_manager.cpp#L173 (Test: test_acquire_invalid_scope)

Test Case: test_acquire_lock_basic TEST_LockManagerTest_test_acquire_lock_basic
status: verified
verifies: REQ_INTEROP_100

Implementation: src/ros2_medkit_gateway/test/test_lock_manager.cpp#L84 (Test: test_acquire_lock_basic)

Test Case: test_acquire_lock_full TEST_LockManagerTest_test_acquire_lock_full
status: verified
verifies: REQ_INTEROP_100

Implementation: src/ros2_medkit_gateway/test/test_lock_manager.cpp#L112 (Test: test_acquire_lock_full)

Test Case: test_acquire_lock_scoped TEST_LockManagerTest_test_acquire_lock_scoped
status: verified
verifies: REQ_INTEROP_100

Implementation: src/ros2_medkit_gateway/test/test_lock_manager.cpp#L100 (Test: test_acquire_lock_scoped)

Test Case: test_check_access_area_propagation TEST_LockManagerTest_test_check_access_area_propagation
status: verified
verifies: REQ_INTEROP_100

Implementation: src/ros2_medkit_gateway/test/test_lock_manager.cpp#L415 (Test: test_check_access_area_propagation)

Test Case: test_check_access_not_owner TEST_LockManagerTest_test_check_access_not_owner
status: verified
verifies: REQ_INTEROP_100

Implementation: src/ros2_medkit_gateway/test/test_lock_manager.cpp#L352 (Test: test_check_access_not_owner)

Test Case: test_check_access_owner TEST_LockManagerTest_test_check_access_owner
status: verified
verifies: REQ_INTEROP_100

Implementation: src/ros2_medkit_gateway/test/test_lock_manager.cpp#L342 (Test: test_check_access_owner)

Test Case: test_check_access_parent_propagation TEST_LockManagerTest_test_check_access_parent_propagation
status: verified
verifies: REQ_INTEROP_100

Implementation: src/ros2_medkit_gateway/test/test_lock_manager.cpp#L393 (Test: test_check_access_parent_propagation)

Test Case: test_check_access_partial_scope_propagation TEST_LockManagerTest_test_check_access_partial_scope_propagation
status: verified
verifies: REQ_INTEROP_100

Implementation: src/ros2_medkit_gateway/test/test_lock_manager.cpp#L438 (Test: test_check_access_partial_scope_propagation)

Test Case: test_check_access_scoped_match TEST_LockManagerTest_test_check_access_scoped_match
status: verified
verifies: REQ_INTEROP_100

Implementation: src/ros2_medkit_gateway/test/test_lock_manager.cpp#L365 (Test: test_check_access_scoped_match)

Test Case: test_check_access_scoped_no_match TEST_LockManagerTest_test_check_access_scoped_no_match
status: verified
verifies: REQ_INTEROP_100

Implementation: src/ros2_medkit_gateway/test/test_lock_manager.cpp#L381 (Test: test_check_access_scoped_no_match)

Test Case: test_check_access_unlocked TEST_LockManagerTest_test_check_access_unlocked
status: verified
verifies: REQ_INTEROP_100

Implementation: src/ros2_medkit_gateway/test/test_lock_manager.cpp#L333 (Test: test_check_access_unlocked)

Test Case: test_cleanup_expired TEST_LockManagerTest_test_cleanup_expired
status: verified
verifies: REQ_INTEROP_100

Implementation: src/ros2_medkit_gateway/test/test_lock_manager.cpp#L458 (Test: test_cleanup_expired)

Test Case: test_cleanup_not_expired TEST_LockManagerTest_test_cleanup_not_expired
status: verified
verifies: REQ_INTEROP_100

Implementation: src/ros2_medkit_gateway/test/test_lock_manager.cpp#L481 (Test: test_cleanup_not_expired)

Test Case: test_config_disabled TEST_LockManagerTest_test_config_disabled
status: verified
verifies: REQ_INTEROP_100

Implementation: src/ros2_medkit_gateway/test/test_lock_manager.cpp#L544 (Test: test_config_disabled)

Test Case: test_extend_lock TEST_LockManagerTest_test_extend_lock
status: verified
verifies: REQ_INTEROP_100

Implementation: src/ros2_medkit_gateway/test/test_lock_manager.cpp#L252 (Test: test_extend_lock)

Test Case: test_extend_not_found TEST_LockManagerTest_test_extend_not_found
status: verified
verifies: REQ_INTEROP_100

Implementation: src/ros2_medkit_gateway/test/test_lock_manager.cpp#L283 (Test: test_extend_not_found)

Test Case: test_extend_not_owner TEST_LockManagerTest_test_extend_not_owner
status: verified
verifies: REQ_INTEROP_100

Implementation: src/ros2_medkit_gateway/test/test_lock_manager.cpp#L271 (Test: test_extend_not_owner)

Test Case: test_get_lock TEST_LockManagerTest_test_get_lock
status: verified
verifies: REQ_INTEROP_100

Implementation: src/ros2_medkit_gateway/test/test_lock_manager.cpp#L297 (Test: test_get_lock)

Test Case: test_get_lock_by_id TEST_LockManagerTest_test_get_lock_by_id
status: verified
verifies: REQ_INTEROP_100

Implementation: src/ros2_medkit_gateway/test/test_lock_manager.cpp#L313 (Test: test_get_lock_by_id)

Test Case: test_lock_required_different_collection_not_blocked TEST_LockManagerTest_test_lock_required_different_collection_not_blocked
status: verified
verifies: REQ_INTEROP_100

Implementation: src/ros2_medkit_gateway/test/test_lock_manager.cpp#L527 (Test: test_lock_required_different_collection_not_blocked)

Test Case: test_lock_required_has_lock TEST_LockManagerTest_test_lock_required_has_lock
status: verified
verifies: REQ_INTEROP_100

Implementation: src/ros2_medkit_gateway/test/test_lock_manager.cpp#L512 (Test: test_lock_required_has_lock)

Test Case: test_lock_required_no_lock_held TEST_LockManagerTest_test_lock_required_no_lock_held
status: verified
verifies: REQ_INTEROP_100

Implementation: src/ros2_medkit_gateway/test/test_lock_manager.cpp#L498 (Test: test_lock_required_no_lock_held)

Test Case: test_release_lock TEST_LockManagerTest_test_release_lock
status: verified
verifies: REQ_INTEROP_100

Implementation: src/ros2_medkit_gateway/test/test_lock_manager.cpp#L208 (Test: test_release_lock)

Test Case: test_release_not_found TEST_LockManagerTest_test_release_not_found
status: verified
verifies: REQ_INTEROP_100

Implementation: src/ros2_medkit_gateway/test/test_lock_manager.cpp#L238 (Test: test_release_not_found)

Test Case: test_release_not_owner TEST_LockManagerTest_test_release_not_owner
status: verified
verifies: REQ_INTEROP_100

Implementation: src/ros2_medkit_gateway/test/test_lock_manager.cpp#L223 (Test: test_release_not_owner)

Test Case: GetLogsBadRequestBodyContainsInvalidRequestErrorCode TEST_LogHandlersTest_GetLogsBadRequestBodyContainsInvalidRequestErrorCode
status: verified
verifies: REQ_INTEROP_061

Implementation: src/ros2_medkit_gateway/test/test_log_handlers.cpp#L64 (Test: GetLogsBadRequestBodyContainsInvalidRequestErrorCode)

Test Case: GetLogsBadRequestBodyIsValidJson TEST_LogHandlersTest_GetLogsBadRequestBodyIsValidJson
status: verified
verifies: REQ_INTEROP_061

Implementation: src/ros2_medkit_gateway/test/test_log_handlers.cpp#L56 (Test: GetLogsBadRequestBodyIsValidJson)

Test Case: GetLogsConfigurationBadRequestBodyContainsInvalidRequestErrorCode TEST_LogHandlersTest_GetLogsConfigurationBadRequestBodyContainsInvalidRequestErrorCode
status: verified
verifies: REQ_INTEROP_063

Implementation: src/ros2_medkit_gateway/test/test_log_handlers.cpp#L94 (Test: GetLogsConfigurationBadRequestBodyContainsInvalidRequestErrorCode)

Test Case: GetLogsConfigurationBadRequestBodyIsValidJson TEST_LogHandlersTest_GetLogsConfigurationBadRequestBodyIsValidJson
status: verified
verifies: REQ_INTEROP_063

Implementation: src/ros2_medkit_gateway/test/test_log_handlers.cpp#L86 (Test: GetLogsConfigurationBadRequestBodyIsValidJson)

Test Case: GetLogsConfigurationReturnsBadRequestWhenMatchesMissing TEST_LogHandlersTest_GetLogsConfigurationReturnsBadRequestWhenMatchesMissing
status: verified
verifies: REQ_INTEROP_063

Implementation: src/ros2_medkit_gateway/test/test_log_handlers.cpp#L78 (Test: GetLogsConfigurationReturnsBadRequestWhenMatchesMissing)

Test Case: GetLogsReturnsBadRequestWhenMatchesMissing TEST_LogHandlersTest_GetLogsReturnsBadRequestWhenMatchesMissing
status: verified
verifies: REQ_INTEROP_061

Default-constructed req has empty matches (size 0 < 2)

Implementation: src/ros2_medkit_gateway/test/test_log_handlers.cpp#L47 (Test: GetLogsReturnsBadRequestWhenMatchesMissing)

Test Case: PutLogsConfigurationBadRequestBodyContainsInvalidRequestErrorCode TEST_LogHandlersTest_PutLogsConfigurationBadRequestBodyContainsInvalidRequestErrorCode
status: verified
verifies: REQ_INTEROP_064

Implementation: src/ros2_medkit_gateway/test/test_log_handlers.cpp#L124 (Test: PutLogsConfigurationBadRequestBodyContainsInvalidRequestErrorCode)

Test Case: PutLogsConfigurationBadRequestBodyIsValidJson TEST_LogHandlersTest_PutLogsConfigurationBadRequestBodyIsValidJson
status: verified
verifies: REQ_INTEROP_064

Implementation: src/ros2_medkit_gateway/test/test_log_handlers.cpp#L116 (Test: PutLogsConfigurationBadRequestBodyIsValidJson)

Test Case: PutLogsConfigurationReturnsBadRequestWhenMatchesMissing TEST_LogHandlersTest_PutLogsConfigurationReturnsBadRequestWhenMatchesMissing
status: verified
verifies: REQ_INTEROP_064

Implementation: src/ros2_medkit_gateway/test/test_log_handlers.cpp#L108 (Test: PutLogsConfigurationReturnsBadRequestWhenMatchesMissing)

Test Case: AddLogEntry_EmptyMetadataNoSuffix TEST_LogManagerBufferTest_AddLogEntry_EmptyMetadataNoSuffix
status: verified
verifies: REQ_INTEROP_061

Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L364 (Test: AddLogEntry_EmptyMetadataNoSuffix)

Test Case: AddLogEntry_EntryRetrievable TEST_LogManagerBufferTest_AddLogEntry_EntryRetrievable
status: verified
verifies: REQ_INTEROP_061

Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L326 (Test: AddLogEntry_EntryRetrievable)

Test Case: AddLogEntry_InvalidSeverityFallsBackToInfo TEST_LogManagerBufferTest_AddLogEntry_InvalidSeverityFallsBackToInfo
status: verified
verifies: REQ_INTEROP_061

“verbose” is not a valid SOVD severity; implementation falls back to INFO (level 20)

Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L338 (Test: AddLogEntry_InvalidSeverityFallsBackToInfo)

Test Case: AddLogEntry_MetadataAppendedToMessage TEST_LogManagerBufferTest_AddLogEntry_MetadataAppendedToMessage
status: verified
verifies: REQ_INTEROP_061

Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L350 (Test: AddLogEntry_MetadataAppendedToMessage)

Test Case: BufferCapDropsNewNodesWhenFull TEST_LogManagerBufferTest_BufferCapDropsNewNodesWhenFull
status: verified
verifies: REQ_INTEROP_061

LogManager was created with buffer size 3 in the fixture. Buffer cap = size * 10 = 30 distinct nodes. Create a fresh manager with buffer size 5 so cap = 50.

Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L881 (Test: BufferCapDropsNewNodesWhenFull)

Test Case: ContextFilterMatchesSubstring TEST_LogManagerBufferTest_ContextFilterMatchesSubstring
status: verified
verifies: REQ_INTEROP_061

Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L281 (Test: ContextFilterMatchesSubstring)

Test Case: FqnWithLeadingSlashMatchesBuffer TEST_LogManagerBufferTest_FqnWithLeadingSlashMatchesBuffer
status: verified
verifies: REQ_INTEROP_061

Buffer stores entries under “my_ns/my_node” (no leading slash) Entity FQN from entity cache is “/my_ns/my_node” (with leading slash) get_logs() must normalize and still find the entries

Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L213 (Test: FqnWithLeadingSlashMatchesBuffer)

Test Case: GetConfigReturnsDefaultsForUnknownEntity TEST_LogManagerBufferTest_GetConfigReturnsDefaultsForUnknownEntity
status: verified
verifies: REQ_INTEROP_063

Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L387 (Test: GetConfigReturnsDefaultsForUnknownEntity)

Test Case: GetLogsMatchesDotNotationLoggerNames TEST_LogManagerBufferTest_GetLogsMatchesDotNotationLoggerNames
status: verified
verifies: REQ_INTEROP_061

ROS 2 rosout messages carry logger names using ‘.’ as separator (e.g. “powertrain.engine.temp_sensor”) while entity FQNs use ‘/’. get_logs() must match entries stored under dot-format keys.

Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L294 (Test: GetLogsMatchesDotNotationLoggerNames)

Test Case: GetLogsPrefixMatchesDotNotationLoggerNames TEST_LogManagerBufferTest_GetLogsPrefixMatchesDotNotationLoggerNames
status: verified
verifies: REQ_INTEROP_061

Component namespace prefix matching must also work against dot-format logger names.

Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L309 (Test: GetLogsPrefixMatchesDotNotationLoggerNames)

Test Case: MaxEntriesCapsMostRecentEntries TEST_LogManagerBufferTest_MaxEntriesCapsMostRecentEntries
status: verified
verifies: REQ_INTEROP_061

Inject 5 entries, set max_entries=2 via config

Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L265 (Test: MaxEntriesCapsMostRecentEntries)

Test Case: PartialConfigUpdatePreservesOtherField TEST_LogManagerBufferTest_PartialConfigUpdatePreservesOtherField
status: verified
verifies: REQ_INTEROP_064

Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L395 (Test: PartialConfigUpdatePreservesOtherField)

Test Case: PrefixMatchDoesNotFalsePositiveOnSubstring TEST_LogManagerBufferTest_PrefixMatchDoesNotFalsePositiveOnSubstring
status: verified
verifies: REQ_INTEROP_061

“engine” must NOT match “engine_control” (only full namespace segments)

Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L255 (Test: PrefixMatchDoesNotFalsePositiveOnSubstring)

Test Case: PrefixMatchIncludesChildNamespaces TEST_LogManagerBufferTest_PrefixMatchIncludesChildNamespaces
status: verified
verifies: REQ_INTEROP_061

Component “engine” prefix-matches “engine/temp_sensor” and “engine/pressure” but NOT “engine_control/sensor” (different namespace)

Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L240 (Test: PrefixMatchIncludesChildNamespaces)

Test Case: RingBufferEvictsOldestEntryWhenFull TEST_LogManagerBufferTest_RingBufferEvictsOldestEntryWhenFull
status: verified
verifies: REQ_INTEROP_061

Buffer size is 3; inject 4 entries for the same node

Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L196 (Test: RingBufferEvictsOldestEntryWhenFull)

Test Case: SeverityFilterExcludesLowerLevels TEST_LogManagerBufferTest_SeverityFilterExcludesLowerLevels
status: verified
verifies: REQ_INTEROP_061

inject debug(10), info(20), warning(30)

Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L226 (Test: SeverityFilterExcludesLowerLevels)

Test Case: UpdateConfigRejectsInvalidSeverity TEST_LogManagerBufferTest_UpdateConfigRejectsInvalidSeverity
status: verified
verifies: REQ_INTEROP_064

Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L375 (Test: UpdateConfigRejectsInvalidSeverity)

Test Case: UpdateConfigRejectsZeroMaxEntries TEST_LogManagerBufferTest_UpdateConfigRejectsZeroMaxEntries
status: verified
verifies: REQ_INTEROP_064

Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L381 (Test: UpdateConfigRejectsZeroMaxEntries)

status: verified
verifies: REQ_INTEROP_061

Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L148 (Test: AllSeverityLevels)

status: verified
verifies: REQ_INTEROP_061

Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L97 (Test: BasicFields)

Test Case: EmptyOptionalFieldsOmitted TEST_LogManagerEntryToJsonTest_EmptyOptionalFieldsOmitted
status: verified
verifies: REQ_INTEROP_061

Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L127 (Test: EmptyOptionalFieldsOmitted)

Test Case: NormalizeEmptyStringUnchanged TEST_LogManagerFqnTest_NormalizeEmptyStringUnchanged
status: verified
verifies: REQ_INTEROP_061

Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L92 (Test: NormalizeEmptyStringUnchanged)

Test Case: NormalizeNoLeadingSlashUnchanged TEST_LogManagerFqnTest_NormalizeNoLeadingSlashUnchanged
status: verified
verifies: REQ_INTEROP_061

Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L86 (Test: NormalizeNoLeadingSlashUnchanged)

Test Case: NormalizeStripsLeadingSlash TEST_LogManagerFqnTest_NormalizeStripsLeadingSlash
status: verified
verifies: REQ_INTEROP_061

Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L80 (Test: NormalizeStripsLeadingSlash)

Test Case: DefaultManagesIngestionPreservesCurrentBehavior TEST_LogManagerIngestionTest_DefaultManagesIngestionPreservesCurrentBehavior
status: verified
verifies: REQ_INTEROP_061

Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L661 (Test: DefaultManagesIngestionPreservesCurrentBehavior)

Test Case: ManagesIngestionDelegatesToPlugin TEST_LogManagerIngestionTest_ManagesIngestionDelegatesToPlugin
status: verified
verifies: REQ_INTEROP_061

Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L591 (Test: ManagesIngestionDelegatesToPlugin)

Test Case: ManagesIngestionGetConfigDelegatesToPlugin TEST_LogManagerIngestionTest_ManagesIngestionGetConfigDelegatesToPlugin
status: verified
verifies: REQ_INTEROP_063

Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L623 (Test: ManagesIngestionGetConfigDelegatesToPlugin)

Test Case: ManagesIngestionLocalBufferBypassed TEST_LogManagerIngestionTest_ManagesIngestionLocalBufferBypassed
status: verified
verifies: REQ_INTEROP_061

Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L641 (Test: ManagesIngestionLocalBufferBypassed)

Test Case: ManagesIngestionStillValidatesBeforeDelegation TEST_LogManagerIngestionTest_ManagesIngestionStillValidatesBeforeDelegation
status: verified
verifies: REQ_INTEROP_064

Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L694 (Test: ManagesIngestionStillValidatesBeforeDelegation)

Test Case: ManagesIngestionUpdateConfigDelegatesToPlugin TEST_LogManagerIngestionTest_ManagesIngestionUpdateConfigDelegatesToPlugin
status: verified
verifies: REQ_INTEROP_064

Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L608 (Test: ManagesIngestionUpdateConfigDelegatesToPlugin)

Test Case: NoPluginPreservesDefaultBehavior TEST_LogManagerIngestionTest_NoPluginPreservesDefaultBehavior
status: verified
verifies: REQ_INTEROP_061

No plugin manager at all - ring buffer works as before

Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L679 (Test: NoPluginPreservesDefaultBehavior)

Test Case: PluginGetConfigThrowReturnsError TEST_LogManagerIngestionTest_PluginGetConfigThrowReturnsError
status: verified
verifies: REQ_INTEROP_063

Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L725 (Test: PluginGetConfigThrowReturnsError)

Test Case: PluginGetLogsThrowReturnsError TEST_LogManagerIngestionTest_PluginGetLogsThrowReturnsError
status: verified
verifies: REQ_INTEROP_061

Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L714 (Test: PluginGetLogsThrowReturnsError)

Test Case: ResolverMatchesBareNameReturnsEntityId TEST_LogManagerResolverTest_ResolverMatchesBareNameReturnsEntityId
status: verified
verifies: REQ_INTEROP_061

Resolver returns “my_app” when called with bare name (no leading slash)

Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L841 (Test: ResolverMatchesBareNameReturnsEntityId)

Test Case: ResolverMatchesWithSlashPrefixReturnsEntityId TEST_LogManagerResolverTest_ResolverMatchesWithSlashPrefixReturnsEntityId
status: verified
verifies: REQ_INTEROP_061

Resolver returns “temp_sensor_app” when called with “/powertrain/temp_sensor”

Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L820 (Test: ResolverMatchesWithSlashPrefixReturnsEntityId)

Test Case: ResolverReturnsEmptyFallsBackToLastSegment TEST_LogManagerResolverTest_ResolverReturnsEmptyFallsBackToLastSegment
status: verified
verifies: REQ_INTEROP_061

Resolver always returns empty -> on_rosout falls back to last path segment

Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L860 (Test: ResolverReturnsEmptyFallsBackToLastSegment)

status: verified
verifies: REQ_INTEROP_061

Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L66 (Test: IsValidSeverity)

Test Case: LevelToSeverityMapping TEST_LogManagerSeverityTest_LevelToSeverityMapping
status: verified
verifies: REQ_INTEROP_061

Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L40 (Test: LevelToSeverityMapping)

Test Case: SeverityToLevelMapping TEST_LogManagerSeverityTest_SeverityToLevelMapping
status: verified
verifies: REQ_INTEROP_061

Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L52 (Test: SeverityToLevelMapping)

Test Case: DefaultPolicies TEST_ManifestLayerTest_DefaultPolicies
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_gateway/test/test_merge_pipeline.cpp#L347 (Test: DefaultPolicies)

Test Case: ParseScripts TEST_ManifestParserTest_ParseScripts
status: verified
verifies: REQ_INTEROP_041

Implementation: src/ros2_medkit_gateway/test/test_manifest_parser.cpp#L273 (Test: ParseScripts)

Test Case: ParseScriptsMissingFormat TEST_ManifestParserTest_ParseScriptsMissingFormat
status: verified
verifies: REQ_INTEROP_041

Implementation: src/ros2_medkit_gateway/test/test_manifest_parser.cpp#L427 (Test: ParseScriptsMissingFormat)

Test Case: ParseScriptsMissingId TEST_ManifestParserTest_ParseScriptsMissingId
status: verified
verifies: REQ_INTEROP_041

Implementation: src/ros2_medkit_gateway/test/test_manifest_parser.cpp#L403 (Test: ParseScriptsMissingId)

Test Case: ParseScriptsMissingPath TEST_ManifestParserTest_ParseScriptsMissingPath
status: verified
verifies: REQ_INTEROP_041

Implementation: src/ros2_medkit_gateway/test/test_manifest_parser.cpp#L415 (Test: ParseScriptsMissingPath)

Test Case: ParseScriptsTimeoutClampedToMinimum TEST_ManifestParserTest_ParseScriptsTimeoutClampedToMinimum
status: verified
verifies: REQ_INTEROP_041

Implementation: src/ros2_medkit_gateway/test/test_manifest_parser.cpp#L439 (Test: ParseScriptsTimeoutClampedToMinimum)

Test Case: default_config_values TEST_MdnsDiscovery_default_config_values
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_gateway/test/test_mdns_discovery.cpp#L30 (Test: default_config_values)

Test Case: instance_name_returns_explicit_name TEST_MdnsDiscovery_instance_name_returns_explicit_name
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_gateway/test/test_mdns_discovery.cpp#L263 (Test: instance_name_returns_explicit_name)

Test Case: respects_announce_flag TEST_MdnsDiscovery_respects_announce_flag
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_gateway/test/test_mdns_discovery.cpp#L42 (Test: respects_announce_flag)

Test Case: start_announce_on_ephemeral_port_does_not_crash TEST_MdnsDiscovery_start_announce_on_ephemeral_port_does_not_crash
status: verified
verifies: REQ_INTEROP_003

Exercise the socket creation path. In CI containers mDNS port 5353 may not be available (requires CAP_NET_BIND_SERVICE or root). The announce_loop should handle the failure gracefully via the error callback rather than crashing.

Implementation: src/ros2_medkit_gateway/test/test_mdns_discovery.cpp#L362 (Test: start_announce_on_ephemeral_port_does_not_crash)

Test Case: AppStatusMerge_BoolOrSemantics TEST_MergePipelineTest_AppStatusMerge_BoolOrSemantics
status: verified
verifies: REQ_INTEROP_003

Two layers provide the same App with different is_online values

Implementation: src/ros2_medkit_gateway/test/test_merge_pipeline.cpp#L857 (Test: AppStatusMerge_BoolOrSemantics)

Test Case: LayerExceptionDoesNotCrashPipeline TEST_MergePipelineTest_LayerExceptionDoesNotCrashPipeline
status: verified
verifies: REQ_INTEROP_003

A good layer followed by a throwing layer - good layer’s data should survive

Implementation: src/ros2_medkit_gateway/test/test_merge_pipeline.cpp#L999 (Test: LayerExceptionDoesNotCrashPipeline)

Test Case: PluginReceivesDiscoveryContext TEST_MergePipelineTest_PluginReceivesDiscoveryContext
status: verified
verifies: REQ_INTEROP_003

Manifest layer provides a component

Implementation: src/ros2_medkit_gateway/test/test_merge_pipeline.cpp#L451 (Test: PluginReceivesDiscoveryContext)

Test Case: ThreeLayerMerge_PerFieldGroupOwnerTracking TEST_MergePipelineTest_ThreeLayerMerge_PerFieldGroupOwnerTracking
status: verified
verifies: REQ_INTEROP_003

Regression test: verify that when Runtime wins STATUS (AUTH) over Manifest (FALLBACK), a Plugin (ENRICH) cannot override Runtime’s authoritative STATUS. Previously, owner_layer_idx was fixed to first layer, so Plugin compared against Manifest’s FALLBACK policy instead of Runtime’s AUTH, incorrectly winning STATUS.

Implementation: src/ros2_medkit_gateway/test/test_merge_pipeline.cpp#L883 (Test: ThreeLayerMerge_PerFieldGroupOwnerTracking)

Test Case: ThreeLayerMerge_PluginEnrichesManifestEntity TEST_MergePipelineTest_ThreeLayerMerge_PluginEnrichesManifestEntity
status: verified
verifies: REQ_INTEROP_003

Manifest: component “engine” with AUTHORITATIVE identity

Implementation: src/ros2_medkit_gateway/test/test_merge_pipeline.cpp#L800 (Test: ThreeLayerMerge_PluginEnrichesManifestEntity)

Test Case: MergePolicyValues TEST_MergeTypesTest_MergePolicyValues
status: verified
verifies: REQ_INTEROP_003

Verify enum values exist and are distinct

Implementation: src/ros2_medkit_gateway/test/test_merge_pipeline.cpp#L65 (Test: MergePolicyValues)

Test Case: AlwaysIncludesGenericErrorResponse TEST_OpenApiSpecBuilderTest_AlwaysIncludesGenericErrorResponse
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_openapi_spec_builder.cpp#L189 (Test: AlwaysIncludesGenericErrorResponse)

Test Case: BuildContainsComponentsSchemas TEST_OpenApiSpecBuilderTest_BuildContainsComponentsSchemas
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_openapi_spec_builder.cpp#L167 (Test: BuildContainsComponentsSchemas)

Test Case: BuildContainsInfoBlock TEST_OpenApiSpecBuilderTest_BuildContainsInfoBlock
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_openapi_spec_builder.cpp#L39 (Test: BuildContainsInfoBlock)

Test Case: BuildContainsPathsObject TEST_OpenApiSpecBuilderTest_BuildContainsPathsObject
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_openapi_spec_builder.cpp#L131 (Test: BuildContainsPathsObject)

Test Case: BuildContainsServersArray TEST_OpenApiSpecBuilderTest_BuildContainsServersArray
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_openapi_spec_builder.cpp#L91 (Test: BuildContainsServersArray)

Test Case: BuildContainsSovdVersion TEST_OpenApiSpecBuilderTest_BuildContainsSovdVersion
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_openapi_spec_builder.cpp#L47 (Test: BuildContainsSovdVersion)

Test Case: BuildProducesOpenApi310Version TEST_OpenApiSpecBuilderTest_BuildProducesOpenApi310Version
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_openapi_spec_builder.cpp#L32 (Test: BuildProducesOpenApi310Version)

Test Case: FluentInterfaceChaining TEST_OpenApiSpecBuilderTest_FluentInterfaceChaining
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_openapi_spec_builder.cpp#L265 (Test: FluentInterfaceChaining)

Test Case: GenericErrorSchemaAlwaysPresent TEST_OpenApiSpecBuilderTest_GenericErrorSchemaAlwaysPresent
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_openapi_spec_builder.cpp#L331 (Test: GenericErrorSchemaAlwaysPresent)

Test Case: NonEmptySchemasArePresentInOutput TEST_OpenApiSpecBuilderTest_NonEmptySchemasArePresentInOutput
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_openapi_spec_builder.cpp#L341 (Test: NonEmptySchemasArePresentInOutput)

Test Case: SecuritySchemeAddsToComponents TEST_OpenApiSpecBuilderTest_SecuritySchemeAddsToComponents
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_openapi_spec_builder.cpp#L225 (Test: SecuritySchemeAddsToComponents)

Test Case: DataCollectionWithTopic TEST_ParseResourceUriTest_DataCollectionWithTopic
status: verified
verifies: REQ_INTEROP_089

Implementation: src/ros2_medkit_gateway/test/test_cyclic_subscription_handlers.cpp#L31 (Test: DataCollectionWithTopic)

Test Case: UpdateStatusUri TEST_ParseResourceUriTest_UpdateStatusUri
status: verified
verifies: REQ_INTEROP_089

Implementation: src/ros2_medkit_gateway/test/test_cyclic_subscription_handlers.cpp#L137 (Test: UpdateStatusUri)

Test Case: ActionOperationHasGetAndPost TEST_PathBuilderTest_ActionOperationHasGetAndPost
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_path_builder.cpp#L257 (Test: ActionOperationHasGetAndPost)

Test Case: BulkDataHasGet TEST_PathBuilderTest_BulkDataHasGet
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_path_builder.cpp#L381 (Test: BulkDataHasGet)

Test Case: ConfigurationsHasGetAndDelete TEST_PathBuilderTest_ConfigurationsHasGetAndDelete
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_path_builder.cpp#L288 (Test: ConfigurationsHasGetAndDelete)

Test Case: CyclicSubscriptionsHasGetAndPost TEST_PathBuilderTest_CyclicSubscriptionsHasGetAndPost
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_path_builder.cpp#L392 (Test: CyclicSubscriptionsHasGetAndPost)

Test Case: DataCollectionHasGet TEST_PathBuilderTest_DataCollectionHasGet
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_path_builder.cpp#L132 (Test: DataCollectionHasGet)

Test Case: DataItemGetAlwaysPresent TEST_PathBuilderTest_DataItemGetAlwaysPresent
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_path_builder.cpp#L152 (Test: DataItemGetAlwaysPresent)

Test Case: DataItemPutForSubscribeTopic TEST_PathBuilderTest_DataItemPutForSubscribeTopic
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_path_builder.cpp#L160 (Test: DataItemPutForSubscribeTopic)

Test Case: EntityCollectionHasGet TEST_PathBuilderTest_EntityCollectionHasGet
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_path_builder.cpp#L40 (Test: EntityCollectionHasGet)

Test Case: EntityDetailConcretePathOmitsParameters TEST_PathBuilderTest_EntityDetailConcretePathOmitsParameters
status: verified
verifies: REQ_INTEROP_002

When use_template=false (concrete entity path), no path parameters should be declared. OpenAPI 3.1.0 requires path params to match {placeholders} in the path key.

Implementation: src/ros2_medkit_gateway/test/test_path_builder.cpp#L107 (Test: EntityDetailConcretePathOmitsParameters)

Test Case: EntityDetailHasGet TEST_PathBuilderTest_EntityDetailHasGet
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_path_builder.cpp#L90 (Test: EntityDetailHasGet)

Test Case: EntityDetailTemplatePathHasParameters TEST_PathBuilderTest_EntityDetailTemplatePathHasParameters
status: verified
verifies: REQ_INTEROP_002

Default (use_template=true) should still include path parameters

Implementation: src/ros2_medkit_gateway/test/test_path_builder.cpp#L118 (Test: EntityDetailTemplatePathHasParameters)

Test Case: ErrorResponsesWithoutAuth TEST_PathBuilderTest_ErrorResponsesWithoutAuth
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_path_builder.cpp#L437 (Test: ErrorResponsesWithoutAuth)

Test Case: FaultsHasGetAndDelete TEST_PathBuilderTest_FaultsHasGetAndDelete
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_path_builder.cpp#L320 (Test: FaultsHasGetAndDelete)

Test Case: LogsHasGet TEST_PathBuilderTest_LogsHasGet
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_path_builder.cpp#L348 (Test: LogsHasGet)

Test Case: OperationsCollectionHasGet TEST_PathBuilderTest_OperationsCollectionHasGet
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_path_builder.cpp#L204 (Test: OperationsCollectionHasGet)

Test Case: ServiceOperationHasGetAndPost TEST_PathBuilderTest_ServiceOperationHasGetAndPost
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_path_builder.cpp#L226 (Test: ServiceOperationHasGetAndPost)

Test Case: SseEndpointHasGet TEST_PathBuilderTest_SseEndpointHasGet
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_path_builder.cpp#L415 (Test: SseEndpointHasGet)

Test Case: DeepNestedPath TEST_PathResolverTest_DeepNestedPath
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_path_resolver.cpp#L73 (Test: DeepNestedPath)

Test Case: EntityCollection TEST_PathResolverTest_EntityCollection
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_path_resolver.cpp#L37 (Test: EntityCollection)

Test Case: HostsIsResourceCollection TEST_PathResolverTest_HostsIsResourceCollection
status: verified
verifies: REQ_INTEROP_002

“hosts” is a sub-resource of components/functions, not a top-level entity type

Implementation: src/ros2_medkit_gateway/test/test_path_resolver.cpp#L175 (Test: HostsIsResourceCollection)

Test Case: HostsUnderFunctionsIsResourceCollection TEST_PathResolverTest_HostsUnderFunctionsIsResourceCollection
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_path_resolver.cpp#L185 (Test: HostsUnderFunctionsIsResourceCollection)

Test Case: MultiSegmentResourceId TEST_PathResolverTest_MultiSegmentResourceId
status: verified
verifies: REQ_INTEROP_002

Topic names like /sensors/temperature produce multi-segment resource IDs

Implementation: src/ros2_medkit_gateway/test/test_path_resolver.cpp#L234 (Test: MultiSegmentResourceId)

Test Case: NestedEntityCollection TEST_PathResolverTest_NestedEntityCollection
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_path_resolver.cpp#L87 (Test: NestedEntityCollection)

Test Case: ResourceCollection TEST_PathResolverTest_ResourceCollection
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_path_resolver.cpp#L52 (Test: ResourceCollection)

Test Case: RootPath TEST_PathResolverTest_RootPath
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_path_resolver.cpp#L26 (Test: RootPath)

Test Case: SpecificEntity TEST_PathResolverTest_SpecificEntity
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_path_resolver.cpp#L44 (Test: SpecificEntity)

Test Case: SpecificResource TEST_PathResolverTest_SpecificResource
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_path_resolver.cpp#L60 (Test: SpecificResource)

Test Case: fetch_entities_parses_collections TEST_PeerClientHappyPath_fetch_entities_parses_collections
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_gateway/test/test_peer_client.cpp#L181 (Test: fetch_entities_parses_collections)

Test Case: fetch_entities_parses_is_located_on_without_vendor_extension TEST_PeerClientHappyPath_fetch_entities_parses_is_located_on_without_vendor_extension
status: verified
verifies: REQ_INTEROP_018

Implementation: src/ros2_medkit_gateway/test/test_peer_client.cpp#L340 (Test: fetch_entities_parses_is_located_on_without_vendor_extension)

Test Case: fetch_entities_parses_relationship_fields TEST_PeerClientHappyPath_fetch_entities_parses_relationship_fields
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_gateway/test/test_peer_client.cpp#L222 (Test: fetch_entities_parses_relationship_fields)

Test Case: fetch_entities_parses_vendor_only_component_id_fallback TEST_PeerClientHappyPath_fetch_entities_parses_vendor_only_component_id_fallback
status: verified
verifies: REQ_INTEROP_018

Implementation: src/ros2_medkit_gateway/test/test_peer_client.cpp#L460 (Test: fetch_entities_parses_vendor_only_component_id_fallback)

Test Case: fetch_entities_rejects_malicious_component_id_in_located_on TEST_PeerClientHappyPath_fetch_entities_rejects_malicious_component_id_in_located_on
status: verified
verifies: REQ_INTEROP_018

Implementation: src/ros2_medkit_gateway/test/test_peer_client.cpp#L412 (Test: fetch_entities_rejects_malicious_component_id_in_located_on)

Test Case: forward_and_get_json_returns_parsed_json TEST_PeerClientHappyPath_forward_and_get_json_returns_parsed_json
status: verified
verifies: REQ_INTEROP_018

Implementation: src/ros2_medkit_gateway/test/test_peer_client.cpp#L620 (Test: forward_and_get_json_returns_parsed_json)

Test Case: forward_request_proxies_response_with_auth TEST_PeerClientHappyPath_forward_request_proxies_response_with_auth
status: verified
verifies: REQ_INTEROP_018

Implementation: src/ros2_medkit_gateway/test/test_peer_client.cpp#L505 (Test: forward_request_proxies_response_with_auth)

Test Case: forward_request_rejects_oversized_response TEST_PeerClientHappyPath_forward_request_rejects_oversized_response
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_gateway/test/test_peer_client.cpp#L718 (Test: forward_request_rejects_oversized_response)

Test Case: fetch_entities_returns_error_on_connection_refused TEST_PeerClient_fetch_entities_returns_error_on_connection_refused
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_gateway/test/test_peer_client.cpp#L102 (Test: fetch_entities_returns_error_on_connection_refused)

Test Case: forward_sets_502_on_connection_error TEST_PeerClient_forward_sets_502_on_connection_error
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_gateway/test/test_peer_client.cpp#L64 (Test: forward_sets_502_on_connection_error)

Test Case: BackwardCompatibleWithoutResolver TEST_PerEntityStorageTest_BackwardCompatibleWithoutResolver
status: verified
verifies: REQ_INTEROP_095

When no per-entity config is used, passing global config gives same behavior as before

Implementation: src/ros2_medkit_fault_manager/test/test_entity_thresholds.cpp#L356 (Test: BackwardCompatibleWithoutResolver)

Test Case: DifferentEntitiesSameFaultCode TEST_PerEntityStorageTest_DifferentEntitiesSameFaultCode
status: verified
verifies: REQ_INTEROP_095

Implementation: src/ros2_medkit_fault_manager/test/test_entity_thresholds.cpp#L318 (Test: DifferentEntitiesSameFaultCode)

Test Case: LidarFaultConfirmsImmediately TEST_PerEntityStorageTest_LidarFaultConfirmsImmediately
status: verified
verifies: REQ_INTEROP_095

Implementation: src/ros2_medkit_fault_manager/test/test_entity_thresholds.cpp#L269 (Test: LidarFaultConfirmsImmediately)

Test Case: LidarHealingWithThreshold1 TEST_PerEntityStorageTest_LidarHealingWithThreshold1
status: verified
verifies: REQ_INTEROP_095

Implementation: src/ros2_medkit_fault_manager/test/test_entity_thresholds.cpp#L336 (Test: LidarHealingWithThreshold1)

Test Case: MotorFaultNeedsDebouncing TEST_PerEntityStorageTest_MotorFaultNeedsDebouncing
status: verified
verifies: REQ_INTEROP_095

Implementation: src/ros2_medkit_fault_manager/test/test_entity_thresholds.cpp#L280 (Test: MotorFaultNeedsDebouncing)

Test Case: UnknownEntityUsesGlobalConfig TEST_PerEntityStorageTest_UnknownEntityUsesGlobalConfig
status: verified
verifies: REQ_INTEROP_095

Implementation: src/ros2_medkit_fault_manager/test/test_entity_thresholds.cpp#L307 (Test: UnknownEntityUsesGlobalConfig)

Test Case: AutoRefreshOnTTLExpiry TEST_PidCacheTest_AutoRefreshOnTTLExpiry
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_pid_cache.cpp#L83 (Test: AutoRefreshOnTTLExpiry)

Test Case: ConcurrentLookupDoesNotCrash TEST_PidCacheTest_ConcurrentLookupDoesNotCrash
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_pid_cache.cpp#L167 (Test: ConcurrentLookupDoesNotCrash)

Test Case: LookupAfterRefresh TEST_PidCacheTest_LookupAfterRefresh
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_pid_cache.cpp#L58 (Test: LookupAfterRefresh)

Test Case: LookupMissingNode TEST_PidCacheTest_LookupMissingNode
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_pid_cache.cpp#L74 (Test: LookupMissingNode)

Test Case: LookupRootNamespaceNode TEST_PidCacheTest_LookupRootNamespaceNode
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_pid_cache.cpp#L151 (Test: LookupRootNamespaceNode)

Test Case: NoRefreshWithinTTL TEST_PidCacheTest_NoRefreshWithinTTL
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_pid_cache.cpp#L106 (Test: NoRefreshWithinTTL)

Test Case: NonexistentProcDir TEST_PidCacheTest_NonexistentProcDir
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_pid_cache.cpp#L141 (Test: NonexistentProcDir)

Test Case: DefaultPolicies TEST_PluginLayerTest_DefaultPolicies
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_gateway/test/test_merge_pipeline.cpp#L407 (Test: DefaultPolicies)

Test Case: ReadNonexistentPidFails TEST_ProcReader_ReadNonexistentPidFails
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_proc_reader.cpp#L62 (Test: ReadNonexistentPidFails)

Test Case: ReadSelfProcess TEST_ProcReader_ReadSelfProcess
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_proc_reader.cpp#L48 (Test: ReadSelfProcess)

Test Case: ReadSystemUptime TEST_ProcReader_ReadSystemUptime
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_proc_reader.cpp#L77 (Test: ReadSystemUptime)

Test Case: ReadSystemUptimeMissingFile TEST_ProcReader_ReadSystemUptimeMissingFile
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_proc_reader.cpp#L84 (Test: ReadSystemUptimeMissingFile)

Test Case: StateFieldPopulated TEST_ProcReader_StateFieldPopulated
status: verified
verifies: REQ_INTEROP_003

Read our own process - should have state “R” (running) or “S” (sleeping)

Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_proc_reader.cpp#L69 (Test: StateFieldPopulated)

Test Case: ProcessInfoToJsonAllFields TEST_ProcfsPlugin_ProcessInfoToJsonAllFields
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_procfs_plugin.cpp#L21 (Test: ProcessInfoToJsonAllFields)

Test Case: ProcessInfoToJsonNegativeUptimeClamped TEST_ProcfsPlugin_ProcessInfoToJsonNegativeUptimeClamped
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_procfs_plugin.cpp#L68 (Test: ProcessInfoToJsonNegativeUptimeClamped)

Test Case: ProcessInfoToJsonZeroUptime TEST_ProcfsPlugin_ProcessInfoToJsonZeroUptime
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_procfs_plugin.cpp#L58 (Test: ProcessInfoToJsonZeroUptime)

Test Case: EmptyResolverReturnsGlobal TEST_ResolverTest_EmptyResolverReturnsGlobal
status: verified
verifies: REQ_INTEROP_095

Implementation: src/ros2_medkit_fault_manager/test/test_entity_thresholds.cpp#L50 (Test: EmptyResolverReturnsGlobal)

Test Case: ExactMatch TEST_ResolverTest_ExactMatch
status: verified
verifies: REQ_INTEROP_095

Implementation: src/ros2_medkit_fault_manager/test/test_entity_thresholds.cpp#L59 (Test: ExactMatch)

Test Case: LongestPrefixWins TEST_ResolverTest_LongestPrefixWins
status: verified
verifies: REQ_INTEROP_095

Implementation: src/ros2_medkit_fault_manager/test/test_entity_thresholds.cpp#L83 (Test: LongestPrefixWins)

Test Case: NoMatchReturnsGlobal TEST_ResolverTest_NoMatchReturnsGlobal
status: verified
verifies: REQ_INTEROP_095

Implementation: src/ros2_medkit_fault_manager/test/test_entity_thresholds.cpp#L101 (Test: NoMatchReturnsGlobal)

Test Case: PartialOverrideMergesWithGlobal TEST_ResolverTest_PartialOverrideMergesWithGlobal
status: verified
verifies: REQ_INTEROP_095

Implementation: src/ros2_medkit_fault_manager/test/test_entity_thresholds.cpp#L128 (Test: PartialOverrideMergesWithGlobal)

Test Case: PrefixMatch TEST_ResolverTest_PrefixMatch
status: verified
verifies: REQ_INTEROP_095

Implementation: src/ros2_medkit_fault_manager/test/test_entity_thresholds.cpp#L72 (Test: PrefixMatch)

Test Case: PrefixMatchRequiresPathBoundary TEST_ResolverTest_PrefixMatchRequiresPathBoundary
status: verified
verifies: REQ_INTEROP_095

Implementation: src/ros2_medkit_fault_manager/test/test_entity_thresholds.cpp#L112 (Test: PrefixMatchRequiresPathBoundary)

Test Case: SizeReturnsEntryCount TEST_ResolverTest_SizeReturnsEntryCount
status: verified
verifies: REQ_INTEROP_095

Implementation: src/ros2_medkit_fault_manager/test/test_entity_thresholds.cpp#L142 (Test: SizeReturnsEntryCount)

Test Case: AsyncDispatchNonBlocking TEST_ResourceChangeNotifier_AsyncDispatchNonBlocking
status: verified
verifies: REQ_INTEROP_097

Implementation: src/ros2_medkit_gateway/test/test_resource_change_notifier.cpp#L229 (Test: AsyncDispatchNonBlocking)

Test Case: SubscribeAndNotify TEST_ResourceChangeNotifier_SubscribeAndNotify
status: verified
verifies: REQ_INTEROP_097

Implementation: src/ros2_medkit_gateway/test/test_resource_change_notifier.cpp#L45 (Test: SubscribeAndNotify)

Test Case: ColdWaitCapExceededReturns503 TEST_Ros2TopicDataProviderTest_ColdWaitCapExceededReturns503
status: verified
verifies: REQ_INTEROP_019

Use a dedicated provider with cold-wait-cap 1 so one holder caller in flight triggers the cap on the second caller. The fixture provider uses cap 4 which is hard to saturate deterministically.

Implementation: src/ros2_medkit_gateway/test/test_ros2_topic_data_provider.cpp#L697 (Test: ColdWaitCapExceededReturns503)

Test Case: DiscoverByNamespaceGroupsTopics TEST_Ros2TopicDataProviderTest_DiscoverByNamespaceGroupsTopics
status: verified
verifies: REQ_INTEROP_018

Implementation: src/ros2_medkit_gateway/test/test_ros2_topic_data_provider.cpp#L126 (Test: DiscoverByNamespaceGroupsTopics)

status: verified
verifies: REQ_INTEROP_018

Implementation: src/ros2_medkit_gateway/test/test_ros2_topic_data_provider.cpp#L105 (Test: DiscoverFindsPublisher)

Test Case: InterfacePolymorphismWorks TEST_Ros2TopicDataProviderTest_InterfacePolymorphismWorks
status: verified
verifies: REQ_INTEROP_019

Implementation: src/ros2_medkit_gateway/test/test_ros2_topic_data_provider.cpp#L689 (Test: InterfacePolymorphismWorks)

Test Case: SampleHitReturnsDataAfterPublish TEST_Ros2TopicDataProviderTest_SampleHitReturnsDataAfterPublish
status: verified
verifies: REQ_INTEROP_019

Implementation: src/ros2_medkit_gateway/test/test_ros2_topic_data_provider.cpp#L197 (Test: SampleHitReturnsDataAfterPublish)

Test Case: SampleMatchesReliablePublisherQoS TEST_Ros2TopicDataProviderTest_SampleMatchesReliablePublisherQoS
status: verified
verifies: REQ_INTEROP_019

Reliable publisher with depth 10 + latched (transient_local). Without QoS matching, a best-effort subscriber would connect but could miss the latched message; a TransientLocal publisher specifically relies on matching subscriber durability for the last-message replay.

Implementation: src/ros2_medkit_gateway/test/test_ros2_topic_data_provider.cpp#L156 (Test: SampleMatchesReliablePublisherQoS)

Test Case: SampleParallelEmbedsPerTopicErrorInsteadOfFailingBatch TEST_Ros2TopicDataProviderTest_SampleParallelEmbedsPerTopicErrorInsteadOfFailingBatch
status: verified
verifies: REQ_INTEROP_019

Cold-wait cap saturates at 1; holder thread keeps the slot reserved. sample_parallel embeds the per-topic 503 in the corresponding result so the rest of the batch still serves successfully (one bad topic should not kill the whole /components/{id}/data response under load).

Implementation: src/ros2_medkit_gateway/test/test_ros2_topic_data_provider.cpp#L338 (Test: SampleParallelEmbedsPerTopicErrorInsteadOfFailingBatch)

Test Case: SampleParallelHonorsMaxParallelSamplesAndPreservesOrder TEST_Ros2TopicDataProviderTest_SampleParallelHonorsMaxParallelSamplesAndPreservesOrder
status: verified
verifies: REQ_INTEROP_019

With max_parallel_samples=2 and 5 input topics the chunk loop must run 3 times. Regression that drops chunking entirely (or computes the wrong chunk_size) is what this test pins.

Implementation: src/ros2_medkit_gateway/test/test_ros2_topic_data_provider.cpp#L319 (Test: SampleParallelHonorsMaxParallelSamplesAndPreservesOrder)

Test Case: SampleParallelReturnsOneResultPerTopic TEST_Ros2TopicDataProviderTest_SampleParallelReturnsOneResultPerTopic
status: verified
verifies: REQ_INTEROP_018

Implementation: src/ros2_medkit_gateway/test/test_ros2_topic_data_provider.cpp#L308 (Test: SampleParallelReturnsOneResultPerTopic)

Test Case: SampleWithoutPublishersReturnsMetadataOnly TEST_Ros2TopicDataProviderTest_SampleWithoutPublishersReturnsMetadataOnly
status: verified
verifies: REQ_INTEROP_019

Implementation: src/ros2_medkit_gateway/test/test_ros2_topic_data_provider.cpp#L147 (Test: SampleWithoutPublishersReturnsMetadataOnly)

Test Case: ConstructorAcceptsMcapFormat TEST_RosbagCaptureTest_ConstructorAcceptsMcapFormat
status: verified
verifies: REQ_INTEROP_088

Implementation: src/ros2_medkit_fault_manager/test/test_rosbag_capture.cpp#L120 (Test: ConstructorAcceptsMcapFormat)

Test Case: ConstructorRequiresValidNode TEST_RosbagCaptureTest_ConstructorRequiresValidNode
status: verified
verifies: REQ_INTEROP_088

Implementation: src/ros2_medkit_fault_manager/test/test_rosbag_capture.cpp#L84 (Test: ConstructorRequiresValidNode)

Test Case: ConstructorRequiresValidStorage TEST_RosbagCaptureTest_ConstructorRequiresValidStorage
status: verified
verifies: REQ_INTEROP_088

Implementation: src/ros2_medkit_fault_manager/test/test_rosbag_capture.cpp#L91 (Test: ConstructorRequiresValidStorage)

Test Case: ConstructorSucceedsWithValidParams TEST_RosbagCaptureTest_ConstructorSucceedsWithValidParams
status: verified
verifies: REQ_INTEROP_088

Implementation: src/ros2_medkit_fault_manager/test/test_rosbag_capture.cpp#L98 (Test: ConstructorSucceedsWithValidParams)

Test Case: ConstructorThrowsOnInvalidFormat TEST_RosbagCaptureTest_ConstructorThrowsOnInvalidFormat
status: verified
verifies: REQ_INTEROP_088

Implementation: src/ros2_medkit_fault_manager/test/test_rosbag_capture.cpp#L112 (Test: ConstructorThrowsOnInvalidFormat)

Test Case: ConstructorWithDisabledRosbag TEST_RosbagCaptureTest_ConstructorWithDisabledRosbag
status: verified
verifies: REQ_INTEROP_088

Implementation: src/ros2_medkit_fault_manager/test/test_rosbag_capture.cpp#L105 (Test: ConstructorWithDisabledRosbag)

Test Case: IsEnabledReturnsConfigState TEST_RosbagCaptureTest_IsEnabledReturnsConfigState
status: verified
verifies: REQ_INTEROP_088

Implementation: src/ros2_medkit_fault_manager/test/test_rosbag_capture.cpp#L130 (Test: IsEnabledReturnsConfigState)

Test Case: EmptyBuilderProducesEmptyDescriptions TEST_RouteDescriptionsTest_EmptyBuilderProducesEmptyDescriptions
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_route_descriptions.cpp#L37 (Test: EmptyBuilderProducesEmptyDescriptions)

Test Case: MultipleEndpoints TEST_RouteDescriptionsTest_MultipleEndpoints
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_route_descriptions.cpp#L70 (Test: MultipleEndpoints)

Test Case: PostWithRequestBody TEST_RouteDescriptionsTest_PostWithRequestBody
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_route_descriptions.cpp#L82 (Test: PostWithRequestBody)

status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_route_descriptions.cpp#L98 (Test: SchemaTypes)

Test Case: SingleGetEndpoint TEST_RouteDescriptionsTest_SingleGetEndpoint
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_route_descriptions.cpp#L46 (Test: SingleGetEndpoint)

Test Case: AuthEnabledAdds401And403Responses TEST_RouteRegistryTest_AuthEnabledAdds401And403Responses
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_route_registry.cpp#L178 (Test: AuthEnabledAdds401And403Responses)

Test Case: ErrorResponsesUseGenericErrorRef TEST_RouteRegistryTest_ErrorResponsesUseGenericErrorRef
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_route_registry.cpp#L645 (Test: ErrorResponsesUseGenericErrorRef)

Test Case: OperationIdIsGenerated TEST_RouteRegistryTest_OperationIdIsGenerated
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_route_registry.cpp#L271 (Test: OperationIdIsGenerated)

Test Case: PathParamDescriptionsArePresent TEST_RouteRegistryTest_PathParamDescriptionsArePresent
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_route_registry.cpp#L314 (Test: PathParamDescriptionsArePresent)

Test Case: ToOpenapiPathsContainsRegisteredRoute TEST_RouteRegistryTest_ToOpenapiPathsContainsRegisteredRoute
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_route_registry.cpp#L45 (Test: ToOpenapiPathsContainsRegisteredRoute)

Test Case: ToOpenapiPathsMultipleMethodsSamePath TEST_RouteRegistryTest_ToOpenapiPathsMultipleMethodsSamePath
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_route_registry.cpp#L57 (Test: ToOpenapiPathsMultipleMethodsSamePath)

Test Case: ToRegexPathRootBecomesRootAnchored TEST_RouteRegistryTest_ToRegexPathRootBecomesRootAnchored
status: verified
verifies: REQ_INTEROP_002

Register the root path and verify the regex conversion via the handler registration (to_regex_path is private, test indirectly)

Implementation: src/ros2_medkit_gateway/test/test_route_registry.cpp#L73 (Test: ToRegexPathRootBecomesRootAnchored)

Test Case: DiscoverFunctions_GroupsByNamespace TEST_RuntimeDiscoveryMultiNsTest_DiscoverFunctions_GroupsByNamespace
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_gateway/test/test_runtime_discovery.cpp#L188 (Test: DiscoverFunctions_GroupsByNamespace)

Test Case: DiscoverFunctions_DefaultCreatesFromNamespaces TEST_RuntimeDiscoveryTest_DiscoverFunctions_DefaultCreatesFromNamespaces
status: verified
verifies: REQ_INTEROP_003

Default config has create_functions_from_namespaces=true

Implementation: src/ros2_medkit_gateway/test/test_runtime_discovery.cpp#L89 (Test: DiscoverFunctions_DefaultCreatesFromNamespaces)

Test Case: DefaultPolicies TEST_RuntimeLayerTest_DefaultPolicies
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_gateway/test/test_merge_pipeline.cpp#L374 (Test: DefaultPolicies)

Test Case: ExactMatch_NodeNameAndNamespace TEST_RuntimeLinkerTest_ExactMatch_NodeNameAndNamespace
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_gateway/test/test_runtime_linker.cpp#L77 (Test: ExactMatch_NodeNameAndNamespace)

Test Case: OrphanPolicy_IncludeAsOrphan_NoError TEST_RuntimeLinkerTest_OrphanPolicy_IncludeAsOrphan_NoError
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_gateway/test/test_runtime_linker.cpp#L307 (Test: OrphanPolicy_IncludeAsOrphan_NoError)

Test Case: OrphanPolicy_Warn_NoError TEST_RuntimeLinkerTest_OrphanPolicy_Warn_NoError
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_gateway/test/test_runtime_linker.cpp#L293 (Test: OrphanPolicy_Warn_NoError)

Test Case: receives_events_from_mock_server TEST_SSEStreamProxyIntegration_receives_events_from_mock_server
status: verified
verifies: REQ_INTEROP_090

Implementation: src/ros2_medkit_gateway/test/test_stream_proxy.cpp#L232 (Test: receives_events_from_mock_server)

status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_schema_builder.cpp#L449 (Test: FromRosMsgKnownType)

Test Case: FromRosMsgUnknownType TEST_SchemaBuilderRuntimeTest_FromRosMsgUnknownType
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_schema_builder.cpp#L460 (Test: FromRosMsgUnknownType)

Test Case: AcquireLockRequestSchema TEST_SchemaBuilderStaticTest_AcquireLockRequestSchema
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_schema_builder.cpp#L513 (Test: AcquireLockRequestSchema)

Test Case: BulkDataCategoryListSchema TEST_SchemaBuilderStaticTest_BulkDataCategoryListSchema
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_schema_builder.cpp#L277 (Test: BulkDataCategoryListSchema)

Test Case: BulkDataDescriptorSchema TEST_SchemaBuilderStaticTest_BulkDataDescriptorSchema
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_schema_builder.cpp#L287 (Test: BulkDataDescriptorSchema)

Test Case: ConfigurationMetaDataSchema TEST_SchemaBuilderStaticTest_ConfigurationMetaDataSchema
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_schema_builder.cpp#L156 (Test: ConfigurationMetaDataSchema)

Test Case: ConfigurationMetaDataXMedkitDeclaresAllEmittedFields TEST_SchemaBuilderStaticTest_ConfigurationMetaDataXMedkitDeclaresAllEmittedFields
status: verified
verifies: REQ_INTEROP_002

Regression: the x-medkit object emitted by config_handlers.cpp on every per-parameter entry contains both source (app_id) and node (FQN). The schema must declare both, otherwise generated typed clients drop or fail-type the undeclared field - exactly the drift this PR fixes for x-medkit.phase. additionalProperties is intentionally left open (other endpoints use the same convention), so the drift integration test cannot detect missing properties here; this static check does.

Implementation: src/ros2_medkit_gateway/test/test_schema_builder.cpp#L178 (Test: ConfigurationMetaDataXMedkitDeclaresAllEmittedFields)

Test Case: ConfigurationReadValueSchema TEST_SchemaBuilderStaticTest_ConfigurationReadValueSchema
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_schema_builder.cpp#L200 (Test: ConfigurationReadValueSchema)

Test Case: ConfigurationWriteValueSchema TEST_SchemaBuilderStaticTest_ConfigurationWriteValueSchema
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_schema_builder.cpp#L232 (Test: ConfigurationWriteValueSchema)

Test Case: CyclicSubscriptionCreateRequestSchema TEST_SchemaBuilderStaticTest_CyclicSubscriptionCreateRequestSchema
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_schema_builder.cpp#L307 (Test: CyclicSubscriptionCreateRequestSchema)

Test Case: DataWriteRequestSchema TEST_SchemaBuilderStaticTest_DataWriteRequestSchema
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_schema_builder.cpp#L546 (Test: DataWriteRequestSchema)

Test Case: ExecutionUpdateRequestSchema TEST_SchemaBuilderStaticTest_ExecutionUpdateRequestSchema
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_schema_builder.cpp#L561 (Test: ExecutionUpdateRequestSchema)

Test Case: ExtendLockRequestSchema TEST_SchemaBuilderStaticTest_ExtendLockRequestSchema
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_schema_builder.cpp#L532 (Test: ExtendLockRequestSchema)

Test Case: LogConfigurationSchemaFieldsOptional TEST_SchemaBuilderStaticTest_LogConfigurationSchemaFieldsOptional
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_schema_builder.cpp#L595 (Test: LogConfigurationSchemaFieldsOptional)

Test Case: OperationDetailSchema TEST_SchemaBuilderStaticTest_OperationDetailSchema
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_schema_builder.cpp#L218 (Test: OperationDetailSchema)

Test Case: ScriptControlRequestSchema TEST_SchemaBuilderStaticTest_ScriptControlRequestSchema
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_schema_builder.cpp#L578 (Test: ScriptControlRequestSchema)

Test Case: ScriptUploadResponseSchema TEST_SchemaBuilderStaticTest_ScriptUploadResponseSchema
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_schema_builder.cpp#L246 (Test: ScriptUploadResponseSchema)

Test Case: TriggerConditionSchemaShared TEST_SchemaBuilderStaticTest_TriggerConditionSchemaShared
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_schema_builder.cpp#L616 (Test: TriggerConditionSchemaShared)

Test Case: TriggerCreateRequestSchema TEST_SchemaBuilderStaticTest_TriggerCreateRequestSchema
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_schema_builder.cpp#L337 (Test: TriggerCreateRequestSchema)

Test Case: TriggerUpdateRequestSchema TEST_SchemaBuilderStaticTest_TriggerUpdateRequestSchema
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_schema_builder.cpp#L262 (Test: TriggerUpdateRequestSchema)

Test Case: AllRefsResolveToRegisteredSchemas TEST_SchemaConsistencyTest_AllRefsResolveToRegisteredSchemas
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_schema_builder.cpp#L661 (Test: AllRefsResolveToRegisteredSchemas)

Test Case: ListSchemasReferenceExistingItemSchemas TEST_SchemaConsistencyTest_ListSchemasReferenceExistingItemSchemas
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_schema_builder.cpp#L678 (Test: ListSchemasReferenceExistingItemSchemas)

Test Case: RequiredFieldsExistInProperties TEST_SchemaConsistencyTest_RequiredFieldsExistInProperties
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_gateway/test/test_schema_builder.cpp#L707 (Test: RequiredFieldsExistInProperties)

status: verified
verifies: REQ_INTEROP_044

Implementation: src/ros2_medkit_gateway/test/test_script_handlers.cpp#L427 (Test: AlreadyRunningMapsTo409)

status: verified
verifies: REQ_INTEROP_044

Implementation: src/ros2_medkit_gateway/test/test_script_handlers.cpp#L437 (Test: ConcurrencyLimitMapsTo429)

status: verified
verifies: REQ_INTEROP_043

Implementation: src/ros2_medkit_gateway/test/test_script_handlers.cpp#L537 (Test: DeleteReturns204)

status: verified
verifies: REQ_INTEROP_040

Upload handler needs multipart file field - use get_script with FileTooLarge instead since send_script_error is shared across all handlers

Implementation: src/ros2_medkit_gateway/test/test_script_handlers.cpp#L447 (Test: FileTooLargeMapsTo413)

status: verified
verifies: REQ_INTEROP_043

Implementation: src/ros2_medkit_gateway/test/test_script_handlers.cpp#L416 (Test: ManagedScriptMapsTo409)

status: verified
verifies: REQ_INTEROP_042

Implementation: src/ros2_medkit_gateway/test/test_script_handlers.cpp#L407 (Test: NotFoundMapsTo404)

Test Case: StartExecutionReturns202WithLocation TEST_ScriptHandlersErrorMappingTest_StartExecutionReturns202WithLocation
status: verified
verifies: REQ_INTEROP_044

Implementation: src/ros2_medkit_gateway/test/test_script_handlers.cpp#L518 (Test: StartExecutionReturns202WithLocation)

status: verified
verifies: REQ_INTEROP_040

Implementation: src/ros2_medkit_gateway/test/test_script_handlers.cpp#L497 (Test: UploadRejectsWrongContentType)

status: verified
verifies: REQ_INTEROP_040

Implementation: src/ros2_medkit_gateway/test/test_script_handlers.cpp#L471 (Test: UploadReturns201WithLocation)

Test Case: ControlExecutionReturns501WhenNoBackend TEST_ScriptHandlersNoBackendTest_ControlExecutionReturns501WhenNoBackend
status: verified
verifies: REQ_INTEROP_047

Implementation: src/ros2_medkit_gateway/test/test_script_handlers.cpp#L271 (Test: ControlExecutionReturns501WhenNoBackend)

Test Case: DeleteReturns501WhenNoBackend TEST_ScriptHandlersNoBackendTest_DeleteReturns501WhenNoBackend
status: verified
verifies: REQ_INTEROP_043

Implementation: src/ros2_medkit_gateway/test/test_script_handlers.cpp#L247 (Test: DeleteReturns501WhenNoBackend)

Test Case: GetExecutionReturns501WhenNoBackend TEST_ScriptHandlersNoBackendTest_GetExecutionReturns501WhenNoBackend
status: verified
verifies: REQ_INTEROP_046

Implementation: src/ros2_medkit_gateway/test/test_script_handlers.cpp#L263 (Test: GetExecutionReturns501WhenNoBackend)

status: verified
verifies: REQ_INTEROP_042

Implementation: src/ros2_medkit_gateway/test/test_script_handlers.cpp#L239 (Test: GetReturns501WhenNoBackend)

Test Case: ListReturns501WhenNoBackend TEST_ScriptHandlersNoBackendTest_ListReturns501WhenNoBackend
status: verified
verifies: REQ_INTEROP_041

Implementation: src/ros2_medkit_gateway/test/test_script_handlers.cpp#L231 (Test: ListReturns501WhenNoBackend)

Test Case: StartExecutionReturns501WhenNoBackend TEST_ScriptHandlersNoBackendTest_StartExecutionReturns501WhenNoBackend
status: verified
verifies: REQ_INTEROP_044

Implementation: src/ros2_medkit_gateway/test/test_script_handlers.cpp#L255 (Test: StartExecutionReturns501WhenNoBackend)

Test Case: UploadReturns501WhenNoBackend TEST_ScriptHandlersNoBackendTest_UploadReturns501WhenNoBackend
status: verified
verifies: REQ_INTEROP_040

Implementation: src/ros2_medkit_gateway/test/test_script_handlers.cpp#L221 (Test: UploadReturns501WhenNoBackend)

Test Case: ControlExecution TEST_ScriptManagerTest_ControlExecution
status: verified
verifies: REQ_INTEROP_047

Implementation: src/ros2_medkit_gateway/test/test_script_manager.cpp#L232 (Test: ControlExecution)

Test Case: DeleteManifestScript TEST_ScriptManagerTest_DeleteManifestScript
status: verified
verifies: REQ_INTEROP_043

Implementation: src/ros2_medkit_gateway/test/test_script_manager.cpp#L208 (Test: DeleteManifestScript)

Test Case: DeleteScript TEST_ScriptManagerTest_DeleteScript
status: verified
verifies: REQ_INTEROP_043

Implementation: src/ros2_medkit_gateway/test/test_script_manager.cpp#L202 (Test: DeleteScript)

Test Case: GetExecution TEST_ScriptManagerTest_GetExecution
status: verified
verifies: REQ_INTEROP_046

Implementation: src/ros2_medkit_gateway/test/test_script_manager.cpp#L224 (Test: GetExecution)

Test Case: GetScript TEST_ScriptManagerTest_GetScript
status: verified
verifies: REQ_INTEROP_042

Implementation: src/ros2_medkit_gateway/test/test_script_manager.cpp#L181 (Test: GetScript)

Test Case: GetScriptNotFound TEST_ScriptManagerTest_GetScriptNotFound
status: verified
verifies: REQ_INTEROP_042

Implementation: src/ros2_medkit_gateway/test/test_script_manager.cpp#L188 (Test: GetScriptNotFound)

Test Case: ListScripts TEST_ScriptManagerTest_ListScripts
status: verified
verifies: REQ_INTEROP_041

Implementation: src/ros2_medkit_gateway/test/test_script_manager.cpp#L173 (Test: ListScripts)

Test Case: StartExecution TEST_ScriptManagerTest_StartExecution
status: verified
verifies: REQ_INTEROP_044

Implementation: src/ros2_medkit_gateway/test/test_script_manager.cpp#L215 (Test: StartExecution)

Test Case: UploadScript TEST_ScriptManagerTest_UploadScript
status: verified
verifies: REQ_INTEROP_040

Implementation: src/ros2_medkit_gateway/test/test_script_manager.cpp#L195 (Test: UploadScript)

Test Case: BackgroundCaptureInitializesSubscriptions TEST_SnapshotCaptureTest_BackgroundCaptureInitializesSubscriptions
status: verified
verifies: REQ_INTEROP_088

Implementation: src/ros2_medkit_fault_manager/test/test_snapshot_capture.cpp#L201 (Test: BackgroundCaptureInitializesSubscriptions)

Test Case: ConfigAccessorReturnsCorrectValues TEST_SnapshotCaptureTest_ConfigAccessorReturnsCorrectValues
status: verified
verifies: REQ_INTEROP_088

Implementation: src/ros2_medkit_fault_manager/test/test_snapshot_capture.cpp#L169 (Test: ConfigAccessorReturnsCorrectValues)

Test Case: ConstructorRequiresValidNode TEST_SnapshotCaptureTest_ConstructorRequiresValidNode
status: verified
verifies: REQ_INTEROP_088

Implementation: src/ros2_medkit_fault_manager/test/test_snapshot_capture.cpp#L48 (Test: ConstructorRequiresValidNode)

Test Case: ConstructorRequiresValidStorage TEST_SnapshotCaptureTest_ConstructorRequiresValidStorage
status: verified
verifies: REQ_INTEROP_088

Implementation: src/ros2_medkit_fault_manager/test/test_snapshot_capture.cpp#L54 (Test: ConstructorRequiresValidStorage)

Test Case: ConstructorSucceedsWithValidParams TEST_SnapshotCaptureTest_ConstructorSucceedsWithValidParams
status: verified
verifies: REQ_INTEROP_088

Implementation: src/ros2_medkit_fault_manager/test/test_snapshot_capture.cpp#L60 (Test: ConstructorSucceedsWithValidParams)

Test Case: DisabledCaptureSkipsProcessing TEST_SnapshotCaptureTest_DisabledCaptureSkipsProcessing
status: verified
verifies: REQ_INTEROP_088

Implementation: src/ros2_medkit_fault_manager/test/test_snapshot_capture.cpp#L67 (Test: DisabledCaptureSkipsProcessing)

Test Case: EmptyConfigurationHandledGracefully TEST_SnapshotCaptureTest_EmptyConfigurationHandledGracefully
status: verified
verifies: REQ_INTEROP_088

Implementation: src/ros2_medkit_fault_manager/test/test_snapshot_capture.cpp#L186 (Test: EmptyConfigurationHandledGracefully)

Test Case: InvalidRegexPatternIsSkipped TEST_SnapshotCaptureTest_InvalidRegexPatternIsSkipped
status: verified
verifies: REQ_INTEROP_088

Implementation: src/ros2_medkit_fault_manager/test/test_snapshot_capture.cpp#L145 (Test: InvalidRegexPatternIsSkipped)

Test Case: IsEnabledReturnsConfigState TEST_SnapshotCaptureTest_IsEnabledReturnsConfigState
status: verified
verifies: REQ_INTEROP_088

Implementation: src/ros2_medkit_fault_manager/test/test_snapshot_capture.cpp#L81 (Test: IsEnabledReturnsConfigState)

Test Case: MultipleValidPatternsCompiled TEST_SnapshotCaptureTest_MultipleValidPatternsCompiled
status: verified
verifies: REQ_INTEROP_088

Implementation: src/ros2_medkit_fault_manager/test/test_snapshot_capture.cpp#L156 (Test: MultipleValidPatternsCompiled)

Test Case: OnDemandCaptureHandlesNonExistentTopic TEST_SnapshotCaptureTest_OnDemandCaptureHandlesNonExistentTopic
status: verified
verifies: REQ_INTEROP_088

Implementation: src/ros2_medkit_fault_manager/test/test_snapshot_capture.cpp#L213 (Test: OnDemandCaptureHandlesNonExistentTopic)

Test Case: ClearFaultDeletesAssociatedSnapshots TEST_SqliteFaultStorageTest_ClearFaultDeletesAssociatedSnapshots
status: verified
verifies: REQ_INTEROP_088

Implementation: src/ros2_medkit_fault_manager/test/test_sqlite_storage.cpp#L683 (Test: ClearFaultDeletesAssociatedSnapshots)

Test Case: FilterSnapshotsByTopic TEST_SqliteFaultStorageTest_FilterSnapshotsByTopic
status: verified
verifies: REQ_INTEROP_088

Implementation: src/ros2_medkit_fault_manager/test/test_sqlite_storage.cpp#L646 (Test: FilterSnapshotsByTopic)

Test Case: GetAllRosbagFilesReturnsSortedByCreatedAt TEST_SqliteFaultStorageTest_GetAllRosbagFilesReturnsSortedByCreatedAt
status: verified
verifies: REQ_INTEROP_073

Implementation: src/ros2_medkit_fault_manager/test/test_sqlite_storage.cpp#L771 (Test: GetAllRosbagFilesReturnsSortedByCreatedAt)

Test Case: ListRosbagsForEntityFiltersCorrectly TEST_SqliteFaultStorageTest_ListRosbagsForEntityFiltersCorrectly
status: verified
verifies: REQ_INTEROP_071

Implementation: src/ros2_medkit_fault_manager/test/test_sqlite_storage.cpp#L724 (Test: ListRosbagsForEntityFiltersCorrectly)

Test Case: MultipleSnapshotsForSameFault TEST_SqliteFaultStorageTest_MultipleSnapshotsForSameFault
status: verified
verifies: REQ_INTEROP_088

Implementation: src/ros2_medkit_fault_manager/test/test_sqlite_storage.cpp#L616 (Test: MultipleSnapshotsForSameFault)

Test Case: NoSnapshotsForUnknownFault TEST_SqliteFaultStorageTest_NoSnapshotsForUnknownFault
status: verified
verifies: REQ_INTEROP_088

Implementation: src/ros2_medkit_fault_manager/test/test_sqlite_storage.cpp#L677 (Test: NoSnapshotsForUnknownFault)

Test Case: StoreAndRetrieveSnapshot TEST_SqliteFaultStorageTest_StoreAndRetrieveSnapshot
status: verified
verifies: REQ_INTEROP_088

Implementation: src/ros2_medkit_fault_manager/test/test_sqlite_storage.cpp#L586 (Test: StoreAndRetrieveSnapshot)

status: verified
verifies: REQ_INTEROP_090

Implementation: src/ros2_medkit_gateway/test/test_sse_transport_provider.cpp#L32 (Test: ProtocolReturnsSse)

Test Case: StartReturnsEventsUrl TEST_SseTransportProviderTest_StartReturnsEventsUrl
status: verified
verifies: REQ_INTEROP_090

Implementation: src/ros2_medkit_gateway/test/test_sse_transport_provider.cpp#L37 (Test: StartReturnsEventsUrl)

status: verified
verifies: REQ_INTEROP_090

Implementation: src/ros2_medkit_gateway/test/test_sse_transport_provider.cpp#L53 (Test: StopRemovesStream)

Test Case: parse_sse_multiple_events TEST_StreamProxy_parse_sse_multiple_events
status: verified
verifies: REQ_INTEROP_090

Implementation: src/ros2_medkit_gateway/test/test_stream_proxy.cpp#L65 (Test: parse_sse_multiple_events)

Test Case: parse_sse_single_event TEST_StreamProxy_parse_sse_single_event
status: verified
verifies: REQ_INTEROP_090

Implementation: src/ros2_medkit_gateway/test/test_stream_proxy.cpp#L52 (Test: parse_sse_single_event)

Test Case: parse_sse_with_event_type TEST_StreamProxy_parse_sse_with_event_type
status: verified
verifies: REQ_INTEROP_090

Implementation: src/ros2_medkit_gateway/test/test_stream_proxy.cpp#L96 (Test: parse_sse_with_event_type)

Test Case: FindPidForNodeInSyntheticProc TEST_SyntheticProcTest_FindPidForNodeInSyntheticProc
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_proc_reader.cpp#L137 (Test: FindPidForNodeInSyntheticProc)

Test Case: MalformedStatMissingComm TEST_SyntheticProcTest_MalformedStatMissingComm
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_proc_reader.cpp#L176 (Test: MalformedStatMissingComm)

Test Case: ReadSyntheticProc TEST_SyntheticProcTest_ReadSyntheticProc
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_proc_reader.cpp#L94 (Test: ReadSyntheticProc)

Test Case: ReadSystemUptimeSynthetic TEST_SyntheticProcTest_ReadSystemUptimeSynthetic
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_proc_reader.cpp#L165 (Test: ReadSystemUptimeSynthetic)

Test Case: TruncatedStatAfterComm TEST_SyntheticProcTest_TruncatedStatAfterComm
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_proc_reader.cpp#L200 (Test: TruncatedStatAfterComm)

Test Case: ComponentEndpointEmptyUnitsArray TEST_SystemdUtils_ComponentEndpointEmptyUnitsArray
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_systemd_plugin.cpp#L52 (Test: ComponentEndpointEmptyUnitsArray)

Test Case: EscapeAtSignInTemplateUnit TEST_SystemdUtils_EscapeAtSignInTemplateUnit
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_systemd_plugin.cpp#L37 (Test: EscapeAtSignInTemplateUnit)

Test Case: EscapeDotInServiceExtension TEST_SystemdUtils_EscapeDotInServiceExtension
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_systemd_plugin.cpp#L27 (Test: EscapeDotInServiceExtension)

Test Case: EscapeEmptyString TEST_SystemdUtils_EscapeEmptyString
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_systemd_plugin.cpp#L47 (Test: EscapeEmptyString)

Test Case: EscapeHyphenInUnitName TEST_SystemdUtils_EscapeHyphenInUnitName
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_systemd_plugin.cpp#L32 (Test: EscapeHyphenInUnitName)

Test Case: EscapeSimpleServiceName TEST_SystemdUtils_EscapeSimpleServiceName
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_systemd_plugin.cpp#L22 (Test: EscapeSimpleServiceName)

Test Case: EscapeSlashInPath TEST_SystemdUtils_EscapeSlashInPath
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_systemd_plugin.cpp#L42 (Test: EscapeSlashInPath)

Test Case: test_03_authenticate_valid_credentials TEST_TestAuthenticationIntegration_test_03_authenticate_valid_credentials
status: verified
verifies: REQ_INTEROP_086

Implementation: src/ros2_medkit_integration_tests/test/features/test_auth.test.py#L97 (Test: test_03_authenticate_valid_credentials)

Test Case: test_06_authenticate_form_urlencoded TEST_TestAuthenticationIntegration_test_06_authenticate_form_urlencoded
status: verified
verifies: REQ_INTEROP_086

Implementation: src/ros2_medkit_integration_tests/test/features/test_auth.test.py#L146 (Test: test_06_authenticate_form_urlencoded)

status: verified
verifies: REQ_INTEROP_087

Implementation: src/ros2_medkit_integration_tests/test/features/test_auth.test.py#L158 (Test: test_07_refresh_token)

Test Case: test_bulk_data_component_aggregates_child_apps TEST_TestBulkDataApi_test_bulk_data_component_aggregates_child_apps
status: verified
verifies: REQ_INTEROP_072

Synthetic / runtime-discovered components have an empty fqn / namespace_path, so the legacy fall-through path returned zero source filters and produced empty descriptor lists. The handler now resolves hosted apps via the entity cache (mirrors the FUNCTION branch).

Implementation: src/ros2_medkit_integration_tests/test/features/test_bulk_data_api.test.py#L161 (Test: test_bulk_data_component_aggregates_child_apps)

Test Case: test_bulk_data_download_not_found TEST_TestBulkDataApi_test_bulk_data_download_not_found
status: verified
verifies: REQ_INTEROP_073

Implementation: src/ros2_medkit_integration_tests/test/features/test_bulk_data_api.test.py#L210 (Test: test_bulk_data_download_not_found)

Test Case: test_bulk_data_list_categories_all_entity_types TEST_TestBulkDataApi_test_bulk_data_list_categories_all_entity_types
status: verified
verifies: REQ_INTEROP_071

As a ros2_medkit extension, these entity types support bulk-data. Uses the host-derived default component (SOVD-aligned entity model).

Implementation: src/ros2_medkit_integration_tests/test/features/test_bulk_data_api.test.py#L68 (Test: test_bulk_data_list_categories_all_entity_types)

Test Case: test_bulk_data_list_categories_entity_not_found TEST_TestBulkDataApi_test_bulk_data_list_categories_entity_not_found
status: verified
verifies: REQ_INTEROP_071

Implementation: src/ros2_medkit_integration_tests/test/features/test_bulk_data_api.test.py#L98 (Test: test_bulk_data_list_categories_entity_not_found)

Test Case: test_bulk_data_list_categories_success TEST_TestBulkDataApi_test_bulk_data_list_categories_success
status: verified
verifies: REQ_INTEROP_071

Implementation: src/ros2_medkit_integration_tests/test/features/test_bulk_data_api.test.py#L51 (Test: test_bulk_data_list_categories_success)

Test Case: test_bulk_data_list_descriptors_empty_result TEST_TestBulkDataApi_test_bulk_data_list_descriptors_empty_result
status: verified
verifies: REQ_INTEROP_072

Implementation: src/ros2_medkit_integration_tests/test/features/test_bulk_data_api.test.py#L140 (Test: test_bulk_data_list_descriptors_empty_result)

Test Case: test_bulk_data_list_descriptors_structure TEST_TestBulkDataApi_test_bulk_data_list_descriptors_structure
status: verified
verifies: REQ_INTEROP_072

Implementation: src/ros2_medkit_integration_tests/test/features/test_bulk_data_api.test.py#L112 (Test: test_bulk_data_list_descriptors_structure)

Test Case: test_bulk_data_nested_entity_path TEST_TestBulkDataApi_test_bulk_data_nested_entity_path
status: verified
verifies: REQ_INTEROP_071

Components support bulk-data. Uses the host-derived default component.

Implementation: src/ros2_medkit_integration_tests/test/features/test_bulk_data_api.test.py#L225 (Test: test_bulk_data_nested_entity_path)

Test Case: test_bulk_data_unknown_category_returns_404 TEST_TestBulkDataApi_test_bulk_data_unknown_category_returns_404
status: verified
verifies: REQ_INTEROP_072

Implementation: src/ros2_medkit_integration_tests/test/features/test_bulk_data_api.test.py#L196 (Test: test_bulk_data_unknown_category_returns_404)

Test Case: test_01_list_configurations TEST_TestConfigurationApi_test_01_list_configurations
status: verified
verifies: REQ_INTEROP_048

Implementation: src/ros2_medkit_integration_tests/test/features/test_configuration_api.test.py#L47 (Test: test_01_list_configurations)

Test Case: test_02_get_configuration TEST_TestConfigurationApi_test_02_get_configuration
status: verified
verifies: REQ_INTEROP_049

Implementation: src/ros2_medkit_integration_tests/test/features/test_configuration_api.test.py#L80 (Test: test_02_get_configuration)

Test Case: test_03_set_configuration TEST_TestConfigurationApi_test_03_set_configuration
status: verified
verifies: REQ_INTEROP_050

This test modifies min_temp and resets it within the same test.

Implementation: src/ros2_medkit_integration_tests/test/features/test_configuration_api.test.py#L110 (Test: test_03_set_configuration)

Test Case: test_04_delete_configuration_resets_to_default TEST_TestConfigurationApi_test_04_delete_configuration_resets_to_default
status: verified
verifies: REQ_INTEROP_052

The DELETE method resets the parameter to its default value. It first changes the value, then resets it, then verifies the reset.

Implementation: src/ros2_medkit_integration_tests/test/features/test_configuration_api.test.py#L161 (Test: test_04_delete_configuration_resets_to_default)

Test Case: test_05_configurations_nonexistent_app TEST_TestConfigurationApi_test_05_configurations_nonexistent_app
status: verified
verifies: REQ_INTEROP_048

Implementation: src/ros2_medkit_integration_tests/test/features/test_configuration_api.test.py#L202 (Test: test_05_configurations_nonexistent_app)

Test Case: test_06_configuration_nonexistent_parameter TEST_TestConfigurationApi_test_06_configuration_nonexistent_parameter
status: verified
verifies: REQ_INTEROP_049

Implementation: src/ros2_medkit_integration_tests/test/features/test_configuration_api.test.py#L220 (Test: test_06_configuration_nonexistent_parameter)

Test Case: test_07_set_configuration_missing_value TEST_TestConfigurationApi_test_07_set_configuration_missing_value
status: verified
verifies: REQ_INTEROP_050

Implementation: src/ros2_medkit_integration_tests/test/features/test_configuration_api.test.py#L236 (Test: test_07_set_configuration_missing_value)

Test Case: test_08_root_endpoint_includes_configurations TEST_TestConfigurationApi_test_08_root_endpoint_includes_configurations
status: verified
verifies: REQ_INTEROP_048

Implementation: src/ros2_medkit_integration_tests/test/features/test_configuration_api.test.py#L253 (Test: test_08_root_endpoint_includes_configurations)

Test Case: test_all_apps_same_container TEST_TestContainerAppEndpoint_test_all_apps_same_container
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_integration_tests/test/docker/introspection/test_container_introspection.py#L195 (Test: test_all_apps_same_container)

Test Case: test_container_id_is_64_char_hex TEST_TestContainerAppEndpoint_test_container_id_is_64_char_hex
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_integration_tests/test/docker/introspection/test_container_introspection.py#L114 (Test: test_container_id_is_64_char_hex)

Test Case: test_cpu_quota_detected TEST_TestContainerAppEndpoint_test_cpu_quota_detected
status: verified
verifies: REQ_INTEROP_003

docker-compose.container.yml sets cpus: 1.0. For cgroup v2 with cpus=1.0, the quota is typically 100000us with a period of 100000us.

Implementation: src/ros2_medkit_integration_tests/test/docker/introspection/test_container_introspection.py#L167 (Test: test_cpu_quota_detected)

Test Case: test_memory_limit_detected TEST_TestContainerAppEndpoint_test_memory_limit_detected
status: verified
verifies: REQ_INTEROP_003

docker-compose.container.yml sets 512MB = 536870912 bytes.

Implementation: src/ros2_medkit_integration_tests/test/docker/introspection/test_container_introspection.py#L146 (Test: test_memory_limit_detected)

Test Case: test_returns_container_info TEST_TestContainerAppEndpoint_test_returns_container_info
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_integration_tests/test/docker/introspection/test_container_introspection.py#L99 (Test: test_returns_container_info)

Test Case: test_runtime_is_docker TEST_TestContainerAppEndpoint_test_runtime_is_docker
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_integration_tests/test/docker/introspection/test_container_introspection.py#L132 (Test: test_runtime_is_docker)

status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_integration_tests/test/docker/introspection/test_container_introspection.py#L233 (Test: test_containers_include_node_ids)

status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_integration_tests/test/docker/introspection/test_container_introspection.py#L249 (Test: test_containers_include_runtime)

Test Case: test_returns_containers_aggregation TEST_TestContainerComponentEndpoint_test_returns_containers_aggregation
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_integration_tests/test/docker/introspection/test_container_introspection.py#L218 (Test: test_returns_containers_aggregation)

Test Case: test_nonexistent_app_returns_404 TEST_TestContainerErrorHandling_test_nonexistent_app_returns_404
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_integration_tests/test/docker/introspection/test_container_introspection.py#L267 (Test: test_nonexistent_app_returns_404)

Test Case: test_nonexistent_component_returns_404 TEST_TestContainerErrorHandling_test_nonexistent_component_returns_404
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_integration_tests/test/docker/introspection/test_container_introspection.py#L278 (Test: test_nonexistent_component_returns_404)

Test Case: test_logs_include_peer_entries TEST_TestCrossEcuFanout_test_logs_include_peer_entries
status: verified
verifies: REQ_INTEROP_061

Function logs on primary include entries from peer apps.

Implementation: src/ros2_medkit_integration_tests/test/features/test_cross_ecu_fanout.test.py#L363 (Test: test_logs_include_peer_entries)

Test Case: test_logs_severity_filter_forwarded TEST_TestCrossEcuFanout_test_logs_severity_filter_forwarded
status: verified
verifies: REQ_INTEROP_061

Querying with ?severity=error should return only error+ entries. If the filter is NOT forwarded, the peer would return ALL entries (including info). Verify every entry is error+.

Implementation: src/ros2_medkit_integration_tests/test/features/test_cross_ecu_fanout.test.py#L393 (Test: test_logs_severity_filter_forwarded)

Test Case: test_primary_forwards_ecu_b_detail_one_hop TEST_TestDaisyChainAggregation_test_primary_forwards_ecu_b_detail_one_hop
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_integration_tests/test/features/test_daisy_chain_aggregation.test.py#L260 (Test: test_primary_forwards_ecu_b_detail_one_hop)

Test Case: test_primary_forwards_ecu_c_detail_two_hops TEST_TestDaisyChainAggregation_test_primary_forwards_ecu_c_detail_two_hops
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_integration_tests/test/features/test_daisy_chain_aggregation.test.py#L266 (Test: test_primary_forwards_ecu_c_detail_two_hops)

Test Case: test_primary_sees_all_ecus_as_subcomponents_of_robot_x TEST_TestDaisyChainAggregation_test_primary_sees_all_ecus_as_subcomponents_of_robot_x
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_integration_tests/test/features/test_daisy_chain_aggregation.test.py#L237 (Test: test_primary_sees_all_ecus_as_subcomponents_of_robot_x)

Test Case: test_primary_serves_robot_x_detail_locally_with_contributors TEST_TestDaisyChainAggregation_test_primary_serves_robot_x_detail_locally_with_contributors
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_integration_tests/test/features/test_daisy_chain_aggregation.test.py#L246 (Test: test_primary_serves_robot_x_detail_locally_with_contributors)

Test Case: test_app_data_body_door TEST_TestDataRead_test_app_data_body_door
status: verified
verifies: REQ_INTEROP_018

Implementation: src/ros2_medkit_integration_tests/test/features/test_data_read.test.py#L130 (Test: test_app_data_body_door)

Test Case: test_app_data_chassis_brakes TEST_TestDataRead_test_app_data_chassis_brakes
status: verified
verifies: REQ_INTEROP_018

Implementation: src/ros2_medkit_integration_tests/test/features/test_data_read.test.py#L107 (Test: test_app_data_chassis_brakes)

Test Case: test_app_data_powertrain_engine TEST_TestDataRead_test_app_data_powertrain_engine
status: verified
verifies: REQ_INTEROP_018

Apps are ROS 2 nodes. The temp_sensor app publishes temperature data.

Implementation: src/ros2_medkit_integration_tests/test/features/test_data_read.test.py#L79 (Test: test_app_data_powertrain_engine)

Test Case: test_app_data_structure TEST_TestDataRead_test_app_data_structure
status: verified
verifies: REQ_INTEROP_018

Implementation: src/ros2_medkit_integration_tests/test/features/test_data_read.test.py#L153 (Test: test_app_data_structure)

Test Case: test_app_no_topics TEST_TestDataRead_test_app_no_topics
status: verified
verifies: REQ_INTEROP_018

The calibration app typically has only services, no topics. Uses poll_endpoint to avoid race conditions with service-only nodes that can transiently disappear from the ROS 2 graph between discovery cycles (observed on Jazzy).

Implementation: src/ros2_medkit_integration_tests/test/features/test_data_read.test.py#L194 (Test: test_app_no_topics)

Test Case: test_app_nonexistent_error TEST_TestDataRead_test_app_nonexistent_error
status: verified
verifies: REQ_INTEROP_018

Implementation: src/ros2_medkit_integration_tests/test/features/test_data_read.test.py#L180 (Test: test_app_nonexistent_error)

Test Case: test_component_nonexistent_topic_metadata_only TEST_TestDataRead_test_component_nonexistent_topic_metadata_only
status: verified
verifies: REQ_INTEROP_019

The gateway returns metadata about the topic even if no data is available. Uses host-derived default component.

Implementation: src/ros2_medkit_integration_tests/test/features/test_data_read.test.py#L329 (Test: test_component_nonexistent_topic_metadata_only)

Test Case: test_component_topic_data_structure TEST_TestDataRead_test_component_topic_data_structure
status: verified
verifies: REQ_INTEROP_019

Uses host-derived default component.

Implementation: src/ros2_medkit_integration_tests/test/features/test_data_read.test.py#L289 (Test: test_component_topic_data_structure)

Test Case: test_component_topic_nonexistent_component_error TEST_TestDataRead_test_component_topic_nonexistent_component_error
status: verified
verifies: REQ_INTEROP_019

Implementation: src/ros2_medkit_integration_tests/test/features/test_data_read.test.py#L353 (Test: test_component_topic_nonexistent_component_error)

Test Case: test_component_topic_pressure TEST_TestDataRead_test_component_topic_pressure
status: verified
verifies: REQ_INTEROP_019

Uses host-derived default component.

Implementation: src/ros2_medkit_integration_tests/test/features/test_data_read.test.py#L264 (Test: test_component_topic_pressure)

Test Case: test_component_topic_rpm TEST_TestDataRead_test_component_topic_rpm
status: verified
verifies: REQ_INTEROP_019

Uses host-derived default component.

Implementation: src/ros2_medkit_integration_tests/test/features/test_data_read.test.py#L239 (Test: test_component_topic_rpm)

Test Case: test_component_topic_temperature TEST_TestDataRead_test_component_topic_temperature
status: verified
verifies: REQ_INTEROP_019

Uses host-derived default component which aggregates all apps.

Implementation: src/ros2_medkit_integration_tests/test/features/test_data_read.test.py#L212 (Test: test_component_topic_temperature)

Test Case: test_component_topic_valid_names TEST_TestDataRead_test_component_topic_valid_names
status: verified
verifies: REQ_INTEROP_019

Uses host-derived default component.

Implementation: src/ros2_medkit_integration_tests/test/features/test_data_read.test.py#L392 (Test: test_component_topic_valid_names)

Test Case: test_component_topic_with_slashes TEST_TestDataRead_test_component_topic_with_slashes
status: verified
verifies: REQ_INTEROP_019

Uses host-derived default component.

Implementation: src/ros2_medkit_integration_tests/test/features/test_data_read.test.py#L372 (Test: test_component_topic_with_slashes)

Test Case: test_list_function_data TEST_TestDataRead_test_list_function_data
status: verified
verifies: REQ_INTEROP_018

Functions are created from namespace grouping in runtime_only mode. The powertrain function should include topics from engine sensors.

Implementation: src/ros2_medkit_integration_tests/test/features/test_data_read.test.py#L466 (Test: test_list_function_data)

Test Case: test_list_function_data_invalid_id TEST_TestDataRead_test_list_function_data_invalid_id
status: verified
verifies: REQ_INTEROP_018

Implementation: src/ros2_medkit_integration_tests/test/features/test_data_read.test.py#L502 (Test: test_list_function_data_invalid_id)

Test Case: test_list_function_data_nonexistent TEST_TestDataRead_test_list_function_data_nonexistent
status: verified
verifies: REQ_INTEROP_018

Implementation: src/ros2_medkit_integration_tests/test/features/test_data_read.test.py#L484 (Test: test_list_function_data_nonexistent)

Test Case: test_publish_brake_command TEST_TestDataWrite_test_publish_brake_command
status: verified
verifies: REQ_INTEROP_020

Uses host-derived default component.

Implementation: src/ros2_medkit_integration_tests/test/features/test_data_write.test.py#L66 (Test: test_publish_brake_command)

Test Case: test_publish_invalid_json_body TEST_TestDataWrite_test_publish_invalid_json_body
status: verified
verifies: REQ_INTEROP_020

Implementation: src/ros2_medkit_integration_tests/test/features/test_data_write.test.py#L179 (Test: test_publish_invalid_json_body)

Test Case: test_publish_nonexistent_component TEST_TestDataWrite_test_publish_nonexistent_component
status: verified
verifies: REQ_INTEROP_020

Implementation: src/ros2_medkit_integration_tests/test/features/test_data_write.test.py#L160 (Test: test_publish_nonexistent_component)

Test Case: test_publish_validation_invalid_type_format TEST_TestDataWrite_test_publish_validation_invalid_type_format
status: verified
verifies: REQ_INTEROP_020

Implementation: src/ros2_medkit_integration_tests/test/features/test_data_write.test.py#L129 (Test: test_publish_validation_invalid_type_format)

Test Case: test_publish_validation_missing_data TEST_TestDataWrite_test_publish_validation_missing_data
status: verified
verifies: REQ_INTEROP_020

Implementation: src/ros2_medkit_integration_tests/test/features/test_data_write.test.py#L111 (Test: test_publish_validation_missing_data)

Test Case: test_publish_validation_missing_type TEST_TestDataWrite_test_publish_validation_missing_type
status: verified
verifies: REQ_INTEROP_020

Implementation: src/ros2_medkit_integration_tests/test/features/test_data_write.test.py#L93 (Test: test_publish_validation_missing_type)

Test Case: test_apps_docs_returns_entity_collection_spec TEST_TestDocsEndpoint_test_apps_docs_returns_entity_collection_spec
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_integration_tests/test/features/test_docs_endpoint.test.py#L80 (Test: test_apps_docs_returns_entity_collection_spec)

Test Case: test_areas_docs_returns_entity_collection_spec TEST_TestDocsEndpoint_test_areas_docs_returns_entity_collection_spec
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_integration_tests/test/features/test_docs_endpoint.test.py#L114 (Test: test_areas_docs_returns_entity_collection_spec)

Test Case: test_components_docs_returns_entity_collection_spec TEST_TestDocsEndpoint_test_components_docs_returns_entity_collection_spec
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_integration_tests/test/features/test_docs_endpoint.test.py#L97 (Test: test_components_docs_returns_entity_collection_spec)

Test Case: test_data_collection_docs TEST_TestDocsEndpoint_test_data_collection_docs
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_integration_tests/test/features/test_docs_endpoint.test.py#L157 (Test: test_data_collection_docs)

Test Case: test_logs_configuration_schema_field_names TEST_TestDocsEndpoint_test_logs_configuration_schema_field_names
status: verified
verifies: REQ_INTEROP_002

The log configuration schema must use ‘severity_filter’ and ‘max_entries’, not ‘level’ (which was a bug in the initial implementation).

Implementation: src/ros2_medkit_integration_tests/test/features/test_docs_endpoint.test.py#L197 (Test: test_logs_configuration_schema_field_names)

Test Case: test_nonexistent_entity_docs_returns_404 TEST_TestDocsEndpoint_test_nonexistent_entity_docs_returns_404
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_integration_tests/test/features/test_docs_endpoint.test.py#L251 (Test: test_nonexistent_entity_docs_returns_404)

Test Case: test_nonexistent_path_docs_returns_404 TEST_TestDocsEndpoint_test_nonexistent_path_docs_returns_404
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_integration_tests/test/features/test_docs_endpoint.test.py#L264 (Test: test_nonexistent_path_docs_returns_404)

Test Case: test_operations_collection_docs TEST_TestDocsEndpoint_test_operations_collection_docs
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_integration_tests/test/features/test_docs_endpoint.test.py#L185 (Test: test_operations_collection_docs)

Test Case: test_root_docs_returns_openapi_spec TEST_TestDocsEndpoint_test_root_docs_returns_openapi_spec
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_integration_tests/test/features/test_docs_endpoint.test.py#L56 (Test: test_root_docs_returns_openapi_spec)

Test Case: test_spec_contains_components TEST_TestDocsEndpoint_test_spec_contains_components
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_integration_tests/test/features/test_docs_endpoint.test.py#L291 (Test: test_spec_contains_components)

Test Case: test_spec_contains_server_info TEST_TestDocsEndpoint_test_spec_contains_server_info
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_integration_tests/test/features/test_docs_endpoint.test.py#L277 (Test: test_spec_contains_server_info)

Test Case: test_specific_app_docs TEST_TestDocsEndpoint_test_specific_app_docs
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_integration_tests/test/features/test_docs_endpoint.test.py#L131 (Test: test_specific_app_docs)

Test Case: test_area_components_nonexistent_error TEST_TestEntityListing_test_area_components_nonexistent_error
status: verified
verifies: REQ_INTEROP_006

Implementation: src/ros2_medkit_integration_tests/test/features/test_entity_listing.test.py#L153 (Test: test_area_components_nonexistent_error)

Test Case: test_function_detail_accessible TEST_TestEntityListing_test_function_detail_accessible
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_integration_tests/test/features/test_entity_listing.test.py#L140 (Test: test_function_detail_accessible)

Test Case: test_invalid_app_id_special_chars TEST_TestEntityListing_test_invalid_app_id_special_chars
status: verified
verifies: REQ_INTEROP_018

Implementation: src/ros2_medkit_integration_tests/test/features/test_entity_listing.test.py#L171 (Test: test_invalid_app_id_special_chars)

Test Case: test_invalid_area_id_special_chars TEST_TestEntityListing_test_invalid_area_id_special_chars
status: verified
verifies: REQ_INTEROP_006

Implementation: src/ros2_medkit_integration_tests/test/features/test_entity_listing.test.py#L203 (Test: test_invalid_area_id_special_chars)

Test Case: test_invalid_ids_with_special_chars TEST_TestEntityListing_test_invalid_ids_with_special_chars
status: verified
verifies: REQ_INTEROP_018

Implementation: src/ros2_medkit_integration_tests/test/features/test_entity_listing.test.py#L256 (Test: test_invalid_ids_with_special_chars)

Test Case: test_list_areas_empty_in_runtime_mode TEST_TestEntityListing_test_list_areas_empty_in_runtime_mode
status: verified
verifies: REQ_INTEROP_003

With the SOVD-aligned entity model, areas are not created from namespaces in runtime_only mode. Namespace grouping creates Functions instead.

Implementation: src/ros2_medkit_integration_tests/test/features/test_entity_listing.test.py#L55 (Test: test_list_areas_empty_in_runtime_mode)

Test Case: test_list_components TEST_TestEntityListing_test_list_components
status: verified
verifies: REQ_INTEROP_003

With the SOVD-aligned entity model, runtime_only mode exposes a single Component derived from the host system info (hostname, OS, architecture) rather than synthetic namespace-based components.

Implementation: src/ros2_medkit_integration_tests/test/features/test_entity_listing.test.py#L74 (Test: test_list_components)

Test Case: test_list_functions TEST_TestEntityListing_test_list_functions
status: verified
verifies: REQ_INTEROP_003

With the SOVD-aligned entity model, namespace grouping creates Function entities instead of Areas/Components.

Implementation: src/ros2_medkit_integration_tests/test/features/test_entity_listing.test.py#L111 (Test: test_list_functions)

Test Case: test_valid_ids_with_underscores TEST_TestEntityListing_test_valid_ids_with_underscores
status: verified
verifies: REQ_INTEROP_018

Implementation: src/ros2_medkit_integration_tests/test/features/test_entity_listing.test.py#L231 (Test: test_valid_ids_with_underscores)

Test Case: test_app_is_located_on_endpoint TEST_TestEntityModelRuntime_test_app_is_located_on_endpoint
status: verified
verifies: REQ_INTEROP_003

The is-located-on endpoint returns a collection response with items containing the host component.

Implementation: src/ros2_medkit_integration_tests/test/features/test_entity_model_runtime.test.py#L198 (Test: test_app_is_located_on_endpoint)

Test Case: test_apps_linked_to_default_component TEST_TestEntityModelRuntime_test_apps_linked_to_default_component
status: verified
verifies: REQ_INTEROP_003

Every discovered App should reference the single default Component via the SOVD is-located-on relationship.

Implementation: src/ros2_medkit_integration_tests/test/features/test_entity_model_runtime.test.py#L169 (Test: test_apps_linked_to_default_component)

Test Case: test_areas_empty_in_runtime_mode TEST_TestEntityModelRuntime_test_areas_empty_in_runtime_mode
status: verified
verifies: REQ_INTEROP_003

With the SOVD-aligned entity model, namespaces create Functions, not Areas. Areas require explicit manifest definition.

Implementation: src/ros2_medkit_integration_tests/test/features/test_entity_model_runtime.test.py#L101 (Test: test_areas_empty_in_runtime_mode)

Test Case: test_default_component_detail TEST_TestEntityModelRuntime_test_default_component_detail
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_integration_tests/test/features/test_entity_model_runtime.test.py#L152 (Test: test_default_component_detail)

Test Case: test_default_component_from_host TEST_TestEntityModelRuntime_test_default_component_from_host
status: verified
verifies: REQ_INTEROP_003

The default Component is created from HostInfoProvider with hostname, OS, and architecture metadata.

Implementation: src/ros2_medkit_integration_tests/test/features/test_entity_model_runtime.test.py#L122 (Test: test_default_component_from_host)

Test Case: test_function_detail_shows_namespace_source TEST_TestEntityModelRuntime_test_function_detail_shows_namespace_source
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_integration_tests/test/features/test_entity_model_runtime.test.py#L83 (Test: test_function_detail_shows_namespace_source)

Test Case: test_function_hosts_apps TEST_TestEntityModelRuntime_test_function_hosts_apps
status: verified
verifies: REQ_INTEROP_003

The powertrain Function (from /powertrain namespace) should host apps like temp_sensor, rpm_sensor, calibration, long_calibration. We verify this by checking the x-medkit.ros2.node field on app detail which contains the FQN (e.g. /powertrain/engine/temp_sensor).

Implementation: src/ros2_medkit_integration_tests/test/features/test_entity_model_runtime.test.py#L248 (Test: test_function_hosts_apps)

Test Case: test_multiple_apps_same_component TEST_TestEntityModelRuntime_test_multiple_apps_same_component
status: verified
verifies: REQ_INTEROP_003

In runtime_only mode, there is only one Component, so every App must be located on it. We verify a subset of known demo apps rather than all apps (the gateway node itself is also an app).

Implementation: src/ros2_medkit_integration_tests/test/features/test_entity_model_runtime.test.py#L219 (Test: test_multiple_apps_same_component)

Test Case: test_namespaces_create_functions TEST_TestEntityModelRuntime_test_namespaces_create_functions
status: verified
verifies: REQ_INTEROP_003

Demo nodes in /powertrain/engine, /chassis/brakes, /body/…, /perception/lidar should produce Functions: powertrain, chassis, body, perception.

Implementation: src/ros2_medkit_integration_tests/test/features/test_entity_model_runtime.test.py#L57 (Test: test_namespaces_create_functions)

Test Case: test_app_routes_work_with_app_id TEST_TestEntityRouting_test_app_routes_work_with_app_id
status: verified
verifies: REQ_INTEROP_003

Verify that while /components rejects app IDs, /apps accepts them.

Implementation: src/ros2_medkit_integration_tests/test/features/test_entity_routing.test.py#L173 (Test: test_app_routes_work_with_app_id)

Test Case: test_component_route_rejects_app_id_configurations TEST_TestEntityRouting_test_component_route_rejects_app_id_configurations
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_integration_tests/test/features/test_entity_routing.test.py#L135 (Test: test_component_route_rejects_app_id_configurations)

Test Case: test_component_route_rejects_app_id_data TEST_TestEntityRouting_test_component_route_rejects_app_id_data
status: verified
verifies: REQ_INTEROP_003

In runtime-only discovery mode, /components/{id} should only accept synthetic component IDs, not individual ROS 2 node (app) IDs.

Implementation: src/ros2_medkit_integration_tests/test/features/test_entity_routing.test.py#L84 (Test: test_component_route_rejects_app_id_data)

Test Case: test_component_route_rejects_app_id_faults TEST_TestEntityRouting_test_component_route_rejects_app_id_faults
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_integration_tests/test/features/test_entity_routing.test.py#L152 (Test: test_component_route_rejects_app_id_faults)

Test Case: test_component_route_rejects_app_id_operations TEST_TestEntityRouting_test_component_route_rejects_app_id_operations
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_integration_tests/test/features/test_entity_routing.test.py#L118 (Test: test_component_route_rejects_app_id_operations)

Test Case: test_16_snapshot_capture_on_fault_confirmation TEST_TestFaultManagerIntegration_test_16_snapshot_capture_on_fault_confirmation
status: verified
verifies: REQ_INTEROP_088

Test that snapshot is captured when fault is confirmed.

Implementation: src/ros2_medkit_fault_manager/test/test_integration.test.py#L559 (Test: test_16_snapshot_capture_on_fault_confirmation)

Test Case: test_17_get_snapshots_nonexistent_fault TEST_TestFaultManagerIntegration_test_17_get_snapshots_nonexistent_fault
status: verified
verifies: REQ_INTEROP_088

Test GetSnapshots returns error for nonexistent fault.

Implementation: src/ros2_medkit_fault_manager/test/test_integration.test.py#L636 (Test: test_17_get_snapshots_nonexistent_fault)

Test Case: test_18_get_snapshots_empty_fault_code TEST_TestFaultManagerIntegration_test_18_get_snapshots_empty_fault_code
status: verified
verifies: REQ_INTEROP_088

Test GetSnapshots returns error for empty fault code.

Implementation: src/ros2_medkit_fault_manager/test/test_integration.test.py#L652 (Test: test_18_get_snapshots_empty_fault_code)

Test Case: test_19_snapshot_with_topic_filter TEST_TestFaultManagerIntegration_test_19_snapshot_with_topic_filter
status: verified
verifies: REQ_INTEROP_088

Test GetSnapshots with specific topic filter.

Implementation: src/ros2_medkit_fault_manager/test/test_integration.test.py#L668 (Test: test_19_snapshot_with_topic_filter)

Test Case: test_20_snapshot_config_loads_patterns TEST_TestFaultManagerIntegration_test_20_snapshot_config_loads_patterns
status: verified
verifies: REQ_INTEROP_088

Test that pattern-based config is loaded correctly.

Implementation: src/ros2_medkit_fault_manager/test/test_integration.test.py#L699 (Test: test_20_snapshot_config_loads_patterns)

Test Case: test_faults_nonexistent_component TEST_TestFaultsApi_test_faults_nonexistent_component
status: verified
verifies: REQ_INTEROP_012

Implementation: src/ros2_medkit_integration_tests/test/features/test_faults_api.test.py#L103 (Test: test_faults_nonexistent_component)

Test Case: test_get_nonexistent_fault TEST_TestFaultsApi_test_get_nonexistent_fault
status: verified
verifies: REQ_INTEROP_013

Implementation: src/ros2_medkit_integration_tests/test/features/test_faults_api.test.py#L121 (Test: test_get_nonexistent_fault)

Test Case: test_list_faults_response_structure TEST_TestFaultsApi_test_list_faults_response_structure
status: verified
verifies: REQ_INTEROP_012

In the heuristic discovery model, ROS nodes are Apps.

Implementation: src/ros2_medkit_integration_tests/test/features/test_faults_api.test.py#L79 (Test: test_list_faults_response_structure)

Test Case: test_root_endpoint_includes_faults TEST_TestFaultsApi_test_root_endpoint_includes_faults
status: verified
verifies: REQ_INTEROP_012

Implementation: src/ros2_medkit_integration_tests/test/features/test_faults_api.test.py#L48 (Test: test_root_endpoint_includes_faults)

Test Case: test_app_accessible_without_areas TEST_TestFlatEntityTree_test_app_accessible_without_areas
status: verified
verifies: REQ_INTEROP_003

Verifies that apps are accessible in a flat entity tree where no areas are defined.

Implementation: src/ros2_medkit_integration_tests/test/features/test_flat_entity_tree.test.py#L167 (Test: test_app_accessible_without_areas)

Test Case: test_apps_count TEST_TestFlatEntityTree_test_apps_count
status: verified
verifies: REQ_INTEROP_003

Expected: lidar-driver, turtlebot3-node, nav2-controller, robot-state-publisher.

Implementation: src/ros2_medkit_integration_tests/test/features/test_flat_entity_tree.test.py#L121 (Test: test_apps_count)

Test Case: test_areas_empty TEST_TestFlatEntityTree_test_areas_empty
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_integration_tests/test/features/test_flat_entity_tree.test.py#L68 (Test: test_areas_empty)

Test Case: test_components_count TEST_TestFlatEntityTree_test_components_count
status: verified
verifies: REQ_INTEROP_003

Expected: turtlebot3 (root) only. Subcomponents (raspberry-pi, opencr-board, lds-sensor) are filtered from the top-level listing and accessible via GET /components/turtlebot3/subcomponents.

Implementation: src/ros2_medkit_integration_tests/test/features/test_flat_entity_tree.test.py#L80 (Test: test_components_count)

Test Case: test_functions_count TEST_TestFlatEntityTree_test_functions_count
status: verified
verifies: REQ_INTEROP_003

Expected: autonomous-navigation, teleoperation.

Implementation: src/ros2_medkit_integration_tests/test/features/test_flat_entity_tree.test.py#L146 (Test: test_functions_count)

Test Case: test_subcomponents_count TEST_TestFlatEntityTree_test_subcomponents_count
status: verified
verifies: REQ_INTEROP_003

Expected: raspberry-pi, opencr-board, lds-sensor.

Implementation: src/ros2_medkit_integration_tests/test/features/test_flat_entity_tree.test.py#L100 (Test: test_subcomponents_count)

Test Case: test_app_is_located_on_endpoint TEST_TestGatewayNode_test_app_is_located_on_endpoint
status: verified
verifies: REQ_INTEROP_105

Implementation: src/ros2_medkit_gateway/test/test_gateway_node.cpp#L883 (Test: test_app_is_located_on_endpoint)

Test Case: test_area_contains_nonexistent TEST_TestGatewayNode_test_area_contains_nonexistent
status: verified
verifies: REQ_INTEROP_006

Implementation: src/ros2_medkit_gateway/test/test_gateway_node.cpp#L801 (Test: test_area_contains_nonexistent)

Test Case: test_component_hosts_nonexistent TEST_TestGatewayNode_test_component_hosts_nonexistent
status: verified
verifies: REQ_INTEROP_007

Implementation: src/ros2_medkit_gateway/test/test_gateway_node.cpp#L811 (Test: test_component_hosts_nonexistent)

Test Case: test_execution_update_execution_not_found TEST_TestGatewayNode_test_execution_update_execution_not_found
status: verified
verifies: REQ_INTEROP_038

Implementation: src/ros2_medkit_gateway/test/test_gateway_node.cpp#L707 (Test: test_execution_update_execution_not_found)

Test Case: test_execution_update_invalid_component_id TEST_TestGatewayNode_test_execution_update_invalid_component_id
status: verified
verifies: REQ_INTEROP_038

Implementation: src/ros2_medkit_gateway/test/test_gateway_node.cpp#L667 (Test: test_execution_update_invalid_component_id)

Test Case: test_execution_update_missing_capability TEST_TestGatewayNode_test_execution_update_missing_capability
status: verified
verifies: REQ_INTEROP_038

Implementation: src/ros2_medkit_gateway/test/test_gateway_node.cpp#L680 (Test: test_execution_update_missing_capability)

Test Case: test_execution_update_unsupported_capability TEST_TestGatewayNode_test_execution_update_unsupported_capability
status: verified
verifies: REQ_INTEROP_038

Implementation: src/ros2_medkit_gateway/test/test_gateway_node.cpp#L693 (Test: test_execution_update_unsupported_capability)

Test Case: test_list_areas_endpoint TEST_TestGatewayNode_test_list_areas_endpoint
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_gateway/test/test_gateway_node.cpp#L304 (Test: test_list_areas_endpoint)

Test Case: test_list_components_endpoint TEST_TestGatewayNode_test_list_components_endpoint
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_gateway/test/test_gateway_node.cpp#L320 (Test: test_list_components_endpoint)

Test Case: test_root_endpoint TEST_TestGatewayNode_test_root_endpoint
status: verified
verifies: REQ_INTEROP_010

Implementation: src/ros2_medkit_gateway/test/test_gateway_node.cpp#L233 (Test: test_root_endpoint)

Test Case: test_version_info_endpoint TEST_TestGatewayNode_test_version_info_endpoint
status: verified
verifies: REQ_INTEROP_001

Implementation: src/ros2_medkit_gateway/test/test_gateway_node.cpp#L279 (Test: test_version_info_endpoint)

Test Case: test_app_detail_has_capability_uris TEST_TestHateoas_test_app_detail_has_capability_uris
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_integration_tests/test/features/test_hateoas.test.py#L165 (Test: test_app_detail_has_capability_uris)

Test Case: test_apps_list_has_href TEST_TestHateoas_test_apps_list_has_href
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_integration_tests/test/features/test_hateoas.test.py#L90 (Test: test_apps_list_has_href)

Test Case: test_area_detail_has_capability_uris TEST_TestHateoas_test_area_detail_has_capability_uris
status: verified
verifies: REQ_INTEROP_003

ros2_medkit extension: areas support resource collections beyond SOVD spec (which only defines them for apps/components).

Implementation: src/ros2_medkit_integration_tests/test/features/test_hateoas.test.py#L188 (Test: test_area_detail_has_capability_uris)

Test Case: test_areas_list_has_href TEST_TestHateoas_test_areas_list_has_href
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_integration_tests/test/features/test_hateoas.test.py#L110 (Test: test_areas_list_has_href)

Test Case: test_component_detail_has_capability_uris TEST_TestHateoas_test_component_detail_has_capability_uris
status: verified
verifies: REQ_INTEROP_003

SOVD requires entity details to have flat capability URIs.

Implementation: src/ros2_medkit_integration_tests/test/features/test_hateoas.test.py#L134 (Test: test_component_detail_has_capability_uris)

Test Case: test_components_list_has_href TEST_TestHateoas_test_components_list_has_href
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_integration_tests/test/features/test_hateoas.test.py#L70 (Test: test_components_list_has_href)

Test Case: test_contains_list_has_href TEST_TestHateoas_test_contains_list_has_href
status: verified
verifies: REQ_INTEROP_006

Uses ‘powertrain’ area which contains components in the manifest.

Implementation: src/ros2_medkit_integration_tests/test/features/test_hateoas.test.py#L294 (Test: test_contains_list_has_href)

Test Case: test_depends_on_apps_has_href TEST_TestHateoas_test_depends_on_apps_has_href
status: verified
verifies: REQ_INTEROP_009

Implementation: src/ros2_medkit_integration_tests/test/features/test_hateoas.test.py#L379 (Test: test_depends_on_apps_has_href)

Test Case: test_depends_on_apps_nonexistent TEST_TestHateoas_test_depends_on_apps_nonexistent
status: verified
verifies: REQ_INTEROP_009

Implementation: src/ros2_medkit_integration_tests/test/features/test_hateoas.test.py#L405 (Test: test_depends_on_apps_nonexistent)

Test Case: test_depends_on_components_has_href TEST_TestHateoas_test_depends_on_components_has_href
status: verified
verifies: REQ_INTEROP_008

Implementation: src/ros2_medkit_integration_tests/test/features/test_hateoas.test.py#L352 (Test: test_depends_on_components_has_href)

Test Case: test_function_detail_has_capability_uris TEST_TestHateoas_test_function_detail_has_capability_uris
status: verified
verifies: REQ_INTEROP_003

Requires hybrid discovery mode with a manifest that defines functions.

Implementation: src/ros2_medkit_integration_tests/test/features/test_hateoas.test.py#L210 (Test: test_function_detail_has_capability_uris)

Test Case: test_functions_list_has_href TEST_TestHateoas_test_functions_list_has_href
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_integration_tests/test/features/test_hateoas.test.py#L468 (Test: test_functions_list_has_href)

Test Case: test_hosts_list_has_href TEST_TestHateoas_test_hosts_list_has_href
status: verified
verifies: REQ_INTEROP_007

Implementation: src/ros2_medkit_integration_tests/test/features/test_hateoas.test.py#L322 (Test: test_hosts_list_has_href)

Test Case: test_is_located_on_apps_has_href TEST_TestHateoas_test_is_located_on_apps_has_href
status: verified
verifies: REQ_INTEROP_105

GET /apps/{id}/is-located-on returns 0-or-1 component hrefs.

Implementation: src/ros2_medkit_integration_tests/test/features/test_hateoas.test.py#L423 (Test: test_is_located_on_apps_has_href)

Test Case: test_is_located_on_apps_nonexistent TEST_TestHateoas_test_is_located_on_apps_nonexistent
status: verified
verifies: REQ_INTEROP_105

GET /apps/{id}/is-located-on returns 404 for unknown app.

Implementation: src/ros2_medkit_integration_tests/test/features/test_hateoas.test.py#L449 (Test: test_is_located_on_apps_nonexistent)

Test Case: test_subareas_list_has_href TEST_TestHateoas_test_subareas_list_has_href
status: verified
verifies: REQ_INTEROP_004

Uses ‘powertrain’ area which has subareas defined in the manifest.

Implementation: src/ros2_medkit_integration_tests/test/features/test_hateoas.test.py#L238 (Test: test_subareas_list_has_href)

Test Case: test_subcomponents_list_has_href TEST_TestHateoas_test_subcomponents_list_has_href
status: verified
verifies: REQ_INTEROP_005

Implementation: src/ros2_medkit_integration_tests/test/features/test_hateoas.test.py#L263 (Test: test_subcomponents_list_has_href)

Test Case: test_x_medkit_extension_in_list_responses TEST_TestHateoas_test_x_medkit_extension_in_list_responses
status: verified
verifies: REQ_INTEROP_003

ROS2-specific data should be in x-medkit extension, not at top level.

Implementation: src/ros2_medkit_integration_tests/test/features/test_hateoas.test.py#L491 (Test: test_x_medkit_extension_in_list_responses)

Test Case: test_docs_endpoint TEST_TestHealth_test_docs_endpoint
status: verified
verifies: REQ_INTEROP_002

Implementation: src/ros2_medkit_integration_tests/test/features/test_health.test.py#L131 (Test: test_docs_endpoint)

Test Case: test_docs_spec_completeness TEST_TestHealth_test_docs_spec_completeness
status: verified
verifies: REQ_INTEROP_002

Validates that every endpoint has proper type contracts for client code generation - no bare “Successful response” without schema.

Implementation: src/ros2_medkit_integration_tests/test/features/test_health.test.py#L144 (Test: test_docs_spec_completeness)

Test Case: test_health_endpoint_returns_200 TEST_TestHealth_test_health_endpoint_returns_200
status: verified
verifies: REQ_INTEROP_010

Implementation: src/ros2_medkit_integration_tests/test/features/test_health.test.py#L47 (Test: test_health_endpoint_returns_200)

Test Case: test_root_endpoint_returns_api_info TEST_TestHealth_test_root_endpoint_returns_api_info
status: verified
verifies: REQ_INTEROP_010

Implementation: src/ros2_medkit_integration_tests/test/features/test_health.test.py#L55 (Test: test_root_endpoint_returns_api_info)

Test Case: test_root_includes_apps_endpoints TEST_TestHealth_test_root_includes_apps_endpoints
status: verified
verifies: REQ_INTEROP_010

Implementation: src/ros2_medkit_integration_tests/test/features/test_health.test.py#L114 (Test: test_root_includes_apps_endpoints)

Test Case: test_version_endpoint TEST_TestHealth_test_version_endpoint
status: verified
verifies: REQ_INTEROP_001

Implementation: src/ros2_medkit_integration_tests/test/features/test_health.test.py#L93 (Test: test_version_endpoint)

Test Case: test_exact_app_count TEST_TestHybridSuppression_test_exact_app_count
status: verified
verifies: REQ_INTEROP_003

App count must match manifest exactly - no underscored duplicates.

Implementation: src/ros2_medkit_integration_tests/test/features/test_hybrid_suppression.test.py#L169 (Test: test_exact_app_count)

Test Case: test_exact_area_count TEST_TestHybridSuppression_test_exact_area_count
status: verified
verifies: REQ_INTEROP_003

Subareas are filtered from GET /areas and only accessible via GET /areas/{id}/subareas.

Implementation: src/ros2_medkit_integration_tests/test/features/test_hybrid_suppression.test.py#L127 (Test: test_exact_area_count)

Test Case: test_exact_component_count TEST_TestHybridSuppression_test_exact_component_count
status: verified
verifies: REQ_INTEROP_003

Component count must match manifest exactly - no underscored duplicates.

Implementation: src/ros2_medkit_integration_tests/test/features/test_hybrid_suppression.test.py#L148 (Test: test_exact_component_count)

Test Case: test_exact_function_count TEST_TestHybridSuppression_test_exact_function_count
status: verified
verifies: REQ_INTEROP_003

Function count must match manifest exactly.

Implementation: src/ros2_medkit_integration_tests/test/features/test_hybrid_suppression.test.py#L185 (Test: test_exact_function_count)

Test Case: test_health_shows_hybrid_mode TEST_TestHybridSuppression_test_health_shows_hybrid_mode
status: verified
verifies: REQ_INTEROP_003

Health endpoint should confirm hybrid discovery mode.

Implementation: src/ros2_medkit_integration_tests/test/features/test_hybrid_suppression.test.py#L281 (Test: test_health_shows_hybrid_mode)

Test Case: test_manifest_apps_are_online TEST_TestHybridSuppression_test_manifest_apps_are_online
status: verified
verifies: REQ_INTEROP_003

Even with allow_heuristic_apps=false (gap-fill blocking runtime apps from the entity tree), the linker must still receive the unfiltered runtime apps so it can bind manifest apps to live nodes.

Implementation: src/ros2_medkit_integration_tests/test/features/test_hybrid_suppression.test.py#L257 (Test: test_manifest_apps_are_online)

Test Case: test_no_root_or_synthetic_areas TEST_TestHybridSuppression_test_no_root_or_synthetic_areas
status: verified
verifies: REQ_INTEROP_003

No ‘root’ or underscored synthetic areas should exist in top-level.

Implementation: src/ros2_medkit_integration_tests/test/features/test_hybrid_suppression.test.py#L243 (Test: test_no_root_or_synthetic_areas)

Test Case: test_no_underscored_app_duplicates TEST_TestHybridSuppression_test_no_underscored_app_duplicates
status: verified
verifies: REQ_INTEROP_003

In hybrid mode, runtime nodes matching manifest ros_bindings should be linked to the manifest app, not create separate entities like ‘powertrain_engine_temp_sensor’.

Implementation: src/ros2_medkit_integration_tests/test/features/test_hybrid_suppression.test.py#L206 (Test: test_no_underscored_app_duplicates)

Test Case: test_no_underscored_component_duplicates TEST_TestHybridSuppression_test_no_underscored_component_duplicates
status: verified
verifies: REQ_INTEROP_003

Synthetic components like ‘powertrain_engine’ should be suppressed when manifest already defines components for those namespaces.

Implementation: src/ros2_medkit_integration_tests/test/features/test_hybrid_suppression.test.py#L225 (Test: test_no_underscored_component_duplicates)

Test Case: test_health_surfaces_leaf_collision_with_both_peers TEST_TestLeafCollisionAggregation_test_health_surfaces_leaf_collision_with_both_peers
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_integration_tests/test/features/test_leaf_collision_aggregation.test.py#L220 (Test: test_health_surfaces_leaf_collision_with_both_peers)

Test Case: test_shared_leaf_resolves_to_exactly_one_peer TEST_TestLeafCollisionAggregation_test_shared_leaf_resolves_to_exactly_one_peer
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_integration_tests/test/features/test_leaf_collision_aggregation.test.py#L238 (Test: test_shared_leaf_resolves_to_exactly_one_peer)

Test Case: test_global_clear_skips_locked_entity_faults TEST_TestLockingFaults_test_global_clear_skips_locked_entity_faults
status: verified
verifies: REQ_INTEROP_100

Lock an app, global DELETE /faults skips its faults, unlock and clear works.

Implementation: src/ros2_medkit_integration_tests/test/features/test_locking_faults.test.py#L53 (Test: test_global_clear_skips_locked_entity_faults)

Test Case: test_component_lock_allows_owner_on_child TEST_TestLockingPropagation_test_component_lock_allows_owner_on_child
status: verified
verifies: REQ_INTEROP_100

Lock owner can still access child app.

Implementation: src/ros2_medkit_integration_tests/test/features/test_locking_propagation.test.py#L107 (Test: test_component_lock_allows_owner_on_child)

Test Case: test_component_lock_blocks_child_app TEST_TestLockingPropagation_test_component_lock_blocks_child_app
status: verified
verifies: REQ_INTEROP_100

Lock on component blocks mutating operations on child app.

Implementation: src/ros2_medkit_integration_tests/test/features/test_locking_propagation.test.py#L78 (Test: test_component_lock_blocks_child_app)

Test Case: test_acquire_lock_on_app TEST_TestLocking_test_acquire_lock_on_app
status: verified
verifies: REQ_INTEROP_100

Acquire a lock on an app and verify the response.

Implementation: src/ros2_medkit_integration_tests/test/features/test_locking.test.py#L103 (Test: test_acquire_lock_on_app)

Test Case: test_acquire_lock_with_scopes TEST_TestLocking_test_acquire_lock_with_scopes
status: verified
verifies: REQ_INTEROP_100

Acquire a scoped lock.

Implementation: src/ros2_medkit_integration_tests/test/features/test_locking.test.py#L119 (Test: test_acquire_lock_with_scopes)

Test Case: test_acquire_without_client_id_returns_400 TEST_TestLocking_test_acquire_without_client_id_returns_400
status: verified
verifies: REQ_INTEROP_100

Acquire without X-Client-Id header returns 400.

Implementation: src/ros2_medkit_integration_tests/test/features/test_locking.test.py#L297 (Test: test_acquire_without_client_id_returns_400)

Test Case: test_acquire_without_expiration_returns_400 TEST_TestLocking_test_acquire_without_expiration_returns_400
status: verified
verifies: REQ_INTEROP_100

Acquire without lock_expiration returns 400.

Implementation: src/ros2_medkit_integration_tests/test/features/test_locking.test.py#L307 (Test: test_acquire_without_expiration_returns_400)

Test Case: test_already_locked_returns_409 TEST_TestLocking_test_already_locked_returns_409
status: verified
verifies: REQ_INTEROP_100

Second acquire by different client returns 409.

Implementation: src/ros2_medkit_integration_tests/test/features/test_locking.test.py#L313 (Test: test_already_locked_returns_409)

Test Case: test_break_lock TEST_TestLocking_test_break_lock
status: verified
verifies: REQ_INTEROP_100

Client B can break client A’s lock with break_lock=true.

Implementation: src/ros2_medkit_integration_tests/test/features/test_locking.test.py#L252 (Test: test_break_lock)

Test Case: test_extend_lock TEST_TestLocking_test_extend_lock
status: verified
verifies: REQ_INTEROP_103

Acquire then extend a lock’s expiration.

Implementation: src/ros2_medkit_integration_tests/test/features/test_locking.test.py#L174 (Test: test_extend_lock)

Test Case: test_get_lock_details TEST_TestLocking_test_get_lock_details
status: verified
verifies: REQ_INTEROP_102

Acquire then get lock details by lock ID.

Implementation: src/ros2_medkit_integration_tests/test/features/test_locking.test.py#L155 (Test: test_get_lock_details)

Test Case: test_list_locks TEST_TestLocking_test_list_locks
status: verified
verifies: REQ_INTEROP_101

Acquire then list locks.

Implementation: src/ros2_medkit_integration_tests/test/features/test_locking.test.py#L131 (Test: test_list_locks)

Test Case: test_list_locks_empty TEST_TestLocking_test_list_locks_empty
status: verified
verifies: REQ_INTEROP_101

List locks when none exist returns empty items.

Implementation: src/ros2_medkit_integration_tests/test/features/test_locking.test.py#L148 (Test: test_list_locks_empty)

Test Case: test_lock_blocks_other_client TEST_TestLocking_test_lock_blocks_other_client
status: verified
verifies: REQ_INTEROP_100

Lock by client A blocks data write by client B (409).

Implementation: src/ros2_medkit_integration_tests/test/features/test_locking.test.py#L213 (Test: test_lock_blocks_other_client)

Test Case: test_lock_expires_automatically TEST_TestLocking_test_lock_expires_automatically
status: verified
verifies: REQ_INTEROP_100

Lock with short TTL expires and no longer blocks access.

Implementation: src/ros2_medkit_integration_tests/test/features/test_locking.test.py#L345 (Test: test_lock_expires_automatically)

Test Case: test_nonexistent_entity_returns_404 TEST_TestLocking_test_nonexistent_entity_returns_404
status: verified
verifies: REQ_INTEROP_100

Acquiring lock on nonexistent entity returns 404.

Implementation: src/ros2_medkit_integration_tests/test/features/test_locking.test.py#L371 (Test: test_nonexistent_entity_returns_404)

Test Case: test_owned_field_per_client TEST_TestLocking_test_owned_field_per_client
status: verified
verifies: REQ_INTEROP_101

The ‘owned’ field reflects the requesting client.

Implementation: src/ros2_medkit_integration_tests/test/features/test_locking.test.py#L272 (Test: test_owned_field_per_client)

Test Case: test_release_lock TEST_TestLocking_test_release_lock
status: verified
verifies: REQ_INTEROP_104

Acquire then release a lock, verify it’s gone.

Implementation: src/ros2_medkit_integration_tests/test/features/test_locking.test.py#L192 (Test: test_release_lock)

Test Case: test_release_not_owner_returns_403 TEST_TestLocking_test_release_not_owner_returns_403
status: verified
verifies: REQ_INTEROP_104

Releasing another client’s lock returns 403.

Implementation: src/ros2_medkit_integration_tests/test/features/test_locking.test.py#L328 (Test: test_release_not_owner_returns_403)

Test Case: test_scoped_lock_allows_other_collections TEST_TestLocking_test_scoped_lock_allows_other_collections
status: verified
verifies: REQ_INTEROP_100

Scoped lock on configurations does not block data writes.

Implementation: src/ros2_medkit_integration_tests/test/features/test_locking.test.py#L230 (Test: test_scoped_lock_allows_other_collections)

Test Case: test_configurations_subscription_create TEST_TestMultiCollectionSubscriptions_test_configurations_subscription_create
status: verified
verifies: REQ_INTEROP_089

Implementation: src/ros2_medkit_integration_tests/test/features/test_multi_collection_subscriptions.test.py#L178 (Test: test_configurations_subscription_create)

status: verified
verifies: REQ_INTEROP_089

Implementation: src/ros2_medkit_integration_tests/test/features/test_multi_collection_subscriptions.test.py#L142 (Test: test_data_subscription_create)

status: verified
verifies: REQ_INTEROP_028

Implementation: src/ros2_medkit_integration_tests/test/features/test_multi_collection_subscriptions.test.py#L346 (Test: test_delete_subscription)

status: verified
verifies: REQ_INTEROP_089

Implementation: src/ros2_medkit_integration_tests/test/features/test_multi_collection_subscriptions.test.py#L161 (Test: test_faults_subscription_create)

status: verified
verifies: REQ_INTEROP_089

Implementation: src/ros2_medkit_integration_tests/test/features/test_multi_collection_subscriptions.test.py#L195 (Test: test_logs_subscription_create)

status: verified

Creates a cyclic subscription on /apps/{id}/logs, connects to the SSE events endpoint, and verifies that EventEnvelope payloads arrive with log entry items containing id, timestamp, severity, and message fields.

Implementation: src/ros2_medkit_integration_tests/test/features/test_multi_collection_subscriptions.test.py#L212 (Test: test_logs_subscription_sse_stream)

status: verified
verifies: REQ_INTEROP_027

Implementation: src/ros2_medkit_integration_tests/test/features/test_multi_collection_subscriptions.test.py#L325 (Test: test_update_subscription_interval)

Test Case: test_all_endpoints_accept_spec_requests TEST_TestOpenApiCallability_test_all_endpoints_accept_spec_requests
status: verified
verifies: REQ_INTEROP_002

A 400 response means the spec is wrong - a generated client would build a request that the handler rejects.

Implementation: src/ros2_medkit_integration_tests/test/features/test_openapi_callability.test.py#L300 (Test: test_all_endpoints_accept_spec_requests)

Test Case: test_configurations_payload_uses_nested_x_medkit TEST_TestOpenApiResponseDrift_test_configurations_payload_uses_nested_x_medkit
status: verified
verifies: REQ_INTEROP_002

Items at the top level (only in aggregated mode) and parameters inside x-medkit.parameters[] (always emitted) must carry vendor source attribution under a nested x-medkit object, never as flat x-medkit-source / x-medkit-node keys. The drift test cannot catch reintroduction of the legacy flat keys because ConfigurationMetaData does not set additionalProperties: false. temp_sensor declares four ROS 2 parameters in the test fixture, which exercises the per-parameter emit path that #385 migrated.

Implementation: src/ros2_medkit_integration_tests/test/features/test_openapi_response_drift.test.py#L368 (Test: test_configurations_payload_uses_nested_x_medkit)

Test Case: test_get_responses_match_declared_schema TEST_TestOpenApiResponseDrift_test_get_responses_match_declared_schema
status: verified
verifies: REQ_INTEROP_002

Iterates GET endpoints from /docs, fetches each, and validates bodies against the response schema declared for status 200. Schema drift (handler emits a field schema does not declare as required, or vice versa) raises an error. Coverage limited to GET verbs; POST/PUT/DELETE request bodies and non-200 response shapes are out of scope (tracked under issue #338). Endpoints whose path placeholders need an entity type that was not discovered (e.g. /functions/{function_id}/… when no functions exist) are skipped explicitly with an entry in skipped_for_missing_entity rather than substituted with a bogus value that would silently 404 unvalidated.

Implementation: src/ros2_medkit_integration_tests/test/features/test_openapi_response_drift.test.py#L255 (Test: test_get_responses_match_declared_schema)

Test Case: test_update_status_payload_uses_nested_x_medkit TEST_TestOpenApiResponseDrift_test_update_status_payload_uses_nested_x_medkit
status: verified
verifies: REQ_INTEROP_002

The handler must emit x-medkit: {phase: ...} (nested object), not the legacy flat x-medkit-phase key. The drift test above already catches this via the schema declared in update_status_schema(); this explicit assertion makes the regression intent obvious.

Implementation: src/ros2_medkit_integration_tests/test/features/test_openapi_response_drift.test.py#L349 (Test: test_update_status_payload_uses_nested_x_medkit)

Test Case: test_cancel_nonexistent_execution TEST_TestOperationsApi_test_cancel_nonexistent_execution
status: verified
verifies: REQ_INTEROP_039

Implementation: src/ros2_medkit_integration_tests/test/features/test_operations_api.test.py#L466 (Test: test_cancel_nonexistent_execution)

Test Case: test_create_execution_for_service TEST_TestOperationsApi_test_create_execution_for_service
status: verified
verifies: REQ_INTEROP_035

Implementation: src/ros2_medkit_integration_tests/test/features/test_operations_api.test.py#L429 (Test: test_create_execution_for_service)

Test Case: test_get_operation_details_for_apps TEST_TestOperationsApi_test_get_operation_details_for_apps
status: verified
verifies: REQ_INTEROP_034

Implementation: src/ros2_medkit_integration_tests/test/features/test_operations_api.test.py#L353 (Test: test_get_operation_details_for_apps)

Test Case: test_get_operation_details_for_service TEST_TestOperationsApi_test_get_operation_details_for_service
status: verified
verifies: REQ_INTEROP_034

Uses host-derived default component which aggregates all apps’ operations.

Implementation: src/ros2_medkit_integration_tests/test/features/test_operations_api.test.py#L298 (Test: test_get_operation_details_for_service)

Test Case: test_get_operation_not_found TEST_TestOperationsApi_test_get_operation_not_found
status: verified
verifies: REQ_INTEROP_034

Implementation: src/ros2_medkit_integration_tests/test/features/test_operations_api.test.py#L389 (Test: test_get_operation_not_found)

Test Case: test_list_executions_returns_items_array TEST_TestOperationsApi_test_list_executions_returns_items_array
status: verified
verifies: REQ_INTEROP_036

Implementation: src/ros2_medkit_integration_tests/test/features/test_operations_api.test.py#L410 (Test: test_list_executions_returns_items_array)

Test Case: test_list_operations TEST_TestOperationsApi_test_list_operations
status: verified
verifies: REQ_INTEROP_033

Implementation: src/ros2_medkit_integration_tests/test/features/test_operations_api.test.py#L486 (Test: test_list_operations)

Test Case: test_operation_call_calibrate_service TEST_TestOperationsApi_test_operation_call_calibrate_service
status: verified
verifies: REQ_INTEROP_035

Operations are exposed on Apps (ROS 2 nodes), not Components.

Implementation: src/ros2_medkit_integration_tests/test/features/test_operations_api.test.py#L71 (Test: test_operation_call_calibrate_service)

Test Case: test_operation_call_invalid_entity_id TEST_TestOperationsApi_test_operation_call_invalid_entity_id
status: verified
verifies: REQ_INTEROP_035

Implementation: src/ros2_medkit_integration_tests/test/features/test_operations_api.test.py#L132 (Test: test_operation_call_invalid_entity_id)

Test Case: test_operation_call_invalid_operation_name TEST_TestOperationsApi_test_operation_call_invalid_operation_name
status: verified
verifies: REQ_INTEROP_035

Implementation: src/ros2_medkit_integration_tests/test/features/test_operations_api.test.py#L159 (Test: test_operation_call_invalid_operation_name)

Test Case: test_operation_call_nonexistent_entity TEST_TestOperationsApi_test_operation_call_nonexistent_entity
status: verified
verifies: REQ_INTEROP_035

Implementation: src/ros2_medkit_integration_tests/test/features/test_operations_api.test.py#L116 (Test: test_operation_call_nonexistent_entity)

Test Case: test_operation_call_nonexistent_operation TEST_TestOperationsApi_test_operation_call_nonexistent_operation
status: verified
verifies: REQ_INTEROP_035

Implementation: src/ros2_medkit_integration_tests/test/features/test_operations_api.test.py#L98 (Test: test_operation_call_nonexistent_operation)

Test Case: test_operation_call_with_invalid_json TEST_TestOperationsApi_test_operation_call_with_invalid_json
status: verified
verifies: REQ_INTEROP_035

Implementation: src/ros2_medkit_integration_tests/test/features/test_operations_api.test.py#L186 (Test: test_operation_call_with_invalid_json)

Test Case: test_operations_listed_in_app_discovery TEST_TestOperationsApi_test_operations_listed_in_app_discovery
status: verified
verifies: REQ_INTEROP_033

Implementation: src/ros2_medkit_integration_tests/test/features/test_operations_api.test.py#L207 (Test: test_operations_listed_in_app_discovery)

Test Case: test_root_endpoint_includes_operations TEST_TestOperationsApi_test_root_endpoint_includes_operations
status: verified
verifies: REQ_INTEROP_033

Implementation: src/ros2_medkit_integration_tests/test/features/test_operations_api.test.py#L241 (Test: test_root_endpoint_includes_operations)

Test Case: test_01_create_action_execution_and_poll_to_completion TEST_TestScenarioActionLifecycle_test_01_create_action_execution_and_poll_to_completion
status: verified
verifies: REQ_INTEROP_022

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_action_lifecycle.test.py#L100 (Test: test_01_create_action_execution_and_poll_to_completion)

Test Case: test_02_cancel_action_execution TEST_TestScenarioActionLifecycle_test_02_cancel_action_execution
status: verified
verifies: REQ_INTEROP_022

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_action_lifecycle.test.py#L118 (Test: test_02_cancel_action_execution)

Test Case: test_03_service_execution_returns_immediately TEST_TestScenarioActionLifecycle_test_03_service_execution_returns_immediately
status: verified
verifies: REQ_INTEROP_035

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_action_lifecycle.test.py#L145 (Test: test_03_service_execution_returns_immediately)

Test Case: test_04_execution_appears_in_list TEST_TestScenarioActionLifecycle_test_04_execution_appears_in_list
status: verified
verifies: REQ_INTEROP_022

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_action_lifecycle.test.py#L187 (Test: test_04_execution_appears_in_list)

Test Case: test_06_get_operation_details TEST_TestScenarioActionLifecycle_test_06_get_operation_details
status: verified
verifies: REQ_INTEROP_034

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_action_lifecycle.test.py#L257 (Test: test_06_get_operation_details)

Test Case: test_07_get_execution_status TEST_TestScenarioActionLifecycle_test_07_get_execution_status
status: verified
verifies: REQ_INTEROP_037

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_action_lifecycle.test.py#L302 (Test: test_07_get_execution_status)

Test Case: test_08_update_execution_not_implemented TEST_TestScenarioActionLifecycle_test_08_update_execution_not_implemented
status: verified
verifies: REQ_INTEROP_038

Each test creates its OWN execution, so there is no concurrent-goal issue that plagued the original test_101.

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_action_lifecycle.test.py#L322 (Test: test_08_update_execution_not_implemented)

Test Case: test_01_download_rosbag_success TEST_TestScenarioBulkDataDownload_test_01_download_rosbag_success
status: verified
verifies: REQ_INTEROP_073

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_bulk_data_download.test.py#L61 (Test: test_01_download_rosbag_success)

Test Case: test_02_download_wrong_entity_returns_404 TEST_TestScenarioBulkDataDownload_test_02_download_wrong_entity_returns_404
status: verified
verifies: REQ_INTEROP_073

Security check: rosbag belonging to one entity should not be accessible via another entity’s bulk-data endpoint.

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_bulk_data_download.test.py#L100 (Test: test_02_download_wrong_entity_returns_404)

Test Case: test_03_verify_complete_rosbag_content TEST_TestScenarioBulkDataDownload_test_03_verify_complete_rosbag_content
status: verified
verifies: REQ_INTEROP_073

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_bulk_data_download.test.py#L121 (Test: test_03_verify_complete_rosbag_content)

Test Case: test_01_upload_small_file TEST_TestScenarioBulkDataUpload_test_01_upload_small_file
status: verified
verifies: REQ_INTEROP_074

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_bulk_data_upload.test.py#L136 (Test: test_01_upload_small_file)

Test Case: test_02_upload_returns_location_header TEST_TestScenarioBulkDataUpload_test_02_upload_returns_location_header
status: verified
verifies: REQ_INTEROP_074

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_bulk_data_upload.test.py#L152 (Test: test_02_upload_returns_location_header)

Test Case: test_03_upload_with_description TEST_TestScenarioBulkDataUpload_test_03_upload_with_description
status: verified
verifies: REQ_INTEROP_074

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_bulk_data_upload.test.py#L170 (Test: test_03_upload_with_description)

Test Case: test_04_upload_with_metadata TEST_TestScenarioBulkDataUpload_test_04_upload_with_metadata
status: verified
verifies: REQ_INTEROP_074

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_bulk_data_upload.test.py#L182 (Test: test_04_upload_with_metadata)

Test Case: test_05_upload_missing_file_field TEST_TestScenarioBulkDataUpload_test_05_upload_missing_file_field
status: verified
verifies: REQ_INTEROP_074

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_bulk_data_upload.test.py#L196 (Test: test_05_upload_missing_file_field)

Test Case: test_06_upload_unknown_category TEST_TestScenarioBulkDataUpload_test_06_upload_unknown_category
status: verified
verifies: REQ_INTEROP_074

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_bulk_data_upload.test.py#L207 (Test: test_06_upload_unknown_category)

Test Case: test_07_upload_rosbags_rejected TEST_TestScenarioBulkDataUpload_test_07_upload_rosbags_rejected
status: verified
verifies: REQ_INTEROP_074

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_bulk_data_upload.test.py#L217 (Test: test_07_upload_rosbags_rejected)

Test Case: test_08_upload_nonexistent_entity TEST_TestScenarioBulkDataUpload_test_08_upload_nonexistent_entity
status: verified
verifies: REQ_INTEROP_074

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_bulk_data_upload.test.py#L228 (Test: test_08_upload_nonexistent_entity)

Test Case: test_09_upload_to_areas_405 TEST_TestScenarioBulkDataUpload_test_09_upload_to_areas_405
status: verified
verifies: REQ_INTEROP_074

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_bulk_data_upload.test.py#L238 (Test: test_09_upload_to_areas_405)

Test Case: test_10_upload_to_functions_405 TEST_TestScenarioBulkDataUpload_test_10_upload_to_functions_405
status: verified
verifies: REQ_INTEROP_074

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_bulk_data_upload.test.py#L249 (Test: test_10_upload_to_functions_405)

Test Case: test_11_delete_uploaded_item TEST_TestScenarioBulkDataUpload_test_11_delete_uploaded_item
status: verified
verifies: REQ_INTEROP_074

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_bulk_data_upload.test.py#L261 (Test: test_11_delete_uploaded_item)

Test Case: test_12_delete_nonexistent_item TEST_TestScenarioBulkDataUpload_test_12_delete_nonexistent_item
status: verified
verifies: REQ_INTEROP_074

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_bulk_data_upload.test.py#L276 (Test: test_12_delete_nonexistent_item)

Test Case: test_13_delete_rosbags_rejected TEST_TestScenarioBulkDataUpload_test_13_delete_rosbags_rejected
status: verified
verifies: REQ_INTEROP_074

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_bulk_data_upload.test.py#L285 (Test: test_13_delete_rosbags_rejected)

Test Case: test_14_delete_to_areas_405 TEST_TestScenarioBulkDataUpload_test_14_delete_to_areas_405
status: verified
verifies: REQ_INTEROP_074

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_bulk_data_upload.test.py#L294 (Test: test_14_delete_to_areas_405)

Test Case: test_15_list_categories_includes_configured TEST_TestScenarioBulkDataUpload_test_15_list_categories_includes_configured
status: verified
verifies: REQ_INTEROP_071

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_bulk_data_upload.test.py#L306 (Test: test_15_list_categories_includes_configured)

Test Case: test_16_list_descriptors_after_upload TEST_TestScenarioBulkDataUpload_test_16_list_descriptors_after_upload
status: verified
verifies: REQ_INTEROP_072

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_bulk_data_upload.test.py#L319 (Test: test_16_list_descriptors_after_upload)

Test Case: test_17_download_uploaded_file TEST_TestScenarioBulkDataUpload_test_17_download_uploaded_file
status: verified
verifies: REQ_INTEROP_073

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_bulk_data_upload.test.py#L335 (Test: test_17_download_uploaded_file)

Test Case: test_18_download_nonexistent_returns_404 TEST_TestScenarioBulkDataUpload_test_18_download_nonexistent_returns_404
status: verified
verifies: REQ_INTEROP_073

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_bulk_data_upload.test.py#L354 (Test: test_18_download_nonexistent_returns_404)

Test Case: test_19_list_empty_after_delete TEST_TestScenarioBulkDataUpload_test_19_list_empty_after_delete
status: verified
verifies: REQ_INTEROP_074

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_bulk_data_upload.test.py#L363 (Test: test_19_list_empty_after_delete)

status: verified
verifies: REQ_INTEROP_048

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_config_management.test.py#L64 (Test: test_01_list_configurations)

Test Case: test_02_get_configuration_value TEST_TestScenarioConfigManagement_test_02_get_configuration_value
status: verified
verifies: REQ_INTEROP_049

Dynamically finds an app with configurations and tests a single config endpoint.

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_config_management.test.py#L72 (Test: test_02_get_configuration_value)

Test Case: test_03_set_and_verify_configuration TEST_TestScenarioConfigManagement_test_03_set_and_verify_configuration
status: verified
verifies: REQ_INTEROP_050

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_config_management.test.py#L104 (Test: test_03_set_and_verify_configuration)

Test Case: test_04_reset_all_configurations TEST_TestScenarioConfigManagement_test_04_reset_all_configurations
status: verified
verifies: REQ_INTEROP_051

Returns 204 on complete success, 207 if some parameters could not be reset.

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_config_management.test.py#L161 (Test: test_04_reset_all_configurations)

Test Case: test_05_reset_single_configuration TEST_TestScenarioConfigManagement_test_05_reset_single_configuration
status: verified
verifies: REQ_INTEROP_052

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_config_management.test.py#L182 (Test: test_05_reset_single_configuration)

status: verified
verifies: REQ_INTEROP_018

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_data_publish_verify.test.py#L63 (Test: test_01_read_sensor_data)

Test Case: test_02_publish_command_to_actuator TEST_TestScenarioDataPublishVerify_test_02_publish_command_to_actuator
status: verified
verifies: REQ_INTEROP_020

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_data_publish_verify.test.py#L87 (Test: test_02_publish_command_to_actuator)

status: verified
verifies: REQ_INTEROP_018

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_data_publish_verify.test.py#L112 (Test: test_03_read_actuator_feedback)

Test Case: test_01_areas_from_manifest TEST_TestScenarioDiscoveryHybrid_test_01_areas_from_manifest
status: verified
verifies: REQ_INTEROP_003

Subareas (e.g. ‘engine’) are filtered from the top-level listing and accessible via GET /areas/{id}/subareas.

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_discovery_hybrid.test.py#L114 (Test: test_01_areas_from_manifest)

Test Case: test_02_area_with_description TEST_TestScenarioDiscoveryHybrid_test_02_area_with_description
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_discovery_hybrid.test.py#L127 (Test: test_02_area_with_description)

Test Case: test_03_area_subareas_hierarchy TEST_TestScenarioDiscoveryHybrid_test_03_area_subareas_hierarchy
status: verified
verifies: REQ_INTEROP_004

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_discovery_hybrid.test.py#L137 (Test: test_03_area_subareas_hierarchy)

status: verified
verifies: REQ_INTEROP_004

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_discovery_hybrid.test.py#L147 (Test: test_04_nested_subareas)

Test Case: test_05_components_from_manifest TEST_TestScenarioDiscoveryHybrid_test_05_components_from_manifest
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_discovery_hybrid.test.py#L160 (Test: test_05_components_from_manifest)

Test Case: test_06_component_type_preserved TEST_TestScenarioDiscoveryHybrid_test_06_component_type_preserved
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_discovery_hybrid.test.py#L170 (Test: test_06_component_type_preserved)

Test Case: test_07_component_area_relationship TEST_TestScenarioDiscoveryHybrid_test_07_component_area_relationship
status: verified
verifies: REQ_INTEROP_006

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_discovery_hybrid.test.py#L178 (Test: test_07_component_area_relationship)

Test Case: test_08_component_subcomponents TEST_TestScenarioDiscoveryHybrid_test_08_component_subcomponents
status: verified
verifies: REQ_INTEROP_005

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_discovery_hybrid.test.py#L189 (Test: test_08_component_subcomponents)

Test Case: test_09_component_subcomponents_not_found TEST_TestScenarioDiscoveryHybrid_test_09_component_subcomponents_not_found
status: verified
verifies: REQ_INTEROP_005

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_discovery_hybrid.test.py#L198 (Test: test_09_component_subcomponents_not_found)

Test Case: test_10_component_depends_on_returns_items TEST_TestScenarioDiscoveryHybrid_test_10_component_depends_on_returns_items
status: verified
verifies: REQ_INTEROP_008

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_discovery_hybrid.test.py#L207 (Test: test_10_component_depends_on_returns_items)

Test Case: test_11_component_depends_on_empty TEST_TestScenarioDiscoveryHybrid_test_11_component_depends_on_empty
status: verified
verifies: REQ_INTEROP_008

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_discovery_hybrid.test.py#L224 (Test: test_11_component_depends_on_empty)

Test Case: test_12_component_depends_on_not_found TEST_TestScenarioDiscoveryHybrid_test_12_component_depends_on_not_found
status: verified
verifies: REQ_INTEROP_008

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_discovery_hybrid.test.py#L233 (Test: test_12_component_depends_on_not_found)

status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_discovery_hybrid.test.py#L259 (Test: test_14_apps_from_manifest)

Test Case: test_15_app_online_with_runtime_node TEST_TestScenarioDiscoveryHybrid_test_15_app_online_with_runtime_node
status: verified
verifies: REQ_INTEROP_003

Runtime linking happens asynchronously after nodes start, so poll until at least one app is online.

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_discovery_hybrid.test.py#L276 (Test: test_15_app_online_with_runtime_node)

Test Case: test_19_app_depends_on_relationship TEST_TestScenarioDiscoveryHybrid_test_19_app_depends_on_relationship
status: verified
verifies: REQ_INTEROP_009

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_discovery_hybrid.test.py#L345 (Test: test_19_app_depends_on_relationship)

Test Case: test_20_functions_from_manifest TEST_TestScenarioDiscoveryHybrid_test_20_functions_from_manifest
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_discovery_hybrid.test.py#L358 (Test: test_20_functions_from_manifest)

Test Case: test_21_function_hosts_relationship TEST_TestScenarioDiscoveryHybrid_test_21_function_hosts_relationship
status: verified
verifies: REQ_INTEROP_007

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_discovery_hybrid.test.py#L371 (Test: test_21_function_hosts_relationship)

status: verified
verifies: REQ_INTEROP_011

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_discovery_hybrid.test.py#L395 (Test: test_24_function_with_tags)

status: verified
verifies: REQ_INTEROP_003

Sub-entities (areas with parent_area_id) are only accessible via GET /areas/{id}/subareas, not in the top-level listing.

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_discovery_manifest.test.py#L109 (Test: test_01_list_areas)

status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_discovery_manifest.test.py#L134 (Test: test_02_get_area_details)

status: verified
verifies: REQ_INTEROP_004

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_discovery_manifest.test.py#L149 (Test: test_04_area_subareas)

status: verified
verifies: REQ_INTEROP_006

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_discovery_manifest.test.py#L159 (Test: test_05_area_components)

status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_discovery_manifest.test.py#L171 (Test: test_06_list_components)

status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_discovery_manifest.test.py#L184 (Test: test_07_get_component_details)

Test Case: test_09_component_subcomponents TEST_TestScenarioDiscoveryManifest_test_09_component_subcomponents
status: verified
verifies: REQ_INTEROP_005

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_discovery_manifest.test.py#L200 (Test: test_09_component_subcomponents)

Test Case: test_10_component_subcomponents_not_found TEST_TestScenarioDiscoveryManifest_test_10_component_subcomponents_not_found
status: verified
verifies: REQ_INTEROP_005

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_discovery_manifest.test.py#L209 (Test: test_10_component_subcomponents_not_found)

status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_discovery_manifest.test.py#L238 (Test: test_12_get_app_details)

status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_discovery_manifest.test.py#L269 (Test: test_15_app_data_endpoint)

Test Case: test_17_app_configurations_endpoint TEST_TestScenarioDiscoveryManifest_test_17_app_configurations_endpoint
status: verified
verifies: REQ_INTEROP_003

App is defined in manifest with bound_fqn. Configurations are retrieved from the ROS 2 parameter service on the node.

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_discovery_manifest.test.py#L282 (Test: test_17_app_configurations_endpoint)

status: verified
verifies: REQ_INTEROP_003

In manifest_only mode, data items depend on runtime graph discovery via inherit_runtime_resources. The endpoint always works (200), but items may be empty when runtime linking has not enriched the app with topic information.

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_discovery_manifest.test.py#L294 (Test: test_18_app_data_item_endpoint)

status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_discovery_manifest.test.py#L318 (Test: test_19_list_functions)

status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_discovery_manifest.test.py#L334 (Test: test_20_get_function_details)

status: verified
verifies: REQ_INTEROP_007

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_discovery_manifest.test.py#L349 (Test: test_22_function_hosts)

Test Case: test_01_fault_response_structure TEST_TestScenarioFaultInspection_test_01_fault_response_structure
status: verified
verifies: REQ_INTEROP_013

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_fault_inspection.test.py#L89 (Test: test_01_fault_response_structure)

Test Case: test_02_fault_status_object_structure TEST_TestScenarioFaultInspection_test_02_fault_status_object_structure
status: verified
verifies: REQ_INTEROP_013

The gateway returns AUTOSAR DEM-style status fields: - aggregatedStatus: “active”, “passive”, or “cleared” - testFailed, confirmedDTC, pendingDTC: “0” or “1”

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_fault_inspection.test.py#L103 (Test: test_02_fault_status_object_structure)

Test Case: test_03_fault_environment_data_structure TEST_TestScenarioFaultInspection_test_03_fault_environment_data_structure
status: verified
verifies: REQ_INTEROP_013

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_fault_inspection.test.py#L123 (Test: test_03_fault_environment_data_structure)

Test Case: test_04_fault_snapshot_freeze_frame TEST_TestScenarioFaultInspection_test_04_fault_snapshot_freeze_frame
status: verified
verifies: REQ_INTEROP_013

Snapshots are captured asynchronously by the fault manager after a fault is confirmed, so we poll until the freeze_frame is present.

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_fault_inspection.test.py#L138 (Test: test_04_fault_snapshot_freeze_frame)

Test Case: test_05_fault_snapshot_rosbag_has_bulk_data_uri TEST_TestScenarioFaultInspection_test_05_fault_snapshot_rosbag_has_bulk_data_uri
status: verified
verifies: REQ_INTEROP_013

Rosbag snapshots are flushed asynchronously after fault confirmation, so we poll until the rosbag snapshot is present.

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_fault_inspection.test.py#L157 (Test: test_05_fault_snapshot_rosbag_has_bulk_data_uri)

Test Case: test_06_fault_x_medkit_extensions TEST_TestScenarioFaultInspection_test_06_fault_x_medkit_extensions
status: verified
verifies: REQ_INTEROP_013

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_fault_inspection.test.py#L174 (Test: test_06_fault_x_medkit_extensions)

Test Case: test_01_wait_for_faults_to_appear TEST_TestScenarioFaultLifecycle_test_01_wait_for_faults_to_appear
status: verified
verifies: REQ_INTEROP_012

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_fault_lifecycle.test.py#L71 (Test: test_01_wait_for_faults_to_appear)

Test Case: test_02_delete_all_faults_for_component TEST_TestScenarioFaultLifecycle_test_02_delete_all_faults_for_component
status: verified
verifies: REQ_INTEROP_014

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_fault_lifecycle.test.py#L88 (Test: test_02_delete_all_faults_for_component)

Test Case: test_03_delete_all_faults_for_app TEST_TestScenarioFaultLifecycle_test_03_delete_all_faults_for_app
status: verified
verifies: REQ_INTEROP_014

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_fault_lifecycle.test.py#L105 (Test: test_03_delete_all_faults_for_app)

Test Case: test_04_delete_all_faults_nonexistent TEST_TestScenarioFaultLifecycle_test_04_delete_all_faults_nonexistent
status: verified
verifies: REQ_INTEROP_014

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_fault_lifecycle.test.py#L119 (Test: test_04_delete_all_faults_nonexistent)

Test Case: test_05_delete_single_fault TEST_TestScenarioFaultLifecycle_test_05_delete_single_fault
status: verified
verifies: REQ_INTEROP_015

The lidar_sensor may immediately re-report the fault after deletion, so we only verify that DELETE returns 204 (success) or 404 (not found).

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_fault_lifecycle.test.py#L135 (Test: test_05_delete_single_fault)

Test Case: test_01_create_subscription_returns_201_with_correct_schema TEST_TestScenarioSubscriptions_test_01_create_subscription_returns_201_with_correct_schema
status: verified
verifies: REQ_INTEROP_089

Verifies that POST returns 201 with all required fields: id, observed_resource, event_source, protocol, interval.

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_subscriptions.test.py#L159 (Test: test_01_create_subscription_returns_201_with_correct_schema)

Test Case: test_02_list_subscriptions_returns_created_ones TEST_TestScenarioSubscriptions_test_02_list_subscriptions_returns_created_ones
status: verified
verifies: REQ_INTEROP_025

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_subscriptions.test.py#L182 (Test: test_02_list_subscriptions_returns_created_ones)

Test Case: test_03_get_single_subscription TEST_TestScenarioSubscriptions_test_03_get_single_subscription
status: verified
verifies: REQ_INTEROP_026

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_subscriptions.test.py#L212 (Test: test_03_get_single_subscription)

Test Case: test_04_update_subscription_interval TEST_TestScenarioSubscriptions_test_04_update_subscription_interval
status: verified
verifies: REQ_INTEROP_027

Dashboard user decides they need higher-frequency updates.

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_subscriptions.test.py#L231 (Test: test_04_update_subscription_interval)

Test Case: test_05_update_subscription_duration TEST_TestScenarioSubscriptions_test_05_update_subscription_duration
status: verified
verifies: REQ_INTEROP_027

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_subscriptions.test.py#L252 (Test: test_05_update_subscription_duration)

Test Case: test_06_delete_subscription_returns_204 TEST_TestScenarioSubscriptions_test_06_delete_subscription_returns_204
status: verified
verifies: REQ_INTEROP_028

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_subscriptions.test.py#L267 (Test: test_06_delete_subscription_returns_204)

Test Case: test_07_empty_list_after_delete TEST_TestScenarioSubscriptions_test_07_empty_list_after_delete
status: verified
verifies: REQ_INTEROP_025

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_subscriptions.test.py#L287 (Test: test_07_empty_list_after_delete)

Test Case: test_10_sse_stream_returns_correct_headers TEST_TestScenarioSubscriptions_test_10_sse_stream_returns_correct_headers
status: verified
verifies: REQ_INTEROP_090

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_subscriptions.test.py#L307 (Test: test_10_sse_stream_returns_correct_headers)

Test Case: test_11_sse_stream_delivers_periodic_data TEST_TestScenarioSubscriptions_test_11_sse_stream_delivers_periodic_data
status: verified
verifies: REQ_INTEROP_090

Real use case: dashboard receives temperature readings every 500ms (slow). Each event has a timestamp and a payload with ReadValue format (id + data).

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_subscriptions.test.py#L326 (Test: test_11_sse_stream_delivers_periodic_data)

Test Case: test_12_sse_stream_closes_on_subscription_delete TEST_TestScenarioSubscriptions_test_12_sse_stream_closes_on_subscription_delete
status: verified

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_subscriptions.test.py#L378 (Test: test_12_sse_stream_closes_on_subscription_delete)

Test Case: test_20_create_with_invalid_interval_returns_400 TEST_TestScenarioSubscriptions_test_20_create_with_invalid_interval_returns_400
status: verified
verifies: REQ_INTEROP_089

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_subscriptions.test.py#L427 (Test: test_20_create_with_invalid_interval_returns_400)

Test Case: test_21_create_with_zero_duration_returns_400 TEST_TestScenarioSubscriptions_test_21_create_with_zero_duration_returns_400
status: verified
verifies: REQ_INTEROP_089

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_subscriptions.test.py#L445 (Test: test_21_create_with_zero_duration_returns_400)

Test Case: test_22_create_with_unsupported_protocol_returns_400 TEST_TestScenarioSubscriptions_test_22_create_with_unsupported_protocol_returns_400
status: verified
verifies: REQ_INTEROP_089

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_subscriptions.test.py#L462 (Test: test_22_create_with_unsupported_protocol_returns_400)

Test Case: test_23_create_with_invalid_resource_uri_returns_400 TEST_TestScenarioSubscriptions_test_23_create_with_invalid_resource_uri_returns_400
status: verified
verifies: REQ_INTEROP_089

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_subscriptions.test.py#L480 (Test: test_23_create_with_invalid_resource_uri_returns_400)

Test Case: test_24_get_nonexistent_subscription_returns_404 TEST_TestScenarioSubscriptions_test_24_get_nonexistent_subscription_returns_404
status: verified
verifies: REQ_INTEROP_026

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_subscriptions.test.py#L497 (Test: test_24_get_nonexistent_subscription_returns_404)

Test Case: test_25_delete_nonexistent_subscription_returns_404 TEST_TestScenarioSubscriptions_test_25_delete_nonexistent_subscription_returns_404
status: verified
verifies: REQ_INTEROP_028

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_subscriptions.test.py#L509 (Test: test_25_delete_nonexistent_subscription_returns_404)

Test Case: test_26_update_nonexistent_subscription_returns_404 TEST_TestScenarioSubscriptions_test_26_update_nonexistent_subscription_returns_404
status: verified
verifies: REQ_INTEROP_027

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_subscriptions.test.py#L520 (Test: test_26_update_nonexistent_subscription_returns_404)

Test Case: test_27_create_for_nonexistent_entity_returns_404 TEST_TestScenarioSubscriptions_test_27_create_for_nonexistent_entity_returns_404
status: verified
verifies: REQ_INTEROP_089

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_subscriptions.test.py#L532 (Test: test_27_create_for_nonexistent_entity_returns_404)

Test Case: test_28_sse_stream_for_nonexistent_subscription_returns_404 TEST_TestScenarioSubscriptions_test_28_sse_stream_for_nonexistent_subscription_returns_404
status: verified
verifies: REQ_INTEROP_090

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_subscriptions.test.py#L549 (Test: test_28_sse_stream_for_nonexistent_subscription_returns_404)

Test Case: test_30_cyclic_subscriptions_work_on_components TEST_TestScenarioSubscriptions_test_30_cyclic_subscriptions_work_on_components
status: verified

Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_subscriptions.test.py#L564 (Test: test_30_cyclic_subscriptions_work_on_components)

Test Case: test_01_list_scripts_empty TEST_TestScriptsCRUD_test_01_list_scripts_empty
status: verified
verifies: REQ_INTEROP_041

GET /apps/{app}/scripts returns empty items initially.

Implementation: src/ros2_medkit_integration_tests/test/features/test_scripts_api.test.py#L218 (Test: test_01_list_scripts_empty)

Test Case: test_02_upload_and_list TEST_TestScriptsCRUD_test_02_upload_and_list
status: verified
verifies: REQ_INTEROP_040

Upload a script, verify it appears in the list.

Implementation: src/ros2_medkit_integration_tests/test/features/test_scripts_api.test.py#L225 (Test: test_02_upload_and_list)

Test Case: test_03_get_script_metadata TEST_TestScriptsCRUD_test_03_get_script_metadata
status: verified
verifies: REQ_INTEROP_042

GET /apps/{app}/scripts/{id} returns full metadata.

Implementation: src/ros2_medkit_integration_tests/test/features/test_scripts_api.test.py#L235 (Test: test_03_get_script_metadata)

Test Case: test_04_get_nonexistent_returns_404 TEST_TestScriptsCRUD_test_04_get_nonexistent_returns_404
status: verified
verifies: REQ_INTEROP_042

GET /apps/{app}/scripts/nonexistent returns 404.

Implementation: src/ros2_medkit_integration_tests/test/features/test_scripts_api.test.py#L246 (Test: test_04_get_nonexistent_returns_404)

Test Case: test_05_delete_script TEST_TestScriptsCRUD_test_05_delete_script
status: verified
verifies: REQ_INTEROP_043

DELETE /apps/{app}/scripts/{id} removes it.

Implementation: src/ros2_medkit_integration_tests/test/features/test_scripts_api.test.py#L255 (Test: test_05_delete_script)

Test Case: test_06_delete_nonexistent_returns_404 TEST_TestScriptsCRUD_test_06_delete_nonexistent_returns_404
status: verified
verifies: REQ_INTEROP_043

DELETE /apps/{app}/scripts/nonexistent returns 404.

Implementation: src/ros2_medkit_integration_tests/test/features/test_scripts_api.test.py#L273 (Test: test_06_delete_nonexistent_returns_404)

Test Case: test_07_upload_missing_file_field TEST_TestScriptsCRUD_test_07_upload_missing_file_field
status: verified
verifies: REQ_INTEROP_040

POST without multipart file field returns 400.

Implementation: src/ros2_medkit_integration_tests/test/features/test_scripts_api.test.py#L282 (Test: test_07_upload_missing_file_field)

Test Case: test_09_upload_with_metadata TEST_TestScriptsCRUD_test_09_upload_with_metadata
status: verified
verifies: REQ_INTEROP_040

Upload with metadata field sets custom name and description.

Implementation: src/ros2_medkit_integration_tests/test/features/test_scripts_api.test.py#L301 (Test: test_09_upload_with_metadata)

Test Case: test_01_execute_python_script TEST_TestScriptsExecution_test_01_execute_python_script
status: verified
verifies: REQ_INTEROP_044

Upload Python script, execute, poll until completed.

Implementation: src/ros2_medkit_integration_tests/test/features/test_scripts_api.test.py#L365 (Test: test_01_execute_python_script)

Test Case: test_02_execute_shell_script TEST_TestScriptsExecution_test_02_execute_shell_script
status: verified
verifies: REQ_INTEROP_044

Upload shell script, execute, poll until completed.

Implementation: src/ros2_medkit_integration_tests/test/features/test_scripts_api.test.py#L388 (Test: test_02_execute_shell_script)

Test Case: test_03_terminate_running_execution TEST_TestScriptsExecution_test_03_terminate_running_execution
status: verified
verifies: REQ_INTEROP_047

Start long-running script, terminate it via control endpoint.

Implementation: src/ros2_medkit_integration_tests/test/features/test_scripts_api.test.py#L407 (Test: test_03_terminate_running_execution)

Test Case: test_06_get_nonexistent_execution TEST_TestScriptsExecution_test_06_get_nonexistent_execution
status: verified
verifies: REQ_INTEROP_046

GET nonexistent execution returns 404.

Implementation: src/ros2_medkit_integration_tests/test/features/test_scripts_api.test.py#L511 (Test: test_06_get_nonexistent_execution)

Test Case: test_07_start_execution_missing_type TEST_TestScriptsExecution_test_07_start_execution_missing_type
status: verified
verifies: REQ_INTEROP_044

POST without execution_type returns 400.

Implementation: src/ros2_medkit_integration_tests/test/features/test_scripts_api.test.py#L522 (Test: test_07_start_execution_missing_type)

Test Case: test_08_start_execution_invalid_json TEST_TestScriptsExecution_test_08_start_execution_invalid_json
status: verified
verifies: REQ_INTEROP_044

POST with invalid JSON body returns 400.

Implementation: src/ros2_medkit_integration_tests/test/features/test_scripts_api.test.py#L533 (Test: test_08_start_execution_invalid_json)

Test Case: test_09_execution_has_timestamps TEST_TestScriptsExecution_test_09_execution_has_timestamps
status: verified
verifies: REQ_INTEROP_046

Completed execution has started_at and completed_at timestamps.

Implementation: src/ros2_medkit_integration_tests/test/features/test_scripts_api.test.py#L545 (Test: test_09_execution_has_timestamps)

Test Case: test_10_bash_script_execution TEST_TestScriptsExecution_test_10_bash_script_execution
status: verified
verifies: REQ_INTEROP_044

Upload and execute a .bash script.

Implementation: src/ros2_medkit_integration_tests/test/features/test_scripts_api.test.py#L566 (Test: test_10_bash_script_execution)

Test Case: test_11_output_content_verified TEST_TestScriptsExecution_test_11_output_content_verified
status: verified
verifies: REQ_INTEROP_046

Verify executed script output is correctly returned in execution response.

Implementation: src/ros2_medkit_integration_tests/test/features/test_scripts_api.test.py#L591 (Test: test_11_output_content_verified)

Test Case: test_12_parameters_via_stdin TEST_TestScriptsExecution_test_12_parameters_via_stdin
status: verified
verifies: REQ_INTEROP_044

Parameters sent in execution request are passed to script via stdin.

Implementation: src/ros2_medkit_integration_tests/test/features/test_scripts_api.test.py#L623 (Test: test_12_parameters_via_stdin)

Test Case: test_13_failed_script_execution TEST_TestScriptsExecution_test_13_failed_script_execution
status: verified
verifies: REQ_INTEROP_046

Script that exits non-zero produces ‘failed’ status with error info.

Implementation: src/ros2_medkit_integration_tests/test/features/test_scripts_api.test.py#L666 (Test: test_13_failed_script_execution)

Test Case: test_14_full_lifecycle TEST_TestScriptsExecution_test_14_full_lifecycle

Complete lifecycle: upload -> list -> get -> execute -> poll -> verify -> delete.

Implementation: src/ros2_medkit_integration_tests/test/features/test_scripts_api.test.py#L703 (Test: test_14_full_lifecycle)

Test Case: test_01_list_scripts_returns_501 TEST_TestScriptsNotConfigured_test_01_list_scripts_returns_501
status: verified
verifies: REQ_INTEROP_041

GET /apps/{app}/scripts returns 501 without backend.

Implementation: src/ros2_medkit_integration_tests/test/features/test_scripts_api.test.py#L117 (Test: test_01_list_scripts_returns_501)

Test Case: test_02_upload_script_returns_501 TEST_TestScriptsNotConfigured_test_02_upload_script_returns_501
status: verified
verifies: REQ_INTEROP_040

POST /apps/{app}/scripts returns 501 without backend.

Implementation: src/ros2_medkit_integration_tests/test/features/test_scripts_api.test.py#L126 (Test: test_02_upload_script_returns_501)

Test Case: test_03_get_script_returns_501 TEST_TestScriptsNotConfigured_test_03_get_script_returns_501
status: verified
verifies: REQ_INTEROP_042

GET /apps/{app}/scripts/{id} returns 501 without backend.

Implementation: src/ros2_medkit_integration_tests/test/features/test_scripts_api.test.py#L137 (Test: test_03_get_script_returns_501)

Test Case: test_04_delete_script_returns_501 TEST_TestScriptsNotConfigured_test_04_delete_script_returns_501
status: verified
verifies: REQ_INTEROP_043

DELETE /apps/{app}/scripts/{id} returns 501 without backend.

Implementation: src/ros2_medkit_integration_tests/test/features/test_scripts_api.test.py#L145 (Test: test_04_delete_script_returns_501)

Test Case: test_05_start_execution_returns_501 TEST_TestScriptsNotConfigured_test_05_start_execution_returns_501
status: verified
verifies: REQ_INTEROP_044

POST /apps/{app}/scripts/{id}/executions returns 501.

Implementation: src/ros2_medkit_integration_tests/test/features/test_scripts_api.test.py#L153 (Test: test_05_start_execution_returns_501)

Test Case: test_06_get_execution_returns_501 TEST_TestScriptsNotConfigured_test_06_get_execution_returns_501
status: verified
verifies: REQ_INTEROP_046

GET /apps/{app}/scripts/{id}/executions/{eid} returns 501.

Implementation: src/ros2_medkit_integration_tests/test/features/test_scripts_api.test.py#L163 (Test: test_06_get_execution_returns_501)

Test Case: test_07_control_execution_returns_501 TEST_TestScriptsNotConfigured_test_07_control_execution_returns_501
status: verified
verifies: REQ_INTEROP_047

PUT /apps/{app}/scripts/{id}/executions/{eid} returns 501.

Implementation: src/ros2_medkit_integration_tests/test/features/test_scripts_api.test.py#L172 (Test: test_07_control_execution_returns_501)

Test Case: test_root_endpoint_excludes_legacy_snapshots TEST_TestSnapshotsApi_test_root_endpoint_excludes_legacy_snapshots
status: verified
verifies: REQ_INTEROP_088

Legacy snapshot endpoints were removed in favor of inline snapshots in fault responses and bulk-data endpoints.

Implementation: src/ros2_medkit_integration_tests/test/features/test_snapshots_api.test.py#L49 (Test: test_root_endpoint_excludes_legacy_snapshots)

Test Case: test_returns_restart_count TEST_TestSystemdAppEndpoint_test_returns_restart_count
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_integration_tests/test/docker/introspection/test_systemd_introspection.py#L128 (Test: test_returns_restart_count)

Test Case: test_returns_unit_info TEST_TestSystemdAppEndpoint_test_returns_unit_info
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_integration_tests/test/docker/introspection/test_systemd_introspection.py#L98 (Test: test_returns_unit_info)

Test Case: test_returns_unit_type TEST_TestSystemdAppEndpoint_test_returns_unit_type
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_integration_tests/test/docker/introspection/test_systemd_introspection.py#L116 (Test: test_returns_unit_type)

Test Case: test_returns_watchdog_usec TEST_TestSystemdAppEndpoint_test_returns_watchdog_usec
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_integration_tests/test/docker/introspection/test_systemd_introspection.py#L142 (Test: test_returns_watchdog_usec)

Test Case: test_returns_units_aggregation TEST_TestSystemdComponentEndpoint_test_returns_units_aggregation
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_integration_tests/test/docker/introspection/test_systemd_introspection.py#L159 (Test: test_returns_units_aggregation)

status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_integration_tests/test/docker/introspection/test_systemd_introspection.py#L190 (Test: test_units_have_active_state)

status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_integration_tests/test/docker/introspection/test_systemd_introspection.py#L174 (Test: test_units_include_node_ids)

Test Case: test_nonexistent_app_returns_404 TEST_TestSystemdErrorHandling_test_nonexistent_app_returns_404
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_integration_tests/test/docker/introspection/test_systemd_introspection.py#L208 (Test: test_nonexistent_app_returns_404)

Test Case: test_nonexistent_component_returns_404 TEST_TestSystemdErrorHandling_test_nonexistent_component_returns_404
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_integration_tests/test/docker/introspection/test_systemd_introspection.py#L219 (Test: test_nonexistent_component_returns_404)

Test Case: test_01_create_trigger_returns_201_with_correct_schema TEST_TestTriggersData_test_01_create_trigger_returns_201_with_correct_schema
status: verified
verifies: REQ_INTEROP_029

POST creates trigger with correct schema response.

Implementation: src/ros2_medkit_integration_tests/test/features/test_triggers_data.test.py#L128 (Test: test_01_create_trigger_returns_201_with_correct_schema)

Test Case: test_02_list_triggers_returns_created_trigger TEST_TestTriggersData_test_02_list_triggers_returns_created_trigger
status: verified
verifies: REQ_INTEROP_030

GET /triggers returns list with the created trigger.

Implementation: src/ros2_medkit_integration_tests/test/features/test_triggers_data.test.py#L152 (Test: test_02_list_triggers_returns_created_trigger)

Test Case: test_03_get_single_trigger TEST_TestTriggersData_test_03_get_single_trigger
status: verified
verifies: REQ_INTEROP_096

GET /triggers/{id} returns the trigger details.

Implementation: src/ros2_medkit_integration_tests/test/features/test_triggers_data.test.py#L169 (Test: test_03_get_single_trigger)

Test Case: test_04_update_trigger_lifetime TEST_TestTriggersData_test_04_update_trigger_lifetime
status: verified
verifies: REQ_INTEROP_031

PUT /triggers/{id} updates the lifetime.

Implementation: src/ros2_medkit_integration_tests/test/features/test_triggers_data.test.py#L186 (Test: test_04_update_trigger_lifetime)

Test Case: test_05_delete_trigger_returns_204 TEST_TestTriggersData_test_05_delete_trigger_returns_204
status: verified
verifies: REQ_INTEROP_032

DELETE /triggers/{id} returns 204 and removes the trigger.

Implementation: src/ros2_medkit_integration_tests/test/features/test_triggers_data.test.py#L200 (Test: test_05_delete_trigger_returns_204)

Test Case: test_10_sse_stream_returns_correct_headers TEST_TestTriggersData_test_10_sse_stream_returns_correct_headers
status: verified
verifies: REQ_INTEROP_097

The SSE events endpoint returns text/event-stream content type.

Implementation: src/ros2_medkit_integration_tests/test/features/test_triggers_data.test.py#L235 (Test: test_10_sse_stream_returns_correct_headers)

Test Case: test_11_sse_stream_delivers_data_events TEST_TestTriggersData_test_11_sse_stream_delivers_data_events
status: verified
verifies: REQ_INTEROP_097

The temp_sensor publishes at ~1Hz (Float64), so OnChange triggers should fire on each new message.

Implementation: src/ros2_medkit_integration_tests/test/features/test_triggers_data.test.py#L255 (Test: test_11_sse_stream_delivers_data_events)

Test Case: test_12_sse_stream_closes_on_trigger_delete TEST_TestTriggersData_test_12_sse_stream_closes_on_trigger_delete
status: verified

When a trigger is deleted, the SSE stream closes gracefully.

Implementation: src/ros2_medkit_integration_tests/test/features/test_triggers_data.test.py#L305 (Test: test_12_sse_stream_closes_on_trigger_delete)

Test Case: test_27_events_for_nonexistent_trigger_returns_404 TEST_TestTriggersData_test_27_events_for_nonexistent_trigger_returns_404
status: verified
verifies: REQ_INTEROP_097

GET /events for a non-existent trigger returns 404.

Implementation: src/ros2_medkit_integration_tests/test/features/test_triggers_data.test.py#L536 (Test: test_27_events_for_nonexistent_trigger_returns_404)

Test Case: test_01_create_fault_trigger_returns_201 TEST_TestTriggersFaults_test_01_create_fault_trigger_returns_201
status: verified
verifies: REQ_INTEROP_029

POST creates a trigger on faults collection with correct schema.

Implementation: src/ros2_medkit_integration_tests/test/features/test_triggers_faults.test.py#L91 (Test: test_01_create_fault_trigger_returns_201)

Test Case: test_02_list_fault_triggers TEST_TestTriggersFaults_test_02_list_fault_triggers
status: verified
verifies: REQ_INTEROP_030

GET /triggers lists fault triggers for the entity.

Implementation: src/ros2_medkit_integration_tests/test/features/test_triggers_faults.test.py#L109 (Test: test_02_list_fault_triggers)

Test Case: test_03_get_fault_trigger TEST_TestTriggersFaults_test_03_get_fault_trigger
status: verified
verifies: REQ_INTEROP_096

GET /triggers/{id} returns fault trigger details.

Implementation: src/ros2_medkit_integration_tests/test/features/test_triggers_faults.test.py#L125 (Test: test_03_get_fault_trigger)

Test Case: test_04_update_fault_trigger_lifetime TEST_TestTriggersFaults_test_04_update_fault_trigger_lifetime
status: verified
verifies: REQ_INTEROP_031

PUT /triggers/{id} updates fault trigger lifetime.

Implementation: src/ros2_medkit_integration_tests/test/features/test_triggers_faults.test.py#L140 (Test: test_04_update_fault_trigger_lifetime)

Test Case: test_05_delete_fault_trigger TEST_TestTriggersFaults_test_05_delete_fault_trigger
status: verified
verifies: REQ_INTEROP_032

DELETE /triggers/{id} removes the fault trigger.

Implementation: src/ros2_medkit_integration_tests/test/features/test_triggers_faults.test.py#L154 (Test: test_05_delete_fault_trigger)

Test Case: test_10_sse_endpoint_connects_and_streams TEST_TestTriggersFaults_test_10_sse_endpoint_connects_and_streams
status: verified
verifies: REQ_INTEROP_097

Verifies the SSE transport works for fault triggers - the connection is established and the server sends keepalive comments. Actual fault events depend on the fault subscriber’s entity_id matching the trigger’s entity_id, which requires correct reporting_source mapping.

Implementation: src/ros2_medkit_integration_tests/test/features/test_triggers_faults.test.py#L175 (Test: test_10_sse_endpoint_connects_and_streams)

Test Case: test_11_sse_fault_event_has_correct_headers TEST_TestTriggersFaults_test_11_sse_fault_event_has_correct_headers
status: verified
verifies: REQ_INTEROP_097

SSE events endpoint for faults returns correct headers.

Implementation: src/ros2_medkit_integration_tests/test/features/test_triggers_faults.test.py#L217 (Test: test_11_sse_fault_event_has_correct_headers)

Test Case: test_01_component_trigger_created_successfully TEST_TestTriggersHierarchy_test_01_component_trigger_created_successfully
status: verified
verifies: REQ_INTEROP_029

Create trigger on component that hosts apps.

Implementation: src/ros2_medkit_integration_tests/test/features/test_triggers_hierarchy.test.py#L113 (Test: test_01_component_trigger_created_successfully)

Test Case: test_05_list_triggers_on_area TEST_TestTriggersHierarchy_test_05_list_triggers_on_area
status: verified
verifies: REQ_INTEROP_030

GET /areas/{id}/triggers returns triggers for the area.

Implementation: src/ros2_medkit_integration_tests/test/features/test_triggers_hierarchy.test.py#L268 (Test: test_05_list_triggers_on_area)

Test Case: test_06_delete_trigger_on_function TEST_TestTriggersHierarchy_test_06_delete_trigger_on_function
status: verified
verifies: REQ_INTEROP_032

DELETE removes trigger from function entity.

Implementation: src/ros2_medkit_integration_tests/test/features/test_triggers_hierarchy.test.py#L299 (Test: test_06_delete_trigger_on_function)

Test Case: test_01_create_logs_trigger TEST_TestTriggersLogs_test_01_create_logs_trigger
status: verified
verifies: REQ_INTEROP_029

POST creates a trigger on logs collection.

Implementation: src/ros2_medkit_integration_tests/test/features/test_triggers_logs.test.py#L86 (Test: test_01_create_logs_trigger)

Test Case: test_02_list_logs_triggers TEST_TestTriggersLogs_test_02_list_logs_triggers
status: verified
verifies: REQ_INTEROP_030

GET /triggers lists log triggers for the entity.

Implementation: src/ros2_medkit_integration_tests/test/features/test_triggers_logs.test.py#L110 (Test: test_02_list_logs_triggers)

Test Case: test_03_get_logs_trigger TEST_TestTriggersLogs_test_03_get_logs_trigger
status: verified
verifies: REQ_INTEROP_096

GET /triggers/{id} returns log trigger details.

Implementation: src/ros2_medkit_integration_tests/test/features/test_triggers_logs.test.py#L126 (Test: test_03_get_logs_trigger)

Test Case: test_04_update_logs_trigger_lifetime TEST_TestTriggersLogs_test_04_update_logs_trigger_lifetime
status: verified
verifies: REQ_INTEROP_031

PUT /triggers/{id} updates log trigger lifetime.

Implementation: src/ros2_medkit_integration_tests/test/features/test_triggers_logs.test.py#L145 (Test: test_04_update_logs_trigger_lifetime)

Test Case: test_05_delete_logs_trigger TEST_TestTriggersLogs_test_05_delete_logs_trigger
status: verified
verifies: REQ_INTEROP_032

DELETE /triggers/{id} removes the log trigger.

Implementation: src/ros2_medkit_integration_tests/test/features/test_triggers_logs.test.py#L161 (Test: test_05_delete_logs_trigger)

Test Case: test_10_sse_endpoint_connects_for_log_trigger TEST_TestTriggersLogs_test_10_sse_endpoint_connects_for_log_trigger
status: verified
verifies: REQ_INTEROP_097

Verifies the SSE transport works for log-collection triggers. The LogManager currently only notifies ResourceChangeNotifier via the programmatic add_log_entry() path (used by trigger log_settings), not from /rosout ingestion. This test validates the SSE plumbing by verifying the connection is accepted and the stream is active.

Implementation: src/ros2_medkit_integration_tests/test/features/test_triggers_logs.test.py#L195 (Test: test_10_sse_endpoint_connects_for_log_trigger)

Test Case: test_11_sse_log_event_headers TEST_TestTriggersLogs_test_11_sse_log_event_headers
status: verified
verifies: REQ_INTEROP_097

SSE events endpoint for logs returns correct headers.

Implementation: src/ros2_medkit_integration_tests/test/features/test_triggers_logs.test.py#L234 (Test: test_11_sse_log_event_headers)

Test Case: test_01_create_persistent_trigger TEST_TestTriggersPersistent_test_01_create_persistent_trigger
status: verified
verifies: REQ_INTEROP_029

Creates the trigger that will later be verified on the secondary (restarted) gateway instance.

Implementation: src/ros2_medkit_integration_tests/test/features/test_triggers_persistent.test.py#L188 (Test: test_01_create_persistent_trigger)

Test Case: test_02_trigger_listed_on_primary TEST_TestTriggersPersistent_test_02_trigger_listed_on_primary
status: verified
verifies: REQ_INTEROP_030

Persistent trigger appears in the listing on the primary gateway.

Implementation: src/ros2_medkit_integration_tests/test/features/test_triggers_persistent.test.py#L223 (Test: test_02_trigger_listed_on_primary)

Test Case: test_04_restored_trigger_fields_match TEST_TestTriggersPersistent_test_04_restored_trigger_fields_match
status: verified
verifies: REQ_INTEROP_096

Fields of the restored trigger match what was originally created.

Implementation: src/ros2_medkit_integration_tests/test/features/test_triggers_persistent.test.py#L290 (Test: test_04_restored_trigger_fields_match)

Test Case: test_06_delete_via_secondary_removes_from_store TEST_TestTriggersPersistent_test_06_delete_via_secondary_removes_from_store
status: verified
verifies: REQ_INTEROP_032

After deletion, the trigger must also be absent when listed on the primary gateway (they share the same SQLite file).

Implementation: src/ros2_medkit_integration_tests/test/features/test_triggers_persistent.test.py#L355 (Test: test_06_delete_via_secondary_removes_from_store)

Test Case: test_01_create_updates_trigger TEST_TestTriggersUpdates_test_01_create_updates_trigger
status: verified
verifies: REQ_INTEROP_029

POST creates a trigger on updates collection.

Implementation: src/ros2_medkit_integration_tests/test/features/test_triggers_updates.test.py#L89 (Test: test_01_create_updates_trigger)

Test Case: test_02_list_updates_triggers TEST_TestTriggersUpdates_test_02_list_updates_triggers
status: verified
verifies: REQ_INTEROP_030

GET /triggers lists updates triggers for the entity.

Implementation: src/ros2_medkit_integration_tests/test/features/test_triggers_updates.test.py#L107 (Test: test_02_list_updates_triggers)

Test Case: test_03_get_updates_trigger TEST_TestTriggersUpdates_test_03_get_updates_trigger
status: verified
verifies: REQ_INTEROP_096

GET /triggers/{id} returns updates trigger details.

Implementation: src/ros2_medkit_integration_tests/test/features/test_triggers_updates.test.py#L126 (Test: test_03_get_updates_trigger)

Test Case: test_04_update_updates_trigger_lifetime TEST_TestTriggersUpdates_test_04_update_updates_trigger_lifetime
status: verified
verifies: REQ_INTEROP_031

PUT /triggers/{id} updates the trigger lifetime.

Implementation: src/ros2_medkit_integration_tests/test/features/test_triggers_updates.test.py#L148 (Test: test_04_update_updates_trigger_lifetime)

Test Case: test_05_delete_updates_trigger TEST_TestTriggersUpdates_test_05_delete_updates_trigger
status: verified
verifies: REQ_INTEROP_032

DELETE /triggers/{id} removes the updates trigger.

Implementation: src/ros2_medkit_integration_tests/test/features/test_triggers_updates.test.py#L165 (Test: test_05_delete_updates_trigger)

Test Case: test_10_events_endpoint_returns_sse_headers TEST_TestTriggersUpdates_test_10_events_endpoint_returns_sse_headers
status: verified
verifies: REQ_INTEROP_097

SSE events endpoint returns correct content-type headers.

Implementation: src/ros2_medkit_integration_tests/test/features/test_triggers_updates.test.py#L199 (Test: test_10_events_endpoint_returns_sse_headers)

Test Case: test_11_events_for_nonexistent_trigger_returns_404 TEST_TestTriggersUpdates_test_11_events_for_nonexistent_trigger_returns_404
status: verified
verifies: REQ_INTEROP_097

GET /events for a nonexistent trigger returns 404.

Implementation: src/ros2_medkit_integration_tests/test/features/test_triggers_updates.test.py#L218 (Test: test_11_events_for_nonexistent_trigger_returns_404)

Test Case: test_01_automated_completes TEST_TestUpdatesAutomated_test_01_automated_completes
status: verified
verifies: REQ_INTEROP_093

Automated update runs prepare + execute and completes.

Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L470 (Test: test_01_automated_completes)

Test Case: test_02_automated_on_non_automated_returns_400 TEST_TestUpdatesAutomated_test_02_automated_on_non_automated_returns_400
status: verified
verifies: REQ_INTEROP_093

Automated on non-automated package returns 400.

Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L486 (Test: test_02_automated_on_non_automated_returns_400)

Test Case: test_01_list_updates_empty TEST_TestUpdatesCRUD_test_01_list_updates_empty
status: verified
verifies: REQ_INTEROP_082

GET /updates returns empty list initially.

Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L229 (Test: test_01_list_updates_empty)

Test Case: test_02_register_update TEST_TestUpdatesCRUD_test_02_register_update
status: verified
verifies: REQ_INTEROP_083

POST /updates registers a new package.

Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L236 (Test: test_02_register_update)

Test Case: test_03_list_after_register TEST_TestUpdatesCRUD_test_03_list_after_register
status: verified
verifies: REQ_INTEROP_082

GET /updates includes registered package.

Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L242 (Test: test_03_list_after_register)

Test Case: test_04_get_update_metadata TEST_TestUpdatesCRUD_test_04_get_update_metadata
status: verified
verifies: REQ_INTEROP_085

GET /updates/{id} returns full metadata.

Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L249 (Test: test_04_get_update_metadata)

Test Case: test_05_get_nonexistent_returns_404 TEST_TestUpdatesCRUD_test_05_get_nonexistent_returns_404
status: verified
verifies: REQ_INTEROP_085

GET /updates/{id} returns 404 for unknown package.

Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L275 (Test: test_05_get_nonexistent_returns_404)

Test Case: test_06_delete_update TEST_TestUpdatesCRUD_test_06_delete_update
status: verified
verifies: REQ_INTEROP_084

DELETE /updates/{id} removes the package.

Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L283 (Test: test_06_delete_update)

Test Case: test_07_delete_nonexistent_returns_404 TEST_TestUpdatesCRUD_test_07_delete_nonexistent_returns_404
status: verified
verifies: REQ_INTEROP_084

DELETE /updates/{id} returns 404 for unknown package.

Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L299 (Test: test_07_delete_nonexistent_returns_404)

Test Case: test_08_register_duplicate_returns_400 TEST_TestUpdatesCRUD_test_08_register_duplicate_returns_400
status: verified
verifies: REQ_INTEROP_083

POST /updates returns 400 when ID already exists.

Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L307 (Test: test_08_register_duplicate_returns_400)

Test Case: test_09_list_with_origin_filter TEST_TestUpdatesCRUD_test_09_list_with_origin_filter
status: verified
verifies: REQ_INTEROP_082

GET /updates?origin=remote filters by origin.

Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L323 (Test: test_09_list_with_origin_filter)

Test Case: test_10_list_with_target_version_filter TEST_TestUpdatesCRUD_test_10_list_with_target_version_filter
status: verified
verifies: REQ_INTEROP_082

GET /updates?target-version=X filters by target version.

Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L337 (Test: test_10_list_with_target_version_filter)

Test Case: test_01_delete_during_prepare_returns_409 TEST_TestUpdatesErrorCases_test_01_delete_during_prepare_returns_409
status: verified
verifies: REQ_INTEROP_084

Cannot delete a package while prepare is in progress.

Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L502 (Test: test_01_delete_during_prepare_returns_409)

Test Case: test_02_prepare_nonexistent_returns_404 TEST_TestUpdatesErrorCases_test_02_prepare_nonexistent_returns_404
status: verified
verifies: REQ_INTEROP_091

Cannot prepare a package that doesn’t exist.

Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L518 (Test: test_02_prepare_nonexistent_returns_404)

Test Case: test_03_execute_nonexistent_returns_404 TEST_TestUpdatesErrorCases_test_03_execute_nonexistent_returns_404
status: verified
verifies: REQ_INTEROP_092

Cannot execute a package that doesn’t exist.

Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L529 (Test: test_03_execute_nonexistent_returns_404)

Test Case: test_04_register_missing_required_fields TEST_TestUpdatesErrorCases_test_04_register_missing_required_fields
status: verified
verifies: REQ_INTEROP_083

POST /updates with missing required fields returns 400.

Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L540 (Test: test_04_register_missing_required_fields)

Test Case: test_05_register_malformed_json TEST_TestUpdatesErrorCases_test_05_register_malformed_json
status: verified
verifies: REQ_INTEROP_083

POST /updates with broken JSON returns 400.

Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L553 (Test: test_05_register_malformed_json)

Test Case: test_01_list_updates_returns_501 TEST_TestUpdatesNoPlugin_test_01_list_updates_returns_501
status: verified
verifies: REQ_INTEROP_082

GET /updates returns 501 when no plugin loaded.

Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L149 (Test: test_01_list_updates_returns_501)

Test Case: test_02_get_update_returns_501 TEST_TestUpdatesNoPlugin_test_02_get_update_returns_501
status: verified
verifies: REQ_INTEROP_085

GET /updates/{id} returns 501 when no plugin loaded.

Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L156 (Test: test_02_get_update_returns_501)

Test Case: test_03_register_update_returns_501 TEST_TestUpdatesNoPlugin_test_03_register_update_returns_501
status: verified
verifies: REQ_INTEROP_083

POST /updates returns 501 when no plugin loaded.

Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L163 (Test: test_03_register_update_returns_501)

Test Case: test_04_prepare_returns_501 TEST_TestUpdatesNoPlugin_test_04_prepare_returns_501
status: verified
verifies: REQ_INTEROP_091

PUT /updates/{id}/prepare returns 501 when no plugin loaded.

Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L179 (Test: test_04_prepare_returns_501)

Test Case: test_05_execute_returns_501 TEST_TestUpdatesNoPlugin_test_05_execute_returns_501
status: verified
verifies: REQ_INTEROP_092

PUT /updates/{id}/execute returns 501 when no plugin loaded.

Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L188 (Test: test_05_execute_returns_501)

Test Case: test_06_automated_returns_501 TEST_TestUpdatesNoPlugin_test_06_automated_returns_501
status: verified
verifies: REQ_INTEROP_093

PUT /updates/{id}/automated returns 501 when no plugin loaded.

Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L197 (Test: test_06_automated_returns_501)

Test Case: test_07_status_returns_501 TEST_TestUpdatesNoPlugin_test_07_status_returns_501
status: verified
verifies: REQ_INTEROP_094

GET /updates/{id}/status returns 501 when no plugin loaded.

Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L206 (Test: test_07_status_returns_501)

Test Case: test_08_delete_returns_501 TEST_TestUpdatesNoPlugin_test_08_delete_returns_501
status: verified
verifies: REQ_INTEROP_084

DELETE /updates/{id} returns 501 when no plugin loaded.

Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L215 (Test: test_08_delete_returns_501)

Test Case: test_00_status_pending_right_after_register TEST_TestUpdatesPrepareExecute_test_00_status_pending_right_after_register
status: verified
verifies: REQ_INTEROP_094

GET /status returns 200 pending immediately after POST /updates.

Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L357 (Test: test_00_status_pending_right_after_register)

Test Case: test_01_prepare_returns_202 TEST_TestUpdatesPrepareExecute_test_01_prepare_returns_202
status: verified
verifies: REQ_INTEROP_091

PUT /updates/{id}/prepare returns 202 Accepted.

Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L371 (Test: test_01_prepare_returns_202)

Test Case: test_02_prepare_completes TEST_TestUpdatesPrepareExecute_test_02_prepare_completes
status: verified
verifies: REQ_INTEROP_091

Prepare workflow completes successfully with status polling.

Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L382 (Test: test_02_prepare_completes)

Test Case: test_03_execute_after_prepare TEST_TestUpdatesPrepareExecute_test_03_execute_after_prepare
status: verified
verifies: REQ_INTEROP_092

Execute succeeds after prepare completes.

Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L392 (Test: test_03_execute_after_prepare)

Test Case: test_04_execute_without_prepare_returns_400 TEST_TestUpdatesPrepareExecute_test_04_execute_without_prepare_returns_400
status: verified
verifies: REQ_INTEROP_092

Execute before prepare returns 400.

Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L410 (Test: test_04_execute_without_prepare_returns_400)

Test Case: test_05_status_shows_progress TEST_TestUpdatesPrepareExecute_test_05_status_shows_progress
status: verified
verifies: REQ_INTEROP_094

Status endpoint shows progress during prepare.

Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L419 (Test: test_05_status_shows_progress)

Test Case: test_06_status_not_found_for_unknown TEST_TestUpdatesPrepareExecute_test_06_status_not_found_for_unknown
status: verified
verifies: REQ_INTEROP_094

GET /status for unknown package returns 404.

Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L455 (Test: test_06_status_not_found_for_unknown)

Test Case: TokenTypeToString TEST_TokenTypeTest_TokenTypeToString
status: verified
verifies: REQ_INTEROP_087

Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L150 (Test: TokenTypeToString)

Test Case: DefaultTopicsUsedAsFallback TEST_TopicResolutionTest_DefaultTopicsUsedAsFallback
status: verified
verifies: REQ_INTEROP_088

Implementation: src/ros2_medkit_fault_manager/test/test_snapshot_capture.cpp#L131 (Test: DefaultTopicsUsedAsFallback)

Test Case: FaultSpecificHasHighestPriority TEST_TopicResolutionTest_FaultSpecificHasHighestPriority
status: verified
verifies: REQ_INTEROP_088

Implementation: src/ros2_medkit_fault_manager/test/test_snapshot_capture.cpp#L101 (Test: FaultSpecificHasHighestPriority)

Test Case: PatternMatchUsedWhenNoFaultSpecific TEST_TopicResolutionTest_PatternMatchUsedWhenNoFaultSpecific
status: verified
verifies: REQ_INTEROP_088

Implementation: src/ros2_medkit_fault_manager/test/test_snapshot_capture.cpp#L117 (Test: PatternMatchUsedWhenNoFaultSpecific)

Test Case: RegisterAndLookup TEST_TransportRegistryTest_RegisterAndLookup
status: verified
verifies: REQ_INTEROP_089

Implementation: src/ros2_medkit_gateway/test/test_transport_registry.cpp#L56 (Test: RegisterAndLookup)

Test Case: InvalidParameterErrorFormat TEST_TriggerErrorTest_InvalidParameterErrorFormat

Implementation: src/ros2_medkit_gateway/test/test_trigger_handlers.cpp#L221 (Test: InvalidParameterErrorFormat)

Test Case: InvalidResourceUriVendorError TEST_TriggerErrorTest_InvalidResourceUriVendorError
status: verified
verifies: REQ_INTEROP_029

Implementation: src/ros2_medkit_gateway/test/test_trigger_handlers.cpp#L273 (Test: InvalidResourceUriVendorError)

Test Case: Create_InvalidConditionType TEST_TriggerManagerTest_Create_InvalidConditionType
status: verified
verifies: REQ_INTEROP_029

Implementation: src/ros2_medkit_gateway/test/test_trigger_manager.cpp#L100 (Test: Create_InvalidConditionType)

Test Case: Create_InvalidParams TEST_TriggerManagerTest_Create_InvalidParams
status: verified
verifies: REQ_INTEROP_029

EnterRange requires lower_bound <= upper_bound

Implementation: src/ros2_medkit_gateway/test/test_trigger_manager.cpp#L109 (Test: Create_InvalidParams)

Test Case: Create_MaxTriggersExceeded TEST_TriggerManagerTest_Create_MaxTriggersExceeded
status: verified
verifies: REQ_INTEROP_029

Implementation: src/ros2_medkit_gateway/test/test_trigger_manager.cpp#L120 (Test: Create_MaxTriggersExceeded)

Test Case: Create_ValidOnChangeTrigger TEST_TriggerManagerTest_Create_ValidOnChangeTrigger
status: verified
verifies: REQ_INTEROP_029

Implementation: src/ros2_medkit_gateway/test/test_trigger_manager.cpp#L88 (Test: Create_ValidOnChangeTrigger)

Test Case: EventEnvelopeFormat TEST_TriggerManagerTest_EventEnvelopeFormat
status: verified
verifies: REQ_INTEROP_097

Implementation: src/ros2_medkit_gateway/test/test_trigger_manager.cpp#L432 (Test: EventEnvelopeFormat)

Test Case: Get_Existing TEST_TriggerManagerTest_Get_Existing
status: verified
verifies: REQ_INTEROP_096

Implementation: src/ros2_medkit_gateway/test/test_trigger_manager.cpp#L132 (Test: Get_Existing)

Test Case: Hierarchy_AreaToApp TEST_TriggerManagerTest_Hierarchy_AreaToApp
status: verified
verifies: REQ_INTEROP_029

Set up hierarchy: area “navigation” contains apps

Implementation: src/ros2_medkit_gateway/test/test_trigger_manager.cpp#L357 (Test: Hierarchy_AreaToApp)

Test Case: Hierarchy_ComponentToApp TEST_TriggerManagerTest_Hierarchy_ComponentToApp
status: verified
verifies: REQ_INTEROP_029

Set up hierarchy: component “chassis” contains app “sensor”

Implementation: src/ros2_medkit_gateway/test/test_trigger_manager.cpp#L331 (Test: Hierarchy_ComponentToApp)

Test Case: JsonPointer_ExtractsSubElement TEST_TriggerManagerTest_JsonPointer_ExtractsSubElement
status: verified
verifies: REQ_INTEROP_097

Implementation: src/ros2_medkit_gateway/test/test_trigger_manager.cpp#L540 (Test: JsonPointer_ExtractsSubElement)

Test Case: LifetimeExpiry TEST_TriggerManagerTest_LifetimeExpiry
status: verified
verifies: REQ_INTEROP_029

Implementation: src/ros2_medkit_gateway/test/test_trigger_manager.cpp#L311 (Test: LifetimeExpiry)

Test Case: List_ReturnsTriggersForEntity TEST_TriggerManagerTest_List_ReturnsTriggersForEntity
status: verified
verifies: REQ_INTEROP_030

Implementation: src/ros2_medkit_gateway/test/test_trigger_manager.cpp#L148 (Test: List_ReturnsTriggersForEntity)

Test Case: Multishot_NotifyTwice TEST_TriggerManagerTest_Multishot_NotifyTwice
status: verified
verifies: REQ_INTEROP_097

Implementation: src/ros2_medkit_gateway/test/test_trigger_manager.cpp#L286 (Test: Multishot_NotifyTwice)

Test Case: OnRemovedCallback TEST_TriggerManagerTest_OnRemovedCallback
status: verified
verifies: REQ_INTEROP_032

Implementation: src/ros2_medkit_gateway/test/test_trigger_manager.cpp#L412 (Test: OnRemovedCallback)

Test Case: Remove_ExistingTrigger TEST_TriggerManagerTest_Remove_ExistingTrigger
status: verified
verifies: REQ_INTEROP_032

Implementation: src/ros2_medkit_gateway/test/test_trigger_manager.cpp#L203 (Test: Remove_ExistingTrigger)

Test Case: SingleShot_NotifyMatchingChange TEST_TriggerManagerTest_SingleShot_NotifyMatchingChange
status: verified
verifies: REQ_INTEROP_097

Implementation: src/ros2_medkit_gateway/test/test_trigger_manager.cpp#L220 (Test: SingleShot_NotifyMatchingChange)

Test Case: SingleShot_RemovedAfterFiring TEST_TriggerManagerTest_SingleShot_RemovedAfterFiring
status: verified
verifies: REQ_INTEROP_029

Implementation: src/ros2_medkit_gateway/test/test_trigger_manager.cpp#L253 (Test: SingleShot_RemovedAfterFiring)

Test Case: Update_ChangeLifetime TEST_TriggerManagerTest_Update_ChangeLifetime
status: verified
verifies: REQ_INTEROP_031

Implementation: src/ros2_medkit_gateway/test/test_trigger_manager.cpp#L164 (Test: Update_ChangeLifetime)

Test Case: ClientLimitEnforced TEST_TriggerSSETrackerTest_ClientLimitEnforced
status: verified
verifies: REQ_INTEROP_097

Implementation: src/ros2_medkit_gateway/test/test_trigger_handlers.cpp#L252 (Test: ClientLimitEnforced)

Test Case: FilePersistence TEST_TriggerStore_FilePersistence
status: verified
verifies: REQ_INTEROP_029

Implementation: src/ros2_medkit_gateway/test/test_trigger_store.cpp#L366 (Test: FilePersistence)

Test Case: SaveAndLoadRoundTrip TEST_TriggerStore_SaveAndLoadRoundTrip
status: verified
verifies: REQ_INTEROP_029

Implementation: src/ros2_medkit_gateway/test/test_trigger_store.cpp#L70 (Test: SaveAndLoadRoundTrip)

Test Case: ContainsAllRequiredFields TEST_TriggerToJsonTest_ContainsAllRequiredFields
status: verified

Implementation: src/ros2_medkit_gateway/test/test_trigger_handlers.cpp#L123 (Test: ContainsAllRequiredFields)

Test Case: InvalidJsonPointer_Returns400 TEST_TriggerValidationTest_InvalidJsonPointer_Returns400
status: verified
verifies: REQ_INTEROP_029

Implementation: src/ros2_medkit_gateway/test/test_trigger_handlers.cpp#L289 (Test: InvalidJsonPointer_Returns400)

Test Case: PathTooLong_Returns400 TEST_TriggerValidationTest_PathTooLong_Returns400
status: verified
verifies: REQ_INTEROP_029

Implementation: src/ros2_medkit_gateway/test/test_trigger_handlers.cpp#L308 (Test: PathTooLong_Returns400)

Test Case: UnknownCollection_Returns400 TEST_TriggerValidationTest_UnknownCollection_Returns400
status: verified
verifies: REQ_INTEROP_029

Implementation: src/ros2_medkit_gateway/test/test_trigger_handlers.cpp#L331 (Test: UnknownCollection_Returns400)

Test Case: UnsupportedProtocol_Returns400 TEST_TriggerValidationTest_UnsupportedProtocol_Returns400
status: verified
verifies: REQ_INTEROP_029

Implementation: src/ros2_medkit_gateway/test/test_trigger_handlers.cpp#L321 (Test: UnsupportedProtocol_Returns400)

Test Case: VendorExtensionCollection_Accepted TEST_TriggerValidationTest_VendorExtensionCollection_Accepted
status: verified
verifies: REQ_INTEROP_029

x-* vendor extension collections must pass parse_resource_uri and the collection guard. Verify parse_resource_uri accepts x-* collections (the URI parse step).

Implementation: src/ros2_medkit_gateway/test/test_trigger_handlers.cpp#L344 (Test: VendorExtensionCollection_Accepted)

Test Case: ExecuteExceptionSetsFailedStatus TEST_UpdateManagerFailureTest_ExecuteExceptionSetsFailedStatus
status: verified
verifies: REQ_INTEROP_092

Implementation: src/ros2_medkit_gateway/test/test_update_manager.cpp#L571 (Test: ExecuteExceptionSetsFailedStatus)

Test Case: ExecuteFailureSetsFailedStatus TEST_UpdateManagerFailureTest_ExecuteFailureSetsFailedStatus
status: verified
verifies: REQ_INTEROP_092

Implementation: src/ros2_medkit_gateway/test/test_update_manager.cpp#L538 (Test: ExecuteFailureSetsFailedStatus)

Test Case: PrepareExceptionSetsFailedStatus TEST_UpdateManagerFailureTest_PrepareExceptionSetsFailedStatus
status: verified
verifies: REQ_INTEROP_091

Implementation: src/ros2_medkit_gateway/test/test_update_manager.cpp#L493 (Test: PrepareExceptionSetsFailedStatus)

Test Case: PrepareFailureSetsFailedStatus TEST_UpdateManagerFailureTest_PrepareFailureSetsFailedStatus
status: verified
verifies: REQ_INTEROP_091

Implementation: src/ros2_medkit_gateway/test/test_update_manager.cpp#L404 (Test: PrepareFailureSetsFailedStatus)

Test Case: AutomatedCompletes TEST_UpdateManagerTest_AutomatedCompletes
status: verified
verifies: REQ_INTEROP_093

Implementation: src/ros2_medkit_gateway/test/test_update_manager.cpp#L248 (Test: AutomatedCompletes)

Test Case: AutomatedRejectsNonAutomated TEST_UpdateManagerTest_AutomatedRejectsNonAutomated
status: verified
verifies: REQ_INTEROP_093

Implementation: src/ros2_medkit_gateway/test/test_update_manager.cpp#L273 (Test: AutomatedRejectsNonAutomated)

Test Case: ConcurrentPrepareOnSamePackageRejected TEST_UpdateManagerTest_ConcurrentPrepareOnSamePackageRejected
status: verified
verifies: REQ_INTEROP_091

Implementation: src/ros2_medkit_gateway/test/test_update_manager.cpp#L329 (Test: ConcurrentPrepareOnSamePackageRejected)

Test Case: DeleteDuringOperationFails TEST_UpdateManagerTest_DeleteDuringOperationFails
status: verified
verifies: REQ_INTEROP_084

Implementation: src/ros2_medkit_gateway/test/test_update_manager.cpp#L283 (Test: DeleteDuringOperationFails)

Test Case: DeleteUpdate TEST_UpdateManagerTest_DeleteUpdate
status: verified
verifies: REQ_INTEROP_084

Implementation: src/ros2_medkit_gateway/test/test_update_manager.cpp#L156 (Test: DeleteUpdate)

Test Case: DuplicateRegistration TEST_UpdateManagerTest_DuplicateRegistration
status: verified
verifies: REQ_INTEROP_083

Implementation: src/ros2_medkit_gateway/test/test_update_manager.cpp#L318 (Test: DuplicateRegistration)

Test Case: ExecuteAfterPrepare TEST_UpdateManagerTest_ExecuteAfterPrepare
status: verified
verifies: REQ_INTEROP_092

Implementation: src/ros2_medkit_gateway/test/test_update_manager.cpp#L204 (Test: ExecuteAfterPrepare)

Test Case: ExecuteRequiresPrepare TEST_UpdateManagerTest_ExecuteRequiresPrepare
status: verified
verifies: REQ_INTEROP_092

Implementation: src/ros2_medkit_gateway/test/test_update_manager.cpp#L194 (Test: ExecuteRequiresPrepare)

Test Case: GetUpdate TEST_UpdateManagerTest_GetUpdate
status: verified
verifies: REQ_INTEROP_085

Implementation: src/ros2_medkit_gateway/test/test_update_manager.cpp#L139 (Test: GetUpdate)

Test Case: GetUpdateNotFound TEST_UpdateManagerTest_GetUpdateNotFound
status: verified
verifies: REQ_INTEROP_085

Implementation: src/ros2_medkit_gateway/test/test_update_manager.cpp#L149 (Test: GetUpdateNotFound)

Test Case: HasBackend TEST_UpdateManagerTest_HasBackend
status: verified
verifies: REQ_INTEROP_082

Implementation: src/ros2_medkit_gateway/test/test_update_manager.cpp#L114 (Test: HasBackend)

Test Case: NoBackendMode TEST_UpdateManagerTest_NoBackendMode
status: verified
verifies: REQ_INTEROP_082

Implementation: src/ros2_medkit_gateway/test/test_update_manager.cpp#L119 (Test: NoBackendMode)

Test Case: PrepareAndPollStatus TEST_UpdateManagerTest_PrepareAndPollStatus
status: verified
verifies: REQ_INTEROP_091

Implementation: src/ros2_medkit_gateway/test/test_update_manager.cpp#L168 (Test: PrepareAndPollStatus)

Test Case: RegisterAndList TEST_UpdateManagerTest_RegisterAndList
status: verified
verifies: REQ_INTEROP_082

Implementation: src/ros2_medkit_gateway/test/test_update_manager.cpp#L127 (Test: RegisterAndList)

Test Case: StatusNotFoundForUnknown TEST_UpdateManagerTest_StatusNotFoundForUnknown
status: verified
verifies: REQ_INTEROP_094

Implementation: src/ros2_medkit_gateway/test/test_update_manager.cpp#L295 (Test: StatusNotFoundForUnknown)

Test Case: StatusPendingRightAfterRegister TEST_UpdateManagerTest_StatusPendingRightAfterRegister
status: verified
verifies: REQ_INTEROP_094

Registering an update must immediately yield a Pending status so the UpdatesDashboard (which gates action buttons on a non-null status response) can render Prepare / Execute / Delete without waiting for a separate prepare call.

Implementation: src/ros2_medkit_gateway/test/test_update_manager.cpp#L302 (Test: StatusPendingRightAfterRegister)

Test Case: ContributorsOmitsFieldWhenInputEmpty TEST_XMedkitTest_ContributorsOmitsFieldWhenInputEmpty
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_gateway/test/test_x_medkit.cpp#L307 (Test: ContributorsOmitsFieldWhenInputEmpty)

Test Case: ContributorsPlacesLocalFirstThenPeersAlphabeticallyFromReverseInput TEST_XMedkitTest_ContributorsPlacesLocalFirstThenPeersAlphabeticallyFromReverseInput
status: verified
verifies: REQ_INTEROP_003

Mirrors the user-visible path: detail handlers feed contributors into XMedkit which must normalise order regardless of how the aggregation layer appended peers. Reverse-order input guards against a regression that accidentally flipped the sort direction in sorted_contributors().

Implementation: src/ros2_medkit_gateway/test/test_x_medkit.cpp#L314 (Test: ContributorsPlacesLocalFirstThenPeersAlphabeticallyFromReverseInput)

Test Case: ContributorsWithoutLocalStaysAlphabetical TEST_XMedkitTest_ContributorsWithoutLocalStaysAlphabetical
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_gateway/test/test_x_medkit.cpp#L332 (Test: ContributorsWithoutLocalStaysAlphabetical)

Test Case: LoadValidFile TEST_YamlLoadTest_LoadValidFile
status: verified
verifies: REQ_INTEROP_095

Implementation: src/ros2_medkit_fault_manager/test/test_entity_thresholds.cpp#L173 (Test: LoadValidFile)

Test Case: MalformedYamlReturnsEmpty TEST_YamlLoadTest_MalformedYamlReturnsEmpty
status: verified
verifies: REQ_INTEROP_095

Implementation: src/ros2_medkit_fault_manager/test/test_entity_thresholds.cpp#L210 (Test: MalformedYamlReturnsEmpty)

Test Case: MissingFileReturnsEmpty TEST_YamlLoadTest_MissingFileReturnsEmpty
status: verified
verifies: REQ_INTEROP_095

Implementation: src/ros2_medkit_fault_manager/test/test_entity_thresholds.cpp#L204 (Test: MissingFileReturnsEmpty)

Test Case: PositiveConfirmationThresholdAutoNegated TEST_YamlLoadTest_PositiveConfirmationThresholdAutoNegated
status: verified
verifies: REQ_INTEROP_095

Implementation: src/ros2_medkit_fault_manager/test/test_entity_thresholds.cpp#L222 (Test: PositiveConfirmationThresholdAutoNegated)

ID

Title

Status

Verifies

TEST_AggregationClassification_hierarchical_parent_drops_routing_across_multiple_peers

hierarchical_parent_drops_routing_across_multiple_peers

verified

REQ_INTEROP_003

TEST_AggregationClassification_hierarchical_parent_drops_routing_when_local_subcomponents_exist

hierarchical_parent_drops_routing_when_local_subcomponents_exist

verified

REQ_INTEROP_003

TEST_AggregationClassification_hierarchical_parent_drops_routing_when_remote_subcomponents_exist

hierarchical_parent_drops_routing_when_remote_subcomponents_exist

verified

REQ_INTEROP_003

TEST_AggregationClassification_leaf_collision_across_multiple_peers_emits_warning

leaf_collision_across_multiple_peers_emits_warning

verified

REQ_INTEROP_003

TEST_AggregationClassification_leaf_collision_keeps_routing_to_peer

leaf_collision_keeps_routing_to_peer

verified

REQ_INTEROP_003

TEST_AggregationClassification_leaf_collision_routing_respects_input_order

leaf_collision_routing_respects_input_order

verified

REQ_INTEROP_003

TEST_AggregationClassification_parent_references_nonexistent_component_falls_back_to_leaf

parent_references_nonexistent_component_falls_back_to_leaf

verified

REQ_INTEROP_003

TEST_AggregationClassification_self_parent_is_ignored_and_warned

self_parent_is_ignored_and_warned

verified

REQ_INTEROP_003

TEST_AggregationClassification_subcomponents_of_hierarchical_parent_still_route_to_peer

subcomponents_of_hierarchical_parent_still_route_to_peer

verified

REQ_INTEROP_003

TEST_AggregationClassification_two_way_parent_cycle_falls_back_to_leaves_with_warning

two_way_parent_cycle_falls_back_to_leaves_with_warning

verified

REQ_INTEROP_003

TEST_AggregationManager_fan_out_returns_partial_when_peers_unreachable

fan_out_returns_partial_when_peers_unreachable

verified

REQ_INTEROP_003

TEST_AggregationManager_forward_returns_502_for_unknown_peer

forward_returns_502_for_unknown_peer

verified

REQ_INTEROP_003

TEST_AggregationManager_forward_strips_peer_prefix_from_path

forward_strips_peer_prefix_from_path

verified

REQ_INTEROP_003

TEST_AggregationManager_routing_table_update_and_find

routing_table_update_and_find

verified

REQ_INTEROP_003

TEST_AppModelTest_ToJson_ContainsRequiredFields

ToJson_ContainsRequiredFields

verified

REQ_INTEROP_003

TEST_AreaModelTest_ToJson_ContainsRequiredFields

ToJson_ContainsRequiredFields

verified

REQ_INTEROP_003

TEST_AuthHandlersAuthorizeTest_AuthorizeErrorBodyFollowsOAuth2Format

AuthorizeErrorBodyFollowsOAuth2Format

verified

REQ_INTEROP_086

TEST_AuthHandlersAuthorizeTest_ReturnsBadRequestForEmptyClientId

ReturnsBadRequestForEmptyClientId

verified

REQ_INTEROP_086

TEST_AuthHandlersAuthorizeTest_ReturnsBadRequestForEmptyClientSecret

ReturnsBadRequestForEmptyClientSecret

verified

REQ_INTEROP_086

TEST_AuthHandlersAuthorizeTest_ReturnsBadRequestForMissingClientId

ReturnsBadRequestForMissingClientId

verified

REQ_INTEROP_086

TEST_AuthHandlersAuthorizeTest_ReturnsBadRequestForMissingClientSecret

ReturnsBadRequestForMissingClientSecret

verified

REQ_INTEROP_086

TEST_AuthHandlersAuthorizeTest_ReturnsBadRequestForWrongGrantType

ReturnsBadRequestForWrongGrantType

verified

REQ_INTEROP_086

TEST_AuthHandlersDisabledTest_AuthorizeErrorBodyContainsErrorCode

AuthorizeErrorBodyContainsErrorCode

verified

REQ_INTEROP_086

TEST_AuthHandlersDisabledTest_AuthorizeReturns404WhenAuthDisabled

AuthorizeReturns404WhenAuthDisabled

verified

REQ_INTEROP_086

TEST_AuthHandlersDisabledTest_RevokeReturns404WhenAuthDisabled

RevokeReturns404WhenAuthDisabled

verified

REQ_INTEROP_086

TEST_AuthHandlersDisabledTest_TokenReturns404WhenAuthDisabled

TokenReturns404WhenAuthDisabled

verified

REQ_INTEROP_087

TEST_AuthHandlersRevokeTest_ReturnsBadRequestForInvalidJson

ReturnsBadRequestForInvalidJson

verified

REQ_INTEROP_086

TEST_AuthHandlersRevokeTest_ReturnsBadRequestForMissingTokenField

ReturnsBadRequestForMissingTokenField

verified

REQ_INTEROP_086

TEST_AuthHandlersRevokeTest_ReturnsBadRequestForNonStringToken

ReturnsBadRequestForNonStringToken

verified

REQ_INTEROP_086

TEST_AuthHandlersTokenTest_ReturnsBadRequestForEmptyRefreshToken

ReturnsBadRequestForEmptyRefreshToken

verified

REQ_INTEROP_087

TEST_AuthHandlersTokenTest_ReturnsBadRequestForMissingRefreshToken

ReturnsBadRequestForMissingRefreshToken

verified

REQ_INTEROP_087

TEST_AuthHandlersTokenTest_ReturnsBadRequestForWrongGrantType

ReturnsBadRequestForWrongGrantType

verified

REQ_INTEROP_087

TEST_AuthHandlersWithManagerTest_AuthorizeReturnsTokensForValidCredentials

AuthorizeReturnsTokensForValidCredentials

verified

REQ_INTEROP_086

TEST_AuthHandlersWithManagerTest_AuthorizeReturnsUnauthorizedForInvalidCredentials

AuthorizeReturnsUnauthorizedForInvalidCredentials

verified

REQ_INTEROP_086

TEST_AuthHandlersWithManagerTest_RevokeRevokesRefreshTokenForSubsequentTokenRequest

RevokeRevokesRefreshTokenForSubsequentTokenRequest

verified

REQ_INTEROP_086

TEST_AuthHandlersWithManagerTest_TokenReturnsNewAccessTokenForValidRefreshToken

TokenReturnsNewAccessTokenForValidRefreshToken

verified

REQ_INTEROP_087

TEST_AuthHandlersWithManagerTest_TokenReturnsUnauthorizedForInvalidRefreshToken

TokenReturnsUnauthorizedForInvalidRefreshToken

verified

REQ_INTEROP_087

TEST_AuthManagerRS256Test_RS256WithMissingPrivateKeyThrows

RS256WithMissingPrivateKeyThrows

verified

REQ_INTEROP_087

TEST_AuthManagerTest_AuthenticateValidCredentials

AuthenticateValidCredentials

verified

REQ_INTEROP_086

TEST_AuthManagerTest_AuthorizeViewerCanRead

AuthorizeViewerCanRead

verified

REQ_INTEROP_086

TEST_AuthManagerTest_DisabledClientTokenBecomesInvalid

DisabledClientTokenBecomesInvalid

verified

REQ_INTEROP_087

TEST_AuthManagerTest_RefreshAccessToken

RefreshAccessToken

verified

REQ_INTEROP_087

TEST_AuthManagerTest_RefreshRevocationPropagatestoAccessToken

RefreshRevocationPropagatestoAccessToken

verified

REQ_INTEROP_087

TEST_AuthManagerTest_RefreshWithAccessTokenFails

RefreshWithAccessTokenFails

verified

REQ_INTEROP_087

TEST_AuthManagerTest_ValidateTokenWithCorrectType

ValidateTokenWithCorrectType

verified

REQ_INTEROP_087

TEST_AuthManagerTest_ValidateTokenWithWrongTypeRejectsToken

ValidateTokenWithWrongTypeRejectsToken

verified

REQ_INTEROP_087

TEST_AuthManagerTest_ValidateValidToken

ValidateValidToken

verified

REQ_INTEROP_087

TEST_AuthMiddlewareTest_AuthEndpointsNeverRequireAuth

AuthEndpointsNeverRequireAuth

verified

REQ_INTEROP_086

TEST_AuthMiddlewareTest_DisabledMiddlewareAllowsAll

DisabledMiddlewareAllowsAll

verified

REQ_INTEROP_086

TEST_AuthMiddlewareTest_ExtractBearerToken_CaseInsensitive

ExtractBearerToken_CaseInsensitive

verified

REQ_INTEROP_086

TEST_AuthMiddlewareTest_ExtractBearerToken_EmptyHeader

ExtractBearerToken_EmptyHeader

verified

REQ_INTEROP_086

TEST_AuthMiddlewareTest_ExtractBearerToken_EmptyToken

ExtractBearerToken_EmptyToken

verified

REQ_INTEROP_086

TEST_AuthMiddlewareTest_ExtractBearerToken_InvalidPrefix

ExtractBearerToken_InvalidPrefix

verified

REQ_INTEROP_086

TEST_AuthMiddlewareTest_ExtractBearerToken_ValidToken

ExtractBearerToken_ValidToken

verified

REQ_INTEROP_086

TEST_AuthMiddlewareTest_ProcessGetRequestWithoutAuth

ProcessGetRequestWithoutAuth

verified

REQ_INTEROP_086

TEST_AuthMiddlewareTest_ProcessWriteRequestWithInsufficientPermissions

ProcessWriteRequestWithInsufficientPermissions

verified

REQ_INTEROP_086

TEST_AuthMiddlewareTest_ProcessWriteRequestWithInvalidToken

ProcessWriteRequestWithInvalidToken

verified

REQ_INTEROP_086

TEST_AuthMiddlewareTest_ProcessWriteRequestWithoutAuth

ProcessWriteRequestWithoutAuth

verified

REQ_INTEROP_086

TEST_AuthMiddlewareTest_ProcessWriteRequestWithValidToken

ProcessWriteRequestWithValidToken

verified

REQ_INTEROP_086; REQ_INTEROP_087

TEST_AuthorizeRequestTest_ParseRequestFormUrlEncoded

ParseRequestFormUrlEncoded

verified

REQ_INTEROP_086

TEST_AuthorizeRequestTest_ParseRequestInvalidContentType

ParseRequestInvalidContentType

verified

REQ_INTEROP_086

TEST_AuthorizeRequestTest_ParseRequestInvalidJson

ParseRequestInvalidJson

verified

REQ_INTEROP_086

TEST_AuthorizeRequestTest_ParseRequestJson

ParseRequestJson

verified

REQ_INTEROP_086

TEST_AuthorizeRequestTest_ParseRequestJsonWithCharset

ParseRequestJsonWithCharset

verified

REQ_INTEROP_086

TEST_AuthRequirementPolicyTest_AllAuthPolicyAlwaysRequiresAuth

AllAuthPolicyAlwaysRequiresAuth

verified

REQ_INTEROP_086

TEST_AuthRequirementPolicyTest_ConfigurablePolicyExactMatch

ConfigurablePolicyExactMatch

verified

REQ_INTEROP_086

TEST_AuthRequirementPolicyTest_ConfigurablePolicyLongestMatchWins

ConfigurablePolicyLongestMatchWins

verified

REQ_INTEROP_086

TEST_AuthRequirementPolicyTest_ConfigurablePolicyMultipleWildcards

ConfigurablePolicyMultipleWildcards

verified

REQ_INTEROP_086

TEST_AuthRequirementPolicyTest_ConfigurablePolicyUnknownPathsRequireAuth

ConfigurablePolicyUnknownPathsRequireAuth

verified

REQ_INTEROP_086

TEST_AuthRequirementPolicyTest_ConfigurablePolicyWildcardMatch

ConfigurablePolicyWildcardMatch

verified

REQ_INTEROP_086

TEST_AuthRequirementPolicyTest_FactoryCreatesAllAuthFromConfig

FactoryCreatesAllAuthFromConfig

verified

REQ_INTEROP_086

TEST_AuthRequirementPolicyTest_FactoryCreatesNoAuthPolicy

FactoryCreatesNoAuthPolicy

verified

REQ_INTEROP_086

TEST_AuthRequirementPolicyTest_FactoryCreatesWriteOnlyFromConfig

FactoryCreatesWriteOnlyFromConfig

verified

REQ_INTEROP_086

TEST_AuthRequirementPolicyTest_NoAuthPolicyNeverRequiresAuth

NoAuthPolicyNeverRequiresAuth

verified

REQ_INTEROP_086

TEST_AuthRequirementPolicyTest_PolicyDescriptions

PolicyDescriptions

verified

REQ_INTEROP_086

TEST_AuthRequirementPolicyTest_WriteOnlyPolicyForGetRequests

WriteOnlyPolicyForGetRequests

verified

REQ_INTEROP_086

TEST_AuthRequirementPolicyTest_WriteOnlyPolicyForWriteRequests

WriteOnlyPolicyForWriteRequests

verified

REQ_INTEROP_086

TEST_BulkDataHandlersTest_DescriptorToJsonConversion

DescriptorToJsonConversion

verified

REQ_INTEROP_074

TEST_BulkDataHandlersTest_DescriptorToJsonWithMetadata

DescriptorToJsonWithMetadata

verified

REQ_INTEROP_074

TEST_BulkDataHandlersTest_DescriptorToJsonWithoutDescription

DescriptorToJsonWithoutDescription

verified

REQ_INTEROP_074

TEST_BulkDataHandlersTest_FormatTimestampNsEpoch

FormatTimestampNsEpoch

verified

REQ_INTEROP_071

TEST_BulkDataHandlersTest_FormatTimestampNsNegativeFallback

FormatTimestampNsNegativeFallback

verified

REQ_INTEROP_071

TEST_BulkDataHandlersTest_FormatTimestampNsValidTimestamp

FormatTimestampNsValidTimestamp

verified

REQ_INTEROP_071

TEST_BulkDataHandlersTest_FormatTimestampNsWithMilliseconds

FormatTimestampNsWithMilliseconds

verified

REQ_INTEROP_071

TEST_BulkDataHandlersTest_GetRosbagMimetypeCasesSensitive

GetRosbagMimetypeCasesSensitive

verified

REQ_INTEROP_071

TEST_BulkDataHandlersTest_GetRosbagMimetypeDb3

GetRosbagMimetypeDb3

verified

REQ_INTEROP_071

TEST_BulkDataHandlersTest_GetRosbagMimetypeEmpty

GetRosbagMimetypeEmpty

verified

REQ_INTEROP_071

TEST_BulkDataHandlersTest_GetRosbagMimetypeMcap

GetRosbagMimetypeMcap

verified

REQ_INTEROP_071

TEST_BulkDataHandlersTest_GetRosbagMimetypeSqlite3

GetRosbagMimetypeSqlite3

verified

REQ_INTEROP_071

TEST_BulkDataHandlersTest_GetRosbagMimetypeUnknown

GetRosbagMimetypeUnknown

verified

REQ_INTEROP_071

TEST_BulkDataHandlersTest_PayloadTooLargeErrorCodeDefined

PayloadTooLargeErrorCodeDefined

verified

REQ_INTEROP_074

TEST_BulkDataStoreTest_EmptyCategories

EmptyCategories

verified

REQ_INTEROP_071

TEST_BulkDataStoreTest_GenerateUniqueIds

GenerateUniqueIds

verified

REQ_INTEROP_074

TEST_BulkDataStoreTest_GetFilePath

GetFilePath

verified

REQ_INTEROP_073

TEST_BulkDataStoreTest_GetFilePathNonexistent

GetFilePathNonexistent

verified

REQ_INTEROP_074

TEST_BulkDataStoreTest_IdFormatIsReadable

IdFormatIsReadable

verified

REQ_INTEROP_074

TEST_BulkDataStoreTest_ListCategories

ListCategories

verified

REQ_INTEROP_071

TEST_BulkDataStoreTest_ListItemsEmptyCategory

ListItemsEmptyCategory

verified

REQ_INTEROP_074

TEST_BulkDataStoreTest_ListItemsInCategory

ListItemsInCategory

verified

REQ_INTEROP_074

TEST_BulkDataStoreTest_ListItemsWrongEntity

ListItemsWrongEntity

verified

REQ_INTEROP_074

TEST_BulkDataStoreTest_MaxUploadSizeEnforced

MaxUploadSizeEnforced

verified

REQ_INTEROP_074

TEST_BulkDataStoreTest_MaxUploadZeroMeansUnlimited

MaxUploadZeroMeansUnlimited

verified

REQ_INTEROP_074

TEST_BulkDataStoreTest_PathTraversalRejected

PathTraversalRejected

verified

REQ_INTEROP_074

TEST_BulkDataStoreTest_RemoveItem

RemoveItem

verified

REQ_INTEROP_074

TEST_BulkDataStoreTest_RemoveNonexistent

RemoveNonexistent

verified

REQ_INTEROP_074

TEST_BulkDataStoreTest_RemoveThenListDoesNotInclude

RemoveThenListDoesNotInclude

verified

REQ_INTEROP_074

TEST_BulkDataStoreTest_StoreAndRetrieve

StoreAndRetrieve

verified

REQ_INTEROP_074

TEST_BulkDataStoreTest_StoreAtomicWriteDescriptorExists

StoreAtomicWriteDescriptorExists

verified

REQ_INTEROP_074

TEST_BulkDataStoreTest_StoreCreatesDirectoryStructure

StoreCreatesDirectoryStructure

verified

REQ_INTEROP_074

TEST_BulkDataStoreTest_StoreEmptyFile

StoreEmptyFile

verified

REQ_INTEROP_074

TEST_BulkDataStoreTest_StoreEmptyFilename

StoreEmptyFilename

verified

REQ_INTEROP_074

TEST_BulkDataStoreTest_StoreLargeFile

StoreLargeFile

verified

REQ_INTEROP_074

TEST_BulkDataStoreTest_StoreUnknownCategoryRejected

StoreUnknownCategoryRejected

verified

REQ_INTEROP_074

TEST_BulkDataStoreTest_StoreWithMetadata

StoreWithMetadata

verified

REQ_INTEROP_074

TEST_BulkDataStoreTest_UnknownCategory

UnknownCategory

verified

REQ_INTEROP_074

TEST_CapabilityGeneratorTest_EntityCollectionDetailPathHasParameters

EntityCollectionDetailPathHasParameters

verified

REQ_INTEROP_002

TEST_CapabilityGeneratorTest_GenerateEntityCollectionReturnsSpec

GenerateEntityCollectionReturnsSpec

verified

REQ_INTEROP_002

TEST_CapabilityGeneratorTest_GenerateInvalidPathReturnsNullopt

GenerateInvalidPathReturnsNullopt

verified

REQ_INTEROP_002

TEST_CapabilityGeneratorTest_GenerateRootContainsEntityCollections

GenerateRootContainsEntityCollections

verified

REQ_INTEROP_002

TEST_CapabilityGeneratorTest_GenerateRootContainsEntityDetailPaths

GenerateRootContainsEntityDetailPaths

verified

REQ_INTEROP_002

TEST_CapabilityGeneratorTest_GenerateRootContainsGlobalFaults

GenerateRootContainsGlobalFaults

verified

REQ_INTEROP_002

TEST_CapabilityGeneratorTest_GenerateRootContainsHealthEndpoint

GenerateRootContainsHealthEndpoint

verified

REQ_INTEROP_002

TEST_CapabilityGeneratorTest_GenerateRootContainsVersionInfo

GenerateRootContainsVersionInfo

verified

REQ_INTEROP_002

TEST_CapabilityGeneratorTest_GenerateRootReturnsValidOpenApiSpec

GenerateRootReturnsValidOpenApiSpec

verified

REQ_INTEROP_002

TEST_CgroupReader_CgroupV1FormatNotSupported

CgroupV1FormatNotSupported

verified

REQ_INTEROP_003

TEST_CgroupReader_DetectRuntime

DetectRuntime

verified

REQ_INTEROP_003

TEST_CgroupReader_ExtractContainerdContainerId

ExtractContainerdContainerId

verified

REQ_INTEROP_003

TEST_CgroupReader_ExtractDockerContainerId

ExtractDockerContainerId

verified

REQ_INTEROP_003

TEST_CgroupReader_ExtractDockerOldStyleContainerId

ExtractDockerOldStyleContainerId

verified

REQ_INTEROP_003

TEST_CgroupReader_ExtractNoContainerId

ExtractNoContainerId

verified

REQ_INTEROP_003

TEST_CgroupReader_ExtractPodmanContainerId

ExtractPodmanContainerId

verified

REQ_INTEROP_003

TEST_CgroupReader_IsContainerizedSyntheticProc

IsContainerizedSyntheticProc

verified

REQ_INTEROP_003

TEST_CgroupReader_ReadCgroupInfoMissingCgroupFile

ReadCgroupInfoMissingCgroupFile

verified

REQ_INTEROP_003

TEST_CgroupReader_ReadCgroupInfoMissingResourceFiles

ReadCgroupInfoMissingResourceFiles

verified

REQ_INTEROP_003

TEST_CgroupReader_ReadCgroupInfoUnlimitedResources

ReadCgroupInfoUnlimitedResources

verified

REQ_INTEROP_003

TEST_CgroupReader_ReadCgroupInfoWithResourceLimits

ReadCgroupInfoWithResourceLimits

verified

REQ_INTEROP_003

TEST_ComponentModelTest_ToJson_ContainsRequiredFields

ToJson_ContainsRequiredFields

verified

REQ_INTEROP_003

TEST_ConditionEvaluator_EnterRange_NonNumericReturnsFalse

EnterRange_NonNumericReturnsFalse

verified

REQ_INTEROP_097

TEST_ConditionEvaluator_LeaveRange_NonNumericReturnsFalse

LeaveRange_NonNumericReturnsFalse

verified

REQ_INTEROP_097

TEST_ConditionEvaluator_OnChange_ValidateParams

OnChange_ValidateParams

verified

REQ_INTEROP_029

TEST_ConditionEvaluator_OnChangeTo_ValidateParams_MissingTarget

OnChangeTo_ValidateParams_MissingTarget

verified

REQ_INTEROP_029

TEST_ConditionEvaluator_OnChangeTo_ValidateParams_Valid

OnChangeTo_ValidateParams_Valid

verified

REQ_INTEROP_029

TEST_ContainerPlugin_CgroupInfoToJsonAllFields

CgroupInfoToJsonAllFields

verified

REQ_INTEROP_003

TEST_ContainerPlugin_CgroupInfoToJsonMissingOptionals

CgroupInfoToJsonMissingOptionals

verified

REQ_INTEROP_003

TEST_ContainerPlugin_NotContainerizedSkipped

NotContainerizedSkipped

verified

REQ_INTEROP_003

TEST_CyclicSubscriptionJsonTest_ContainsAllRequiredFields

ContainsAllRequiredFields

verified

REQ_INTEROP_089

TEST_CyclicSubscriptionJsonTest_ServerLevelUpdateResource

ServerLevelUpdateResource

verified

REQ_INTEROP_089

TEST_DataAccessManagerWithPublisherTest_set_topic_data_provider_nullptr_detaches_provider

set_topic_data_provider_nullptr_detaches_provider

verified

REQ_INTEROP_019

TEST_DataHandlersTest_DataCategoriesErrorBodyContainsFeatureParameter

DataCategoriesErrorBodyContainsFeatureParameter

verified

REQ_INTEROP_016

TEST_DataHandlersTest_DataCategoriesErrorBodyContainsMessage

DataCategoriesErrorBodyContainsMessage

verified

REQ_INTEROP_016

TEST_DataHandlersTest_DataCategoriesErrorCodeIsNotImplemented

DataCategoriesErrorCodeIsNotImplemented

verified

REQ_INTEROP_016

TEST_DataHandlersTest_DataCategoriesResponseBodyIsValidJson

DataCategoriesResponseBodyIsValidJson

verified

REQ_INTEROP_016

TEST_DataHandlersTest_DataCategoriesReturns501

DataCategoriesReturns501

verified

REQ_INTEROP_016

TEST_DataHandlersTest_DataGroupsErrorBodyContainsFeatureParameter

DataGroupsErrorBodyContainsFeatureParameter

verified

REQ_INTEROP_017

TEST_DataHandlersTest_DataGroupsErrorBodyContainsMessage

DataGroupsErrorBodyContainsMessage

verified

REQ_INTEROP_017

TEST_DataHandlersTest_DataGroupsErrorCodeIsNotImplemented

DataGroupsErrorCodeIsNotImplemented

verified

REQ_INTEROP_017

TEST_DataHandlersTest_DataGroupsResponseBodyIsValidJson

DataGroupsResponseBodyIsValidJson

verified

REQ_INTEROP_017

TEST_DataHandlersTest_DataGroupsReturns501

DataGroupsReturns501

verified

REQ_INTEROP_017

TEST_DataHandlersTest_GetDataItemBadRequestBodyContainsInvalidRequestErrorCode

GetDataItemBadRequestBodyContainsInvalidRequestErrorCode

verified

REQ_INTEROP_019

TEST_DataHandlersTest_GetDataItemReturnsBadRequestWhenMatchesMissing

GetDataItemReturnsBadRequestWhenMatchesMissing

verified

REQ_INTEROP_019

TEST_DataHandlersTest_ListDataBadRequestBodyContainsErrorCode

ListDataBadRequestBodyContainsErrorCode

verified

REQ_INTEROP_018

TEST_DataHandlersTest_ListDataReturnsBadRequestWhenMatchesMissing

ListDataReturnsBadRequestWhenMatchesMissing

verified

REQ_INTEROP_018

TEST_DataHandlersTest_PutDataItemBadRequestBodyContainsInvalidRequestErrorCode

PutDataItemBadRequestBodyContainsInvalidRequestErrorCode

verified

REQ_INTEROP_020

TEST_DataHandlersTest_PutDataItemReturnsBadRequestWhenMatchesMissing

PutDataItemReturnsBadRequestWhenMatchesMissing

verified

REQ_INTEROP_020

TEST_DefaultScriptProviderTest_ConcurrencyLimit

ConcurrencyLimit

verified

REQ_INTEROP_044

TEST_DefaultScriptProviderTest_ControlCompletedExecutionReturnsNotRunning

ControlCompletedExecutionReturnsNotRunning

verified

REQ_INTEROP_047

TEST_DefaultScriptProviderTest_ControlStopExecution

ControlStopExecution

verified

REQ_INTEROP_047

TEST_DefaultScriptProviderTest_CrossEntityExecutionAccessRejected

CrossEntityExecutionAccessRejected

verified

REQ_INTEROP_046

TEST_DefaultScriptProviderTest_DeleteManifestScriptFails

DeleteManifestScriptFails

verified

REQ_INTEROP_043

TEST_DefaultScriptProviderTest_DeleteNonexistentScriptFails

DeleteNonexistentScriptFails

verified

REQ_INTEROP_043

TEST_DefaultScriptProviderTest_DeleteScriptWithRunningExecutionBlocked

DeleteScriptWithRunningExecutionBlocked

verified

REQ_INTEROP_043

TEST_DefaultScriptProviderTest_DeleteUploadedScript

DeleteUploadedScript

verified

REQ_INTEROP_043

TEST_DefaultScriptProviderTest_EnvVars

EnvVars

verified

REQ_INTEROP_044

TEST_DefaultScriptProviderTest_ExecutionNotFound

ExecutionNotFound

verified

REQ_INTEROP_046

TEST_DefaultScriptProviderTest_FlagArgs

FlagArgs

verified

REQ_INTEROP_044

TEST_DefaultScriptProviderTest_GetManifestScript

GetManifestScript

verified

REQ_INTEROP_042

TEST_DefaultScriptProviderTest_GetNonexistentScript

GetNonexistentScript

verified

REQ_INTEROP_042

TEST_DefaultScriptProviderTest_GetUploadedScript

GetUploadedScript

verified

REQ_INTEROP_042

TEST_DefaultScriptProviderTest_ListMergesManifestAndUploaded

ListMergesManifestAndUploaded

verified

REQ_INTEROP_041

TEST_DefaultScriptProviderTest_ManifestScriptsLoaded

ManifestScriptsLoaded

verified

REQ_INTEROP_041

TEST_DefaultScriptProviderTest_ManifestScriptWithParametersSchema

ManifestScriptWithParametersSchema

verified

REQ_INTEROP_042

TEST_DefaultScriptProviderTest_NamedArgs

NamedArgs

verified

REQ_INTEROP_044

TEST_DefaultScriptProviderTest_PositionalArgs

PositionalArgs

verified

REQ_INTEROP_044

TEST_DefaultScriptProviderTest_ScriptNotFoundExecution

ScriptNotFoundExecution

verified

REQ_INTEROP_044

TEST_DefaultScriptProviderTest_StdinJsonFallback

StdinJsonFallback

verified

REQ_INTEROP_044

TEST_DefaultScriptProviderTest_SubprocessExecutionBash

SubprocessExecutionBash

verified

REQ_INTEROP_044

TEST_DefaultScriptProviderTest_SubprocessExecutionPython

SubprocessExecutionPython

verified

REQ_INTEROP_044

TEST_DefaultScriptProviderTest_SubprocessExecutionSh

SubprocessExecutionSh

verified

REQ_INTEROP_044

TEST_DefaultScriptProviderTest_SubprocessFailure

SubprocessFailure

verified

REQ_INTEROP_044

TEST_DefaultScriptProviderTest_SubprocessTimeout

SubprocessTimeout

verified

REQ_INTEROP_044

TEST_DefaultScriptProviderTest_UnsupportedExecutionType

UnsupportedExecutionType

verified

REQ_INTEROP_044

TEST_DefaultScriptProviderTest_UploadDisabledReturnsError

UploadDisabledReturnsError

verified

REQ_INTEROP_040

TEST_DefaultScriptProviderTest_UploadedScriptsIsolatedByEntity

UploadedScriptsIsolatedByEntity

verified

REQ_INTEROP_041

TEST_DefaultScriptProviderTest_UploadExceedingFileSizeRejected

UploadExceedingFileSizeRejected

verified

REQ_INTEROP_040

TEST_DefaultScriptProviderTest_UploadToFilesystem

UploadToFilesystem

verified

REQ_INTEROP_040

TEST_DefaultScriptProviderTest_UploadWithoutMetadata

UploadWithoutMetadata

verified

REQ_INTEROP_040

TEST_DefaultScriptProviderTest_UploadWithParametersSchema

UploadWithParametersSchema

verified

REQ_INTEROP_040

TEST_DiscoveryHandlersFixtureTest_AppDependsOnReturnsResolvedAndMissingDependencies

AppDependsOnReturnsResolvedAndMissingDependencies

verified

REQ_INTEROP_009

TEST_DiscoveryHandlersFixtureTest_AppDependsOnUnknownAppReturns404

AppDependsOnUnknownAppReturns404

verified

REQ_INTEROP_009

TEST_DiscoveryHandlersFixtureTest_AppIsLocatedOnReturnsEmptyWhenAppHasNoComponent

AppIsLocatedOnReturnsEmptyWhenAppHasNoComponent

verified

REQ_INTEROP_105

TEST_DiscoveryHandlersFixtureTest_AppIsLocatedOnReturnsMissingItemWhenHostComponentUnresolved

AppIsLocatedOnReturnsMissingItemWhenHostComponentUnresolved

verified

REQ_INTEROP_105

TEST_DiscoveryHandlersFixtureTest_AppIsLocatedOnReturnsParentComponent

AppIsLocatedOnReturnsParentComponent

verified

REQ_INTEROP_105

TEST_DiscoveryHandlersFixtureTest_AppIsLocatedOnUnknownAppReturns404

AppIsLocatedOnUnknownAppReturns404

verified

REQ_INTEROP_105

TEST_DiscoveryHandlersFixtureTest_AreaComponentsReturnsMatchingComponentsOnly

AreaComponentsReturnsMatchingComponentsOnly

verified

REQ_INTEROP_006

TEST_DiscoveryHandlersFixtureTest_AreaComponentsUnknownAreaReturns404

AreaComponentsUnknownAreaReturns404

verified

REQ_INTEROP_006

TEST_DiscoveryHandlersFixtureTest_ComponentDependsOnReturnsResolvedAndMissingDependencies

ComponentDependsOnReturnsResolvedAndMissingDependencies

verified

REQ_INTEROP_008

TEST_DiscoveryHandlersFixtureTest_ComponentDependsOnUnknownComponentReturns404

ComponentDependsOnUnknownComponentReturns404

verified

REQ_INTEROP_008

TEST_DiscoveryHandlersFixtureTest_FunctionHostsReturnsHostingApps

FunctionHostsReturnsHostingApps

verified

REQ_INTEROP_007

TEST_DiscoveryHandlersFixtureTest_FunctionHostsUnknownFunctionReturns404

FunctionHostsUnknownFunctionReturns404

verified

REQ_INTEROP_007

TEST_DiscoveryHandlersFixtureTest_GetAppReturnsLinksAndCapabilities

GetAppReturnsLinksAndCapabilities

verified

REQ_INTEROP_003

TEST_DiscoveryHandlersFixtureTest_GetAppUnknownIdReturns404

GetAppUnknownIdReturns404

verified

REQ_INTEROP_003

TEST_DiscoveryHandlersFixtureTest_GetAreaReturnsCapabilitiesAndLinks

GetAreaReturnsCapabilitiesAndLinks

verified

REQ_INTEROP_003

TEST_DiscoveryHandlersFixtureTest_GetAreaUnknownIdReturns404

GetAreaUnknownIdReturns404

verified

REQ_INTEROP_003

TEST_DiscoveryHandlersFixtureTest_GetComponentReturnsRelationshipsAndCapabilities

GetComponentReturnsRelationshipsAndCapabilities

verified

REQ_INTEROP_003

TEST_DiscoveryHandlersFixtureTest_GetContainsReturnsAreaComponents

GetContainsReturnsAreaComponents

verified

REQ_INTEROP_006

TEST_DiscoveryHandlersFixtureTest_GetContainsUnknownAreaReturns404

GetContainsUnknownAreaReturns404

verified

REQ_INTEROP_006

TEST_DiscoveryHandlersFixtureTest_GetFunctionReturnsCapabilitiesAndGraphLink

GetFunctionReturnsCapabilitiesAndGraphLink

verified

REQ_INTEROP_003

TEST_DiscoveryHandlersFixtureTest_GetFunctionUnknownIdReturns404

GetFunctionUnknownIdReturns404

verified

REQ_INTEROP_003

TEST_DiscoveryHandlersFixtureTest_GetHostsReturnsHostedApps

GetHostsReturnsHostedApps

verified

REQ_INTEROP_007

TEST_DiscoveryHandlersFixtureTest_GetHostsUnknownComponentReturns404

GetHostsUnknownComponentReturns404

verified

REQ_INTEROP_007

TEST_DiscoveryHandlersFixtureTest_GetSubareasReturnsChildAreas

GetSubareasReturnsChildAreas

verified

REQ_INTEROP_004

TEST_DiscoveryHandlersFixtureTest_GetSubareasUnknownAreaReturns404

GetSubareasUnknownAreaReturns404

verified

REQ_INTEROP_004

TEST_DiscoveryHandlersFixtureTest_GetSubcomponentsReturnsChildren

GetSubcomponentsReturnsChildren

verified

REQ_INTEROP_005

TEST_DiscoveryHandlersFixtureTest_GetSubcomponentsUnknownComponentReturns404

GetSubcomponentsUnknownComponentReturns404

verified

REQ_INTEROP_005

TEST_DiscoveryHandlersFixtureTest_ListAppsReturnsSeededMetadata

ListAppsReturnsSeededMetadata

verified

REQ_INTEROP_003

TEST_DiscoveryHandlersFixtureTest_ListAreasReturnsSeededItems

ListAreasReturnsSeededItems

verified

REQ_INTEROP_003

TEST_DiscoveryHandlersFixtureTest_ListComponentsReturnsMetadata

ListComponentsReturnsMetadata

verified

REQ_INTEROP_003

TEST_DiscoveryHandlersFixtureTest_ListFunctionsReturnsSeededFunctions

ListFunctionsReturnsSeededFunctions

verified

REQ_INTEROP_003

TEST_DiscoveryHandlersValidationTest_AppDependsOnInvalidIdReturns400

AppDependsOnInvalidIdReturns400

verified

REQ_INTEROP_009

TEST_DiscoveryHandlersValidationTest_AppIsLocatedOnInvalidIdReturns400

AppIsLocatedOnInvalidIdReturns400

verified

REQ_INTEROP_105

TEST_DiscoveryHandlersValidationTest_AreaComponentsInvalidIdReturns400

AreaComponentsInvalidIdReturns400

verified

REQ_INTEROP_006

TEST_DiscoveryHandlersValidationTest_ComponentDependsOnInvalidIdReturns400

ComponentDependsOnInvalidIdReturns400

verified

REQ_INTEROP_008

TEST_DiscoveryHandlersValidationTest_FunctionHostsInvalidIdReturns400

FunctionHostsInvalidIdReturns400

verified

REQ_INTEROP_007

TEST_DiscoveryHandlersValidationTest_GetAppInvalidIdReturns400

GetAppInvalidIdReturns400

verified

REQ_INTEROP_003

TEST_DiscoveryHandlersValidationTest_GetAreaInvalidIdReturns400

GetAreaInvalidIdReturns400

verified

REQ_INTEROP_003

TEST_DiscoveryHandlersValidationTest_GetAreaMissingMatchesReturns400

GetAreaMissingMatchesReturns400

verified

REQ_INTEROP_003

TEST_DiscoveryHandlersValidationTest_GetComponentInvalidIdReturns400

GetComponentInvalidIdReturns400

verified

REQ_INTEROP_003

TEST_DiscoveryHandlersValidationTest_GetContainsInvalidIdReturns400

GetContainsInvalidIdReturns400

verified

REQ_INTEROP_006

TEST_DiscoveryHandlersValidationTest_GetFunctionInvalidIdReturns400

GetFunctionInvalidIdReturns400

verified

REQ_INTEROP_003

TEST_DiscoveryHandlersValidationTest_GetHostsInvalidIdReturns400

GetHostsInvalidIdReturns400

verified

REQ_INTEROP_007

TEST_DiscoveryHandlersValidationTest_GetSubareasInvalidIdReturns400

GetSubareasInvalidIdReturns400

verified

REQ_INTEROP_004

TEST_DiscoveryHandlersValidationTest_GetSubcomponentsInvalidIdReturns400

GetSubcomponentsInvalidIdReturns400

verified

REQ_INTEROP_005

TEST_DiscoveryManagerTest_SetTopicDataProviderNullptrIsAcceptedAfterAttach

SetTopicDataProviderNullptrIsAcceptedAfterAttach

verified

REQ_INTEROP_018

TEST_DocsHandlersTest_DocsAnyPathReturns200ForEntityCollection

DocsAnyPathReturns200ForEntityCollection

verified

REQ_INTEROP_002

TEST_DocsHandlersTest_DocsAnyPathReturns404ForInvalidPath

DocsAnyPathReturns404ForInvalidPath

verified

REQ_INTEROP_002

TEST_DocsHandlersTest_DocsDisabledReturns501

DocsDisabledReturns501

verified

REQ_INTEROP_002

TEST_DocsHandlersTest_DocsRootReturnsValidJson

DocsRootReturnsValidJson

verified

REQ_INTEROP_002

TEST_EntityMerger_apps_collision_prefixed_gets_peer_contributor_only

apps_collision_prefixed_gets_peer_contributor_only

verified

REQ_INTEROP_003

TEST_EntityMerger_apps_collision_sets_original_id

apps_collision_sets_original_id

verified

REQ_INTEROP_003

TEST_EntityMerger_apps_prefix_on_collision

apps_prefix_on_collision

verified

REQ_INTEROP_003

TEST_EntityMerger_areas_merge_by_id

areas_merge_by_id

verified

REQ_INTEROP_003

TEST_EntityMerger_builds_routing_table_for_remote_entities

builds_routing_table_for_remote_entities

verified

REQ_INTEROP_003

TEST_EntityMerger_components_collision_appends_peer_contributor

components_collision_appends_peer_contributor

verified

REQ_INTEROP_003

TEST_EntityMerger_components_merge_by_id

components_merge_by_id

verified

REQ_INTEROP_003

TEST_EntityMerger_components_remote_only_gets_peer_contributor_only

components_remote_only_gets_peer_contributor_only

verified

REQ_INTEROP_003

TEST_EntityMerger_contributors_no_duplicate_on_repeat_merge

contributors_no_duplicate_on_repeat_merge

verified

REQ_INTEROP_003

TEST_EntityMerger_functions_merge_by_id_combining_hosts

functions_merge_by_id_combining_hosts

verified

REQ_INTEROP_003

TEST_EntityMerger_merged_component_hybrid_synthetic_collision_routes_to_peer

merged_component_hybrid_synthetic_collision_routes_to_peer

verified

REQ_INTEROP_003

TEST_EntityMerger_multi_peer_overlapping_app_ids_no_data_loss

multi_peer_overlapping_app_ids_no_data_loss

verified

REQ_INTEROP_003

TEST_FaultEventPublishingTest_ListFaultsForEntityEmptyResult

ListFaultsForEntityEmptyResult

verified

REQ_INTEROP_012

TEST_FaultEventPublishingTest_ListFaultsForEntitySuccess

ListFaultsForEntitySuccess

verified

REQ_INTEROP_012

TEST_FaultEventPublishingTest_ListFaultsForEntityWithEmptyId

ListFaultsForEntityWithEmptyId

verified

REQ_INTEROP_012

TEST_FaultHandlersTest_BuildSovdFaultResponseBasicFields

BuildSovdFaultResponseBasicFields

verified

REQ_INTEROP_013

TEST_FaultHandlersTest_BuildSovdFaultResponseExtendedDataRecords

BuildSovdFaultResponseExtendedDataRecords

verified

REQ_INTEROP_013

TEST_FaultHandlersTest_BuildSovdFaultResponseMixedSnapshots

BuildSovdFaultResponseMixedSnapshots

verified

REQ_INTEROP_013

TEST_FaultHandlersTest_BuildSovdFaultResponseMultipleSources

BuildSovdFaultResponseMultipleSources

verified

REQ_INTEROP_013

TEST_FaultHandlersTest_BuildSovdFaultResponseNestedEntityPath

BuildSovdFaultResponseNestedEntityPath

verified

REQ_INTEROP_013

TEST_FaultHandlersTest_BuildSovdFaultResponsePrimaryValueExtraction

BuildSovdFaultResponsePrimaryValueExtraction

verified

REQ_INTEROP_013

TEST_FaultHandlersTest_BuildSovdFaultResponseSeverityLabels

BuildSovdFaultResponseSeverityLabels

verified

REQ_INTEROP_013

TEST_FaultHandlersTest_BuildSovdFaultResponseStatusCleared

BuildSovdFaultResponseStatusCleared

verified

REQ_INTEROP_013

TEST_FaultHandlersTest_BuildSovdFaultResponseStatusPassive

BuildSovdFaultResponseStatusPassive

verified

REQ_INTEROP_013

TEST_FaultHandlersTest_BuildSovdFaultResponseWithFreezeFrame

BuildSovdFaultResponseWithFreezeFrame

verified

REQ_INTEROP_013

TEST_FaultHandlersTest_BuildSovdFaultResponseWithInvalidJson

BuildSovdFaultResponseWithInvalidJson

verified

REQ_INTEROP_013

TEST_FaultHandlersTest_BuildSovdFaultResponseWithRosbag

BuildSovdFaultResponseWithRosbag

verified

REQ_INTEROP_013

TEST_FaultManagerTest_GetRosbagNotFound

GetRosbagNotFound

verified

REQ_INTEROP_088

TEST_FaultManagerTest_GetRosbagServiceNotAvailable

GetRosbagServiceNotAvailable

verified

REQ_INTEROP_088

TEST_FaultManagerTest_GetRosbagSuccess

GetRosbagSuccess

verified

REQ_INTEROP_088

TEST_FaultManagerTest_GetRosbagUsesConfiguredFaultManagerNamespace

GetRosbagUsesConfiguredFaultManagerNamespace

verified

REQ_INTEROP_088

TEST_FaultManagerTest_GetSnapshotsEmptyResponse

GetSnapshotsEmptyResponse

verified

REQ_INTEROP_088

TEST_FaultManagerTest_GetSnapshotsErrorResponse

GetSnapshotsErrorResponse

verified

REQ_INTEROP_088

TEST_FaultManagerTest_GetSnapshotsInvalidJsonFallback

GetSnapshotsInvalidJsonFallback

verified

REQ_INTEROP_088

TEST_FaultManagerTest_GetSnapshotsServiceNotAvailable

GetSnapshotsServiceNotAvailable

verified

REQ_INTEROP_088

TEST_FaultManagerTest_GetSnapshotsSuccessWithTopicFilter

GetSnapshotsSuccessWithTopicFilter

verified

REQ_INTEROP_088

TEST_FaultManagerTest_GetSnapshotsSuccessWithValidJson

GetSnapshotsSuccessWithValidJson

verified

REQ_INTEROP_088

TEST_FaultManagerTest_GetSnapshotsUsesConfiguredFaultManagerNamespace

GetSnapshotsUsesConfiguredFaultManagerNamespace

verified

REQ_INTEROP_088

TEST_FunctionModelTest_ToJson_ContainsRequiredFields

ToJson_ContainsRequiredFields

verified

REQ_INTEROP_003

TEST_FunctionResourceCollections_AreaSupportsFaults

AreaSupportsFaults

verified

REQ_INTEROP_003

TEST_FunctionResourceCollections_FunctionChildAppIds

FunctionChildAppIds

verified

REQ_INTEROP_003

TEST_FunctionResourceCollections_FunctionDataAggregatesFromHostedApps

FunctionDataAggregatesFromHostedApps

verified

REQ_INTEROP_003

TEST_FunctionResourceCollections_FunctionSupportsFaults

FunctionSupportsFaults

verified

REQ_INTEROP_003

TEST_GapFillConfigTest_DefaultAllowsAll

DefaultAllowsAll

verified

REQ_INTEROP_003

TEST_GapFillConfigTest_NamespaceBlacklistFiltersAreas

NamespaceBlacklistFiltersAreas

verified

REQ_INTEROP_003

TEST_GapFillConfigTest_NamespaceWhitelistFiltersAreas

NamespaceWhitelistFiltersAreas

verified

REQ_INTEROP_003

TEST_GraphProviderPluginRouteTest_RegistersFunctionCapabilityOnContext

RegistersFunctionCapabilityOnContext

verified

REQ_INTEROP_003

TEST_GraphProviderPluginRouteTest_RegistersSamplerForCyclicSubscriptions

RegistersSamplerForCyclicSubscriptions

verified

REQ_INTEROP_003

TEST_GraphProviderPluginRouteTest_ServesFunctionGraphFromCachedSnapshot

ServesFunctionGraphFromCachedSnapshot

verified

REQ_INTEROP_003

TEST_HealthHandlersTest_HandleRootAuthDisabledNoAuthEndpoints

HandleRootAuthDisabledNoAuthEndpoints

verified

REQ_INTEROP_010

TEST_HealthHandlersTest_HandleRootAuthEnabledAddsAuthEndpoints

HandleRootAuthEnabledAddsAuthEndpoints

verified

REQ_INTEROP_010

TEST_HealthHandlersTest_HandleRootAuthEnabledIncludesAuthMetadataBlock

HandleRootAuthEnabledIncludesAuthMetadataBlock

verified

REQ_INTEROP_010

TEST_HealthHandlersTest_HandleRootCapabilitiesAuthDisabled

HandleRootCapabilitiesAuthDisabled

verified

REQ_INTEROP_010

TEST_HealthHandlersTest_HandleRootCapabilitiesContainsDiscovery

HandleRootCapabilitiesContainsDiscovery

verified

REQ_INTEROP_010

TEST_HealthHandlersTest_HandleRootCapabilitiesTlsDisabled

HandleRootCapabilitiesTlsDisabled

verified

REQ_INTEROP_010

TEST_HealthHandlersTest_HandleRootEndpointsIsNonEmptyArray

HandleRootEndpointsIsNonEmptyArray

verified

REQ_INTEROP_010

TEST_HealthHandlersTest_HandleRootResponseContainsRequiredTopLevelFields

HandleRootResponseContainsRequiredTopLevelFields

verified

REQ_INTEROP_010

TEST_HealthHandlersTest_HandleRootTlsEnabledIncludesTlsMetadataBlock

HandleRootTlsEnabledIncludesTlsMetadataBlock

verified

REQ_INTEROP_010

TEST_HealthHandlersTest_HandleVersionInfoContainsItemsArray

HandleVersionInfoContainsItemsArray

verified

REQ_INTEROP_001

TEST_HealthHandlersTest_HandleVersionInfoItemsEntryHasBaseUri

HandleVersionInfoItemsEntryHasBaseUri

verified

REQ_INTEROP_001

TEST_HealthHandlersTest_HandleVersionInfoItemsEntryHasVendorInfo

HandleVersionInfoItemsEntryHasVendorInfo

verified

REQ_INTEROP_001

TEST_HealthHandlersTest_HandleVersionInfoItemsEntryHasVersionField

HandleVersionInfoItemsEntryHasVersionField

verified

REQ_INTEROP_001

TEST_HostInfoProviderTest_creates_default_component

creates_default_component

verified

REQ_INTEROP_003

TEST_HostInfoProviderTest_sanitizes_hostname_to_valid_entity_id

sanitizes_hostname_to_valid_entity_id

verified

REQ_INTEROP_003

TEST_IntervalParsingTest_ParsesValidIntervals

ParsesValidIntervals

verified

REQ_INTEROP_089

TEST_LoadPersistentTriggers_ExpiredTriggerMarkedTerminatedOnLoad

ExpiredTriggerMarkedTerminatedOnLoad

verified

REQ_INTEROP_029

TEST_LoadPersistentTriggers_NewTriggerIdIsHigherThanRestoredId

NewTriggerIdIsHigherThanRestoredId

verified

REQ_INTEROP_029

TEST_LoadPersistentTriggers_ResetBehaviorDoesNotRestoreTriggers

ResetBehaviorDoesNotRestoreTriggers

verified

REQ_INTEROP_029

TEST_LoadPersistentTriggers_RestoreBehaviorLoadsActiveTrigger

RestoreBehaviorLoadsActiveTrigger

verified

REQ_INTEROP_029

TEST_LockManagerTest_test_acquire_already_locked

test_acquire_already_locked

verified

REQ_INTEROP_100

TEST_LockManagerTest_test_acquire_break_lock

test_acquire_break_lock

verified

REQ_INTEROP_100

TEST_LockManagerTest_test_acquire_break_lock_not_breakable

test_acquire_break_lock_not_breakable

verified

REQ_INTEROP_100

TEST_LockManagerTest_test_acquire_invalid_expiration

test_acquire_invalid_expiration

verified

REQ_INTEROP_100

TEST_LockManagerTest_test_acquire_invalid_scope

test_acquire_invalid_scope

verified

REQ_INTEROP_100

TEST_LockManagerTest_test_acquire_lock_basic

test_acquire_lock_basic

verified

REQ_INTEROP_100

TEST_LockManagerTest_test_acquire_lock_full

test_acquire_lock_full

verified

REQ_INTEROP_100

TEST_LockManagerTest_test_acquire_lock_scoped

test_acquire_lock_scoped

verified

REQ_INTEROP_100

TEST_LockManagerTest_test_check_access_area_propagation

test_check_access_area_propagation

verified

REQ_INTEROP_100

TEST_LockManagerTest_test_check_access_not_owner

test_check_access_not_owner

verified

REQ_INTEROP_100

TEST_LockManagerTest_test_check_access_owner

test_check_access_owner

verified

REQ_INTEROP_100

TEST_LockManagerTest_test_check_access_parent_propagation

test_check_access_parent_propagation

verified

REQ_INTEROP_100

TEST_LockManagerTest_test_check_access_partial_scope_propagation

test_check_access_partial_scope_propagation

verified

REQ_INTEROP_100

TEST_LockManagerTest_test_check_access_scoped_match

test_check_access_scoped_match

verified

REQ_INTEROP_100

TEST_LockManagerTest_test_check_access_scoped_no_match

test_check_access_scoped_no_match

verified

REQ_INTEROP_100

TEST_LockManagerTest_test_check_access_unlocked

test_check_access_unlocked

verified

REQ_INTEROP_100

TEST_LockManagerTest_test_cleanup_expired

test_cleanup_expired

verified

REQ_INTEROP_100

TEST_LockManagerTest_test_cleanup_not_expired

test_cleanup_not_expired

verified

REQ_INTEROP_100

TEST_LockManagerTest_test_config_disabled

test_config_disabled

verified

REQ_INTEROP_100

TEST_LockManagerTest_test_extend_lock

test_extend_lock

verified

REQ_INTEROP_100

TEST_LockManagerTest_test_extend_not_found

test_extend_not_found

verified

REQ_INTEROP_100

TEST_LockManagerTest_test_extend_not_owner

test_extend_not_owner

verified

REQ_INTEROP_100

TEST_LockManagerTest_test_get_lock

test_get_lock

verified

REQ_INTEROP_100

TEST_LockManagerTest_test_get_lock_by_id

test_get_lock_by_id

verified

REQ_INTEROP_100

TEST_LockManagerTest_test_lock_required_different_collection_not_blocked

test_lock_required_different_collection_not_blocked

verified

REQ_INTEROP_100

TEST_LockManagerTest_test_lock_required_has_lock

test_lock_required_has_lock

verified

REQ_INTEROP_100

TEST_LockManagerTest_test_lock_required_no_lock_held

test_lock_required_no_lock_held

verified

REQ_INTEROP_100

TEST_LockManagerTest_test_release_lock

test_release_lock

verified

REQ_INTEROP_100

TEST_LockManagerTest_test_release_not_found

test_release_not_found

verified

REQ_INTEROP_100

TEST_LockManagerTest_test_release_not_owner

test_release_not_owner

verified

REQ_INTEROP_100

TEST_LogHandlersTest_GetLogsBadRequestBodyContainsInvalidRequestErrorCode

GetLogsBadRequestBodyContainsInvalidRequestErrorCode

verified

REQ_INTEROP_061

TEST_LogHandlersTest_GetLogsBadRequestBodyIsValidJson

GetLogsBadRequestBodyIsValidJson

verified

REQ_INTEROP_061

TEST_LogHandlersTest_GetLogsConfigurationBadRequestBodyContainsInvalidRequestErrorCode

GetLogsConfigurationBadRequestBodyContainsInvalidRequestErrorCode

verified

REQ_INTEROP_063

TEST_LogHandlersTest_GetLogsConfigurationBadRequestBodyIsValidJson

GetLogsConfigurationBadRequestBodyIsValidJson

verified

REQ_INTEROP_063

TEST_LogHandlersTest_GetLogsConfigurationReturnsBadRequestWhenMatchesMissing

GetLogsConfigurationReturnsBadRequestWhenMatchesMissing

verified

REQ_INTEROP_063

TEST_LogHandlersTest_GetLogsReturnsBadRequestWhenMatchesMissing

GetLogsReturnsBadRequestWhenMatchesMissing

verified

REQ_INTEROP_061

TEST_LogHandlersTest_PutLogsConfigurationBadRequestBodyContainsInvalidRequestErrorCode

PutLogsConfigurationBadRequestBodyContainsInvalidRequestErrorCode

verified

REQ_INTEROP_064

TEST_LogHandlersTest_PutLogsConfigurationBadRequestBodyIsValidJson

PutLogsConfigurationBadRequestBodyIsValidJson

verified

REQ_INTEROP_064

TEST_LogHandlersTest_PutLogsConfigurationReturnsBadRequestWhenMatchesMissing

PutLogsConfigurationReturnsBadRequestWhenMatchesMissing

verified

REQ_INTEROP_064

TEST_LogManagerBufferTest_AddLogEntry_EmptyMetadataNoSuffix

AddLogEntry_EmptyMetadataNoSuffix

verified

REQ_INTEROP_061

TEST_LogManagerBufferTest_AddLogEntry_EntryRetrievable

AddLogEntry_EntryRetrievable

verified

REQ_INTEROP_061

TEST_LogManagerBufferTest_AddLogEntry_InvalidSeverityFallsBackToInfo

AddLogEntry_InvalidSeverityFallsBackToInfo

verified

REQ_INTEROP_061

TEST_LogManagerBufferTest_AddLogEntry_MetadataAppendedToMessage

AddLogEntry_MetadataAppendedToMessage

verified

REQ_INTEROP_061

TEST_LogManagerBufferTest_BufferCapDropsNewNodesWhenFull

BufferCapDropsNewNodesWhenFull

verified

REQ_INTEROP_061

TEST_LogManagerBufferTest_ContextFilterMatchesSubstring

ContextFilterMatchesSubstring

verified

REQ_INTEROP_061

TEST_LogManagerBufferTest_FqnWithLeadingSlashMatchesBuffer

FqnWithLeadingSlashMatchesBuffer

verified

REQ_INTEROP_061

TEST_LogManagerBufferTest_GetConfigReturnsDefaultsForUnknownEntity

GetConfigReturnsDefaultsForUnknownEntity

verified

REQ_INTEROP_063

TEST_LogManagerBufferTest_GetLogsMatchesDotNotationLoggerNames

GetLogsMatchesDotNotationLoggerNames

verified

REQ_INTEROP_061

TEST_LogManagerBufferTest_GetLogsPrefixMatchesDotNotationLoggerNames

GetLogsPrefixMatchesDotNotationLoggerNames

verified

REQ_INTEROP_061

TEST_LogManagerBufferTest_MaxEntriesCapsMostRecentEntries

MaxEntriesCapsMostRecentEntries

verified

REQ_INTEROP_061

TEST_LogManagerBufferTest_PartialConfigUpdatePreservesOtherField

PartialConfigUpdatePreservesOtherField

verified

REQ_INTEROP_064

TEST_LogManagerBufferTest_PrefixMatchDoesNotFalsePositiveOnSubstring

PrefixMatchDoesNotFalsePositiveOnSubstring

verified

REQ_INTEROP_061

TEST_LogManagerBufferTest_PrefixMatchIncludesChildNamespaces

PrefixMatchIncludesChildNamespaces

verified

REQ_INTEROP_061

TEST_LogManagerBufferTest_RingBufferEvictsOldestEntryWhenFull

RingBufferEvictsOldestEntryWhenFull

verified

REQ_INTEROP_061

TEST_LogManagerBufferTest_SeverityFilterExcludesLowerLevels

SeverityFilterExcludesLowerLevels

verified

REQ_INTEROP_061

TEST_LogManagerBufferTest_UpdateConfigRejectsInvalidSeverity

UpdateConfigRejectsInvalidSeverity

verified

REQ_INTEROP_064

TEST_LogManagerBufferTest_UpdateConfigRejectsZeroMaxEntries

UpdateConfigRejectsZeroMaxEntries

verified

REQ_INTEROP_064

TEST_LogManagerEntryToJsonTest_AllSeverityLevels

AllSeverityLevels

verified

REQ_INTEROP_061

TEST_LogManagerEntryToJsonTest_BasicFields

BasicFields

verified

REQ_INTEROP_061

TEST_LogManagerEntryToJsonTest_EmptyOptionalFieldsOmitted

EmptyOptionalFieldsOmitted

verified

REQ_INTEROP_061

TEST_LogManagerFqnTest_NormalizeEmptyStringUnchanged

NormalizeEmptyStringUnchanged

verified

REQ_INTEROP_061

TEST_LogManagerFqnTest_NormalizeNoLeadingSlashUnchanged

NormalizeNoLeadingSlashUnchanged

verified

REQ_INTEROP_061

TEST_LogManagerFqnTest_NormalizeStripsLeadingSlash

NormalizeStripsLeadingSlash

verified

REQ_INTEROP_061

TEST_LogManagerIngestionTest_DefaultManagesIngestionPreservesCurrentBehavior

DefaultManagesIngestionPreservesCurrentBehavior

verified

REQ_INTEROP_061

TEST_LogManagerIngestionTest_ManagesIngestionDelegatesToPlugin

ManagesIngestionDelegatesToPlugin

verified

REQ_INTEROP_061

TEST_LogManagerIngestionTest_ManagesIngestionGetConfigDelegatesToPlugin

ManagesIngestionGetConfigDelegatesToPlugin

verified

REQ_INTEROP_063

TEST_LogManagerIngestionTest_ManagesIngestionLocalBufferBypassed

ManagesIngestionLocalBufferBypassed

verified

REQ_INTEROP_061

TEST_LogManagerIngestionTest_ManagesIngestionStillValidatesBeforeDelegation

ManagesIngestionStillValidatesBeforeDelegation

verified

REQ_INTEROP_064

TEST_LogManagerIngestionTest_ManagesIngestionUpdateConfigDelegatesToPlugin

ManagesIngestionUpdateConfigDelegatesToPlugin

verified

REQ_INTEROP_064

TEST_LogManagerIngestionTest_NoPluginPreservesDefaultBehavior

NoPluginPreservesDefaultBehavior

verified

REQ_INTEROP_061

TEST_LogManagerIngestionTest_PluginGetConfigThrowReturnsError

PluginGetConfigThrowReturnsError

verified

REQ_INTEROP_063

TEST_LogManagerIngestionTest_PluginGetLogsThrowReturnsError

PluginGetLogsThrowReturnsError

verified

REQ_INTEROP_061

TEST_LogManagerResolverTest_ResolverMatchesBareNameReturnsEntityId

ResolverMatchesBareNameReturnsEntityId

verified

REQ_INTEROP_061

TEST_LogManagerResolverTest_ResolverMatchesWithSlashPrefixReturnsEntityId

ResolverMatchesWithSlashPrefixReturnsEntityId

verified

REQ_INTEROP_061

TEST_LogManagerResolverTest_ResolverReturnsEmptyFallsBackToLastSegment

ResolverReturnsEmptyFallsBackToLastSegment

verified

REQ_INTEROP_061

TEST_LogManagerSeverityTest_IsValidSeverity

IsValidSeverity

verified

REQ_INTEROP_061

TEST_LogManagerSeverityTest_LevelToSeverityMapping

LevelToSeverityMapping

verified

REQ_INTEROP_061

TEST_LogManagerSeverityTest_SeverityToLevelMapping

SeverityToLevelMapping

verified

REQ_INTEROP_061

TEST_ManifestLayerTest_DefaultPolicies

DefaultPolicies

verified

REQ_INTEROP_003

TEST_ManifestParserTest_ParseScripts

ParseScripts

verified

REQ_INTEROP_041

TEST_ManifestParserTest_ParseScriptsMissingFormat

ParseScriptsMissingFormat

verified

REQ_INTEROP_041

TEST_ManifestParserTest_ParseScriptsMissingId

ParseScriptsMissingId

verified

REQ_INTEROP_041

TEST_ManifestParserTest_ParseScriptsMissingPath

ParseScriptsMissingPath

verified

REQ_INTEROP_041

TEST_ManifestParserTest_ParseScriptsTimeoutClampedToMinimum

ParseScriptsTimeoutClampedToMinimum

verified

REQ_INTEROP_041

TEST_MdnsDiscovery_default_config_values

default_config_values

verified

REQ_INTEROP_003

TEST_MdnsDiscovery_instance_name_returns_explicit_name

instance_name_returns_explicit_name

verified

REQ_INTEROP_003

TEST_MdnsDiscovery_respects_announce_flag

respects_announce_flag

verified

REQ_INTEROP_003

TEST_MdnsDiscovery_start_announce_on_ephemeral_port_does_not_crash

start_announce_on_ephemeral_port_does_not_crash

verified

REQ_INTEROP_003

TEST_MergePipelineTest_AppStatusMerge_BoolOrSemantics

AppStatusMerge_BoolOrSemantics

verified

REQ_INTEROP_003

TEST_MergePipelineTest_LayerExceptionDoesNotCrashPipeline

LayerExceptionDoesNotCrashPipeline

verified

REQ_INTEROP_003

TEST_MergePipelineTest_PluginReceivesDiscoveryContext

PluginReceivesDiscoveryContext

verified

REQ_INTEROP_003

TEST_MergePipelineTest_ThreeLayerMerge_PerFieldGroupOwnerTracking

ThreeLayerMerge_PerFieldGroupOwnerTracking

verified

REQ_INTEROP_003

TEST_MergePipelineTest_ThreeLayerMerge_PluginEnrichesManifestEntity

ThreeLayerMerge_PluginEnrichesManifestEntity

verified

REQ_INTEROP_003

TEST_MergeTypesTest_MergePolicyValues

MergePolicyValues

verified

REQ_INTEROP_003

TEST_OpenApiSpecBuilderTest_AlwaysIncludesGenericErrorResponse

AlwaysIncludesGenericErrorResponse

verified

REQ_INTEROP_002

TEST_OpenApiSpecBuilderTest_BuildContainsComponentsSchemas

BuildContainsComponentsSchemas

verified

REQ_INTEROP_002

TEST_OpenApiSpecBuilderTest_BuildContainsInfoBlock

BuildContainsInfoBlock

verified

REQ_INTEROP_002

TEST_OpenApiSpecBuilderTest_BuildContainsPathsObject

BuildContainsPathsObject

verified

REQ_INTEROP_002

TEST_OpenApiSpecBuilderTest_BuildContainsServersArray

BuildContainsServersArray

verified

REQ_INTEROP_002

TEST_OpenApiSpecBuilderTest_BuildContainsSovdVersion

BuildContainsSovdVersion

verified

REQ_INTEROP_002

TEST_OpenApiSpecBuilderTest_BuildProducesOpenApi310Version

BuildProducesOpenApi310Version

verified

REQ_INTEROP_002

TEST_OpenApiSpecBuilderTest_FluentInterfaceChaining

FluentInterfaceChaining

verified

REQ_INTEROP_002

TEST_OpenApiSpecBuilderTest_GenericErrorSchemaAlwaysPresent

GenericErrorSchemaAlwaysPresent

verified

REQ_INTEROP_002

TEST_OpenApiSpecBuilderTest_NonEmptySchemasArePresentInOutput

NonEmptySchemasArePresentInOutput

verified

REQ_INTEROP_002

TEST_OpenApiSpecBuilderTest_SecuritySchemeAddsToComponents

SecuritySchemeAddsToComponents

verified

REQ_INTEROP_002

TEST_ParseResourceUriTest_DataCollectionWithTopic

DataCollectionWithTopic

verified

REQ_INTEROP_089

TEST_ParseResourceUriTest_UpdateStatusUri

UpdateStatusUri

verified

REQ_INTEROP_089

TEST_PathBuilderTest_ActionOperationHasGetAndPost

ActionOperationHasGetAndPost

verified

REQ_INTEROP_002

TEST_PathBuilderTest_BulkDataHasGet

BulkDataHasGet

verified

REQ_INTEROP_002

TEST_PathBuilderTest_ConfigurationsHasGetAndDelete

ConfigurationsHasGetAndDelete

verified

REQ_INTEROP_002

TEST_PathBuilderTest_CyclicSubscriptionsHasGetAndPost

CyclicSubscriptionsHasGetAndPost

verified

REQ_INTEROP_002

TEST_PathBuilderTest_DataCollectionHasGet

DataCollectionHasGet

verified

REQ_INTEROP_002

TEST_PathBuilderTest_DataItemGetAlwaysPresent

DataItemGetAlwaysPresent

verified

REQ_INTEROP_002

TEST_PathBuilderTest_DataItemPutForSubscribeTopic

DataItemPutForSubscribeTopic

verified

REQ_INTEROP_002

TEST_PathBuilderTest_EntityCollectionHasGet

EntityCollectionHasGet

verified

REQ_INTEROP_002

TEST_PathBuilderTest_EntityDetailConcretePathOmitsParameters

EntityDetailConcretePathOmitsParameters

verified

REQ_INTEROP_002

TEST_PathBuilderTest_EntityDetailHasGet

EntityDetailHasGet

verified

REQ_INTEROP_002

TEST_PathBuilderTest_EntityDetailTemplatePathHasParameters

EntityDetailTemplatePathHasParameters

verified

REQ_INTEROP_002

TEST_PathBuilderTest_ErrorResponsesWithoutAuth

ErrorResponsesWithoutAuth

verified

REQ_INTEROP_002

TEST_PathBuilderTest_FaultsHasGetAndDelete

FaultsHasGetAndDelete

verified

REQ_INTEROP_002

TEST_PathBuilderTest_LogsHasGet

LogsHasGet

verified

REQ_INTEROP_002

TEST_PathBuilderTest_OperationsCollectionHasGet

OperationsCollectionHasGet

verified

REQ_INTEROP_002

TEST_PathBuilderTest_ServiceOperationHasGetAndPost

ServiceOperationHasGetAndPost

verified

REQ_INTEROP_002

TEST_PathBuilderTest_SseEndpointHasGet

SseEndpointHasGet

verified

REQ_INTEROP_002

TEST_PathResolverTest_DeepNestedPath

DeepNestedPath

verified

REQ_INTEROP_002

TEST_PathResolverTest_EntityCollection

EntityCollection

verified

REQ_INTEROP_002

TEST_PathResolverTest_HostsIsResourceCollection

HostsIsResourceCollection

verified

REQ_INTEROP_002

TEST_PathResolverTest_HostsUnderFunctionsIsResourceCollection

HostsUnderFunctionsIsResourceCollection

verified

REQ_INTEROP_002

TEST_PathResolverTest_MultiSegmentResourceId

MultiSegmentResourceId

verified

REQ_INTEROP_002

TEST_PathResolverTest_NestedEntityCollection

NestedEntityCollection

verified

REQ_INTEROP_002

TEST_PathResolverTest_ResourceCollection

ResourceCollection

verified

REQ_INTEROP_002

TEST_PathResolverTest_RootPath

RootPath

verified

REQ_INTEROP_002

TEST_PathResolverTest_SpecificEntity

SpecificEntity

verified

REQ_INTEROP_002

TEST_PathResolverTest_SpecificResource

SpecificResource

verified

REQ_INTEROP_002

TEST_PeerClient_fetch_entities_returns_error_on_connection_refused

fetch_entities_returns_error_on_connection_refused

verified

REQ_INTEROP_003

TEST_PeerClient_forward_sets_502_on_connection_error

forward_sets_502_on_connection_error

verified

REQ_INTEROP_003

TEST_PeerClientHappyPath_fetch_entities_parses_collections

fetch_entities_parses_collections

verified

REQ_INTEROP_003

TEST_PeerClientHappyPath_fetch_entities_parses_is_located_on_without_vendor_extension

fetch_entities_parses_is_located_on_without_vendor_extension

verified

REQ_INTEROP_018

TEST_PeerClientHappyPath_fetch_entities_parses_relationship_fields

fetch_entities_parses_relationship_fields

verified

REQ_INTEROP_003

TEST_PeerClientHappyPath_fetch_entities_parses_vendor_only_component_id_fallback

fetch_entities_parses_vendor_only_component_id_fallback

verified

REQ_INTEROP_018

TEST_PeerClientHappyPath_fetch_entities_rejects_malicious_component_id_in_located_on

fetch_entities_rejects_malicious_component_id_in_located_on

verified

REQ_INTEROP_018

TEST_PeerClientHappyPath_forward_and_get_json_returns_parsed_json

forward_and_get_json_returns_parsed_json

verified

REQ_INTEROP_018

TEST_PeerClientHappyPath_forward_request_proxies_response_with_auth

forward_request_proxies_response_with_auth

verified

REQ_INTEROP_018

TEST_PeerClientHappyPath_forward_request_rejects_oversized_response

forward_request_rejects_oversized_response

verified

REQ_INTEROP_003

TEST_PerEntityStorageTest_BackwardCompatibleWithoutResolver

BackwardCompatibleWithoutResolver

verified

REQ_INTEROP_095

TEST_PerEntityStorageTest_DifferentEntitiesSameFaultCode

DifferentEntitiesSameFaultCode

verified

REQ_INTEROP_095

TEST_PerEntityStorageTest_LidarFaultConfirmsImmediately

LidarFaultConfirmsImmediately

verified

REQ_INTEROP_095

TEST_PerEntityStorageTest_LidarHealingWithThreshold1

LidarHealingWithThreshold1

verified

REQ_INTEROP_095

TEST_PerEntityStorageTest_MotorFaultNeedsDebouncing

MotorFaultNeedsDebouncing

verified

REQ_INTEROP_095

TEST_PerEntityStorageTest_UnknownEntityUsesGlobalConfig

UnknownEntityUsesGlobalConfig

verified

REQ_INTEROP_095

TEST_PidCacheTest_AutoRefreshOnTTLExpiry

AutoRefreshOnTTLExpiry

verified

REQ_INTEROP_003

TEST_PidCacheTest_ConcurrentLookupDoesNotCrash

ConcurrentLookupDoesNotCrash

verified

REQ_INTEROP_003

TEST_PidCacheTest_EmptyProcDir

EmptyProcDir

verified

REQ_INTEROP_003

TEST_PidCacheTest_LookupAfterRefresh

LookupAfterRefresh

verified

REQ_INTEROP_003

TEST_PidCacheTest_LookupMissingNode

LookupMissingNode

verified

REQ_INTEROP_003

TEST_PidCacheTest_LookupRootNamespaceNode

LookupRootNamespaceNode

verified

REQ_INTEROP_003

TEST_PidCacheTest_NonexistentProcDir

NonexistentProcDir

verified

REQ_INTEROP_003

TEST_PidCacheTest_NoRefreshWithinTTL

NoRefreshWithinTTL

verified

REQ_INTEROP_003

TEST_PluginLayerTest_DefaultPolicies

DefaultPolicies

verified

REQ_INTEROP_003

TEST_ProcfsPlugin_ProcessInfoToJsonAllFields

ProcessInfoToJsonAllFields

verified

REQ_INTEROP_003

TEST_ProcfsPlugin_ProcessInfoToJsonNegativeUptimeClamped

ProcessInfoToJsonNegativeUptimeClamped

verified

REQ_INTEROP_003

TEST_ProcfsPlugin_ProcessInfoToJsonZeroUptime

ProcessInfoToJsonZeroUptime

verified

REQ_INTEROP_003

TEST_ProcReader_ReadNonexistentPidFails

ReadNonexistentPidFails

verified

REQ_INTEROP_003

TEST_ProcReader_ReadSelfProcess

ReadSelfProcess

verified

REQ_INTEROP_003

TEST_ProcReader_ReadSystemUptime

ReadSystemUptime

verified

REQ_INTEROP_003

TEST_ProcReader_ReadSystemUptimeMissingFile

ReadSystemUptimeMissingFile

verified

REQ_INTEROP_003

TEST_ProcReader_StateFieldPopulated

StateFieldPopulated

verified

REQ_INTEROP_003

TEST_ResolverTest_EmptyResolverReturnsGlobal

EmptyResolverReturnsGlobal

verified

REQ_INTEROP_095

TEST_ResolverTest_ExactMatch

ExactMatch

verified

REQ_INTEROP_095

TEST_ResolverTest_LongestPrefixWins

LongestPrefixWins

verified

REQ_INTEROP_095

TEST_ResolverTest_NoMatchReturnsGlobal

NoMatchReturnsGlobal

verified

REQ_INTEROP_095

TEST_ResolverTest_PartialOverrideMergesWithGlobal

PartialOverrideMergesWithGlobal

verified

REQ_INTEROP_095

TEST_ResolverTest_PrefixMatch

PrefixMatch

verified

REQ_INTEROP_095

TEST_ResolverTest_PrefixMatchRequiresPathBoundary

PrefixMatchRequiresPathBoundary

verified

REQ_INTEROP_095

TEST_ResolverTest_SizeReturnsEntryCount

SizeReturnsEntryCount

verified

REQ_INTEROP_095

TEST_ResourceChangeNotifier_AsyncDispatchNonBlocking

AsyncDispatchNonBlocking

verified

REQ_INTEROP_097

TEST_ResourceChangeNotifier_SubscribeAndNotify

SubscribeAndNotify

verified

REQ_INTEROP_097

TEST_Ros2TopicDataProviderTest_ColdWaitCapExceededReturns503

ColdWaitCapExceededReturns503

verified

REQ_INTEROP_019

TEST_Ros2TopicDataProviderTest_DiscoverByNamespaceGroupsTopics

DiscoverByNamespaceGroupsTopics

verified

REQ_INTEROP_018

TEST_Ros2TopicDataProviderTest_DiscoverFindsPublisher

DiscoverFindsPublisher

verified

REQ_INTEROP_018

TEST_Ros2TopicDataProviderTest_InterfacePolymorphismWorks

InterfacePolymorphismWorks

verified

REQ_INTEROP_019

TEST_Ros2TopicDataProviderTest_SampleHitReturnsDataAfterPublish

SampleHitReturnsDataAfterPublish

verified

REQ_INTEROP_019

TEST_Ros2TopicDataProviderTest_SampleMatchesReliablePublisherQoS

SampleMatchesReliablePublisherQoS

verified

REQ_INTEROP_019

TEST_Ros2TopicDataProviderTest_SampleParallelEmbedsPerTopicErrorInsteadOfFailingBatch

SampleParallelEmbedsPerTopicErrorInsteadOfFailingBatch

verified

REQ_INTEROP_019

TEST_Ros2TopicDataProviderTest_SampleParallelHonorsMaxParallelSamplesAndPreservesOrder

SampleParallelHonorsMaxParallelSamplesAndPreservesOrder

verified

REQ_INTEROP_019

TEST_Ros2TopicDataProviderTest_SampleParallelReturnsOneResultPerTopic

SampleParallelReturnsOneResultPerTopic

verified

REQ_INTEROP_018

TEST_Ros2TopicDataProviderTest_SampleWithoutPublishersReturnsMetadataOnly

SampleWithoutPublishersReturnsMetadataOnly

verified

REQ_INTEROP_019

TEST_RosbagCaptureTest_ConstructorAcceptsMcapFormat

ConstructorAcceptsMcapFormat

verified

REQ_INTEROP_088

TEST_RosbagCaptureTest_ConstructorRequiresValidNode

ConstructorRequiresValidNode

verified

REQ_INTEROP_088

TEST_RosbagCaptureTest_ConstructorRequiresValidStorage

ConstructorRequiresValidStorage

verified

REQ_INTEROP_088

TEST_RosbagCaptureTest_ConstructorSucceedsWithValidParams

ConstructorSucceedsWithValidParams

verified

REQ_INTEROP_088

TEST_RosbagCaptureTest_ConstructorThrowsOnInvalidFormat

ConstructorThrowsOnInvalidFormat

verified

REQ_INTEROP_088

TEST_RosbagCaptureTest_ConstructorWithDisabledRosbag

ConstructorWithDisabledRosbag

verified

REQ_INTEROP_088

TEST_RosbagCaptureTest_IsEnabledReturnsConfigState

IsEnabledReturnsConfigState

verified

REQ_INTEROP_088

TEST_RouteDescriptionsTest_EmptyBuilderProducesEmptyDescriptions

EmptyBuilderProducesEmptyDescriptions

verified

REQ_INTEROP_002

TEST_RouteDescriptionsTest_MultipleEndpoints

MultipleEndpoints

verified

REQ_INTEROP_002

TEST_RouteDescriptionsTest_PostWithRequestBody

PostWithRequestBody

verified

REQ_INTEROP_002

TEST_RouteDescriptionsTest_SchemaTypes

SchemaTypes

verified

REQ_INTEROP_002

TEST_RouteDescriptionsTest_SingleGetEndpoint

SingleGetEndpoint

verified

REQ_INTEROP_002

TEST_RouteRegistryTest_AuthEnabledAdds401And403Responses

AuthEnabledAdds401And403Responses

verified

REQ_INTEROP_002

TEST_RouteRegistryTest_ErrorResponsesUseGenericErrorRef

ErrorResponsesUseGenericErrorRef

verified

REQ_INTEROP_002

TEST_RouteRegistryTest_OperationIdIsGenerated

OperationIdIsGenerated

verified

REQ_INTEROP_002

TEST_RouteRegistryTest_PathParamDescriptionsArePresent

PathParamDescriptionsArePresent

verified

REQ_INTEROP_002

TEST_RouteRegistryTest_ToOpenapiPathsContainsRegisteredRoute

ToOpenapiPathsContainsRegisteredRoute

verified

REQ_INTEROP_002

TEST_RouteRegistryTest_ToOpenapiPathsMultipleMethodsSamePath

ToOpenapiPathsMultipleMethodsSamePath

verified

REQ_INTEROP_002

TEST_RouteRegistryTest_ToRegexPathRootBecomesRootAnchored

ToRegexPathRootBecomesRootAnchored

verified

REQ_INTEROP_002

TEST_RuntimeDiscoveryMultiNsTest_DiscoverFunctions_GroupsByNamespace

DiscoverFunctions_GroupsByNamespace

verified

REQ_INTEROP_003

TEST_RuntimeDiscoveryTest_DiscoverFunctions_DefaultCreatesFromNamespaces

DiscoverFunctions_DefaultCreatesFromNamespaces

verified

REQ_INTEROP_003

TEST_RuntimeLayerTest_DefaultPolicies

DefaultPolicies

verified

REQ_INTEROP_003

TEST_RuntimeLinkerTest_ExactMatch_NodeNameAndNamespace

ExactMatch_NodeNameAndNamespace

verified

REQ_INTEROP_003

TEST_RuntimeLinkerTest_OrphanPolicy_IncludeAsOrphan_NoError

OrphanPolicy_IncludeAsOrphan_NoError

verified

REQ_INTEROP_003

TEST_RuntimeLinkerTest_OrphanPolicy_Warn_NoError

OrphanPolicy_Warn_NoError

verified

REQ_INTEROP_003

TEST_SchemaBuilderRuntimeTest_FromRosMsgKnownType

FromRosMsgKnownType

verified

REQ_INTEROP_002

TEST_SchemaBuilderRuntimeTest_FromRosMsgUnknownType

FromRosMsgUnknownType

verified

REQ_INTEROP_002

TEST_SchemaBuilderStaticTest_AcquireLockRequestSchema

AcquireLockRequestSchema

verified

REQ_INTEROP_002

TEST_SchemaBuilderStaticTest_BulkDataCategoryListSchema

BulkDataCategoryListSchema

verified

REQ_INTEROP_002

TEST_SchemaBuilderStaticTest_BulkDataDescriptorSchema

BulkDataDescriptorSchema

verified

REQ_INTEROP_002

TEST_SchemaBuilderStaticTest_ConfigurationMetaDataSchema

ConfigurationMetaDataSchema

verified

REQ_INTEROP_002

TEST_SchemaBuilderStaticTest_ConfigurationMetaDataXMedkitDeclaresAllEmittedFields

ConfigurationMetaDataXMedkitDeclaresAllEmittedFields

verified

REQ_INTEROP_002

TEST_SchemaBuilderStaticTest_ConfigurationReadValueSchema

ConfigurationReadValueSchema

verified

REQ_INTEROP_002

TEST_SchemaBuilderStaticTest_ConfigurationWriteValueSchema

ConfigurationWriteValueSchema

verified

REQ_INTEROP_002

TEST_SchemaBuilderStaticTest_CyclicSubscriptionCreateRequestSchema

CyclicSubscriptionCreateRequestSchema

verified

REQ_INTEROP_002

TEST_SchemaBuilderStaticTest_DataWriteRequestSchema

DataWriteRequestSchema

verified

REQ_INTEROP_002

TEST_SchemaBuilderStaticTest_ExecutionUpdateRequestSchema

ExecutionUpdateRequestSchema

verified

REQ_INTEROP_002

TEST_SchemaBuilderStaticTest_ExtendLockRequestSchema

ExtendLockRequestSchema

verified

REQ_INTEROP_002

TEST_SchemaBuilderStaticTest_LogConfigurationSchemaFieldsOptional

LogConfigurationSchemaFieldsOptional

verified

REQ_INTEROP_002

TEST_SchemaBuilderStaticTest_OperationDetailSchema

OperationDetailSchema

verified

REQ_INTEROP_002

TEST_SchemaBuilderStaticTest_ScriptControlRequestSchema

ScriptControlRequestSchema

verified

REQ_INTEROP_002

TEST_SchemaBuilderStaticTest_ScriptUploadResponseSchema

ScriptUploadResponseSchema

verified

REQ_INTEROP_002

TEST_SchemaBuilderStaticTest_TriggerConditionSchemaShared

TriggerConditionSchemaShared

verified

REQ_INTEROP_002

TEST_SchemaBuilderStaticTest_TriggerCreateRequestSchema

TriggerCreateRequestSchema

verified

REQ_INTEROP_002

TEST_SchemaBuilderStaticTest_TriggerUpdateRequestSchema

TriggerUpdateRequestSchema

verified

REQ_INTEROP_002

TEST_SchemaConsistencyTest_AllRefsResolveToRegisteredSchemas

AllRefsResolveToRegisteredSchemas

verified

REQ_INTEROP_002

TEST_SchemaConsistencyTest_ListSchemasReferenceExistingItemSchemas

ListSchemasReferenceExistingItemSchemas

verified

REQ_INTEROP_002

TEST_SchemaConsistencyTest_RequiredFieldsExistInProperties

RequiredFieldsExistInProperties

verified

REQ_INTEROP_002

TEST_ScriptHandlersErrorMappingTest_AlreadyRunningMapsTo409

AlreadyRunningMapsTo409

verified

REQ_INTEROP_044

TEST_ScriptHandlersErrorMappingTest_ConcurrencyLimitMapsTo429

ConcurrencyLimitMapsTo429

verified

REQ_INTEROP_044

TEST_ScriptHandlersErrorMappingTest_DeleteReturns204

DeleteReturns204

verified

REQ_INTEROP_043

TEST_ScriptHandlersErrorMappingTest_FileTooLargeMapsTo413

FileTooLargeMapsTo413

verified

REQ_INTEROP_040

TEST_ScriptHandlersErrorMappingTest_ManagedScriptMapsTo409

ManagedScriptMapsTo409

verified

REQ_INTEROP_043

TEST_ScriptHandlersErrorMappingTest_NotFoundMapsTo404

NotFoundMapsTo404

verified

REQ_INTEROP_042

TEST_ScriptHandlersErrorMappingTest_StartExecutionReturns202WithLocation

StartExecutionReturns202WithLocation

verified

REQ_INTEROP_044

TEST_ScriptHandlersErrorMappingTest_UploadRejectsWrongContentType

UploadRejectsWrongContentType

verified

REQ_INTEROP_040

TEST_ScriptHandlersErrorMappingTest_UploadReturns201WithLocation

UploadReturns201WithLocation

verified

REQ_INTEROP_040

TEST_ScriptHandlersNoBackendTest_ControlExecutionReturns501WhenNoBackend

ControlExecutionReturns501WhenNoBackend

verified

REQ_INTEROP_047

TEST_ScriptHandlersNoBackendTest_DeleteReturns501WhenNoBackend

DeleteReturns501WhenNoBackend

verified

REQ_INTEROP_043

TEST_ScriptHandlersNoBackendTest_GetExecutionReturns501WhenNoBackend

GetExecutionReturns501WhenNoBackend

verified

REQ_INTEROP_046

TEST_ScriptHandlersNoBackendTest_GetReturns501WhenNoBackend

GetReturns501WhenNoBackend

verified

REQ_INTEROP_042

TEST_ScriptHandlersNoBackendTest_ListReturns501WhenNoBackend

ListReturns501WhenNoBackend

verified

REQ_INTEROP_041

TEST_ScriptHandlersNoBackendTest_StartExecutionReturns501WhenNoBackend

StartExecutionReturns501WhenNoBackend

verified

REQ_INTEROP_044

TEST_ScriptHandlersNoBackendTest_UploadReturns501WhenNoBackend

UploadReturns501WhenNoBackend

verified

REQ_INTEROP_040

TEST_ScriptManagerTest_ControlExecution

ControlExecution

verified

REQ_INTEROP_047

TEST_ScriptManagerTest_DeleteManifestScript

DeleteManifestScript

verified

REQ_INTEROP_043

TEST_ScriptManagerTest_DeleteScript

DeleteScript

verified

REQ_INTEROP_043

TEST_ScriptManagerTest_GetExecution

GetExecution

verified

REQ_INTEROP_046

TEST_ScriptManagerTest_GetScript

GetScript

verified

REQ_INTEROP_042

TEST_ScriptManagerTest_GetScriptNotFound

GetScriptNotFound

verified

REQ_INTEROP_042

TEST_ScriptManagerTest_ListScripts

ListScripts

verified

REQ_INTEROP_041

TEST_ScriptManagerTest_StartExecution

StartExecution

verified

REQ_INTEROP_044

TEST_ScriptManagerTest_UploadScript

UploadScript

verified

REQ_INTEROP_040

TEST_SnapshotCaptureTest_BackgroundCaptureInitializesSubscriptions

BackgroundCaptureInitializesSubscriptions

verified

REQ_INTEROP_088

TEST_SnapshotCaptureTest_ConfigAccessorReturnsCorrectValues

ConfigAccessorReturnsCorrectValues

verified

REQ_INTEROP_088

TEST_SnapshotCaptureTest_ConstructorRequiresValidNode

ConstructorRequiresValidNode

verified

REQ_INTEROP_088

TEST_SnapshotCaptureTest_ConstructorRequiresValidStorage

ConstructorRequiresValidStorage

verified

REQ_INTEROP_088

TEST_SnapshotCaptureTest_ConstructorSucceedsWithValidParams

ConstructorSucceedsWithValidParams

verified

REQ_INTEROP_088

TEST_SnapshotCaptureTest_DisabledCaptureSkipsProcessing

DisabledCaptureSkipsProcessing

verified

REQ_INTEROP_088

TEST_SnapshotCaptureTest_EmptyConfigurationHandledGracefully

EmptyConfigurationHandledGracefully

verified

REQ_INTEROP_088

TEST_SnapshotCaptureTest_InvalidRegexPatternIsSkipped

InvalidRegexPatternIsSkipped

verified

REQ_INTEROP_088

TEST_SnapshotCaptureTest_IsEnabledReturnsConfigState

IsEnabledReturnsConfigState

verified

REQ_INTEROP_088

TEST_SnapshotCaptureTest_MultipleValidPatternsCompiled

MultipleValidPatternsCompiled

verified

REQ_INTEROP_088

TEST_SnapshotCaptureTest_OnDemandCaptureHandlesNonExistentTopic

OnDemandCaptureHandlesNonExistentTopic

verified

REQ_INTEROP_088

TEST_SqliteFaultStorageTest_ClearFaultDeletesAssociatedSnapshots

ClearFaultDeletesAssociatedSnapshots

verified

REQ_INTEROP_088

TEST_SqliteFaultStorageTest_FilterSnapshotsByTopic

FilterSnapshotsByTopic

verified

REQ_INTEROP_088

TEST_SqliteFaultStorageTest_GetAllRosbagFilesReturnsSortedByCreatedAt

GetAllRosbagFilesReturnsSortedByCreatedAt

verified

REQ_INTEROP_073

TEST_SqliteFaultStorageTest_ListRosbagsForEntityFiltersCorrectly

ListRosbagsForEntityFiltersCorrectly

verified

REQ_INTEROP_071

TEST_SqliteFaultStorageTest_MultipleSnapshotsForSameFault

MultipleSnapshotsForSameFault

verified

REQ_INTEROP_088

TEST_SqliteFaultStorageTest_NoSnapshotsForUnknownFault

NoSnapshotsForUnknownFault

verified

REQ_INTEROP_088

TEST_SqliteFaultStorageTest_StoreAndRetrieveSnapshot

StoreAndRetrieveSnapshot

verified

REQ_INTEROP_088

TEST_SSEStreamProxyIntegration_receives_events_from_mock_server

receives_events_from_mock_server

verified

REQ_INTEROP_090

TEST_SseTransportProviderTest_ProtocolReturnsSse

ProtocolReturnsSse

verified

REQ_INTEROP_090

TEST_SseTransportProviderTest_StartReturnsEventsUrl

StartReturnsEventsUrl

verified

REQ_INTEROP_090

TEST_SseTransportProviderTest_StopRemovesStream

StopRemovesStream

verified

REQ_INTEROP_090

TEST_StreamProxy_parse_sse_multiple_events

parse_sse_multiple_events

verified

REQ_INTEROP_090

TEST_StreamProxy_parse_sse_single_event

parse_sse_single_event

verified

REQ_INTEROP_090

TEST_StreamProxy_parse_sse_with_event_type

parse_sse_with_event_type

verified

REQ_INTEROP_090

TEST_SyntheticProcTest_EmptyStatFile

EmptyStatFile

verified

REQ_INTEROP_003

TEST_SyntheticProcTest_FindPidForNodeInSyntheticProc

FindPidForNodeInSyntheticProc

verified

REQ_INTEROP_003

TEST_SyntheticProcTest_MalformedStatMissingComm

MalformedStatMissingComm

verified

REQ_INTEROP_003

TEST_SyntheticProcTest_ReadSyntheticProc

ReadSyntheticProc

verified

REQ_INTEROP_003

TEST_SyntheticProcTest_ReadSystemUptimeSynthetic

ReadSystemUptimeSynthetic

verified

REQ_INTEROP_003

TEST_SyntheticProcTest_TruncatedStatAfterComm

TruncatedStatAfterComm

verified

REQ_INTEROP_003

TEST_SystemdUtils_ComponentEndpointEmptyUnitsArray

ComponentEndpointEmptyUnitsArray

verified

REQ_INTEROP_003

TEST_SystemdUtils_EscapeAtSignInTemplateUnit

EscapeAtSignInTemplateUnit

verified

REQ_INTEROP_003

TEST_SystemdUtils_EscapeDotInServiceExtension

EscapeDotInServiceExtension

verified

REQ_INTEROP_003

TEST_SystemdUtils_EscapeEmptyString

EscapeEmptyString

verified

REQ_INTEROP_003

TEST_SystemdUtils_EscapeHyphenInUnitName

EscapeHyphenInUnitName

verified

REQ_INTEROP_003

TEST_SystemdUtils_EscapeSimpleServiceName

EscapeSimpleServiceName

verified

REQ_INTEROP_003

TEST_SystemdUtils_EscapeSlashInPath

EscapeSlashInPath

verified

REQ_INTEROP_003

TEST_TestAuthenticationIntegration_test_03_authenticate_valid_credentials

test_03_authenticate_valid_credentials

verified

REQ_INTEROP_086

TEST_TestAuthenticationIntegration_test_06_authenticate_form_urlencoded

test_06_authenticate_form_urlencoded

verified

REQ_INTEROP_086

TEST_TestAuthenticationIntegration_test_07_refresh_token

test_07_refresh_token

verified

REQ_INTEROP_087

TEST_TestBulkDataApi_test_bulk_data_component_aggregates_child_apps

test_bulk_data_component_aggregates_child_apps

verified

REQ_INTEROP_072

TEST_TestBulkDataApi_test_bulk_data_download_not_found

test_bulk_data_download_not_found

verified

REQ_INTEROP_073

TEST_TestBulkDataApi_test_bulk_data_list_categories_all_entity_types

test_bulk_data_list_categories_all_entity_types

verified

REQ_INTEROP_071

TEST_TestBulkDataApi_test_bulk_data_list_categories_entity_not_found

test_bulk_data_list_categories_entity_not_found

verified

REQ_INTEROP_071

TEST_TestBulkDataApi_test_bulk_data_list_categories_success

test_bulk_data_list_categories_success

verified

REQ_INTEROP_071

TEST_TestBulkDataApi_test_bulk_data_list_descriptors_empty_result

test_bulk_data_list_descriptors_empty_result

verified

REQ_INTEROP_072

TEST_TestBulkDataApi_test_bulk_data_list_descriptors_structure

test_bulk_data_list_descriptors_structure

verified

REQ_INTEROP_072

TEST_TestBulkDataApi_test_bulk_data_nested_entity_path

test_bulk_data_nested_entity_path

verified

REQ_INTEROP_071

TEST_TestBulkDataApi_test_bulk_data_unknown_category_returns_404

test_bulk_data_unknown_category_returns_404

verified

REQ_INTEROP_072

TEST_TestConfigurationApi_test_01_list_configurations

test_01_list_configurations

verified

REQ_INTEROP_048

TEST_TestConfigurationApi_test_02_get_configuration

test_02_get_configuration

verified

REQ_INTEROP_049

TEST_TestConfigurationApi_test_03_set_configuration

test_03_set_configuration

verified

REQ_INTEROP_050

TEST_TestConfigurationApi_test_04_delete_configuration_resets_to_default

test_04_delete_configuration_resets_to_default

verified

REQ_INTEROP_052

TEST_TestConfigurationApi_test_05_configurations_nonexistent_app

test_05_configurations_nonexistent_app

verified

REQ_INTEROP_048

TEST_TestConfigurationApi_test_06_configuration_nonexistent_parameter

test_06_configuration_nonexistent_parameter

verified

REQ_INTEROP_049

TEST_TestConfigurationApi_test_07_set_configuration_missing_value

test_07_set_configuration_missing_value

verified

REQ_INTEROP_050

TEST_TestConfigurationApi_test_08_root_endpoint_includes_configurations

test_08_root_endpoint_includes_configurations

verified

REQ_INTEROP_048

TEST_TestContainerAppEndpoint_test_all_apps_same_container

test_all_apps_same_container

verified

REQ_INTEROP_003

TEST_TestContainerAppEndpoint_test_container_id_is_64_char_hex

test_container_id_is_64_char_hex

verified

REQ_INTEROP_003

TEST_TestContainerAppEndpoint_test_cpu_quota_detected

test_cpu_quota_detected

verified

REQ_INTEROP_003

TEST_TestContainerAppEndpoint_test_memory_limit_detected

test_memory_limit_detected

verified

REQ_INTEROP_003

TEST_TestContainerAppEndpoint_test_returns_container_info

test_returns_container_info

verified

REQ_INTEROP_003

TEST_TestContainerAppEndpoint_test_runtime_is_docker

test_runtime_is_docker

verified

REQ_INTEROP_003

TEST_TestContainerComponentEndpoint_test_containers_include_node_ids

test_containers_include_node_ids

verified

REQ_INTEROP_003

TEST_TestContainerComponentEndpoint_test_containers_include_runtime

test_containers_include_runtime

verified

REQ_INTEROP_003

TEST_TestContainerComponentEndpoint_test_returns_containers_aggregation

test_returns_containers_aggregation

verified

REQ_INTEROP_003

TEST_TestContainerErrorHandling_test_nonexistent_app_returns_404

test_nonexistent_app_returns_404

verified

REQ_INTEROP_003

TEST_TestContainerErrorHandling_test_nonexistent_component_returns_404

test_nonexistent_component_returns_404

verified

REQ_INTEROP_003

TEST_TestCrossEcuFanout_test_logs_include_peer_entries

test_logs_include_peer_entries

verified

REQ_INTEROP_061

TEST_TestCrossEcuFanout_test_logs_severity_filter_forwarded

test_logs_severity_filter_forwarded

verified

REQ_INTEROP_061

TEST_TestDaisyChainAggregation_test_primary_forwards_ecu_b_detail_one_hop

test_primary_forwards_ecu_b_detail_one_hop

verified

REQ_INTEROP_003

TEST_TestDaisyChainAggregation_test_primary_forwards_ecu_c_detail_two_hops

test_primary_forwards_ecu_c_detail_two_hops

verified

REQ_INTEROP_003

TEST_TestDaisyChainAggregation_test_primary_sees_all_ecus_as_subcomponents_of_robot_x

test_primary_sees_all_ecus_as_subcomponents_of_robot_x

verified

REQ_INTEROP_003

TEST_TestDaisyChainAggregation_test_primary_serves_robot_x_detail_locally_with_contributors

test_primary_serves_robot_x_detail_locally_with_contributors

verified

REQ_INTEROP_003

TEST_TestDataRead_test_app_data_body_door

test_app_data_body_door

verified

REQ_INTEROP_018

TEST_TestDataRead_test_app_data_chassis_brakes

test_app_data_chassis_brakes

verified

REQ_INTEROP_018

TEST_TestDataRead_test_app_data_powertrain_engine

test_app_data_powertrain_engine

verified

REQ_INTEROP_018

TEST_TestDataRead_test_app_data_structure

test_app_data_structure

verified

REQ_INTEROP_018

TEST_TestDataRead_test_app_no_topics

test_app_no_topics

verified

REQ_INTEROP_018

TEST_TestDataRead_test_app_nonexistent_error

test_app_nonexistent_error

verified

REQ_INTEROP_018

TEST_TestDataRead_test_component_nonexistent_topic_metadata_only

test_component_nonexistent_topic_metadata_only

verified

REQ_INTEROP_019

TEST_TestDataRead_test_component_topic_data_structure

test_component_topic_data_structure

verified

REQ_INTEROP_019

TEST_TestDataRead_test_component_topic_nonexistent_component_error

test_component_topic_nonexistent_component_error

verified

REQ_INTEROP_019

TEST_TestDataRead_test_component_topic_pressure

test_component_topic_pressure

verified

REQ_INTEROP_019

TEST_TestDataRead_test_component_topic_rpm

test_component_topic_rpm

verified

REQ_INTEROP_019

TEST_TestDataRead_test_component_topic_temperature

test_component_topic_temperature

verified

REQ_INTEROP_019

TEST_TestDataRead_test_component_topic_valid_names

test_component_topic_valid_names

verified

REQ_INTEROP_019

TEST_TestDataRead_test_component_topic_with_slashes

test_component_topic_with_slashes

verified

REQ_INTEROP_019

TEST_TestDataRead_test_list_function_data

test_list_function_data

verified

REQ_INTEROP_018

TEST_TestDataRead_test_list_function_data_invalid_id

test_list_function_data_invalid_id

verified

REQ_INTEROP_018

TEST_TestDataRead_test_list_function_data_nonexistent

test_list_function_data_nonexistent

verified

REQ_INTEROP_018

TEST_TestDataWrite_test_publish_brake_command

test_publish_brake_command

verified

REQ_INTEROP_020

TEST_TestDataWrite_test_publish_invalid_json_body

test_publish_invalid_json_body

verified

REQ_INTEROP_020

TEST_TestDataWrite_test_publish_nonexistent_component

test_publish_nonexistent_component

verified

REQ_INTEROP_020

TEST_TestDataWrite_test_publish_validation_invalid_type_format

test_publish_validation_invalid_type_format

verified

REQ_INTEROP_020

TEST_TestDataWrite_test_publish_validation_missing_data

test_publish_validation_missing_data

verified

REQ_INTEROP_020

TEST_TestDataWrite_test_publish_validation_missing_type

test_publish_validation_missing_type

verified

REQ_INTEROP_020

TEST_TestDocsEndpoint_test_apps_docs_returns_entity_collection_spec

test_apps_docs_returns_entity_collection_spec

verified

REQ_INTEROP_002

TEST_TestDocsEndpoint_test_areas_docs_returns_entity_collection_spec

test_areas_docs_returns_entity_collection_spec

verified

REQ_INTEROP_002

TEST_TestDocsEndpoint_test_components_docs_returns_entity_collection_spec

test_components_docs_returns_entity_collection_spec

verified

REQ_INTEROP_002

TEST_TestDocsEndpoint_test_data_collection_docs

test_data_collection_docs

verified

REQ_INTEROP_002

TEST_TestDocsEndpoint_test_logs_configuration_schema_field_names

test_logs_configuration_schema_field_names

verified

REQ_INTEROP_002

TEST_TestDocsEndpoint_test_nonexistent_entity_docs_returns_404

test_nonexistent_entity_docs_returns_404

verified

REQ_INTEROP_002

TEST_TestDocsEndpoint_test_nonexistent_path_docs_returns_404

test_nonexistent_path_docs_returns_404

verified

REQ_INTEROP_002

TEST_TestDocsEndpoint_test_operations_collection_docs

test_operations_collection_docs

verified

REQ_INTEROP_002

TEST_TestDocsEndpoint_test_root_docs_returns_openapi_spec

test_root_docs_returns_openapi_spec

verified

REQ_INTEROP_002

TEST_TestDocsEndpoint_test_spec_contains_components

test_spec_contains_components

verified

REQ_INTEROP_002

TEST_TestDocsEndpoint_test_spec_contains_server_info

test_spec_contains_server_info

verified

REQ_INTEROP_002

TEST_TestDocsEndpoint_test_specific_app_docs

test_specific_app_docs

verified

REQ_INTEROP_002

TEST_TestEntityListing_test_area_components_nonexistent_error

test_area_components_nonexistent_error

verified

REQ_INTEROP_006

TEST_TestEntityListing_test_function_detail_accessible

test_function_detail_accessible

verified

REQ_INTEROP_003

TEST_TestEntityListing_test_invalid_app_id_special_chars

test_invalid_app_id_special_chars

verified

REQ_INTEROP_018

TEST_TestEntityListing_test_invalid_area_id_special_chars

test_invalid_area_id_special_chars

verified

REQ_INTEROP_006

TEST_TestEntityListing_test_invalid_ids_with_special_chars

test_invalid_ids_with_special_chars

verified

REQ_INTEROP_018

TEST_TestEntityListing_test_list_areas_empty_in_runtime_mode

test_list_areas_empty_in_runtime_mode

verified

REQ_INTEROP_003

TEST_TestEntityListing_test_list_components

test_list_components

verified

REQ_INTEROP_003

TEST_TestEntityListing_test_list_functions

test_list_functions

verified

REQ_INTEROP_003

TEST_TestEntityListing_test_valid_ids_with_underscores

test_valid_ids_with_underscores

verified

REQ_INTEROP_018

TEST_TestEntityModelRuntime_test_app_is_located_on_endpoint

test_app_is_located_on_endpoint

verified

REQ_INTEROP_003

TEST_TestEntityModelRuntime_test_apps_linked_to_default_component

test_apps_linked_to_default_component

verified

REQ_INTEROP_003

TEST_TestEntityModelRuntime_test_areas_empty_in_runtime_mode

test_areas_empty_in_runtime_mode

verified

REQ_INTEROP_003

TEST_TestEntityModelRuntime_test_default_component_detail

test_default_component_detail

verified

REQ_INTEROP_003

TEST_TestEntityModelRuntime_test_default_component_from_host

test_default_component_from_host

verified

REQ_INTEROP_003

TEST_TestEntityModelRuntime_test_function_detail_shows_namespace_source

test_function_detail_shows_namespace_source

verified

REQ_INTEROP_003

TEST_TestEntityModelRuntime_test_function_hosts_apps

test_function_hosts_apps

verified

REQ_INTEROP_003

TEST_TestEntityModelRuntime_test_multiple_apps_same_component

test_multiple_apps_same_component

verified

REQ_INTEROP_003

TEST_TestEntityModelRuntime_test_namespaces_create_functions

test_namespaces_create_functions

verified

REQ_INTEROP_003

TEST_TestEntityRouting_test_app_routes_work_with_app_id

test_app_routes_work_with_app_id

verified

REQ_INTEROP_003

TEST_TestEntityRouting_test_component_route_rejects_app_id_configurations

test_component_route_rejects_app_id_configurations

verified

REQ_INTEROP_003

TEST_TestEntityRouting_test_component_route_rejects_app_id_data

test_component_route_rejects_app_id_data

verified

REQ_INTEROP_003

TEST_TestEntityRouting_test_component_route_rejects_app_id_faults

test_component_route_rejects_app_id_faults

verified

REQ_INTEROP_003

TEST_TestEntityRouting_test_component_route_rejects_app_id_operations

test_component_route_rejects_app_id_operations

verified

REQ_INTEROP_003

TEST_TestFaultManagerIntegration_test_16_snapshot_capture_on_fault_confirmation

test_16_snapshot_capture_on_fault_confirmation

verified

REQ_INTEROP_088

TEST_TestFaultManagerIntegration_test_17_get_snapshots_nonexistent_fault

test_17_get_snapshots_nonexistent_fault

verified

REQ_INTEROP_088

TEST_TestFaultManagerIntegration_test_18_get_snapshots_empty_fault_code

test_18_get_snapshots_empty_fault_code

verified

REQ_INTEROP_088

TEST_TestFaultManagerIntegration_test_19_snapshot_with_topic_filter

test_19_snapshot_with_topic_filter

verified

REQ_INTEROP_088

TEST_TestFaultManagerIntegration_test_20_snapshot_config_loads_patterns

test_20_snapshot_config_loads_patterns

verified

REQ_INTEROP_088

TEST_TestFaultsApi_test_faults_nonexistent_component

test_faults_nonexistent_component

verified

REQ_INTEROP_012

TEST_TestFaultsApi_test_get_nonexistent_fault

test_get_nonexistent_fault

verified

REQ_INTEROP_013

TEST_TestFaultsApi_test_list_faults_response_structure

test_list_faults_response_structure

verified

REQ_INTEROP_012

TEST_TestFaultsApi_test_root_endpoint_includes_faults

test_root_endpoint_includes_faults

verified

REQ_INTEROP_012

TEST_TestFlatEntityTree_test_app_accessible_without_areas

test_app_accessible_without_areas

verified

REQ_INTEROP_003

TEST_TestFlatEntityTree_test_apps_count

test_apps_count

verified

REQ_INTEROP_003

TEST_TestFlatEntityTree_test_areas_empty

test_areas_empty

verified

REQ_INTEROP_003

TEST_TestFlatEntityTree_test_components_count

test_components_count

verified

REQ_INTEROP_003

TEST_TestFlatEntityTree_test_functions_count

test_functions_count

verified

REQ_INTEROP_003

TEST_TestFlatEntityTree_test_subcomponents_count

test_subcomponents_count

verified

REQ_INTEROP_003

TEST_TestGatewayNode_test_app_is_located_on_endpoint

test_app_is_located_on_endpoint

verified

REQ_INTEROP_105

TEST_TestGatewayNode_test_area_contains_nonexistent

test_area_contains_nonexistent

verified

REQ_INTEROP_006

TEST_TestGatewayNode_test_component_hosts_nonexistent

test_component_hosts_nonexistent

verified

REQ_INTEROP_007

TEST_TestGatewayNode_test_execution_update_execution_not_found

test_execution_update_execution_not_found

verified

REQ_INTEROP_038

TEST_TestGatewayNode_test_execution_update_invalid_component_id

test_execution_update_invalid_component_id

verified

REQ_INTEROP_038

TEST_TestGatewayNode_test_execution_update_missing_capability

test_execution_update_missing_capability

verified

REQ_INTEROP_038

TEST_TestGatewayNode_test_execution_update_unsupported_capability

test_execution_update_unsupported_capability

verified

REQ_INTEROP_038

TEST_TestGatewayNode_test_list_areas_endpoint

test_list_areas_endpoint

verified

REQ_INTEROP_003

TEST_TestGatewayNode_test_list_components_endpoint

test_list_components_endpoint

verified

REQ_INTEROP_003

TEST_TestGatewayNode_test_root_endpoint

test_root_endpoint

verified

REQ_INTEROP_010

TEST_TestGatewayNode_test_version_info_endpoint

test_version_info_endpoint

verified

REQ_INTEROP_001

TEST_TestHateoas_test_app_detail_has_capability_uris

test_app_detail_has_capability_uris

verified

REQ_INTEROP_003

TEST_TestHateoas_test_apps_list_has_href

test_apps_list_has_href

verified

REQ_INTEROP_003

TEST_TestHateoas_test_area_detail_has_capability_uris

test_area_detail_has_capability_uris

verified

REQ_INTEROP_003

TEST_TestHateoas_test_areas_list_has_href

test_areas_list_has_href

verified

REQ_INTEROP_003

TEST_TestHateoas_test_component_detail_has_capability_uris

test_component_detail_has_capability_uris

verified

REQ_INTEROP_003

TEST_TestHateoas_test_components_list_has_href

test_components_list_has_href

verified

REQ_INTEROP_003

TEST_TestHateoas_test_contains_list_has_href

test_contains_list_has_href

verified

REQ_INTEROP_006

TEST_TestHateoas_test_depends_on_apps_has_href

test_depends_on_apps_has_href

verified

REQ_INTEROP_009

TEST_TestHateoas_test_depends_on_apps_nonexistent

test_depends_on_apps_nonexistent

verified

REQ_INTEROP_009

TEST_TestHateoas_test_depends_on_components_has_href

test_depends_on_components_has_href

verified

REQ_INTEROP_008

TEST_TestHateoas_test_function_detail_has_capability_uris

test_function_detail_has_capability_uris

verified

REQ_INTEROP_003

TEST_TestHateoas_test_functions_list_has_href

test_functions_list_has_href

verified

REQ_INTEROP_003

TEST_TestHateoas_test_hosts_list_has_href

test_hosts_list_has_href

verified

REQ_INTEROP_007

TEST_TestHateoas_test_is_located_on_apps_has_href

test_is_located_on_apps_has_href

verified

REQ_INTEROP_105

TEST_TestHateoas_test_is_located_on_apps_nonexistent

test_is_located_on_apps_nonexistent

verified

REQ_INTEROP_105

TEST_TestHateoas_test_subareas_list_has_href

test_subareas_list_has_href

verified

REQ_INTEROP_004

TEST_TestHateoas_test_subcomponents_list_has_href

test_subcomponents_list_has_href

verified

REQ_INTEROP_005

TEST_TestHateoas_test_x_medkit_extension_in_list_responses

test_x_medkit_extension_in_list_responses

verified

REQ_INTEROP_003

TEST_TestHealth_test_docs_endpoint

test_docs_endpoint

verified

REQ_INTEROP_002

TEST_TestHealth_test_docs_spec_completeness

test_docs_spec_completeness

verified

REQ_INTEROP_002

TEST_TestHealth_test_health_endpoint_returns_200

test_health_endpoint_returns_200

verified

REQ_INTEROP_010

TEST_TestHealth_test_root_endpoint_returns_api_info

test_root_endpoint_returns_api_info

verified

REQ_INTEROP_010

TEST_TestHealth_test_root_includes_apps_endpoints

test_root_includes_apps_endpoints

verified

REQ_INTEROP_010

TEST_TestHealth_test_version_endpoint

test_version_endpoint

verified

REQ_INTEROP_001

TEST_TestHybridSuppression_test_exact_app_count

test_exact_app_count

verified

REQ_INTEROP_003

TEST_TestHybridSuppression_test_exact_area_count

test_exact_area_count

verified

REQ_INTEROP_003

TEST_TestHybridSuppression_test_exact_component_count

test_exact_component_count

verified

REQ_INTEROP_003

TEST_TestHybridSuppression_test_exact_function_count

test_exact_function_count

verified

REQ_INTEROP_003

TEST_TestHybridSuppression_test_health_shows_hybrid_mode

test_health_shows_hybrid_mode

verified

REQ_INTEROP_003

TEST_TestHybridSuppression_test_manifest_apps_are_online

test_manifest_apps_are_online

verified

REQ_INTEROP_003

TEST_TestHybridSuppression_test_no_root_or_synthetic_areas

test_no_root_or_synthetic_areas

verified

REQ_INTEROP_003

TEST_TestHybridSuppression_test_no_underscored_app_duplicates

test_no_underscored_app_duplicates

verified

REQ_INTEROP_003

TEST_TestHybridSuppression_test_no_underscored_component_duplicates

test_no_underscored_component_duplicates

verified

REQ_INTEROP_003

TEST_TestLeafCollisionAggregation_test_health_surfaces_leaf_collision_with_both_peers

test_health_surfaces_leaf_collision_with_both_peers

verified

REQ_INTEROP_003

TEST_TestLeafCollisionAggregation_test_shared_leaf_resolves_to_exactly_one_peer

test_shared_leaf_resolves_to_exactly_one_peer

verified

REQ_INTEROP_003

TEST_TestLocking_test_acquire_lock_on_app

test_acquire_lock_on_app

verified

REQ_INTEROP_100

TEST_TestLocking_test_acquire_lock_with_scopes

test_acquire_lock_with_scopes

verified

REQ_INTEROP_100

TEST_TestLocking_test_acquire_without_client_id_returns_400

test_acquire_without_client_id_returns_400

verified

REQ_INTEROP_100

TEST_TestLocking_test_acquire_without_expiration_returns_400

test_acquire_without_expiration_returns_400

verified

REQ_INTEROP_100

TEST_TestLocking_test_already_locked_returns_409

test_already_locked_returns_409

verified

REQ_INTEROP_100

TEST_TestLocking_test_break_lock

test_break_lock

verified

REQ_INTEROP_100

TEST_TestLocking_test_extend_lock

test_extend_lock

verified

REQ_INTEROP_103

TEST_TestLocking_test_get_lock_details

test_get_lock_details

verified

REQ_INTEROP_102

TEST_TestLocking_test_list_locks

test_list_locks

verified

REQ_INTEROP_101

TEST_TestLocking_test_list_locks_empty

test_list_locks_empty

verified

REQ_INTEROP_101

TEST_TestLocking_test_lock_blocks_other_client

test_lock_blocks_other_client

verified

REQ_INTEROP_100

TEST_TestLocking_test_lock_expires_automatically

test_lock_expires_automatically

verified

REQ_INTEROP_100

TEST_TestLocking_test_nonexistent_entity_returns_404

test_nonexistent_entity_returns_404

verified

REQ_INTEROP_100

TEST_TestLocking_test_owned_field_per_client

test_owned_field_per_client

verified

REQ_INTEROP_101

TEST_TestLocking_test_release_lock

test_release_lock

verified

REQ_INTEROP_104

TEST_TestLocking_test_release_not_owner_returns_403

test_release_not_owner_returns_403

verified

REQ_INTEROP_104

TEST_TestLocking_test_scoped_lock_allows_other_collections

test_scoped_lock_allows_other_collections

verified

REQ_INTEROP_100

TEST_TestLockingFaults_test_global_clear_skips_locked_entity_faults

test_global_clear_skips_locked_entity_faults

verified

REQ_INTEROP_100

TEST_TestLockingPropagation_test_component_lock_allows_owner_on_child

test_component_lock_allows_owner_on_child

verified

REQ_INTEROP_100

TEST_TestLockingPropagation_test_component_lock_blocks_child_app

test_component_lock_blocks_child_app

verified

REQ_INTEROP_100

TEST_TestMultiCollectionSubscriptions_test_configurations_subscription_create

test_configurations_subscription_create

verified

REQ_INTEROP_089

TEST_TestMultiCollectionSubscriptions_test_data_subscription_create

test_data_subscription_create

verified

REQ_INTEROP_089

TEST_TestMultiCollectionSubscriptions_test_delete_subscription

test_delete_subscription

verified

REQ_INTEROP_028

TEST_TestMultiCollectionSubscriptions_test_faults_subscription_create

test_faults_subscription_create

verified

REQ_INTEROP_089

TEST_TestMultiCollectionSubscriptions_test_get_subscription

test_get_subscription

verified

REQ_INTEROP_026

TEST_TestMultiCollectionSubscriptions_test_list_subscriptions

test_list_subscriptions

verified

REQ_INTEROP_025

TEST_TestMultiCollectionSubscriptions_test_logs_subscription_create

test_logs_subscription_create

verified

REQ_INTEROP_089

TEST_TestMultiCollectionSubscriptions_test_logs_subscription_sse_stream

test_logs_subscription_sse_stream

verified

REQ_INTEROP_089; REQ_INTEROP_090

TEST_TestMultiCollectionSubscriptions_test_update_subscription_interval

test_update_subscription_interval

verified

REQ_INTEROP_027

TEST_TestOpenApiCallability_test_all_endpoints_accept_spec_requests

test_all_endpoints_accept_spec_requests

verified

REQ_INTEROP_002

TEST_TestOpenApiResponseDrift_test_configurations_payload_uses_nested_x_medkit

test_configurations_payload_uses_nested_x_medkit

verified

REQ_INTEROP_002

TEST_TestOpenApiResponseDrift_test_get_responses_match_declared_schema

test_get_responses_match_declared_schema

verified

REQ_INTEROP_002

TEST_TestOpenApiResponseDrift_test_update_status_payload_uses_nested_x_medkit

test_update_status_payload_uses_nested_x_medkit

verified

REQ_INTEROP_002

TEST_TestOperationsApi_test_cancel_nonexistent_execution

test_cancel_nonexistent_execution

verified

REQ_INTEROP_039

TEST_TestOperationsApi_test_create_execution_for_service

test_create_execution_for_service

verified

REQ_INTEROP_035

TEST_TestOperationsApi_test_get_operation_details_for_apps

test_get_operation_details_for_apps

verified

REQ_INTEROP_034

TEST_TestOperationsApi_test_get_operation_details_for_service

test_get_operation_details_for_service

verified

REQ_INTEROP_034

TEST_TestOperationsApi_test_get_operation_not_found

test_get_operation_not_found

verified

REQ_INTEROP_034

TEST_TestOperationsApi_test_list_executions_returns_items_array

test_list_executions_returns_items_array

verified

REQ_INTEROP_036

TEST_TestOperationsApi_test_list_operations

test_list_operations

verified

REQ_INTEROP_033

TEST_TestOperationsApi_test_operation_call_calibrate_service

test_operation_call_calibrate_service

verified

REQ_INTEROP_035

TEST_TestOperationsApi_test_operation_call_invalid_entity_id

test_operation_call_invalid_entity_id

verified

REQ_INTEROP_035

TEST_TestOperationsApi_test_operation_call_invalid_operation_name

test_operation_call_invalid_operation_name

verified

REQ_INTEROP_035

TEST_TestOperationsApi_test_operation_call_nonexistent_entity

test_operation_call_nonexistent_entity

verified

REQ_INTEROP_035

TEST_TestOperationsApi_test_operation_call_nonexistent_operation

test_operation_call_nonexistent_operation

verified

REQ_INTEROP_035

TEST_TestOperationsApi_test_operation_call_with_invalid_json

test_operation_call_with_invalid_json

verified

REQ_INTEROP_035

TEST_TestOperationsApi_test_operations_listed_in_app_discovery

test_operations_listed_in_app_discovery

verified

REQ_INTEROP_033

TEST_TestOperationsApi_test_root_endpoint_includes_operations

test_root_endpoint_includes_operations

verified

REQ_INTEROP_033

TEST_TestScenarioActionLifecycle_test_01_create_action_execution_and_poll_to_completion

test_01_create_action_execution_and_poll_to_completion

verified

REQ_INTEROP_022

TEST_TestScenarioActionLifecycle_test_02_cancel_action_execution

test_02_cancel_action_execution

verified

REQ_INTEROP_022

TEST_TestScenarioActionLifecycle_test_03_service_execution_returns_immediately

test_03_service_execution_returns_immediately

verified

REQ_INTEROP_035

TEST_TestScenarioActionLifecycle_test_04_execution_appears_in_list

test_04_execution_appears_in_list

verified

REQ_INTEROP_022

TEST_TestScenarioActionLifecycle_test_06_get_operation_details

test_06_get_operation_details

verified

REQ_INTEROP_034

TEST_TestScenarioActionLifecycle_test_07_get_execution_status

test_07_get_execution_status

verified

REQ_INTEROP_037

TEST_TestScenarioActionLifecycle_test_08_update_execution_not_implemented

test_08_update_execution_not_implemented

verified

REQ_INTEROP_038

TEST_TestScenarioBulkDataDownload_test_01_download_rosbag_success

test_01_download_rosbag_success

verified

REQ_INTEROP_073

TEST_TestScenarioBulkDataDownload_test_02_download_wrong_entity_returns_404

test_02_download_wrong_entity_returns_404

verified

REQ_INTEROP_073

TEST_TestScenarioBulkDataDownload_test_03_verify_complete_rosbag_content

test_03_verify_complete_rosbag_content

verified

REQ_INTEROP_073

TEST_TestScenarioBulkDataUpload_test_01_upload_small_file

test_01_upload_small_file

verified

REQ_INTEROP_074

TEST_TestScenarioBulkDataUpload_test_02_upload_returns_location_header

test_02_upload_returns_location_header

verified

REQ_INTEROP_074

TEST_TestScenarioBulkDataUpload_test_03_upload_with_description

test_03_upload_with_description

verified

REQ_INTEROP_074

TEST_TestScenarioBulkDataUpload_test_04_upload_with_metadata

test_04_upload_with_metadata

verified

REQ_INTEROP_074

TEST_TestScenarioBulkDataUpload_test_05_upload_missing_file_field

test_05_upload_missing_file_field

verified

REQ_INTEROP_074

TEST_TestScenarioBulkDataUpload_test_06_upload_unknown_category

test_06_upload_unknown_category

verified

REQ_INTEROP_074

TEST_TestScenarioBulkDataUpload_test_07_upload_rosbags_rejected

test_07_upload_rosbags_rejected

verified

REQ_INTEROP_074

TEST_TestScenarioBulkDataUpload_test_08_upload_nonexistent_entity

test_08_upload_nonexistent_entity

verified

REQ_INTEROP_074

TEST_TestScenarioBulkDataUpload_test_09_upload_to_areas_405

test_09_upload_to_areas_405

verified

REQ_INTEROP_074

TEST_TestScenarioBulkDataUpload_test_10_upload_to_functions_405

test_10_upload_to_functions_405

verified

REQ_INTEROP_074

TEST_TestScenarioBulkDataUpload_test_11_delete_uploaded_item

test_11_delete_uploaded_item

verified

REQ_INTEROP_074

TEST_TestScenarioBulkDataUpload_test_12_delete_nonexistent_item

test_12_delete_nonexistent_item

verified

REQ_INTEROP_074

TEST_TestScenarioBulkDataUpload_test_13_delete_rosbags_rejected

test_13_delete_rosbags_rejected

verified

REQ_INTEROP_074

TEST_TestScenarioBulkDataUpload_test_14_delete_to_areas_405

test_14_delete_to_areas_405

verified

REQ_INTEROP_074

TEST_TestScenarioBulkDataUpload_test_15_list_categories_includes_configured

test_15_list_categories_includes_configured

verified

REQ_INTEROP_071

TEST_TestScenarioBulkDataUpload_test_16_list_descriptors_after_upload

test_16_list_descriptors_after_upload

verified

REQ_INTEROP_072

TEST_TestScenarioBulkDataUpload_test_17_download_uploaded_file

test_17_download_uploaded_file

verified

REQ_INTEROP_073

TEST_TestScenarioBulkDataUpload_test_18_download_nonexistent_returns_404

test_18_download_nonexistent_returns_404

verified

REQ_INTEROP_073

TEST_TestScenarioBulkDataUpload_test_19_list_empty_after_delete

test_19_list_empty_after_delete

verified

REQ_INTEROP_074

TEST_TestScenarioBulkDataUpload_test_20_full_crud_cycle

test_20_full_crud_cycle

verified

REQ_INTEROP_071; REQ_INTEROP_074

TEST_TestScenarioConfigManagement_test_01_list_configurations

test_01_list_configurations

verified

REQ_INTEROP_048

TEST_TestScenarioConfigManagement_test_02_get_configuration_value

test_02_get_configuration_value

verified

REQ_INTEROP_049

TEST_TestScenarioConfigManagement_test_03_set_and_verify_configuration

test_03_set_and_verify_configuration

verified

REQ_INTEROP_050

TEST_TestScenarioConfigManagement_test_04_reset_all_configurations

test_04_reset_all_configurations

verified

REQ_INTEROP_051

TEST_TestScenarioConfigManagement_test_05_reset_single_configuration

test_05_reset_single_configuration

verified

REQ_INTEROP_052

TEST_TestScenarioDataPublishVerify_test_01_read_sensor_data

test_01_read_sensor_data

verified

REQ_INTEROP_018

TEST_TestScenarioDataPublishVerify_test_02_publish_command_to_actuator

test_02_publish_command_to_actuator

verified

REQ_INTEROP_020

TEST_TestScenarioDataPublishVerify_test_03_read_actuator_feedback

test_03_read_actuator_feedback

verified

REQ_INTEROP_018

TEST_TestScenarioDiscoveryHybrid_test_01_areas_from_manifest

test_01_areas_from_manifest

verified

REQ_INTEROP_003

TEST_TestScenarioDiscoveryHybrid_test_02_area_with_description

test_02_area_with_description

verified

REQ_INTEROP_003

TEST_TestScenarioDiscoveryHybrid_test_03_area_subareas_hierarchy

test_03_area_subareas_hierarchy

verified

REQ_INTEROP_004

TEST_TestScenarioDiscoveryHybrid_test_04_nested_subareas

test_04_nested_subareas

verified

REQ_INTEROP_004

TEST_TestScenarioDiscoveryHybrid_test_05_components_from_manifest

test_05_components_from_manifest

verified

REQ_INTEROP_003

TEST_TestScenarioDiscoveryHybrid_test_06_component_type_preserved

test_06_component_type_preserved

verified

REQ_INTEROP_003

TEST_TestScenarioDiscoveryHybrid_test_07_component_area_relationship

test_07_component_area_relationship

verified

REQ_INTEROP_006

TEST_TestScenarioDiscoveryHybrid_test_08_component_subcomponents

test_08_component_subcomponents

verified

REQ_INTEROP_005

TEST_TestScenarioDiscoveryHybrid_test_09_component_subcomponents_not_found

test_09_component_subcomponents_not_found

verified

REQ_INTEROP_005

TEST_TestScenarioDiscoveryHybrid_test_10_component_depends_on_returns_items

test_10_component_depends_on_returns_items

verified

REQ_INTEROP_008

TEST_TestScenarioDiscoveryHybrid_test_11_component_depends_on_empty

test_11_component_depends_on_empty

verified

REQ_INTEROP_008

TEST_TestScenarioDiscoveryHybrid_test_12_component_depends_on_not_found

test_12_component_depends_on_not_found

verified

REQ_INTEROP_008

TEST_TestScenarioDiscoveryHybrid_test_13_component_capabilities_includes_depends_on_link

test_13_component_capabilities_includes_depends_on_link

verified

REQ_INTEROP_008

TEST_TestScenarioDiscoveryHybrid_test_14_apps_from_manifest

test_14_apps_from_manifest

verified

REQ_INTEROP_003

TEST_TestScenarioDiscoveryHybrid_test_15_app_online_with_runtime_node

test_15_app_online_with_runtime_node

verified

REQ_INTEROP_003

TEST_TestScenarioDiscoveryHybrid_test_19_app_depends_on_relationship

test_19_app_depends_on_relationship

verified

REQ_INTEROP_009

TEST_TestScenarioDiscoveryHybrid_test_20_functions_from_manifest

test_20_functions_from_manifest

verified

REQ_INTEROP_003

TEST_TestScenarioDiscoveryHybrid_test_21_function_hosts_relationship

test_21_function_hosts_relationship

verified

REQ_INTEROP_007

TEST_TestScenarioDiscoveryHybrid_test_24_function_with_tags

test_24_function_with_tags

verified

REQ_INTEROP_011

TEST_TestScenarioDiscoveryManifest_test_01_list_areas

test_01_list_areas

verified

REQ_INTEROP_003

TEST_TestScenarioDiscoveryManifest_test_02_get_area_details

test_02_get_area_details

verified

REQ_INTEROP_003

TEST_TestScenarioDiscoveryManifest_test_04_area_subareas

test_04_area_subareas

verified

REQ_INTEROP_004

TEST_TestScenarioDiscoveryManifest_test_05_area_components

test_05_area_components

verified

REQ_INTEROP_006

TEST_TestScenarioDiscoveryManifest_test_06_list_components

test_06_list_components

verified

REQ_INTEROP_003

TEST_TestScenarioDiscoveryManifest_test_07_get_component_details

test_07_get_component_details

verified

REQ_INTEROP_003

TEST_TestScenarioDiscoveryManifest_test_09_component_subcomponents

test_09_component_subcomponents

verified

REQ_INTEROP_005

TEST_TestScenarioDiscoveryManifest_test_10_component_subcomponents_not_found

test_10_component_subcomponents_not_found

verified

REQ_INTEROP_005

TEST_TestScenarioDiscoveryManifest_test_11_list_apps

test_11_list_apps

verified

REQ_INTEROP_003

TEST_TestScenarioDiscoveryManifest_test_12_get_app_details

test_12_get_app_details

verified

REQ_INTEROP_003

TEST_TestScenarioDiscoveryManifest_test_15_app_data_endpoint

test_15_app_data_endpoint

verified

REQ_INTEROP_003

TEST_TestScenarioDiscoveryManifest_test_17_app_configurations_endpoint

test_17_app_configurations_endpoint

verified

REQ_INTEROP_003

TEST_TestScenarioDiscoveryManifest_test_18_app_data_item_endpoint

test_18_app_data_item_endpoint

verified

REQ_INTEROP_003

TEST_TestScenarioDiscoveryManifest_test_19_list_functions

test_19_list_functions

verified

REQ_INTEROP_003

TEST_TestScenarioDiscoveryManifest_test_20_get_function_details

test_20_get_function_details

verified

REQ_INTEROP_003

TEST_TestScenarioDiscoveryManifest_test_22_function_hosts

test_22_function_hosts

verified

REQ_INTEROP_007

TEST_TestScenarioFaultInspection_test_01_fault_response_structure

test_01_fault_response_structure

verified

REQ_INTEROP_013

TEST_TestScenarioFaultInspection_test_02_fault_status_object_structure

test_02_fault_status_object_structure

verified

REQ_INTEROP_013

TEST_TestScenarioFaultInspection_test_03_fault_environment_data_structure

test_03_fault_environment_data_structure

verified

REQ_INTEROP_013

TEST_TestScenarioFaultInspection_test_04_fault_snapshot_freeze_frame

test_04_fault_snapshot_freeze_frame

verified

REQ_INTEROP_013

TEST_TestScenarioFaultInspection_test_05_fault_snapshot_rosbag_has_bulk_data_uri

test_05_fault_snapshot_rosbag_has_bulk_data_uri

verified

REQ_INTEROP_013

TEST_TestScenarioFaultInspection_test_06_fault_x_medkit_extensions

test_06_fault_x_medkit_extensions

verified

REQ_INTEROP_013

TEST_TestScenarioFaultLifecycle_test_01_wait_for_faults_to_appear

test_01_wait_for_faults_to_appear

verified

REQ_INTEROP_012

TEST_TestScenarioFaultLifecycle_test_02_delete_all_faults_for_component

test_02_delete_all_faults_for_component

verified

REQ_INTEROP_014

TEST_TestScenarioFaultLifecycle_test_03_delete_all_faults_for_app

test_03_delete_all_faults_for_app

verified

REQ_INTEROP_014

TEST_TestScenarioFaultLifecycle_test_04_delete_all_faults_nonexistent

test_04_delete_all_faults_nonexistent

verified

REQ_INTEROP_014

TEST_TestScenarioFaultLifecycle_test_05_delete_single_fault

test_05_delete_single_fault

verified

REQ_INTEROP_015

TEST_TestScenarioSubscriptions_test_01_create_subscription_returns_201_with_correct_schema

test_01_create_subscription_returns_201_with_correct_schema

verified

REQ_INTEROP_089

TEST_TestScenarioSubscriptions_test_02_list_subscriptions_returns_created_ones

test_02_list_subscriptions_returns_created_ones

verified

REQ_INTEROP_025

TEST_TestScenarioSubscriptions_test_03_get_single_subscription

test_03_get_single_subscription

verified

REQ_INTEROP_026

TEST_TestScenarioSubscriptions_test_04_update_subscription_interval

test_04_update_subscription_interval

verified

REQ_INTEROP_027

TEST_TestScenarioSubscriptions_test_05_update_subscription_duration

test_05_update_subscription_duration

verified

REQ_INTEROP_027

TEST_TestScenarioSubscriptions_test_06_delete_subscription_returns_204

test_06_delete_subscription_returns_204

verified

REQ_INTEROP_028

TEST_TestScenarioSubscriptions_test_07_empty_list_after_delete

test_07_empty_list_after_delete

verified

REQ_INTEROP_025

TEST_TestScenarioSubscriptions_test_10_sse_stream_returns_correct_headers

test_10_sse_stream_returns_correct_headers

verified

REQ_INTEROP_090

TEST_TestScenarioSubscriptions_test_11_sse_stream_delivers_periodic_data

test_11_sse_stream_delivers_periodic_data

verified

REQ_INTEROP_090

TEST_TestScenarioSubscriptions_test_12_sse_stream_closes_on_subscription_delete

test_12_sse_stream_closes_on_subscription_delete

verified

REQ_INTEROP_028; REQ_INTEROP_090

TEST_TestScenarioSubscriptions_test_20_create_with_invalid_interval_returns_400

test_20_create_with_invalid_interval_returns_400

verified

REQ_INTEROP_089

TEST_TestScenarioSubscriptions_test_21_create_with_zero_duration_returns_400

test_21_create_with_zero_duration_returns_400

verified

REQ_INTEROP_089

TEST_TestScenarioSubscriptions_test_22_create_with_unsupported_protocol_returns_400

test_22_create_with_unsupported_protocol_returns_400

verified

REQ_INTEROP_089

TEST_TestScenarioSubscriptions_test_23_create_with_invalid_resource_uri_returns_400

test_23_create_with_invalid_resource_uri_returns_400

verified

REQ_INTEROP_089

TEST_TestScenarioSubscriptions_test_24_get_nonexistent_subscription_returns_404

test_24_get_nonexistent_subscription_returns_404

verified

REQ_INTEROP_026

TEST_TestScenarioSubscriptions_test_25_delete_nonexistent_subscription_returns_404

test_25_delete_nonexistent_subscription_returns_404

verified

REQ_INTEROP_028

TEST_TestScenarioSubscriptions_test_26_update_nonexistent_subscription_returns_404

test_26_update_nonexistent_subscription_returns_404

verified

REQ_INTEROP_027

TEST_TestScenarioSubscriptions_test_27_create_for_nonexistent_entity_returns_404

test_27_create_for_nonexistent_entity_returns_404

verified

REQ_INTEROP_089

TEST_TestScenarioSubscriptions_test_28_sse_stream_for_nonexistent_subscription_returns_404

test_28_sse_stream_for_nonexistent_subscription_returns_404

verified

REQ_INTEROP_090

TEST_TestScenarioSubscriptions_test_30_cyclic_subscriptions_work_on_components

test_30_cyclic_subscriptions_work_on_components

verified

REQ_INTEROP_089; REQ_INTEROP_025

TEST_TestScriptsCRUD_test_01_list_scripts_empty

test_01_list_scripts_empty

verified

REQ_INTEROP_041

TEST_TestScriptsCRUD_test_02_upload_and_list

test_02_upload_and_list

verified

REQ_INTEROP_040

TEST_TestScriptsCRUD_test_03_get_script_metadata

test_03_get_script_metadata

verified

REQ_INTEROP_042

TEST_TestScriptsCRUD_test_04_get_nonexistent_returns_404

test_04_get_nonexistent_returns_404

verified

REQ_INTEROP_042

TEST_TestScriptsCRUD_test_05_delete_script

test_05_delete_script

verified

REQ_INTEROP_043

TEST_TestScriptsCRUD_test_06_delete_nonexistent_returns_404

test_06_delete_nonexistent_returns_404

verified

REQ_INTEROP_043

TEST_TestScriptsCRUD_test_07_upload_missing_file_field

test_07_upload_missing_file_field

verified

REQ_INTEROP_040

TEST_TestScriptsCRUD_test_09_upload_with_metadata

test_09_upload_with_metadata

verified

REQ_INTEROP_040

TEST_TestScriptsExecution_test_01_execute_python_script

test_01_execute_python_script

verified

REQ_INTEROP_044

TEST_TestScriptsExecution_test_02_execute_shell_script

test_02_execute_shell_script

verified

REQ_INTEROP_044

TEST_TestScriptsExecution_test_03_terminate_running_execution

test_03_terminate_running_execution

verified

REQ_INTEROP_047

TEST_TestScriptsExecution_test_06_get_nonexistent_execution

test_06_get_nonexistent_execution

verified

REQ_INTEROP_046

TEST_TestScriptsExecution_test_07_start_execution_missing_type

test_07_start_execution_missing_type

verified

REQ_INTEROP_044

TEST_TestScriptsExecution_test_08_start_execution_invalid_json

test_08_start_execution_invalid_json

verified

REQ_INTEROP_044

TEST_TestScriptsExecution_test_09_execution_has_timestamps

test_09_execution_has_timestamps

verified

REQ_INTEROP_046

TEST_TestScriptsExecution_test_10_bash_script_execution

test_10_bash_script_execution

verified

REQ_INTEROP_044

TEST_TestScriptsExecution_test_11_output_content_verified

test_11_output_content_verified

verified

REQ_INTEROP_046

TEST_TestScriptsExecution_test_12_parameters_via_stdin

test_12_parameters_via_stdin

verified

REQ_INTEROP_044

TEST_TestScriptsExecution_test_13_failed_script_execution

test_13_failed_script_execution

verified

REQ_INTEROP_046

TEST_TestScriptsExecution_test_14_full_lifecycle

test_14_full_lifecycle

verified

REQ_INTEROP_046; REQ_INTEROP_043; REQ_INTEROP_041; REQ_INTEROP_042; REQ_INTEROP_044; REQ_INTEROP_040

TEST_TestScriptsNotConfigured_test_01_list_scripts_returns_501

test_01_list_scripts_returns_501

verified

REQ_INTEROP_041

TEST_TestScriptsNotConfigured_test_02_upload_script_returns_501

test_02_upload_script_returns_501

verified

REQ_INTEROP_040

TEST_TestScriptsNotConfigured_test_03_get_script_returns_501

test_03_get_script_returns_501

verified

REQ_INTEROP_042

TEST_TestScriptsNotConfigured_test_04_delete_script_returns_501

test_04_delete_script_returns_501

verified

REQ_INTEROP_043

TEST_TestScriptsNotConfigured_test_05_start_execution_returns_501

test_05_start_execution_returns_501

verified

REQ_INTEROP_044

TEST_TestScriptsNotConfigured_test_06_get_execution_returns_501

test_06_get_execution_returns_501

verified

REQ_INTEROP_046

TEST_TestScriptsNotConfigured_test_07_control_execution_returns_501

test_07_control_execution_returns_501

verified

REQ_INTEROP_047

TEST_TestSnapshotsApi_test_root_endpoint_excludes_legacy_snapshots

test_root_endpoint_excludes_legacy_snapshots

verified

REQ_INTEROP_088

TEST_TestSystemdAppEndpoint_test_returns_restart_count

test_returns_restart_count

verified

REQ_INTEROP_003

TEST_TestSystemdAppEndpoint_test_returns_unit_info

test_returns_unit_info

verified

REQ_INTEROP_003

TEST_TestSystemdAppEndpoint_test_returns_unit_type

test_returns_unit_type

verified

REQ_INTEROP_003

TEST_TestSystemdAppEndpoint_test_returns_watchdog_usec

test_returns_watchdog_usec

verified

REQ_INTEROP_003

TEST_TestSystemdComponentEndpoint_test_returns_units_aggregation

test_returns_units_aggregation

verified

REQ_INTEROP_003

TEST_TestSystemdComponentEndpoint_test_units_have_active_state

test_units_have_active_state

verified

REQ_INTEROP_003

TEST_TestSystemdComponentEndpoint_test_units_include_node_ids

test_units_include_node_ids

verified

REQ_INTEROP_003

TEST_TestSystemdErrorHandling_test_nonexistent_app_returns_404

test_nonexistent_app_returns_404

verified

REQ_INTEROP_003

TEST_TestSystemdErrorHandling_test_nonexistent_component_returns_404

test_nonexistent_component_returns_404

verified

REQ_INTEROP_003

TEST_TestTriggersData_test_01_create_trigger_returns_201_with_correct_schema

test_01_create_trigger_returns_201_with_correct_schema

verified

REQ_INTEROP_029

TEST_TestTriggersData_test_02_list_triggers_returns_created_trigger

test_02_list_triggers_returns_created_trigger

verified

REQ_INTEROP_030

TEST_TestTriggersData_test_03_get_single_trigger

test_03_get_single_trigger

verified

REQ_INTEROP_096

TEST_TestTriggersData_test_04_update_trigger_lifetime

test_04_update_trigger_lifetime

verified

REQ_INTEROP_031

TEST_TestTriggersData_test_05_delete_trigger_returns_204

test_05_delete_trigger_returns_204

verified

REQ_INTEROP_032

TEST_TestTriggersData_test_10_sse_stream_returns_correct_headers

test_10_sse_stream_returns_correct_headers

verified

REQ_INTEROP_097

TEST_TestTriggersData_test_11_sse_stream_delivers_data_events

test_11_sse_stream_delivers_data_events

verified

REQ_INTEROP_097

TEST_TestTriggersData_test_12_sse_stream_closes_on_trigger_delete

test_12_sse_stream_closes_on_trigger_delete

verified

REQ_INTEROP_097; REQ_INTEROP_032

TEST_TestTriggersData_test_27_events_for_nonexistent_trigger_returns_404

test_27_events_for_nonexistent_trigger_returns_404

verified

REQ_INTEROP_097

TEST_TestTriggersFaults_test_01_create_fault_trigger_returns_201

test_01_create_fault_trigger_returns_201

verified

REQ_INTEROP_029

TEST_TestTriggersFaults_test_02_list_fault_triggers

test_02_list_fault_triggers

verified

REQ_INTEROP_030

TEST_TestTriggersFaults_test_03_get_fault_trigger

test_03_get_fault_trigger

verified

REQ_INTEROP_096

TEST_TestTriggersFaults_test_04_update_fault_trigger_lifetime

test_04_update_fault_trigger_lifetime

verified

REQ_INTEROP_031

TEST_TestTriggersFaults_test_05_delete_fault_trigger

test_05_delete_fault_trigger

verified

REQ_INTEROP_032

TEST_TestTriggersFaults_test_10_sse_endpoint_connects_and_streams

test_10_sse_endpoint_connects_and_streams

verified

REQ_INTEROP_097

TEST_TestTriggersFaults_test_11_sse_fault_event_has_correct_headers

test_11_sse_fault_event_has_correct_headers

verified

REQ_INTEROP_097

TEST_TestTriggersHierarchy_test_01_component_trigger_created_successfully

test_01_component_trigger_created_successfully

verified

REQ_INTEROP_029

TEST_TestTriggersHierarchy_test_05_list_triggers_on_area

test_05_list_triggers_on_area

verified

REQ_INTEROP_030

TEST_TestTriggersHierarchy_test_06_delete_trigger_on_function

test_06_delete_trigger_on_function

verified

REQ_INTEROP_032

TEST_TestTriggersLogs_test_01_create_logs_trigger

test_01_create_logs_trigger

verified

REQ_INTEROP_029

TEST_TestTriggersLogs_test_02_list_logs_triggers

test_02_list_logs_triggers

verified

REQ_INTEROP_030

TEST_TestTriggersLogs_test_03_get_logs_trigger

test_03_get_logs_trigger

verified

REQ_INTEROP_096

TEST_TestTriggersLogs_test_04_update_logs_trigger_lifetime

test_04_update_logs_trigger_lifetime

verified

REQ_INTEROP_031

TEST_TestTriggersLogs_test_05_delete_logs_trigger

test_05_delete_logs_trigger

verified

REQ_INTEROP_032

TEST_TestTriggersLogs_test_10_sse_endpoint_connects_for_log_trigger

test_10_sse_endpoint_connects_for_log_trigger

verified

REQ_INTEROP_097

TEST_TestTriggersLogs_test_11_sse_log_event_headers

test_11_sse_log_event_headers

verified

REQ_INTEROP_097

TEST_TestTriggersPersistent_test_01_create_persistent_trigger

test_01_create_persistent_trigger

verified

REQ_INTEROP_029

TEST_TestTriggersPersistent_test_02_trigger_listed_on_primary

test_02_trigger_listed_on_primary

verified

REQ_INTEROP_030

TEST_TestTriggersPersistent_test_04_restored_trigger_fields_match

test_04_restored_trigger_fields_match

verified

REQ_INTEROP_096

TEST_TestTriggersPersistent_test_06_delete_via_secondary_removes_from_store

test_06_delete_via_secondary_removes_from_store

verified

REQ_INTEROP_032

TEST_TestTriggersUpdates_test_01_create_updates_trigger

test_01_create_updates_trigger

verified

REQ_INTEROP_029

TEST_TestTriggersUpdates_test_02_list_updates_triggers

test_02_list_updates_triggers

verified

REQ_INTEROP_030

TEST_TestTriggersUpdates_test_03_get_updates_trigger

test_03_get_updates_trigger

verified

REQ_INTEROP_096

TEST_TestTriggersUpdates_test_04_update_updates_trigger_lifetime

test_04_update_updates_trigger_lifetime

verified

REQ_INTEROP_031

TEST_TestTriggersUpdates_test_05_delete_updates_trigger

test_05_delete_updates_trigger

verified

REQ_INTEROP_032

TEST_TestTriggersUpdates_test_10_events_endpoint_returns_sse_headers

test_10_events_endpoint_returns_sse_headers

verified

REQ_INTEROP_097

TEST_TestTriggersUpdates_test_11_events_for_nonexistent_trigger_returns_404

test_11_events_for_nonexistent_trigger_returns_404

verified

REQ_INTEROP_097

TEST_TestUpdatesAutomated_test_01_automated_completes

test_01_automated_completes

verified

REQ_INTEROP_093

TEST_TestUpdatesAutomated_test_02_automated_on_non_automated_returns_400

test_02_automated_on_non_automated_returns_400

verified

REQ_INTEROP_093

TEST_TestUpdatesCRUD_test_01_list_updates_empty

test_01_list_updates_empty

verified

REQ_INTEROP_082

TEST_TestUpdatesCRUD_test_02_register_update

test_02_register_update

verified

REQ_INTEROP_083

TEST_TestUpdatesCRUD_test_03_list_after_register

test_03_list_after_register

verified

REQ_INTEROP_082

TEST_TestUpdatesCRUD_test_04_get_update_metadata

test_04_get_update_metadata

verified

REQ_INTEROP_085

TEST_TestUpdatesCRUD_test_05_get_nonexistent_returns_404

test_05_get_nonexistent_returns_404

verified

REQ_INTEROP_085

TEST_TestUpdatesCRUD_test_06_delete_update

test_06_delete_update

verified

REQ_INTEROP_084

TEST_TestUpdatesCRUD_test_07_delete_nonexistent_returns_404

test_07_delete_nonexistent_returns_404

verified

REQ_INTEROP_084

TEST_TestUpdatesCRUD_test_08_register_duplicate_returns_400

test_08_register_duplicate_returns_400

verified

REQ_INTEROP_083

TEST_TestUpdatesCRUD_test_09_list_with_origin_filter

test_09_list_with_origin_filter

verified

REQ_INTEROP_082

TEST_TestUpdatesCRUD_test_10_list_with_target_version_filter

test_10_list_with_target_version_filter

verified

REQ_INTEROP_082

TEST_TestUpdatesErrorCases_test_01_delete_during_prepare_returns_409

test_01_delete_during_prepare_returns_409

verified

REQ_INTEROP_084

TEST_TestUpdatesErrorCases_test_02_prepare_nonexistent_returns_404

test_02_prepare_nonexistent_returns_404

verified

REQ_INTEROP_091

TEST_TestUpdatesErrorCases_test_03_execute_nonexistent_returns_404

test_03_execute_nonexistent_returns_404

verified

REQ_INTEROP_092

TEST_TestUpdatesErrorCases_test_04_register_missing_required_fields

test_04_register_missing_required_fields

verified

REQ_INTEROP_083

TEST_TestUpdatesErrorCases_test_05_register_malformed_json

test_05_register_malformed_json

verified

REQ_INTEROP_083

TEST_TestUpdatesNoPlugin_test_01_list_updates_returns_501

test_01_list_updates_returns_501

verified

REQ_INTEROP_082

TEST_TestUpdatesNoPlugin_test_02_get_update_returns_501

test_02_get_update_returns_501

verified

REQ_INTEROP_085

TEST_TestUpdatesNoPlugin_test_03_register_update_returns_501

test_03_register_update_returns_501

verified

REQ_INTEROP_083

TEST_TestUpdatesNoPlugin_test_04_prepare_returns_501

test_04_prepare_returns_501

verified

REQ_INTEROP_091

TEST_TestUpdatesNoPlugin_test_05_execute_returns_501

test_05_execute_returns_501

verified

REQ_INTEROP_092

TEST_TestUpdatesNoPlugin_test_06_automated_returns_501

test_06_automated_returns_501

verified

REQ_INTEROP_093

TEST_TestUpdatesNoPlugin_test_07_status_returns_501

test_07_status_returns_501

verified

REQ_INTEROP_094

TEST_TestUpdatesNoPlugin_test_08_delete_returns_501

test_08_delete_returns_501

verified

REQ_INTEROP_084

TEST_TestUpdatesPrepareExecute_test_00_status_pending_right_after_register

test_00_status_pending_right_after_register

verified

REQ_INTEROP_094

TEST_TestUpdatesPrepareExecute_test_01_prepare_returns_202

test_01_prepare_returns_202

verified

REQ_INTEROP_091

TEST_TestUpdatesPrepareExecute_test_02_prepare_completes

test_02_prepare_completes

verified

REQ_INTEROP_091

TEST_TestUpdatesPrepareExecute_test_03_execute_after_prepare

test_03_execute_after_prepare

verified

REQ_INTEROP_092

TEST_TestUpdatesPrepareExecute_test_04_execute_without_prepare_returns_400

test_04_execute_without_prepare_returns_400

verified

REQ_INTEROP_092

TEST_TestUpdatesPrepareExecute_test_05_status_shows_progress

test_05_status_shows_progress

verified

REQ_INTEROP_094

TEST_TestUpdatesPrepareExecute_test_06_status_not_found_for_unknown

test_06_status_not_found_for_unknown

verified

REQ_INTEROP_094

TEST_TokenTypeTest_TokenTypeToString

TokenTypeToString

verified

REQ_INTEROP_087

TEST_TopicResolutionTest_DefaultTopicsUsedAsFallback

DefaultTopicsUsedAsFallback

verified

REQ_INTEROP_088

TEST_TopicResolutionTest_FaultSpecificHasHighestPriority

FaultSpecificHasHighestPriority

verified

REQ_INTEROP_088

TEST_TopicResolutionTest_PatternMatchUsedWhenNoFaultSpecific

PatternMatchUsedWhenNoFaultSpecific

verified

REQ_INTEROP_088

TEST_TransportRegistryTest_RegisterAndLookup

RegisterAndLookup

verified

REQ_INTEROP_089

TEST_TriggerErrorTest_InvalidParameterErrorFormat

InvalidParameterErrorFormat

verified

REQ_INTEROP_029; REQ_INTEROP_030; REQ_INTEROP_097; REQ_INTEROP_096; REQ_INTEROP_032; REQ_INTEROP_031

TEST_TriggerErrorTest_InvalidResourceUriVendorError

InvalidResourceUriVendorError

verified

REQ_INTEROP_029

TEST_TriggerManagerTest_Create_InvalidConditionType

Create_InvalidConditionType

verified

REQ_INTEROP_029

TEST_TriggerManagerTest_Create_InvalidParams

Create_InvalidParams

verified

REQ_INTEROP_029

TEST_TriggerManagerTest_Create_MaxTriggersExceeded

Create_MaxTriggersExceeded

verified

REQ_INTEROP_029

TEST_TriggerManagerTest_Create_ValidOnChangeTrigger

Create_ValidOnChangeTrigger

verified

REQ_INTEROP_029

TEST_TriggerManagerTest_EventEnvelopeFormat

EventEnvelopeFormat

verified

REQ_INTEROP_097

TEST_TriggerManagerTest_Get_Existing

Get_Existing

verified

REQ_INTEROP_096

TEST_TriggerManagerTest_Hierarchy_AreaToApp

Hierarchy_AreaToApp

verified

REQ_INTEROP_029

TEST_TriggerManagerTest_Hierarchy_ComponentToApp

Hierarchy_ComponentToApp

verified

REQ_INTEROP_029

TEST_TriggerManagerTest_JsonPointer_ExtractsSubElement

JsonPointer_ExtractsSubElement

verified

REQ_INTEROP_097

TEST_TriggerManagerTest_LifetimeExpiry

LifetimeExpiry

verified

REQ_INTEROP_029

TEST_TriggerManagerTest_List_ReturnsTriggersForEntity

List_ReturnsTriggersForEntity

verified

REQ_INTEROP_030

TEST_TriggerManagerTest_Multishot_NotifyTwice

Multishot_NotifyTwice

verified

REQ_INTEROP_097

TEST_TriggerManagerTest_OnRemovedCallback

OnRemovedCallback

verified

REQ_INTEROP_032

TEST_TriggerManagerTest_Remove_ExistingTrigger

Remove_ExistingTrigger

verified

REQ_INTEROP_032

TEST_TriggerManagerTest_SingleShot_NotifyMatchingChange

SingleShot_NotifyMatchingChange

verified

REQ_INTEROP_097

TEST_TriggerManagerTest_SingleShot_RemovedAfterFiring

SingleShot_RemovedAfterFiring

verified

REQ_INTEROP_029

TEST_TriggerManagerTest_Update_ChangeLifetime

Update_ChangeLifetime

verified

REQ_INTEROP_031

TEST_TriggerSSETrackerTest_ClientLimitEnforced

ClientLimitEnforced

verified

REQ_INTEROP_097

TEST_TriggerStore_FilePersistence

FilePersistence

verified

REQ_INTEROP_029

TEST_TriggerStore_SaveAndLoadRoundTrip

SaveAndLoadRoundTrip

verified

REQ_INTEROP_029

TEST_TriggerToJsonTest_ContainsAllRequiredFields

ContainsAllRequiredFields

verified

REQ_INTEROP_096; REQ_INTEROP_097; REQ_INTEROP_029

TEST_TriggerValidationTest_InvalidJsonPointer_Returns400

InvalidJsonPointer_Returns400

verified

REQ_INTEROP_029

TEST_TriggerValidationTest_PathTooLong_Returns400

PathTooLong_Returns400

verified

REQ_INTEROP_029

TEST_TriggerValidationTest_UnknownCollection_Returns400

UnknownCollection_Returns400

verified

REQ_INTEROP_029

TEST_TriggerValidationTest_UnsupportedProtocol_Returns400

UnsupportedProtocol_Returns400

verified

REQ_INTEROP_029

TEST_TriggerValidationTest_VendorExtensionCollection_Accepted

VendorExtensionCollection_Accepted

verified

REQ_INTEROP_029

TEST_UpdateManagerFailureTest_ExecuteExceptionSetsFailedStatus

ExecuteExceptionSetsFailedStatus

verified

REQ_INTEROP_092

TEST_UpdateManagerFailureTest_ExecuteFailureSetsFailedStatus

ExecuteFailureSetsFailedStatus

verified

REQ_INTEROP_092

TEST_UpdateManagerFailureTest_PrepareExceptionSetsFailedStatus

PrepareExceptionSetsFailedStatus

verified

REQ_INTEROP_091

TEST_UpdateManagerFailureTest_PrepareFailureSetsFailedStatus

PrepareFailureSetsFailedStatus

verified

REQ_INTEROP_091

TEST_UpdateManagerTest_AutomatedCompletes

AutomatedCompletes

verified

REQ_INTEROP_093

TEST_UpdateManagerTest_AutomatedRejectsNonAutomated

AutomatedRejectsNonAutomated

verified

REQ_INTEROP_093

TEST_UpdateManagerTest_ConcurrentPrepareOnSamePackageRejected

ConcurrentPrepareOnSamePackageRejected

verified

REQ_INTEROP_091

TEST_UpdateManagerTest_DeleteDuringOperationFails

DeleteDuringOperationFails

verified

REQ_INTEROP_084

TEST_UpdateManagerTest_DeleteUpdate

DeleteUpdate

verified

REQ_INTEROP_084

TEST_UpdateManagerTest_DuplicateRegistration

DuplicateRegistration

verified

REQ_INTEROP_083

TEST_UpdateManagerTest_ExecuteAfterPrepare

ExecuteAfterPrepare

verified

REQ_INTEROP_092

TEST_UpdateManagerTest_ExecuteRequiresPrepare

ExecuteRequiresPrepare

verified

REQ_INTEROP_092

TEST_UpdateManagerTest_GetUpdate

GetUpdate

verified

REQ_INTEROP_085

TEST_UpdateManagerTest_GetUpdateNotFound

GetUpdateNotFound

verified

REQ_INTEROP_085

TEST_UpdateManagerTest_HasBackend

HasBackend

verified

REQ_INTEROP_082

TEST_UpdateManagerTest_NoBackendMode

NoBackendMode

verified

REQ_INTEROP_082

TEST_UpdateManagerTest_PrepareAndPollStatus

PrepareAndPollStatus

verified

REQ_INTEROP_091

TEST_UpdateManagerTest_RegisterAndList

RegisterAndList

verified

REQ_INTEROP_082

TEST_UpdateManagerTest_StatusNotFoundForUnknown

StatusNotFoundForUnknown

verified

REQ_INTEROP_094

TEST_UpdateManagerTest_StatusPendingRightAfterRegister

StatusPendingRightAfterRegister

verified

REQ_INTEROP_094

TEST_XMedkitTest_ContributorsOmitsFieldWhenInputEmpty

ContributorsOmitsFieldWhenInputEmpty

verified

REQ_INTEROP_003

TEST_XMedkitTest_ContributorsPlacesLocalFirstThenPeersAlphabeticallyFromReverseInput

ContributorsPlacesLocalFirstThenPeersAlphabeticallyFromReverseInput

verified

REQ_INTEROP_003

TEST_XMedkitTest_ContributorsWithoutLocalStaysAlphabetical

ContributorsWithoutLocalStaysAlphabetical

verified

REQ_INTEROP_003

TEST_YamlLoadTest_LoadValidFile

LoadValidFile

verified

REQ_INTEROP_095

TEST_YamlLoadTest_MalformedYamlReturnsEmpty

MalformedYamlReturnsEmpty

verified

REQ_INTEROP_095

TEST_YamlLoadTest_MissingFileReturnsEmpty

MissingFileReturnsEmpty

verified

REQ_INTEROP_095

TEST_YamlLoadTest_PositiveConfirmationThresholdAutoNegated

PositiveConfirmationThresholdAutoNegated

verified

REQ_INTEROP_095