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
|
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: |
Test Case: hierarchical_parent_drops_routing_when_local_subcomponents_exist TEST_AggregationClassification_hierarchical_parent_drops_routing_when_local_subcomponents_exist
|
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: |
Test Case: hierarchical_parent_drops_routing_when_remote_subcomponents_exist TEST_AggregationClassification_hierarchical_parent_drops_routing_when_remote_subcomponents_exist
|
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: |
Test Case: leaf_collision_across_multiple_peers_emits_warning TEST_AggregationClassification_leaf_collision_across_multiple_peers_emits_warning
|
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: |
Test Case: leaf_collision_keeps_routing_to_peer TEST_AggregationClassification_leaf_collision_keeps_routing_to_peer
|
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: |
Test Case: leaf_collision_routing_respects_input_order TEST_AggregationClassification_leaf_collision_routing_respects_input_order
|
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: |
Test Case: parent_references_nonexistent_component_falls_back_to_leaf TEST_AggregationClassification_parent_references_nonexistent_component_falls_back_to_leaf
|
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: |
Test Case: self_parent_is_ignored_and_warned TEST_AggregationClassification_self_parent_is_ignored_and_warned
|
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: |
Test Case: subcomponents_of_hierarchical_parent_still_route_to_peer TEST_AggregationClassification_subcomponents_of_hierarchical_parent_still_route_to_peer
|
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: |
Test Case: two_way_parent_cycle_falls_back_to_leaves_with_warning TEST_AggregationClassification_two_way_parent_cycle_falls_back_to_leaves_with_warning
|
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: |
Test Case: fan_out_returns_partial_when_peers_unreachable TEST_AggregationManager_fan_out_returns_partial_when_peers_unreachable
|
Implementation: src/ros2_medkit_gateway/test/test_aggregation_manager.cpp#L247 (Test: |
Test Case: forward_returns_502_for_unknown_peer TEST_AggregationManager_forward_returns_502_for_unknown_peer
|
Implementation: src/ros2_medkit_gateway/test/test_aggregation_manager.cpp#L279 (Test: |
Test Case: forward_strips_peer_prefix_from_path TEST_AggregationManager_forward_strips_peer_prefix_from_path
|
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: |
Implementation: src/ros2_medkit_gateway/test/test_aggregation_manager.cpp#L349 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_discovery_models.cpp#L211 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_discovery_models.cpp#L60 (Test: |
Test Case: AuthorizeErrorBodyFollowsOAuth2Format TEST_AuthHandlersAuthorizeTest_AuthorizeErrorBodyFollowsOAuth2Format
|
Verify that error responses follow RFC 6749 OAuth2 error format Implementation: src/ros2_medkit_gateway/test/test_auth_handlers.cpp#L182 (Test: |
Test Case: ReturnsBadRequestForEmptyClientId TEST_AuthHandlersAuthorizeTest_ReturnsBadRequestForEmptyClientId
|
Implementation: src/ros2_medkit_gateway/test/test_auth_handlers.cpp#L140 (Test: |
Test Case: ReturnsBadRequestForEmptyClientSecret TEST_AuthHandlersAuthorizeTest_ReturnsBadRequestForEmptyClientSecret
|
Implementation: src/ros2_medkit_gateway/test/test_auth_handlers.cpp#L168 (Test: |
Test Case: ReturnsBadRequestForMissingClientId TEST_AuthHandlersAuthorizeTest_ReturnsBadRequestForMissingClientId
|
Implementation: src/ros2_medkit_gateway/test/test_auth_handlers.cpp#L126 (Test: |
Test Case: ReturnsBadRequestForMissingClientSecret TEST_AuthHandlersAuthorizeTest_ReturnsBadRequestForMissingClientSecret
|
Implementation: src/ros2_medkit_gateway/test/test_auth_handlers.cpp#L154 (Test: |
Test Case: ReturnsBadRequestForWrongGrantType TEST_AuthHandlersAuthorizeTest_ReturnsBadRequestForWrongGrantType
|
Implementation: src/ros2_medkit_gateway/test/test_auth_handlers.cpp#L112 (Test: |
Test Case: AuthorizeErrorBodyContainsErrorCode TEST_AuthHandlersDisabledTest_AuthorizeErrorBodyContainsErrorCode
|
Implementation: src/ros2_medkit_gateway/test/test_auth_handlers.cpp#L70 (Test: |
Test Case: AuthorizeReturns404WhenAuthDisabled TEST_AuthHandlersDisabledTest_AuthorizeReturns404WhenAuthDisabled
|
Implementation: src/ros2_medkit_gateway/test/test_auth_handlers.cpp#L62 (Test: |
Test Case: RevokeReturns404WhenAuthDisabled TEST_AuthHandlersDisabledTest_RevokeReturns404WhenAuthDisabled
|
Implementation: src/ros2_medkit_gateway/test/test_auth_handlers.cpp#L88 (Test: |
Test Case: TokenReturns404WhenAuthDisabled TEST_AuthHandlersDisabledTest_TokenReturns404WhenAuthDisabled
|
Implementation: src/ros2_medkit_gateway/test/test_auth_handlers.cpp#L80 (Test: |
Test Case: ReturnsBadRequestForInvalidJson TEST_AuthHandlersRevokeTest_ReturnsBadRequestForInvalidJson
|
Implementation: src/ros2_medkit_gateway/test/test_auth_handlers.cpp#L269 (Test: |
Test Case: ReturnsBadRequestForMissingTokenField TEST_AuthHandlersRevokeTest_ReturnsBadRequestForMissingTokenField
|
Implementation: src/ros2_medkit_gateway/test/test_auth_handlers.cpp#L284 (Test: |
Test Case: ReturnsBadRequestForNonStringToken TEST_AuthHandlersRevokeTest_ReturnsBadRequestForNonStringToken
|
Implementation: src/ros2_medkit_gateway/test/test_auth_handlers.cpp#L298 (Test: |
Test Case: ReturnsBadRequestForEmptyRefreshToken TEST_AuthHandlersTokenTest_ReturnsBadRequestForEmptyRefreshToken
|
Implementation: src/ros2_medkit_gateway/test/test_auth_handlers.cpp#L240 (Test: |
Test Case: ReturnsBadRequestForMissingRefreshToken TEST_AuthHandlersTokenTest_ReturnsBadRequestForMissingRefreshToken
|
Implementation: src/ros2_medkit_gateway/test/test_auth_handlers.cpp#L226 (Test: |
Test Case: ReturnsBadRequestForWrongGrantType TEST_AuthHandlersTokenTest_ReturnsBadRequestForWrongGrantType
|
Implementation: src/ros2_medkit_gateway/test/test_auth_handlers.cpp#L212 (Test: |
Test Case: AuthorizeReturnsTokensForValidCredentials TEST_AuthHandlersWithManagerTest_AuthorizeReturnsTokensForValidCredentials
|
Implementation: src/ros2_medkit_gateway/test/test_auth_handlers.cpp#L349 (Test: |
Test Case: AuthorizeReturnsUnauthorizedForInvalidCredentials TEST_AuthHandlersWithManagerTest_AuthorizeReturnsUnauthorizedForInvalidCredentials
|
Implementation: src/ros2_medkit_gateway/test/test_auth_handlers.cpp#L361 (Test: |
Test Case: RevokeRevokesRefreshTokenForSubsequentTokenRequest TEST_AuthHandlersWithManagerTest_RevokeRevokesRefreshTokenForSubsequentTokenRequest
|
Implementation: src/ros2_medkit_gateway/test/test_auth_handlers.cpp#L401 (Test: |
Test Case: TokenReturnsNewAccessTokenForValidRefreshToken TEST_AuthHandlersWithManagerTest_TokenReturnsNewAccessTokenForValidRefreshToken
|
Implementation: src/ros2_medkit_gateway/test/test_auth_handlers.cpp#L373 (Test: |
Test Case: TokenReturnsUnauthorizedForInvalidRefreshToken TEST_AuthHandlersWithManagerTest_TokenReturnsUnauthorizedForInvalidRefreshToken
|
Implementation: src/ros2_medkit_gateway/test/test_auth_handlers.cpp#L390 (Test: |
Test Case: RS256WithMissingPrivateKeyThrows TEST_AuthManagerRS256Test_RS256WithMissingPrivateKeyThrows
|
Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L470 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L167 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L340 (Test: |
Authenticate first Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L516 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L277 (Test: |
Test Case: RefreshRevocationPropagatestoAccessToken TEST_AuthManagerTest_RefreshRevocationPropagatestoAccessToken
|
Get tokens Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L320 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L264 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L230 (Test: |
Test Case: ValidateTokenWithWrongTypeRejectsToken TEST_AuthManagerTest_ValidateTokenWithWrongTypeRejectsToken
|
Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L247 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L194 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L970 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L981 (Test: |
Test Case: ExtractBearerToken_CaseInsensitive TEST_AuthMiddlewareTest_ExtractBearerToken_CaseInsensitive
|
Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L876 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L883 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L895 (Test: |
Test Case: ExtractBearerToken_InvalidPrefix TEST_AuthMiddlewareTest_ExtractBearerToken_InvalidPrefix
|
Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L889 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L869 (Test: |
GET requests don’t require auth when require_auth_for=WRITE Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L901 (Test: |
Test Case: ProcessWriteRequestWithInsufficientPermissions TEST_AuthMiddlewareTest_ProcessWriteRequestWithInsufficientPermissions
|
Authenticate as viewer Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L953 (Test: |
Test Case: ProcessWriteRequestWithInvalidToken TEST_AuthMiddlewareTest_ProcessWriteRequestWithInvalidToken
|
Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L940 (Test: |
Test Case: ProcessWriteRequestWithValidToken TEST_AuthMiddlewareTest_ProcessWriteRequestWithValidToken
|
Authenticate first to get a valid token Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L924 (Test: |
POST requests require auth when require_auth_for=WRITE Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L912 (Test: |
Test Case: AllAuthPolicyAlwaysRequiresAuth TEST_AuthRequirementPolicyTest_AllAuthPolicyAlwaysRequiresAuth
|
Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L1027 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L1060 (Test: |
Test Case: ConfigurablePolicyLongestMatchWins TEST_AuthRequirementPolicyTest_ConfigurablePolicyLongestMatchWins
|
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: |
Test Case: ConfigurablePolicyMultipleWildcards TEST_AuthRequirementPolicyTest_ConfigurablePolicyMultipleWildcards
|
Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L1083 (Test: |
Test Case: ConfigurablePolicyUnknownPathsRequireAuth TEST_AuthRequirementPolicyTest_ConfigurablePolicyUnknownPathsRequireAuth
|
Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L1092 (Test: |
Test Case: ConfigurablePolicyWildcardMatch TEST_AuthRequirementPolicyTest_ConfigurablePolicyWildcardMatch
|
Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L1070 (Test: |
Test Case: FactoryCreatesAllAuthFromConfig TEST_AuthRequirementPolicyTest_FactoryCreatesAllAuthFromConfig
|
Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L1144 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L1118 (Test: |
Test Case: FactoryCreatesWriteOnlyFromConfig TEST_AuthRequirementPolicyTest_FactoryCreatesWriteOnlyFromConfig
|
Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L1130 (Test: |
Test Case: NoAuthPolicyNeverRequiresAuth TEST_AuthRequirementPolicyTest_NoAuthPolicyNeverRequiresAuth
|
Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L1017 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L1158 (Test: |
Test Case: WriteOnlyPolicyForGetRequests TEST_AuthRequirementPolicyTest_WriteOnlyPolicyForGetRequests
|
Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L1037 (Test: |
Test Case: WriteOnlyPolicyForWriteRequests TEST_AuthRequirementPolicyTest_WriteOnlyPolicyForWriteRequests
|
Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L1049 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L799 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L811 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L821 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L787 (Test: |
Content-Type may include charset Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L831 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_bulkdata_handlers.cpp#L112 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_bulkdata_handlers.cpp#L139 (Test: |
Test Case: DescriptorToJsonWithoutDescription TEST_BulkDataHandlersTest_DescriptorToJsonWithoutDescription
|
Implementation: src/ros2_medkit_gateway/test/test_bulkdata_handlers.cpp#L165 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_bulkdata_handlers.cpp#L88 (Test: |
Test Case: FormatTimestampNsNegativeFallback TEST_BulkDataHandlersTest_FormatTimestampNsNegativeFallback
|
Negative timestamps should return fallback Implementation: src/ros2_medkit_gateway/test/test_bulkdata_handlers.cpp#L102 (Test: |
Test Case: FormatTimestampNsValidTimestamp TEST_BulkDataHandlersTest_FormatTimestampNsValidTimestamp
|
2026-02-08T00:00:00.000Z Implementation: src/ros2_medkit_gateway/test/test_bulkdata_handlers.cpp#L78 (Test: |
Test Case: FormatTimestampNsWithMilliseconds TEST_BulkDataHandlersTest_FormatTimestampNsWithMilliseconds
|
1 second + 123 ms Implementation: src/ros2_medkit_gateway/test/test_bulkdata_handlers.cpp#L94 (Test: |
Test Case: GetRosbagMimetypeCasesSensitive TEST_BulkDataHandlersTest_GetRosbagMimetypeCasesSensitive
|
MCAP should not match mcap (case sensitive) Implementation: src/ros2_medkit_gateway/test/test_bulkdata_handlers.cpp#L69 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_bulkdata_handlers.cpp#L54 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_bulkdata_handlers.cpp#L64 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_bulkdata_handlers.cpp#L44 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_bulkdata_handlers.cpp#L49 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_bulkdata_handlers.cpp#L59 (Test: |
Test Case: PayloadTooLargeErrorCodeDefined TEST_BulkDataHandlersTest_PayloadTooLargeErrorCodeDefined
|
Implementation: src/ros2_medkit_gateway/test/test_bulkdata_handlers.cpp#L195 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_bulk_data_store.cpp#L221 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_bulk_data_store.cpp#L185 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_bulk_data_store.cpp#L168 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_bulk_data_store.cpp#L340 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_bulk_data_store.cpp#L327 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_bulk_data_store.cpp#L123 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_bulk_data_store.cpp#L271 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_bulk_data_store.cpp#L104 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_bulk_data_store.cpp#L279 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_bulk_data_store.cpp#L198 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_bulk_data_store.cpp#L348 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_bulk_data_store.cpp#L229 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_bulk_data_store.cpp#L136 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_bulk_data_store.cpp#L159 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_bulk_data_store.cpp#L311 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_bulk_data_store.cpp#L48 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_bulk_data_store.cpp#L248 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_bulk_data_store.cpp#L71 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_bulk_data_store.cpp#L289 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_bulk_data_store.cpp#L302 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_bulk_data_store.cpp#L356 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_bulk_data_store.cpp#L262 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_bulk_data_store.cpp#L84 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_bulk_data_store.cpp#L212 (Test: |
Test Case: EntityCollectionDetailPathHasParameters TEST_CapabilityGeneratorTest_EntityCollectionDetailPathHasParameters
|
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: |
Test Case: GenerateEntityCollectionReturnsSpec TEST_CapabilityGeneratorTest_GenerateEntityCollectionReturnsSpec
|
Implementation: src/ros2_medkit_gateway/test/test_capability_generator.cpp#L261 (Test: |
Test Case: GenerateInvalidPathReturnsNullopt TEST_CapabilityGeneratorTest_GenerateInvalidPathReturnsNullopt
|
Implementation: src/ros2_medkit_gateway/test/test_capability_generator.cpp#L241 (Test: |
Test Case: GenerateRootContainsEntityCollections TEST_CapabilityGeneratorTest_GenerateRootContainsEntityCollections
|
Implementation: src/ros2_medkit_gateway/test/test_capability_generator.cpp#L175 (Test: |
Test Case: GenerateRootContainsEntityDetailPaths TEST_CapabilityGeneratorTest_GenerateRootContainsEntityDetailPaths
|
Implementation: src/ros2_medkit_gateway/test/test_capability_generator.cpp#L188 (Test: |
Test Case: GenerateRootContainsGlobalFaults TEST_CapabilityGeneratorTest_GenerateRootContainsGlobalFaults
|
Implementation: src/ros2_medkit_gateway/test/test_capability_generator.cpp#L201 (Test: |
Test Case: GenerateRootContainsHealthEndpoint TEST_CapabilityGeneratorTest_GenerateRootContainsHealthEndpoint
|
Implementation: src/ros2_medkit_gateway/test/test_capability_generator.cpp#L153 (Test: |
Test Case: GenerateRootContainsVersionInfo TEST_CapabilityGeneratorTest_GenerateRootContainsVersionInfo
|
Implementation: src/ros2_medkit_gateway/test/test_capability_generator.cpp#L164 (Test: |
Test Case: GenerateRootReturnsValidOpenApiSpec TEST_CapabilityGeneratorTest_GenerateRootReturnsValidOpenApiSpec
|
Implementation: src/ros2_medkit_gateway/test/test_capability_generator.cpp#L125 (Test: |
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: |
Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_cgroup_reader.cpp#L57 (Test: |
Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_cgroup_reader.cpp#L42 (Test: |
Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_cgroup_reader.cpp#L24 (Test: |
Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_cgroup_reader.cpp#L216 (Test: |
Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_cgroup_reader.cpp#L51 (Test: |
Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_cgroup_reader.cpp#L33 (Test: |
Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_cgroup_reader.cpp#L65 (Test: |
Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_cgroup_reader.cpp#L203 (Test: |
Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_cgroup_reader.cpp#L179 (Test: |
Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_cgroup_reader.cpp#L136 (Test: |
Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_cgroup_reader.cpp#L91 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_discovery_models.cpp#L135 (Test: |
Test Case: EnterRange_NonNumericReturnsFalse TEST_ConditionEvaluator_EnterRange_NonNumericReturnsFalse
|
Implementation: src/ros2_medkit_gateway/test/test_condition_evaluator.cpp#L239 (Test: |
Test Case: LeaveRange_NonNumericReturnsFalse TEST_ConditionEvaluator_LeaveRange_NonNumericReturnsFalse
|
Implementation: src/ros2_medkit_gateway/test/test_condition_evaluator.cpp#L329 (Test: |
Test Case: OnChangeTo_ValidateParams_MissingTarget TEST_ConditionEvaluator_OnChangeTo_ValidateParams_MissingTarget
|
Implementation: src/ros2_medkit_gateway/test/test_condition_evaluator.cpp#L123 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_condition_evaluator.cpp#L131 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_condition_evaluator.cpp#L64 (Test: |
Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_container_plugin.cpp#L21 (Test: |
Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_container_plugin.cpp#L38 (Test: |
Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_container_plugin.cpp#L53 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_cyclic_subscription_handlers.cpp#L173 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_cyclic_subscription_handlers.cpp#L207 (Test: |
Test Case: set_topic_data_provider_nullptr_detaches_provider TEST_DataAccessManagerWithPublisherTest_set_topic_data_provider_nullptr_detaches_provider
|
Sanity: provider is attached after SetUp. Implementation: src/ros2_medkit_gateway/test/test_data_access_manager.cpp#L302 (Test: |
Test Case: DataCategoriesErrorBodyContainsFeatureParameter TEST_DataHandlersTest_DataCategoriesErrorBodyContainsFeatureParameter
|
Implementation: src/ros2_medkit_gateway/test/test_data_handlers.cpp#L85 (Test: |
Test Case: DataCategoriesErrorBodyContainsMessage TEST_DataHandlersTest_DataCategoriesErrorBodyContainsMessage
|
Implementation: src/ros2_medkit_gateway/test/test_data_handlers.cpp#L76 (Test: |
Test Case: DataCategoriesErrorCodeIsNotImplemented TEST_DataHandlersTest_DataCategoriesErrorCodeIsNotImplemented
|
Implementation: src/ros2_medkit_gateway/test/test_data_handlers.cpp#L66 (Test: |
Test Case: DataCategoriesResponseBodyIsValidJson TEST_DataHandlersTest_DataCategoriesResponseBodyIsValidJson
|
Implementation: src/ros2_medkit_gateway/test/test_data_handlers.cpp#L58 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_data_handlers.cpp#L50 (Test: |
Test Case: DataGroupsErrorBodyContainsFeatureParameter TEST_DataHandlersTest_DataGroupsErrorBodyContainsFeatureParameter
|
Implementation: src/ros2_medkit_gateway/test/test_data_handlers.cpp#L134 (Test: |
Test Case: DataGroupsErrorBodyContainsMessage TEST_DataHandlersTest_DataGroupsErrorBodyContainsMessage
|
Implementation: src/ros2_medkit_gateway/test/test_data_handlers.cpp#L125 (Test: |
Test Case: DataGroupsErrorCodeIsNotImplemented TEST_DataHandlersTest_DataGroupsErrorCodeIsNotImplemented
|
Implementation: src/ros2_medkit_gateway/test/test_data_handlers.cpp#L115 (Test: |
Test Case: DataGroupsResponseBodyIsValidJson TEST_DataHandlersTest_DataGroupsResponseBodyIsValidJson
|
Implementation: src/ros2_medkit_gateway/test/test_data_handlers.cpp#L107 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_data_handlers.cpp#L99 (Test: |
Test Case: GetDataItemBadRequestBodyContainsInvalidRequestErrorCode TEST_DataHandlersTest_GetDataItemBadRequestBodyContainsInvalidRequestErrorCode
|
Implementation: src/ros2_medkit_gateway/test/test_data_handlers.cpp#L179 (Test: |
Test Case: GetDataItemReturnsBadRequestWhenMatchesMissing TEST_DataHandlersTest_GetDataItemReturnsBadRequestWhenMatchesMissing
|
Default-constructed req has empty matches (size 0 < 3) Implementation: src/ros2_medkit_gateway/test/test_data_handlers.cpp#L170 (Test: |
Test Case: ListDataBadRequestBodyContainsErrorCode TEST_DataHandlersTest_ListDataBadRequestBodyContainsErrorCode
|
Implementation: src/ros2_medkit_gateway/test/test_data_handlers.cpp#L157 (Test: |
Test Case: ListDataReturnsBadRequestWhenMatchesMissing TEST_DataHandlersTest_ListDataReturnsBadRequestWhenMatchesMissing
|
Default-constructed req has empty matches (size 0 < 2) Implementation: src/ros2_medkit_gateway/test/test_data_handlers.cpp#L148 (Test: |
Test Case: PutDataItemBadRequestBodyContainsInvalidRequestErrorCode TEST_DataHandlersTest_PutDataItemBadRequestBodyContainsInvalidRequestErrorCode
|
Implementation: src/ros2_medkit_gateway/test/test_data_handlers.cpp#L202 (Test: |
Test Case: PutDataItemReturnsBadRequestWhenMatchesMissing TEST_DataHandlersTest_PutDataItemReturnsBadRequestWhenMatchesMissing
|
Default-constructed req has empty matches (size 0 < 3) Implementation: src/ros2_medkit_gateway/test/test_data_handlers.cpp#L193 (Test: |
Create a script that sleeps briefly Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L724 (Test: |
Test Case: ControlCompletedExecutionReturnsNotRunning TEST_DefaultScriptProviderTest_ControlCompletedExecutionReturnsNotRunning
|
Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L1014 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L843 (Test: |
Test Case: CrossEntityExecutionAccessRejected TEST_DefaultScriptProviderTest_CrossEntityExecutionAccessRejected
|
Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L911 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L283 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L405 (Test: |
Test Case: DeleteScriptWithRunningExecutionBlocked TEST_DefaultScriptProviderTest_DeleteScriptWithRunningExecutionBlocked
|
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: |
Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L256 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L675 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L779 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L642 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L222 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L295 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L237 (Test: |
Test Case: ListMergesManifestAndUploaded TEST_DefaultScriptProviderTest_ListMergesManifestAndUploaded
|
Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L189 (Test: |
Test Case: ManifestScriptWithParametersSchema TEST_DefaultScriptProviderTest_ManifestScriptWithParametersSchema
|
Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L415 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L124 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L609 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L580 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L874 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L699 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L483 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L459 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L500 (Test: |
Create a script that exits with code 1 Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L517 (Test: |
Create a script that sleeps for a long time Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L549 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L767 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L1001 (Test: |
Test Case: UploadExceedingFileSizeRejected TEST_DefaultScriptProviderTest_UploadExceedingFileSizeRejected
|
Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L989 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L156 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L337 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L354 (Test: |
Test Case: UploadedScriptsIsolatedByEntity TEST_DefaultScriptProviderTest_UploadedScriptsIsolatedByEntity
|
Implementation: src/ros2_medkit_gateway/test/test_default_script_provider.cpp#L429 (Test: |
Test Case: AppDependsOnReturnsResolvedAndMissingDependencies TEST_DiscoveryHandlersFixtureTest_AppDependsOnReturnsResolvedAndMissingDependencies
|
Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L693 (Test: |
Test Case: AppDependsOnUnknownAppReturns404 TEST_DiscoveryHandlersFixtureTest_AppDependsOnUnknownAppReturns404
|
Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L721 (Test: |
Test Case: AppIsLocatedOnReturnsEmptyWhenAppHasNoComponent TEST_DiscoveryHandlersFixtureTest_AppIsLocatedOnReturnsEmptyWhenAppHasNoComponent
|
Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L629 (Test: |
Test Case: AppIsLocatedOnReturnsMissingItemWhenHostComponentUnresolved TEST_DiscoveryHandlersFixtureTest_AppIsLocatedOnReturnsMissingItemWhenHostComponentUnresolved
|
Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L643 (Test: |
Test Case: AppIsLocatedOnReturnsParentComponent TEST_DiscoveryHandlersFixtureTest_AppIsLocatedOnReturnsParentComponent
|
Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L612 (Test: |
Test Case: AppIsLocatedOnUnknownAppReturns404 TEST_DiscoveryHandlersFixtureTest_AppIsLocatedOnUnknownAppReturns404
|
Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L683 (Test: |
Test Case: AreaComponentsReturnsMatchingComponentsOnly TEST_DiscoveryHandlersFixtureTest_AreaComponentsReturnsMatchingComponentsOnly
|
Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L314 (Test: |
Test Case: AreaComponentsUnknownAreaReturns404 TEST_DiscoveryHandlersFixtureTest_AreaComponentsUnknownAreaReturns404
|
Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L336 (Test: |
Test Case: ComponentDependsOnReturnsResolvedAndMissingDependencies TEST_DiscoveryHandlersFixtureTest_ComponentDependsOnReturnsResolvedAndMissingDependencies
|
Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L523 (Test: |
Test Case: ComponentDependsOnUnknownComponentReturns404 TEST_DiscoveryHandlersFixtureTest_ComponentDependsOnUnknownComponentReturns404
|
Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L548 (Test: |
Test Case: FunctionHostsReturnsHostingApps TEST_DiscoveryHandlersFixtureTest_FunctionHostsReturnsHostingApps
|
Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L798 (Test: |
Test Case: FunctionHostsUnknownFunctionReturns404 TEST_DiscoveryHandlersFixtureTest_FunctionHostsUnknownFunctionReturns404
|
Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L788 (Test: |
Test Case: GetAppReturnsLinksAndCapabilities TEST_DiscoveryHandlersFixtureTest_GetAppReturnsLinksAndCapabilities
|
Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L594 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L584 (Test: |
Test Case: GetAreaReturnsCapabilitiesAndLinks TEST_DiscoveryHandlersFixtureTest_GetAreaReturnsCapabilitiesAndLinks
|
Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L300 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L290 (Test: |
Test Case: GetComponentReturnsRelationshipsAndCapabilities TEST_DiscoveryHandlersFixtureTest_GetComponentReturnsRelationshipsAndCapabilities
|
Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L438 (Test: |
Test Case: GetContainsReturnsAreaComponents TEST_DiscoveryHandlersFixtureTest_GetContainsReturnsAreaComponents
|
Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L379 (Test: |
Test Case: GetContainsUnknownAreaReturns404 TEST_DiscoveryHandlersFixtureTest_GetContainsUnknownAreaReturns404
|
Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L403 (Test: |
Test Case: GetFunctionReturnsCapabilitiesAndGraphLink TEST_DiscoveryHandlersFixtureTest_GetFunctionReturnsCapabilitiesAndGraphLink
|
Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L764 (Test: |
Test Case: GetFunctionUnknownIdReturns404 TEST_DiscoveryHandlersFixtureTest_GetFunctionUnknownIdReturns404
|
Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L754 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L488 (Test: |
Test Case: GetHostsUnknownComponentReturns404 TEST_DiscoveryHandlersFixtureTest_GetHostsUnknownComponentReturns404
|
Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L513 (Test: |
Test Case: GetSubareasReturnsChildAreas TEST_DiscoveryHandlersFixtureTest_GetSubareasReturnsChildAreas
|
Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L346 (Test: |
Test Case: GetSubareasUnknownAreaReturns404 TEST_DiscoveryHandlersFixtureTest_GetSubareasUnknownAreaReturns404
|
Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L369 (Test: |
Test Case: GetSubcomponentsReturnsChildren TEST_DiscoveryHandlersFixtureTest_GetSubcomponentsReturnsChildren
|
Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L453 (Test: |
Test Case: GetSubcomponentsUnknownComponentReturns404 TEST_DiscoveryHandlersFixtureTest_GetSubcomponentsUnknownComponentReturns404
|
Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L477 (Test: |
Test Case: ListAppsReturnsSeededMetadata TEST_DiscoveryHandlersFixtureTest_ListAppsReturnsSeededMetadata
|
Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L569 (Test: |
Test Case: ListAreasReturnsSeededItems TEST_DiscoveryHandlersFixtureTest_ListAreasReturnsSeededItems
|
Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L265 (Test: |
Test Case: ListComponentsReturnsMetadata TEST_DiscoveryHandlersFixtureTest_ListComponentsReturnsMetadata
|
Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L413 (Test: |
Test Case: ListFunctionsReturnsSeededFunctions TEST_DiscoveryHandlersFixtureTest_ListFunctionsReturnsSeededFunctions
|
Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L741 (Test: |
Test Case: AppDependsOnInvalidIdReturns400 TEST_DiscoveryHandlersValidationTest_AppDependsOnInvalidIdReturns400
|
Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L711 (Test: |
Test Case: AppIsLocatedOnInvalidIdReturns400 TEST_DiscoveryHandlersValidationTest_AppIsLocatedOnInvalidIdReturns400
|
Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L673 (Test: |
Test Case: AreaComponentsInvalidIdReturns400 TEST_DiscoveryHandlersValidationTest_AreaComponentsInvalidIdReturns400
|
Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L326 (Test: |
Test Case: ComponentDependsOnInvalidIdReturns400 TEST_DiscoveryHandlersValidationTest_ComponentDependsOnInvalidIdReturns400
|
Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L538 (Test: |
Test Case: FunctionHostsInvalidIdReturns400 TEST_DiscoveryHandlersValidationTest_FunctionHostsInvalidIdReturns400
|
Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L778 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L559 (Test: |
Test Case: GetAreaInvalidIdReturns400 TEST_DiscoveryHandlersValidationTest_GetAreaInvalidIdReturns400
|
Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L280 (Test: |
Test Case: GetAreaMissingMatchesReturns400 TEST_DiscoveryHandlersValidationTest_GetAreaMissingMatchesReturns400
|
Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L179 (Test: |
Test Case: GetComponentInvalidIdReturns400 TEST_DiscoveryHandlersValidationTest_GetComponentInvalidIdReturns400
|
Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L428 (Test: |
Test Case: GetContainsInvalidIdReturns400 TEST_DiscoveryHandlersValidationTest_GetContainsInvalidIdReturns400
|
Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L393 (Test: |
Test Case: GetFunctionInvalidIdReturns400 TEST_DiscoveryHandlersValidationTest_GetFunctionInvalidIdReturns400
|
Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L731 (Test: |
Test Case: GetHostsInvalidIdReturns400 TEST_DiscoveryHandlersValidationTest_GetHostsInvalidIdReturns400
|
Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L503 (Test: |
Test Case: GetSubareasInvalidIdReturns400 TEST_DiscoveryHandlersValidationTest_GetSubareasInvalidIdReturns400
|
Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L359 (Test: |
Test Case: GetSubcomponentsInvalidIdReturns400 TEST_DiscoveryHandlersValidationTest_GetSubcomponentsInvalidIdReturns400
|
Implementation: src/ros2_medkit_gateway/test/test_discovery_handlers.cpp#L466 (Test: |
Test Case: SetTopicDataProviderNullptrIsAcceptedAfterAttach TEST_DiscoveryManagerTest_SetTopicDataProviderNullptrIsAcceptedAfterAttach
|
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: |
Test Case: DocsAnyPathReturns200ForEntityCollection TEST_DocsHandlersTest_DocsAnyPathReturns200ForEntityCollection
|
Implementation: src/ros2_medkit_gateway/test/test_docs_handlers.cpp#L143 (Test: |
Test Case: DocsAnyPathReturns404ForInvalidPath TEST_DocsHandlersTest_DocsAnyPathReturns404ForInvalidPath
|
Implementation: src/ros2_medkit_gateway/test/test_docs_handlers.cpp#L177 (Test: |
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: |
Implementation: src/ros2_medkit_gateway/test/test_docs_handlers.cpp#L115 (Test: |
Test Case: apps_collision_prefixed_gets_peer_contributor_only TEST_EntityMerger_apps_collision_prefixed_gets_peer_contributor_only
|
Implementation: src/ros2_medkit_gateway/test/test_entity_merger.cpp#L468 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_entity_merger.cpp#L259 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_entity_merger.cpp#L237 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_entity_merger.cpp#L74 (Test: |
Test Case: builds_routing_table_for_remote_entities TEST_EntityMerger_builds_routing_table_for_remote_entities
|
Implementation: src/ros2_medkit_gateway/test/test_entity_merger.cpp#L310 (Test: |
Test Case: components_collision_appends_peer_contributor TEST_EntityMerger_components_collision_appends_peer_contributor
|
Implementation: src/ros2_medkit_gateway/test/test_entity_merger.cpp#L439 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_entity_merger.cpp#L177 (Test: |
Test Case: components_remote_only_gets_peer_contributor_only TEST_EntityMerger_components_remote_only_gets_peer_contributor_only
|
Implementation: src/ros2_medkit_gateway/test/test_entity_merger.cpp#L455 (Test: |
Test Case: contributors_no_duplicate_on_repeat_merge TEST_EntityMerger_contributors_no_duplicate_on_repeat_merge
|
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: |
Test Case: functions_merge_by_id_combining_hosts TEST_EntityMerger_functions_merge_by_id_combining_hosts
|
Implementation: src/ros2_medkit_gateway/test/test_entity_merger.cpp#L136 (Test: |
Test Case: merged_component_hybrid_synthetic_collision_routes_to_peer TEST_EntityMerger_merged_component_hybrid_synthetic_collision_routes_to_peer
|
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: |
Test Case: multi_peer_overlapping_app_ids_no_data_loss TEST_EntityMerger_multi_peer_overlapping_app_ids_no_data_loss
|
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: |
Test Case: ListFaultsForEntityEmptyResult TEST_FaultEventPublishingTest_ListFaultsForEntityEmptyResult
|
Report faults from a different entity Implementation: src/ros2_medkit_fault_manager/test/test_fault_manager.cpp#L1111 (Test: |
Report faults from different sources Implementation: src/ros2_medkit_fault_manager/test/test_fault_manager.cpp#L1085 (Test: |
Test Case: ListFaultsForEntityWithEmptyId TEST_FaultEventPublishingTest_ListFaultsForEntityWithEmptyId
|
Implementation: src/ros2_medkit_fault_manager/test/test_fault_manager.cpp#L1126 (Test: |
Test Case: BuildSovdFaultResponseBasicFields TEST_FaultHandlersTest_BuildSovdFaultResponseBasicFields
|
Implementation: src/ros2_medkit_gateway/test/test_fault_handlers.cpp#L37 (Test: |
Test Case: BuildSovdFaultResponseExtendedDataRecords TEST_FaultHandlersTest_BuildSovdFaultResponseExtendedDataRecords
|
Implementation: src/ros2_medkit_gateway/test/test_fault_handlers.cpp#L241 (Test: |
Test Case: BuildSovdFaultResponseMixedSnapshots TEST_FaultHandlersTest_BuildSovdFaultResponseMixedSnapshots
|
Implementation: src/ros2_medkit_gateway/test/test_fault_handlers.cpp#L315 (Test: |
Test Case: BuildSovdFaultResponseMultipleSources TEST_FaultHandlersTest_BuildSovdFaultResponseMultipleSources
|
Implementation: src/ros2_medkit_gateway/test/test_fault_handlers.cpp#L298 (Test: |
Test Case: BuildSovdFaultResponseNestedEntityPath TEST_FaultHandlersTest_BuildSovdFaultResponseNestedEntityPath
|
Implementation: src/ros2_medkit_gateway/test/test_fault_handlers.cpp#L123 (Test: |
Test Case: BuildSovdFaultResponsePrimaryValueExtraction TEST_FaultHandlersTest_BuildSovdFaultResponsePrimaryValueExtraction
|
Implementation: src/ros2_medkit_gateway/test/test_fault_handlers.cpp#L263 (Test: |
Test Case: BuildSovdFaultResponseSeverityLabels TEST_FaultHandlersTest_BuildSovdFaultResponseSeverityLabels
|
Implementation: src/ros2_medkit_gateway/test/test_fault_handlers.cpp#L172 (Test: |
Test Case: BuildSovdFaultResponseStatusCleared TEST_FaultHandlersTest_BuildSovdFaultResponseStatusCleared
|
Implementation: src/ros2_medkit_gateway/test/test_fault_handlers.cpp#L140 (Test: |
Test Case: BuildSovdFaultResponseStatusPassive TEST_FaultHandlersTest_BuildSovdFaultResponseStatusPassive
|
Implementation: src/ros2_medkit_gateway/test/test_fault_handlers.cpp#L157 (Test: |
Test Case: BuildSovdFaultResponseWithFreezeFrame TEST_FaultHandlersTest_BuildSovdFaultResponseWithFreezeFrame
|
Implementation: src/ros2_medkit_gateway/test/test_fault_handlers.cpp#L72 (Test: |
Test Case: BuildSovdFaultResponseWithInvalidJson TEST_FaultHandlersTest_BuildSovdFaultResponseWithInvalidJson
|
Implementation: src/ros2_medkit_gateway/test/test_fault_handlers.cpp#L220 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_fault_handlers.cpp#L98 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_fault_manager.cpp#L570 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_fault_manager.cpp#L307 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_fault_manager.cpp#L321 (Test: |
Test Case: GetRosbagUsesConfiguredFaultManagerNamespace TEST_FaultManagerTest_GetRosbagUsesConfiguredFaultManagerNamespace
|
Implementation: src/ros2_medkit_gateway/test/test_fault_manager.cpp#L346 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_fault_manager.cpp#L286 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_fault_manager.cpp#L248 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_fault_manager.cpp#L266 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_fault_manager.cpp#L127 (Test: |
Test Case: GetSnapshotsSuccessWithTopicFilter TEST_FaultManagerTest_GetSnapshotsSuccessWithTopicFilter
|
Create mock service that verifies topic filter is passed Implementation: src/ros2_medkit_gateway/test/test_fault_manager.cpp#L228 (Test: |
Create mock service Implementation: src/ros2_medkit_gateway/test/test_fault_manager.cpp#L141 (Test: |
Test Case: GetSnapshotsUsesConfiguredFaultManagerNamespace TEST_FaultManagerTest_GetSnapshotsUsesConfiguredFaultManagerNamespace
|
Implementation: src/ros2_medkit_gateway/test/test_fault_manager.cpp#L170 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_discovery_models.cpp#L374 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_function_resource_collections.cpp#L173 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_function_resource_collections.cpp#L215 (Test: |
Test Case: FunctionDataAggregatesFromHostedApps TEST_FunctionResourceCollections_FunctionDataAggregatesFromHostedApps
|
Implementation: src/ros2_medkit_gateway/test/test_function_resource_collections.cpp#L304 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_function_resource_collections.cpp#L126 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_merge_pipeline.cpp#L533 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_merge_pipeline.cpp#L967 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_merge_pipeline.cpp#L952 (Test: |
Test Case: RegistersFunctionCapabilityOnContext TEST_GraphProviderPluginRouteTest_RegistersFunctionCapabilityOnContext
|
Implementation: src/ros2_medkit_plugins/ros2_medkit_graph_provider/test/test_graph_provider_plugin.cpp#L662 (Test: |
Test Case: RegistersSamplerForCyclicSubscriptions TEST_GraphProviderPluginRouteTest_RegistersSamplerForCyclicSubscriptions
|
Implementation: src/ros2_medkit_plugins/ros2_medkit_graph_provider/test/test_graph_provider_plugin.cpp#L736 (Test: |
Test Case: ServesFunctionGraphFromCachedSnapshot TEST_GraphProviderPluginRouteTest_ServesFunctionGraphFromCachedSnapshot
|
Implementation: src/ros2_medkit_plugins/ros2_medkit_graph_provider/test/test_graph_provider_plugin.cpp#L625 (Test: |
Test Case: HandleRootAuthDisabledNoAuthEndpoints TEST_HealthHandlersTest_HandleRootAuthDisabledNoAuthEndpoints
|
With auth disabled (default), auth endpoints must not appear in the list Implementation: src/ros2_medkit_gateway/test/test_health_handlers.cpp#L189 (Test: |
Test Case: HandleRootAuthEnabledAddsAuthEndpoints TEST_HealthHandlersTest_HandleRootAuthEnabledAddsAuthEndpoints
|
Implementation: src/ros2_medkit_gateway/test/test_health_handlers.cpp#L215 (Test: |
Test Case: HandleRootAuthEnabledIncludesAuthMetadataBlock TEST_HealthHandlersTest_HandleRootAuthEnabledIncludesAuthMetadataBlock
|
Implementation: src/ros2_medkit_gateway/test/test_health_handlers.cpp#L244 (Test: |
Test Case: HandleRootCapabilitiesAuthDisabled TEST_HealthHandlersTest_HandleRootCapabilitiesAuthDisabled
|
Implementation: src/ros2_medkit_gateway/test/test_health_handlers.cpp#L200 (Test: |
Test Case: HandleRootCapabilitiesContainsDiscovery TEST_HealthHandlersTest_HandleRootCapabilitiesContainsDiscovery
|
Implementation: src/ros2_medkit_gateway/test/test_health_handlers.cpp#L180 (Test: |
Test Case: HandleRootCapabilitiesTlsDisabled TEST_HealthHandlersTest_HandleRootCapabilitiesTlsDisabled
|
Implementation: src/ros2_medkit_gateway/test/test_health_handlers.cpp#L207 (Test: |
Test Case: HandleRootEndpointsIsNonEmptyArray TEST_HealthHandlersTest_HandleRootEndpointsIsNonEmptyArray
|
Implementation: src/ros2_medkit_gateway/test/test_health_handlers.cpp#L172 (Test: |
Test Case: HandleRootResponseContainsRequiredTopLevelFields TEST_HealthHandlersTest_HandleRootResponseContainsRequiredTopLevelFields
|
Implementation: src/ros2_medkit_gateway/test/test_health_handlers.cpp#L158 (Test: |
Test Case: HandleRootTlsEnabledIncludesTlsMetadataBlock TEST_HealthHandlersTest_HandleRootTlsEnabledIncludesTlsMetadataBlock
|
Implementation: src/ros2_medkit_gateway/test/test_health_handlers.cpp#L262 (Test: |
Test Case: HandleVersionInfoContainsItemsArray TEST_HealthHandlersTest_HandleVersionInfoContainsItemsArray
|
Implementation: src/ros2_medkit_gateway/test/test_health_handlers.cpp#L119 (Test: |
Test Case: HandleVersionInfoItemsEntryHasBaseUri TEST_HealthHandlersTest_HandleVersionInfoItemsEntryHasBaseUri
|
Implementation: src/ros2_medkit_gateway/test/test_health_handlers.cpp#L138 (Test: |
Test Case: HandleVersionInfoItemsEntryHasVendorInfo TEST_HealthHandlersTest_HandleVersionInfoItemsEntryHasVendorInfo
|
Implementation: src/ros2_medkit_gateway/test/test_health_handlers.cpp#L146 (Test: |
Test Case: HandleVersionInfoItemsEntryHasVersionField TEST_HealthHandlersTest_HandleVersionInfoItemsEntryHasVersionField
|
Implementation: src/ros2_medkit_gateway/test/test_health_handlers.cpp#L128 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_host_info_provider.cpp#L40 (Test: |
Test Case: sanitizes_hostname_to_valid_entity_id TEST_HostInfoProviderTest_sanitizes_hostname_to_valid_entity_id
|
Implementation: src/ros2_medkit_gateway/test/test_host_info_provider.cpp#L70 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_subscription_manager.cpp#L28 (Test: |
Test Case: ExpiredTriggerMarkedTerminatedOnLoad TEST_LoadPersistentTriggers_ExpiredTriggerMarkedTerminatedOnLoad
|
Implementation: src/ros2_medkit_gateway/test/test_trigger_manager.cpp#L887 (Test: |
Test Case: NewTriggerIdIsHigherThanRestoredId TEST_LoadPersistentTriggers_NewTriggerIdIsHigherThanRestoredId
|
Implementation: src/ros2_medkit_gateway/test/test_trigger_manager.cpp#L923 (Test: |
Test Case: ResetBehaviorDoesNotRestoreTriggers TEST_LoadPersistentTriggers_ResetBehaviorDoesNotRestoreTriggers
|
Implementation: src/ros2_medkit_gateway/test/test_trigger_manager.cpp#L862 (Test: |
Test Case: RestoreBehaviorLoadsActiveTrigger TEST_LoadPersistentTriggers_RestoreBehaviorLoadsActiveTrigger
|
Implementation: src/ros2_medkit_gateway/test/test_trigger_manager.cpp#L831 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_lock_manager.cpp#L123 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_lock_manager.cpp#L138 (Test: |
Test Case: test_acquire_break_lock_not_breakable TEST_LockManagerTest_test_acquire_break_lock_not_breakable
|
Implementation: src/ros2_medkit_gateway/test/test_lock_manager.cpp#L158 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_lock_manager.cpp#L183 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_lock_manager.cpp#L173 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_lock_manager.cpp#L84 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_lock_manager.cpp#L112 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_lock_manager.cpp#L100 (Test: |
Test Case: test_check_access_area_propagation TEST_LockManagerTest_test_check_access_area_propagation
|
Implementation: src/ros2_medkit_gateway/test/test_lock_manager.cpp#L415 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_lock_manager.cpp#L352 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_lock_manager.cpp#L342 (Test: |
Test Case: test_check_access_parent_propagation TEST_LockManagerTest_test_check_access_parent_propagation
|
Implementation: src/ros2_medkit_gateway/test/test_lock_manager.cpp#L393 (Test: |
Test Case: test_check_access_partial_scope_propagation TEST_LockManagerTest_test_check_access_partial_scope_propagation
|
Implementation: src/ros2_medkit_gateway/test/test_lock_manager.cpp#L438 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_lock_manager.cpp#L365 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_lock_manager.cpp#L381 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_lock_manager.cpp#L333 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_lock_manager.cpp#L458 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_lock_manager.cpp#L481 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_lock_manager.cpp#L544 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_lock_manager.cpp#L252 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_lock_manager.cpp#L283 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_lock_manager.cpp#L271 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_lock_manager.cpp#L297 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_lock_manager.cpp#L313 (Test: |
Test Case: test_lock_required_different_collection_not_blocked TEST_LockManagerTest_test_lock_required_different_collection_not_blocked
|
Implementation: src/ros2_medkit_gateway/test/test_lock_manager.cpp#L527 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_lock_manager.cpp#L512 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_lock_manager.cpp#L498 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_lock_manager.cpp#L208 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_lock_manager.cpp#L238 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_lock_manager.cpp#L223 (Test: |
Test Case: GetLogsBadRequestBodyContainsInvalidRequestErrorCode TEST_LogHandlersTest_GetLogsBadRequestBodyContainsInvalidRequestErrorCode
|
Implementation: src/ros2_medkit_gateway/test/test_log_handlers.cpp#L64 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_log_handlers.cpp#L56 (Test: |
Test Case: GetLogsConfigurationBadRequestBodyContainsInvalidRequestErrorCode TEST_LogHandlersTest_GetLogsConfigurationBadRequestBodyContainsInvalidRequestErrorCode
|
Implementation: src/ros2_medkit_gateway/test/test_log_handlers.cpp#L94 (Test: |
Test Case: GetLogsConfigurationBadRequestBodyIsValidJson TEST_LogHandlersTest_GetLogsConfigurationBadRequestBodyIsValidJson
|
Implementation: src/ros2_medkit_gateway/test/test_log_handlers.cpp#L86 (Test: |
Test Case: GetLogsConfigurationReturnsBadRequestWhenMatchesMissing TEST_LogHandlersTest_GetLogsConfigurationReturnsBadRequestWhenMatchesMissing
|
Implementation: src/ros2_medkit_gateway/test/test_log_handlers.cpp#L78 (Test: |
Test Case: GetLogsReturnsBadRequestWhenMatchesMissing TEST_LogHandlersTest_GetLogsReturnsBadRequestWhenMatchesMissing
|
Default-constructed req has empty matches (size 0 < 2) Implementation: src/ros2_medkit_gateway/test/test_log_handlers.cpp#L47 (Test: |
Test Case: PutLogsConfigurationBadRequestBodyContainsInvalidRequestErrorCode TEST_LogHandlersTest_PutLogsConfigurationBadRequestBodyContainsInvalidRequestErrorCode
|
Implementation: src/ros2_medkit_gateway/test/test_log_handlers.cpp#L124 (Test: |
Test Case: PutLogsConfigurationBadRequestBodyIsValidJson TEST_LogHandlersTest_PutLogsConfigurationBadRequestBodyIsValidJson
|
Implementation: src/ros2_medkit_gateway/test/test_log_handlers.cpp#L116 (Test: |
Test Case: PutLogsConfigurationReturnsBadRequestWhenMatchesMissing TEST_LogHandlersTest_PutLogsConfigurationReturnsBadRequestWhenMatchesMissing
|
Implementation: src/ros2_medkit_gateway/test/test_log_handlers.cpp#L108 (Test: |
Test Case: AddLogEntry_EmptyMetadataNoSuffix TEST_LogManagerBufferTest_AddLogEntry_EmptyMetadataNoSuffix
|
Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L364 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L326 (Test: |
Test Case: AddLogEntry_InvalidSeverityFallsBackToInfo TEST_LogManagerBufferTest_AddLogEntry_InvalidSeverityFallsBackToInfo
|
“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: |
Test Case: AddLogEntry_MetadataAppendedToMessage TEST_LogManagerBufferTest_AddLogEntry_MetadataAppendedToMessage
|
Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L350 (Test: |
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: |
Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L281 (Test: |
Test Case: FqnWithLeadingSlashMatchesBuffer TEST_LogManagerBufferTest_FqnWithLeadingSlashMatchesBuffer
|
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: |
Test Case: GetConfigReturnsDefaultsForUnknownEntity TEST_LogManagerBufferTest_GetConfigReturnsDefaultsForUnknownEntity
|
Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L387 (Test: |
Test Case: GetLogsMatchesDotNotationLoggerNames TEST_LogManagerBufferTest_GetLogsMatchesDotNotationLoggerNames
|
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: |
Test Case: GetLogsPrefixMatchesDotNotationLoggerNames TEST_LogManagerBufferTest_GetLogsPrefixMatchesDotNotationLoggerNames
|
Component namespace prefix matching must also work against dot-format logger names. Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L309 (Test: |
Test Case: MaxEntriesCapsMostRecentEntries TEST_LogManagerBufferTest_MaxEntriesCapsMostRecentEntries
|
Inject 5 entries, set max_entries=2 via config Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L265 (Test: |
Test Case: PartialConfigUpdatePreservesOtherField TEST_LogManagerBufferTest_PartialConfigUpdatePreservesOtherField
|
Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L395 (Test: |
Test Case: PrefixMatchDoesNotFalsePositiveOnSubstring TEST_LogManagerBufferTest_PrefixMatchDoesNotFalsePositiveOnSubstring
|
“engine” must NOT match “engine_control” (only full namespace segments) Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L255 (Test: |
Test Case: PrefixMatchIncludesChildNamespaces TEST_LogManagerBufferTest_PrefixMatchIncludesChildNamespaces
|
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: |
Test Case: RingBufferEvictsOldestEntryWhenFull TEST_LogManagerBufferTest_RingBufferEvictsOldestEntryWhenFull
|
Buffer size is 3; inject 4 entries for the same node Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L196 (Test: |
Test Case: SeverityFilterExcludesLowerLevels TEST_LogManagerBufferTest_SeverityFilterExcludesLowerLevels
|
inject debug(10), info(20), warning(30) Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L226 (Test: |
Test Case: UpdateConfigRejectsInvalidSeverity TEST_LogManagerBufferTest_UpdateConfigRejectsInvalidSeverity
|
Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L375 (Test: |
Test Case: UpdateConfigRejectsZeroMaxEntries TEST_LogManagerBufferTest_UpdateConfigRejectsZeroMaxEntries
|
Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L381 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L148 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L97 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L127 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L92 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L86 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L80 (Test: |
Test Case: DefaultManagesIngestionPreservesCurrentBehavior TEST_LogManagerIngestionTest_DefaultManagesIngestionPreservesCurrentBehavior
|
Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L661 (Test: |
Test Case: ManagesIngestionDelegatesToPlugin TEST_LogManagerIngestionTest_ManagesIngestionDelegatesToPlugin
|
Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L591 (Test: |
Test Case: ManagesIngestionGetConfigDelegatesToPlugin TEST_LogManagerIngestionTest_ManagesIngestionGetConfigDelegatesToPlugin
|
Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L623 (Test: |
Test Case: ManagesIngestionLocalBufferBypassed TEST_LogManagerIngestionTest_ManagesIngestionLocalBufferBypassed
|
Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L641 (Test: |
Test Case: ManagesIngestionStillValidatesBeforeDelegation TEST_LogManagerIngestionTest_ManagesIngestionStillValidatesBeforeDelegation
|
Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L694 (Test: |
Test Case: ManagesIngestionUpdateConfigDelegatesToPlugin TEST_LogManagerIngestionTest_ManagesIngestionUpdateConfigDelegatesToPlugin
|
Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L608 (Test: |
Test Case: NoPluginPreservesDefaultBehavior TEST_LogManagerIngestionTest_NoPluginPreservesDefaultBehavior
|
No plugin manager at all - ring buffer works as before Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L679 (Test: |
Test Case: PluginGetConfigThrowReturnsError TEST_LogManagerIngestionTest_PluginGetConfigThrowReturnsError
|
Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L725 (Test: |
Test Case: PluginGetLogsThrowReturnsError TEST_LogManagerIngestionTest_PluginGetLogsThrowReturnsError
|
Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L714 (Test: |
Test Case: ResolverMatchesBareNameReturnsEntityId TEST_LogManagerResolverTest_ResolverMatchesBareNameReturnsEntityId
|
Resolver returns “my_app” when called with bare name (no leading slash) Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L841 (Test: |
Test Case: ResolverMatchesWithSlashPrefixReturnsEntityId TEST_LogManagerResolverTest_ResolverMatchesWithSlashPrefixReturnsEntityId
|
Resolver returns “temp_sensor_app” when called with “/powertrain/temp_sensor” Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L820 (Test: |
Test Case: ResolverReturnsEmptyFallsBackToLastSegment TEST_LogManagerResolverTest_ResolverReturnsEmptyFallsBackToLastSegment
|
Resolver always returns empty -> on_rosout falls back to last path segment Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L860 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L66 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L40 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_log_manager.cpp#L52 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_merge_pipeline.cpp#L347 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_manifest_parser.cpp#L273 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_manifest_parser.cpp#L427 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_manifest_parser.cpp#L403 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_manifest_parser.cpp#L415 (Test: |
Test Case: ParseScriptsTimeoutClampedToMinimum TEST_ManifestParserTest_ParseScriptsTimeoutClampedToMinimum
|
Implementation: src/ros2_medkit_gateway/test/test_manifest_parser.cpp#L439 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_mdns_discovery.cpp#L30 (Test: |
Test Case: instance_name_returns_explicit_name TEST_MdnsDiscovery_instance_name_returns_explicit_name
|
Implementation: src/ros2_medkit_gateway/test/test_mdns_discovery.cpp#L263 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_mdns_discovery.cpp#L42 (Test: |
Test Case: start_announce_on_ephemeral_port_does_not_crash TEST_MdnsDiscovery_start_announce_on_ephemeral_port_does_not_crash
|
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: |
Two layers provide the same App with different is_online values Implementation: src/ros2_medkit_gateway/test/test_merge_pipeline.cpp#L857 (Test: |
Test Case: LayerExceptionDoesNotCrashPipeline TEST_MergePipelineTest_LayerExceptionDoesNotCrashPipeline
|
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: |
Manifest layer provides a component Implementation: src/ros2_medkit_gateway/test/test_merge_pipeline.cpp#L451 (Test: |
Test Case: ThreeLayerMerge_PerFieldGroupOwnerTracking TEST_MergePipelineTest_ThreeLayerMerge_PerFieldGroupOwnerTracking
|
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: |
Test Case: ThreeLayerMerge_PluginEnrichesManifestEntity TEST_MergePipelineTest_ThreeLayerMerge_PluginEnrichesManifestEntity
|
Manifest: component “engine” with AUTHORITATIVE identity Implementation: src/ros2_medkit_gateway/test/test_merge_pipeline.cpp#L800 (Test: |
Verify enum values exist and are distinct Implementation: src/ros2_medkit_gateway/test/test_merge_pipeline.cpp#L65 (Test: |
Test Case: AlwaysIncludesGenericErrorResponse TEST_OpenApiSpecBuilderTest_AlwaysIncludesGenericErrorResponse
|
Implementation: src/ros2_medkit_gateway/test/test_openapi_spec_builder.cpp#L189 (Test: |
Test Case: BuildContainsComponentsSchemas TEST_OpenApiSpecBuilderTest_BuildContainsComponentsSchemas
|
Implementation: src/ros2_medkit_gateway/test/test_openapi_spec_builder.cpp#L167 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_openapi_spec_builder.cpp#L39 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_openapi_spec_builder.cpp#L131 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_openapi_spec_builder.cpp#L91 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_openapi_spec_builder.cpp#L47 (Test: |
Test Case: BuildProducesOpenApi310Version TEST_OpenApiSpecBuilderTest_BuildProducesOpenApi310Version
|
Implementation: src/ros2_medkit_gateway/test/test_openapi_spec_builder.cpp#L32 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_openapi_spec_builder.cpp#L265 (Test: |
Test Case: GenericErrorSchemaAlwaysPresent TEST_OpenApiSpecBuilderTest_GenericErrorSchemaAlwaysPresent
|
Implementation: src/ros2_medkit_gateway/test/test_openapi_spec_builder.cpp#L331 (Test: |
Test Case: NonEmptySchemasArePresentInOutput TEST_OpenApiSpecBuilderTest_NonEmptySchemasArePresentInOutput
|
Implementation: src/ros2_medkit_gateway/test/test_openapi_spec_builder.cpp#L341 (Test: |
Test Case: SecuritySchemeAddsToComponents TEST_OpenApiSpecBuilderTest_SecuritySchemeAddsToComponents
|
Implementation: src/ros2_medkit_gateway/test/test_openapi_spec_builder.cpp#L225 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_cyclic_subscription_handlers.cpp#L31 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_cyclic_subscription_handlers.cpp#L137 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_path_builder.cpp#L257 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_path_builder.cpp#L381 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_path_builder.cpp#L288 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_path_builder.cpp#L392 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_path_builder.cpp#L132 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_path_builder.cpp#L152 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_path_builder.cpp#L160 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_path_builder.cpp#L40 (Test: |
Test Case: EntityDetailConcretePathOmitsParameters TEST_PathBuilderTest_EntityDetailConcretePathOmitsParameters
|
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: |
Implementation: src/ros2_medkit_gateway/test/test_path_builder.cpp#L90 (Test: |
Test Case: EntityDetailTemplatePathHasParameters TEST_PathBuilderTest_EntityDetailTemplatePathHasParameters
|
Default (use_template=true) should still include path parameters Implementation: src/ros2_medkit_gateway/test/test_path_builder.cpp#L118 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_path_builder.cpp#L437 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_path_builder.cpp#L320 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_path_builder.cpp#L348 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_path_builder.cpp#L204 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_path_builder.cpp#L226 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_path_builder.cpp#L415 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_path_resolver.cpp#L73 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_path_resolver.cpp#L37 (Test: |
“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: |
Test Case: HostsUnderFunctionsIsResourceCollection TEST_PathResolverTest_HostsUnderFunctionsIsResourceCollection
|
Implementation: src/ros2_medkit_gateway/test/test_path_resolver.cpp#L185 (Test: |
Topic names like /sensors/temperature produce multi-segment resource IDs Implementation: src/ros2_medkit_gateway/test/test_path_resolver.cpp#L234 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_path_resolver.cpp#L87 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_path_resolver.cpp#L52 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_path_resolver.cpp#L26 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_path_resolver.cpp#L44 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_path_resolver.cpp#L60 (Test: |
Test Case: fetch_entities_parses_collections TEST_PeerClientHappyPath_fetch_entities_parses_collections
|
Implementation: src/ros2_medkit_gateway/test/test_peer_client.cpp#L181 (Test: |
Test Case: fetch_entities_parses_is_located_on_without_vendor_extension TEST_PeerClientHappyPath_fetch_entities_parses_is_located_on_without_vendor_extension
|
Implementation: src/ros2_medkit_gateway/test/test_peer_client.cpp#L340 (Test: |
Test Case: fetch_entities_parses_relationship_fields TEST_PeerClientHappyPath_fetch_entities_parses_relationship_fields
|
Implementation: src/ros2_medkit_gateway/test/test_peer_client.cpp#L222 (Test: |
Test Case: fetch_entities_parses_vendor_only_component_id_fallback TEST_PeerClientHappyPath_fetch_entities_parses_vendor_only_component_id_fallback
|
Implementation: src/ros2_medkit_gateway/test/test_peer_client.cpp#L460 (Test: |
Test Case: fetch_entities_rejects_malicious_component_id_in_located_on TEST_PeerClientHappyPath_fetch_entities_rejects_malicious_component_id_in_located_on
|
Implementation: src/ros2_medkit_gateway/test/test_peer_client.cpp#L412 (Test: |
Test Case: forward_and_get_json_returns_parsed_json TEST_PeerClientHappyPath_forward_and_get_json_returns_parsed_json
|
Implementation: src/ros2_medkit_gateway/test/test_peer_client.cpp#L620 (Test: |
Test Case: forward_request_proxies_response_with_auth TEST_PeerClientHappyPath_forward_request_proxies_response_with_auth
|
Implementation: src/ros2_medkit_gateway/test/test_peer_client.cpp#L505 (Test: |
Test Case: forward_request_rejects_oversized_response TEST_PeerClientHappyPath_forward_request_rejects_oversized_response
|
Implementation: src/ros2_medkit_gateway/test/test_peer_client.cpp#L718 (Test: |
Test Case: fetch_entities_returns_error_on_connection_refused TEST_PeerClient_fetch_entities_returns_error_on_connection_refused
|
Implementation: src/ros2_medkit_gateway/test/test_peer_client.cpp#L102 (Test: |
Test Case: forward_sets_502_on_connection_error TEST_PeerClient_forward_sets_502_on_connection_error
|
Implementation: src/ros2_medkit_gateway/test/test_peer_client.cpp#L64 (Test: |
Test Case: BackwardCompatibleWithoutResolver TEST_PerEntityStorageTest_BackwardCompatibleWithoutResolver
|
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: |
Implementation: src/ros2_medkit_fault_manager/test/test_entity_thresholds.cpp#L318 (Test: |
Implementation: src/ros2_medkit_fault_manager/test/test_entity_thresholds.cpp#L269 (Test: |
Implementation: src/ros2_medkit_fault_manager/test/test_entity_thresholds.cpp#L336 (Test: |
Implementation: src/ros2_medkit_fault_manager/test/test_entity_thresholds.cpp#L280 (Test: |
Implementation: src/ros2_medkit_fault_manager/test/test_entity_thresholds.cpp#L307 (Test: |
Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_pid_cache.cpp#L83 (Test: |
Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_pid_cache.cpp#L167 (Test: |
Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_pid_cache.cpp#L126 (Test: |
Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_pid_cache.cpp#L58 (Test: |
Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_pid_cache.cpp#L74 (Test: |
Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_pid_cache.cpp#L151 (Test: |
Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_pid_cache.cpp#L106 (Test: |
Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_pid_cache.cpp#L141 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_merge_pipeline.cpp#L407 (Test: |
Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_proc_reader.cpp#L62 (Test: |
Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_proc_reader.cpp#L48 (Test: |
Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_proc_reader.cpp#L77 (Test: |
Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_proc_reader.cpp#L84 (Test: |
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: |
Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_procfs_plugin.cpp#L21 (Test: |
Test Case: ProcessInfoToJsonNegativeUptimeClamped TEST_ProcfsPlugin_ProcessInfoToJsonNegativeUptimeClamped
|
Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_procfs_plugin.cpp#L68 (Test: |
Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_procfs_plugin.cpp#L58 (Test: |
Implementation: src/ros2_medkit_fault_manager/test/test_entity_thresholds.cpp#L50 (Test: |
Implementation: src/ros2_medkit_fault_manager/test/test_entity_thresholds.cpp#L59 (Test: |
Implementation: src/ros2_medkit_fault_manager/test/test_entity_thresholds.cpp#L83 (Test: |
Implementation: src/ros2_medkit_fault_manager/test/test_entity_thresholds.cpp#L101 (Test: |
Implementation: src/ros2_medkit_fault_manager/test/test_entity_thresholds.cpp#L128 (Test: |
Implementation: src/ros2_medkit_fault_manager/test/test_entity_thresholds.cpp#L72 (Test: |
Implementation: src/ros2_medkit_fault_manager/test/test_entity_thresholds.cpp#L112 (Test: |
Implementation: src/ros2_medkit_fault_manager/test/test_entity_thresholds.cpp#L142 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_resource_change_notifier.cpp#L229 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_resource_change_notifier.cpp#L45 (Test: |
Test Case: ColdWaitCapExceededReturns503 TEST_Ros2TopicDataProviderTest_ColdWaitCapExceededReturns503
|
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: |
Test Case: DiscoverByNamespaceGroupsTopics TEST_Ros2TopicDataProviderTest_DiscoverByNamespaceGroupsTopics
|
Implementation: src/ros2_medkit_gateway/test/test_ros2_topic_data_provider.cpp#L126 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_ros2_topic_data_provider.cpp#L105 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_ros2_topic_data_provider.cpp#L689 (Test: |
Test Case: SampleHitReturnsDataAfterPublish TEST_Ros2TopicDataProviderTest_SampleHitReturnsDataAfterPublish
|
Implementation: src/ros2_medkit_gateway/test/test_ros2_topic_data_provider.cpp#L197 (Test: |
Test Case: SampleMatchesReliablePublisherQoS TEST_Ros2TopicDataProviderTest_SampleMatchesReliablePublisherQoS
|
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: |
Test Case: SampleParallelEmbedsPerTopicErrorInsteadOfFailingBatch TEST_Ros2TopicDataProviderTest_SampleParallelEmbedsPerTopicErrorInsteadOfFailingBatch
|
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: |
Test Case: SampleParallelHonorsMaxParallelSamplesAndPreservesOrder TEST_Ros2TopicDataProviderTest_SampleParallelHonorsMaxParallelSamplesAndPreservesOrder
|
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: |
Test Case: SampleParallelReturnsOneResultPerTopic TEST_Ros2TopicDataProviderTest_SampleParallelReturnsOneResultPerTopic
|
Implementation: src/ros2_medkit_gateway/test/test_ros2_topic_data_provider.cpp#L308 (Test: |
Test Case: SampleWithoutPublishersReturnsMetadataOnly TEST_Ros2TopicDataProviderTest_SampleWithoutPublishersReturnsMetadataOnly
|
Implementation: src/ros2_medkit_gateway/test/test_ros2_topic_data_provider.cpp#L147 (Test: |
Implementation: src/ros2_medkit_fault_manager/test/test_rosbag_capture.cpp#L120 (Test: |
Implementation: src/ros2_medkit_fault_manager/test/test_rosbag_capture.cpp#L84 (Test: |
Implementation: src/ros2_medkit_fault_manager/test/test_rosbag_capture.cpp#L91 (Test: |
Test Case: ConstructorSucceedsWithValidParams TEST_RosbagCaptureTest_ConstructorSucceedsWithValidParams
|
Implementation: src/ros2_medkit_fault_manager/test/test_rosbag_capture.cpp#L98 (Test: |
Implementation: src/ros2_medkit_fault_manager/test/test_rosbag_capture.cpp#L112 (Test: |
Implementation: src/ros2_medkit_fault_manager/test/test_rosbag_capture.cpp#L105 (Test: |
Implementation: src/ros2_medkit_fault_manager/test/test_rosbag_capture.cpp#L130 (Test: |
Test Case: EmptyBuilderProducesEmptyDescriptions TEST_RouteDescriptionsTest_EmptyBuilderProducesEmptyDescriptions
|
Implementation: src/ros2_medkit_gateway/test/test_route_descriptions.cpp#L37 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_route_descriptions.cpp#L70 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_route_descriptions.cpp#L82 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_route_descriptions.cpp#L98 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_route_descriptions.cpp#L46 (Test: |
Test Case: AuthEnabledAdds401And403Responses TEST_RouteRegistryTest_AuthEnabledAdds401And403Responses
|
Implementation: src/ros2_medkit_gateway/test/test_route_registry.cpp#L178 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_route_registry.cpp#L645 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_route_registry.cpp#L271 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_route_registry.cpp#L314 (Test: |
Test Case: ToOpenapiPathsContainsRegisteredRoute TEST_RouteRegistryTest_ToOpenapiPathsContainsRegisteredRoute
|
Implementation: src/ros2_medkit_gateway/test/test_route_registry.cpp#L45 (Test: |
Test Case: ToOpenapiPathsMultipleMethodsSamePath TEST_RouteRegistryTest_ToOpenapiPathsMultipleMethodsSamePath
|
Implementation: src/ros2_medkit_gateway/test/test_route_registry.cpp#L57 (Test: |
Test Case: ToRegexPathRootBecomesRootAnchored TEST_RouteRegistryTest_ToRegexPathRootBecomesRootAnchored
|
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: |
Test Case: DiscoverFunctions_GroupsByNamespace TEST_RuntimeDiscoveryMultiNsTest_DiscoverFunctions_GroupsByNamespace
|
Implementation: src/ros2_medkit_gateway/test/test_runtime_discovery.cpp#L188 (Test: |
Test Case: DiscoverFunctions_DefaultCreatesFromNamespaces TEST_RuntimeDiscoveryTest_DiscoverFunctions_DefaultCreatesFromNamespaces
|
Default config has create_functions_from_namespaces=true Implementation: src/ros2_medkit_gateway/test/test_runtime_discovery.cpp#L89 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_merge_pipeline.cpp#L374 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_runtime_linker.cpp#L77 (Test: |
Test Case: OrphanPolicy_IncludeAsOrphan_NoError TEST_RuntimeLinkerTest_OrphanPolicy_IncludeAsOrphan_NoError
|
Implementation: src/ros2_medkit_gateway/test/test_runtime_linker.cpp#L307 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_runtime_linker.cpp#L293 (Test: |
Test Case: receives_events_from_mock_server TEST_SSEStreamProxyIntegration_receives_events_from_mock_server
|
Implementation: src/ros2_medkit_gateway/test/test_stream_proxy.cpp#L232 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_schema_builder.cpp#L449 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_schema_builder.cpp#L460 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_schema_builder.cpp#L513 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_schema_builder.cpp#L277 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_schema_builder.cpp#L287 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_schema_builder.cpp#L156 (Test: |
Test Case: ConfigurationMetaDataXMedkitDeclaresAllEmittedFields TEST_SchemaBuilderStaticTest_ConfigurationMetaDataXMedkitDeclaresAllEmittedFields
|
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: |
Implementation: src/ros2_medkit_gateway/test/test_schema_builder.cpp#L200 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_schema_builder.cpp#L232 (Test: |
Test Case: CyclicSubscriptionCreateRequestSchema TEST_SchemaBuilderStaticTest_CyclicSubscriptionCreateRequestSchema
|
Implementation: src/ros2_medkit_gateway/test/test_schema_builder.cpp#L307 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_schema_builder.cpp#L546 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_schema_builder.cpp#L561 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_schema_builder.cpp#L532 (Test: |
Test Case: LogConfigurationSchemaFieldsOptional TEST_SchemaBuilderStaticTest_LogConfigurationSchemaFieldsOptional
|
Implementation: src/ros2_medkit_gateway/test/test_schema_builder.cpp#L595 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_schema_builder.cpp#L218 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_schema_builder.cpp#L578 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_schema_builder.cpp#L246 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_schema_builder.cpp#L616 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_schema_builder.cpp#L337 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_schema_builder.cpp#L262 (Test: |
Test Case: AllRefsResolveToRegisteredSchemas TEST_SchemaConsistencyTest_AllRefsResolveToRegisteredSchemas
|
Implementation: src/ros2_medkit_gateway/test/test_schema_builder.cpp#L661 (Test: |
Test Case: ListSchemasReferenceExistingItemSchemas TEST_SchemaConsistencyTest_ListSchemasReferenceExistingItemSchemas
|
Implementation: src/ros2_medkit_gateway/test/test_schema_builder.cpp#L678 (Test: |
Test Case: RequiredFieldsExistInProperties TEST_SchemaConsistencyTest_RequiredFieldsExistInProperties
|
Implementation: src/ros2_medkit_gateway/test/test_schema_builder.cpp#L707 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_script_handlers.cpp#L427 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_script_handlers.cpp#L437 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_script_handlers.cpp#L537 (Test: |
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: |
Implementation: src/ros2_medkit_gateway/test/test_script_handlers.cpp#L416 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_script_handlers.cpp#L407 (Test: |
Test Case: StartExecutionReturns202WithLocation TEST_ScriptHandlersErrorMappingTest_StartExecutionReturns202WithLocation
|
Implementation: src/ros2_medkit_gateway/test/test_script_handlers.cpp#L518 (Test: |
Test Case: UploadRejectsWrongContentType TEST_ScriptHandlersErrorMappingTest_UploadRejectsWrongContentType
|
Implementation: src/ros2_medkit_gateway/test/test_script_handlers.cpp#L497 (Test: |
Test Case: UploadReturns201WithLocation TEST_ScriptHandlersErrorMappingTest_UploadReturns201WithLocation
|
Implementation: src/ros2_medkit_gateway/test/test_script_handlers.cpp#L471 (Test: |
Test Case: ControlExecutionReturns501WhenNoBackend TEST_ScriptHandlersNoBackendTest_ControlExecutionReturns501WhenNoBackend
|
Implementation: src/ros2_medkit_gateway/test/test_script_handlers.cpp#L271 (Test: |
Test Case: DeleteReturns501WhenNoBackend TEST_ScriptHandlersNoBackendTest_DeleteReturns501WhenNoBackend
|
Implementation: src/ros2_medkit_gateway/test/test_script_handlers.cpp#L247 (Test: |
Test Case: GetExecutionReturns501WhenNoBackend TEST_ScriptHandlersNoBackendTest_GetExecutionReturns501WhenNoBackend
|
Implementation: src/ros2_medkit_gateway/test/test_script_handlers.cpp#L263 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_script_handlers.cpp#L239 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_script_handlers.cpp#L231 (Test: |
Test Case: StartExecutionReturns501WhenNoBackend TEST_ScriptHandlersNoBackendTest_StartExecutionReturns501WhenNoBackend
|
Implementation: src/ros2_medkit_gateway/test/test_script_handlers.cpp#L255 (Test: |
Test Case: UploadReturns501WhenNoBackend TEST_ScriptHandlersNoBackendTest_UploadReturns501WhenNoBackend
|
Implementation: src/ros2_medkit_gateway/test/test_script_handlers.cpp#L221 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_script_manager.cpp#L232 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_script_manager.cpp#L208 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_script_manager.cpp#L202 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_script_manager.cpp#L224 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_script_manager.cpp#L181 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_script_manager.cpp#L188 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_script_manager.cpp#L173 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_script_manager.cpp#L215 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_script_manager.cpp#L195 (Test: |
Test Case: BackgroundCaptureInitializesSubscriptions TEST_SnapshotCaptureTest_BackgroundCaptureInitializesSubscriptions
|
Implementation: src/ros2_medkit_fault_manager/test/test_snapshot_capture.cpp#L201 (Test: |
Test Case: ConfigAccessorReturnsCorrectValues TEST_SnapshotCaptureTest_ConfigAccessorReturnsCorrectValues
|
Implementation: src/ros2_medkit_fault_manager/test/test_snapshot_capture.cpp#L169 (Test: |
Implementation: src/ros2_medkit_fault_manager/test/test_snapshot_capture.cpp#L48 (Test: |
Implementation: src/ros2_medkit_fault_manager/test/test_snapshot_capture.cpp#L54 (Test: |
Test Case: ConstructorSucceedsWithValidParams TEST_SnapshotCaptureTest_ConstructorSucceedsWithValidParams
|
Implementation: src/ros2_medkit_fault_manager/test/test_snapshot_capture.cpp#L60 (Test: |
Implementation: src/ros2_medkit_fault_manager/test/test_snapshot_capture.cpp#L67 (Test: |
Test Case: EmptyConfigurationHandledGracefully TEST_SnapshotCaptureTest_EmptyConfigurationHandledGracefully
|
Implementation: src/ros2_medkit_fault_manager/test/test_snapshot_capture.cpp#L186 (Test: |
Implementation: src/ros2_medkit_fault_manager/test/test_snapshot_capture.cpp#L145 (Test: |
Implementation: src/ros2_medkit_fault_manager/test/test_snapshot_capture.cpp#L81 (Test: |
Implementation: src/ros2_medkit_fault_manager/test/test_snapshot_capture.cpp#L156 (Test: |
Test Case: OnDemandCaptureHandlesNonExistentTopic TEST_SnapshotCaptureTest_OnDemandCaptureHandlesNonExistentTopic
|
Implementation: src/ros2_medkit_fault_manager/test/test_snapshot_capture.cpp#L213 (Test: |
Test Case: ClearFaultDeletesAssociatedSnapshots TEST_SqliteFaultStorageTest_ClearFaultDeletesAssociatedSnapshots
|
Implementation: src/ros2_medkit_fault_manager/test/test_sqlite_storage.cpp#L683 (Test: |
Implementation: src/ros2_medkit_fault_manager/test/test_sqlite_storage.cpp#L646 (Test: |
Test Case: GetAllRosbagFilesReturnsSortedByCreatedAt TEST_SqliteFaultStorageTest_GetAllRosbagFilesReturnsSortedByCreatedAt
|
Implementation: src/ros2_medkit_fault_manager/test/test_sqlite_storage.cpp#L771 (Test: |
Test Case: ListRosbagsForEntityFiltersCorrectly TEST_SqliteFaultStorageTest_ListRosbagsForEntityFiltersCorrectly
|
Implementation: src/ros2_medkit_fault_manager/test/test_sqlite_storage.cpp#L724 (Test: |
Implementation: src/ros2_medkit_fault_manager/test/test_sqlite_storage.cpp#L616 (Test: |
Implementation: src/ros2_medkit_fault_manager/test/test_sqlite_storage.cpp#L677 (Test: |
Implementation: src/ros2_medkit_fault_manager/test/test_sqlite_storage.cpp#L586 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_sse_transport_provider.cpp#L32 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_sse_transport_provider.cpp#L37 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_sse_transport_provider.cpp#L53 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_stream_proxy.cpp#L65 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_stream_proxy.cpp#L52 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_stream_proxy.cpp#L96 (Test: |
Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_proc_reader.cpp#L188 (Test: |
Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_proc_reader.cpp#L137 (Test: |
Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_proc_reader.cpp#L176 (Test: |
Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_proc_reader.cpp#L94 (Test: |
Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_proc_reader.cpp#L165 (Test: |
Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_proc_reader.cpp#L200 (Test: |
Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_systemd_plugin.cpp#L52 (Test: |
Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_systemd_plugin.cpp#L37 (Test: |
Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_systemd_plugin.cpp#L27 (Test: |
Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_systemd_plugin.cpp#L47 (Test: |
Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_systemd_plugin.cpp#L32 (Test: |
Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_systemd_plugin.cpp#L22 (Test: |
Implementation: src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection/test/test_systemd_plugin.cpp#L42 (Test: |
Test Case: test_03_authenticate_valid_credentials TEST_TestAuthenticationIntegration_test_03_authenticate_valid_credentials
|
Implementation: src/ros2_medkit_integration_tests/test/features/test_auth.test.py#L97 (Test: |
Test Case: test_06_authenticate_form_urlencoded TEST_TestAuthenticationIntegration_test_06_authenticate_form_urlencoded
|
Implementation: src/ros2_medkit_integration_tests/test/features/test_auth.test.py#L146 (Test: |
Implementation: src/ros2_medkit_integration_tests/test/features/test_auth.test.py#L158 (Test: |
Test Case: test_bulk_data_component_aggregates_child_apps TEST_TestBulkDataApi_test_bulk_data_component_aggregates_child_apps
|
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: |
Implementation: src/ros2_medkit_integration_tests/test/features/test_bulk_data_api.test.py#L210 (Test: |
Test Case: test_bulk_data_list_categories_all_entity_types TEST_TestBulkDataApi_test_bulk_data_list_categories_all_entity_types
|
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 Case: test_bulk_data_list_categories_entity_not_found TEST_TestBulkDataApi_test_bulk_data_list_categories_entity_not_found
|
Implementation: src/ros2_medkit_integration_tests/test/features/test_bulk_data_api.test.py#L98 (Test: |
Test Case: test_bulk_data_list_categories_success TEST_TestBulkDataApi_test_bulk_data_list_categories_success
|
Implementation: src/ros2_medkit_integration_tests/test/features/test_bulk_data_api.test.py#L51 (Test: |
Test Case: test_bulk_data_list_descriptors_empty_result TEST_TestBulkDataApi_test_bulk_data_list_descriptors_empty_result
|
Implementation: src/ros2_medkit_integration_tests/test/features/test_bulk_data_api.test.py#L140 (Test: |
Test Case: test_bulk_data_list_descriptors_structure TEST_TestBulkDataApi_test_bulk_data_list_descriptors_structure
|
Implementation: src/ros2_medkit_integration_tests/test/features/test_bulk_data_api.test.py#L112 (Test: |
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 Case: test_bulk_data_unknown_category_returns_404 TEST_TestBulkDataApi_test_bulk_data_unknown_category_returns_404
|
Implementation: src/ros2_medkit_integration_tests/test/features/test_bulk_data_api.test.py#L196 (Test: |
Implementation: src/ros2_medkit_integration_tests/test/features/test_configuration_api.test.py#L47 (Test: |
Implementation: src/ros2_medkit_integration_tests/test/features/test_configuration_api.test.py#L80 (Test: |
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 Case: test_04_delete_configuration_resets_to_default TEST_TestConfigurationApi_test_04_delete_configuration_resets_to_default
|
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 Case: test_05_configurations_nonexistent_app TEST_TestConfigurationApi_test_05_configurations_nonexistent_app
|
Implementation: src/ros2_medkit_integration_tests/test/features/test_configuration_api.test.py#L202 (Test: |
Test Case: test_06_configuration_nonexistent_parameter TEST_TestConfigurationApi_test_06_configuration_nonexistent_parameter
|
Implementation: src/ros2_medkit_integration_tests/test/features/test_configuration_api.test.py#L220 (Test: |
Test Case: test_07_set_configuration_missing_value TEST_TestConfigurationApi_test_07_set_configuration_missing_value
|
Implementation: src/ros2_medkit_integration_tests/test/features/test_configuration_api.test.py#L236 (Test: |
Test Case: test_08_root_endpoint_includes_configurations TEST_TestConfigurationApi_test_08_root_endpoint_includes_configurations
|
Implementation: src/ros2_medkit_integration_tests/test/features/test_configuration_api.test.py#L253 (Test: |
Implementation: src/ros2_medkit_integration_tests/test/docker/introspection/test_container_introspection.py#L195 (Test: |
Test Case: test_container_id_is_64_char_hex TEST_TestContainerAppEndpoint_test_container_id_is_64_char_hex
|
Implementation: src/ros2_medkit_integration_tests/test/docker/introspection/test_container_introspection.py#L114 (Test: |
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: |
docker-compose.container.yml sets 512MB = 536870912 bytes. Implementation: src/ros2_medkit_integration_tests/test/docker/introspection/test_container_introspection.py#L146 (Test: |
Implementation: src/ros2_medkit_integration_tests/test/docker/introspection/test_container_introspection.py#L99 (Test: |
Implementation: src/ros2_medkit_integration_tests/test/docker/introspection/test_container_introspection.py#L132 (Test: |
Test Case: test_containers_include_node_ids TEST_TestContainerComponentEndpoint_test_containers_include_node_ids
|
Implementation: src/ros2_medkit_integration_tests/test/docker/introspection/test_container_introspection.py#L233 (Test: |
Test Case: test_containers_include_runtime TEST_TestContainerComponentEndpoint_test_containers_include_runtime
|
Implementation: src/ros2_medkit_integration_tests/test/docker/introspection/test_container_introspection.py#L249 (Test: |
Test Case: test_returns_containers_aggregation TEST_TestContainerComponentEndpoint_test_returns_containers_aggregation
|
Implementation: src/ros2_medkit_integration_tests/test/docker/introspection/test_container_introspection.py#L218 (Test: |
Test Case: test_nonexistent_app_returns_404 TEST_TestContainerErrorHandling_test_nonexistent_app_returns_404
|
Implementation: src/ros2_medkit_integration_tests/test/docker/introspection/test_container_introspection.py#L267 (Test: |
Test Case: test_nonexistent_component_returns_404 TEST_TestContainerErrorHandling_test_nonexistent_component_returns_404
|
Implementation: src/ros2_medkit_integration_tests/test/docker/introspection/test_container_introspection.py#L278 (Test: |
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 Case: test_logs_severity_filter_forwarded TEST_TestCrossEcuFanout_test_logs_severity_filter_forwarded
|
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 Case: test_primary_forwards_ecu_b_detail_one_hop TEST_TestDaisyChainAggregation_test_primary_forwards_ecu_b_detail_one_hop
|
Implementation: src/ros2_medkit_integration_tests/test/features/test_daisy_chain_aggregation.test.py#L260 (Test: |
Test Case: test_primary_forwards_ecu_c_detail_two_hops TEST_TestDaisyChainAggregation_test_primary_forwards_ecu_c_detail_two_hops
|
Implementation: src/ros2_medkit_integration_tests/test/features/test_daisy_chain_aggregation.test.py#L266 (Test: |
Test Case: test_primary_sees_all_ecus_as_subcomponents_of_robot_x TEST_TestDaisyChainAggregation_test_primary_sees_all_ecus_as_subcomponents_of_robot_x
|
Implementation: src/ros2_medkit_integration_tests/test/features/test_daisy_chain_aggregation.test.py#L237 (Test: |
Test Case: test_primary_serves_robot_x_detail_locally_with_contributors TEST_TestDaisyChainAggregation_test_primary_serves_robot_x_detail_locally_with_contributors
|
Implementation: src/ros2_medkit_integration_tests/test/features/test_daisy_chain_aggregation.test.py#L246 (Test: |
Implementation: src/ros2_medkit_integration_tests/test/features/test_data_read.test.py#L130 (Test: |
Implementation: src/ros2_medkit_integration_tests/test/features/test_data_read.test.py#L107 (Test: |
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: |
Implementation: src/ros2_medkit_integration_tests/test/features/test_data_read.test.py#L153 (Test: |
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: |
Implementation: src/ros2_medkit_integration_tests/test/features/test_data_read.test.py#L180 (Test: |
Test Case: test_component_nonexistent_topic_metadata_only TEST_TestDataRead_test_component_nonexistent_topic_metadata_only
|
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 Case: test_component_topic_data_structure TEST_TestDataRead_test_component_topic_data_structure
|
Uses host-derived default component. Implementation: src/ros2_medkit_integration_tests/test/features/test_data_read.test.py#L289 (Test: |
Test Case: test_component_topic_nonexistent_component_error TEST_TestDataRead_test_component_topic_nonexistent_component_error
|
Implementation: src/ros2_medkit_integration_tests/test/features/test_data_read.test.py#L353 (Test: |
Uses host-derived default component. Implementation: src/ros2_medkit_integration_tests/test/features/test_data_read.test.py#L264 (Test: |
Uses host-derived default component. Implementation: src/ros2_medkit_integration_tests/test/features/test_data_read.test.py#L239 (Test: |
Uses host-derived default component which aggregates all apps. Implementation: src/ros2_medkit_integration_tests/test/features/test_data_read.test.py#L212 (Test: |
Uses host-derived default component. Implementation: src/ros2_medkit_integration_tests/test/features/test_data_read.test.py#L392 (Test: |
Uses host-derived default component. Implementation: src/ros2_medkit_integration_tests/test/features/test_data_read.test.py#L372 (Test: |
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: |
Implementation: src/ros2_medkit_integration_tests/test/features/test_data_read.test.py#L502 (Test: |
Test Case: test_list_function_data_nonexistent TEST_TestDataRead_test_list_function_data_nonexistent
|
Implementation: src/ros2_medkit_integration_tests/test/features/test_data_read.test.py#L484 (Test: |
Uses host-derived default component. Implementation: src/ros2_medkit_integration_tests/test/features/test_data_write.test.py#L66 (Test: |
Implementation: src/ros2_medkit_integration_tests/test/features/test_data_write.test.py#L179 (Test: |
Implementation: src/ros2_medkit_integration_tests/test/features/test_data_write.test.py#L160 (Test: |
Test Case: test_publish_validation_invalid_type_format TEST_TestDataWrite_test_publish_validation_invalid_type_format
|
Implementation: src/ros2_medkit_integration_tests/test/features/test_data_write.test.py#L129 (Test: |
Test Case: test_publish_validation_missing_data TEST_TestDataWrite_test_publish_validation_missing_data
|
Implementation: src/ros2_medkit_integration_tests/test/features/test_data_write.test.py#L111 (Test: |
Test Case: test_publish_validation_missing_type TEST_TestDataWrite_test_publish_validation_missing_type
|
Implementation: src/ros2_medkit_integration_tests/test/features/test_data_write.test.py#L93 (Test: |
Test Case: test_apps_docs_returns_entity_collection_spec TEST_TestDocsEndpoint_test_apps_docs_returns_entity_collection_spec
|
Implementation: src/ros2_medkit_integration_tests/test/features/test_docs_endpoint.test.py#L80 (Test: |
Test Case: test_areas_docs_returns_entity_collection_spec TEST_TestDocsEndpoint_test_areas_docs_returns_entity_collection_spec
|
Implementation: src/ros2_medkit_integration_tests/test/features/test_docs_endpoint.test.py#L114 (Test: |
Test Case: test_components_docs_returns_entity_collection_spec TEST_TestDocsEndpoint_test_components_docs_returns_entity_collection_spec
|
Implementation: src/ros2_medkit_integration_tests/test/features/test_docs_endpoint.test.py#L97 (Test: |
Implementation: src/ros2_medkit_integration_tests/test/features/test_docs_endpoint.test.py#L157 (Test: |
Test Case: test_logs_configuration_schema_field_names TEST_TestDocsEndpoint_test_logs_configuration_schema_field_names
|
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 Case: test_nonexistent_entity_docs_returns_404 TEST_TestDocsEndpoint_test_nonexistent_entity_docs_returns_404
|
Implementation: src/ros2_medkit_integration_tests/test/features/test_docs_endpoint.test.py#L251 (Test: |
Test Case: test_nonexistent_path_docs_returns_404 TEST_TestDocsEndpoint_test_nonexistent_path_docs_returns_404
|
Implementation: src/ros2_medkit_integration_tests/test/features/test_docs_endpoint.test.py#L264 (Test: |
Implementation: src/ros2_medkit_integration_tests/test/features/test_docs_endpoint.test.py#L185 (Test: |
Test Case: test_root_docs_returns_openapi_spec TEST_TestDocsEndpoint_test_root_docs_returns_openapi_spec
|
Implementation: src/ros2_medkit_integration_tests/test/features/test_docs_endpoint.test.py#L56 (Test: |
Implementation: src/ros2_medkit_integration_tests/test/features/test_docs_endpoint.test.py#L291 (Test: |
Implementation: src/ros2_medkit_integration_tests/test/features/test_docs_endpoint.test.py#L277 (Test: |
Implementation: src/ros2_medkit_integration_tests/test/features/test_docs_endpoint.test.py#L131 (Test: |
Test Case: test_area_components_nonexistent_error TEST_TestEntityListing_test_area_components_nonexistent_error
|
Implementation: src/ros2_medkit_integration_tests/test/features/test_entity_listing.test.py#L153 (Test: |
Implementation: src/ros2_medkit_integration_tests/test/features/test_entity_listing.test.py#L140 (Test: |
Test Case: test_invalid_app_id_special_chars TEST_TestEntityListing_test_invalid_app_id_special_chars
|
Implementation: src/ros2_medkit_integration_tests/test/features/test_entity_listing.test.py#L171 (Test: |
Test Case: test_invalid_area_id_special_chars TEST_TestEntityListing_test_invalid_area_id_special_chars
|
Implementation: src/ros2_medkit_integration_tests/test/features/test_entity_listing.test.py#L203 (Test: |
Test Case: test_invalid_ids_with_special_chars TEST_TestEntityListing_test_invalid_ids_with_special_chars
|
Implementation: src/ros2_medkit_integration_tests/test/features/test_entity_listing.test.py#L256 (Test: |
Test Case: test_list_areas_empty_in_runtime_mode TEST_TestEntityListing_test_list_areas_empty_in_runtime_mode
|
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: |
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: |
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: |
Implementation: src/ros2_medkit_integration_tests/test/features/test_entity_listing.test.py#L231 (Test: |
Test Case: test_app_is_located_on_endpoint TEST_TestEntityModelRuntime_test_app_is_located_on_endpoint
|
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 Case: test_apps_linked_to_default_component TEST_TestEntityModelRuntime_test_apps_linked_to_default_component
|
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 Case: test_areas_empty_in_runtime_mode TEST_TestEntityModelRuntime_test_areas_empty_in_runtime_mode
|
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: |
Implementation: src/ros2_medkit_integration_tests/test/features/test_entity_model_runtime.test.py#L152 (Test: |
Test Case: test_default_component_from_host TEST_TestEntityModelRuntime_test_default_component_from_host
|
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 Case: test_function_detail_shows_namespace_source TEST_TestEntityModelRuntime_test_function_detail_shows_namespace_source
|
Implementation: src/ros2_medkit_integration_tests/test/features/test_entity_model_runtime.test.py#L83 (Test: |
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 Case: test_multiple_apps_same_component TEST_TestEntityModelRuntime_test_multiple_apps_same_component
|
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 Case: test_namespaces_create_functions TEST_TestEntityModelRuntime_test_namespaces_create_functions
|
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: |
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 Case: test_component_route_rejects_app_id_configurations TEST_TestEntityRouting_test_component_route_rejects_app_id_configurations
|
Implementation: src/ros2_medkit_integration_tests/test/features/test_entity_routing.test.py#L135 (Test: |
Test Case: test_component_route_rejects_app_id_data TEST_TestEntityRouting_test_component_route_rejects_app_id_data
|
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 Case: test_component_route_rejects_app_id_faults TEST_TestEntityRouting_test_component_route_rejects_app_id_faults
|
Implementation: src/ros2_medkit_integration_tests/test/features/test_entity_routing.test.py#L152 (Test: |
Test Case: test_component_route_rejects_app_id_operations TEST_TestEntityRouting_test_component_route_rejects_app_id_operations
|
Implementation: src/ros2_medkit_integration_tests/test/features/test_entity_routing.test.py#L118 (Test: |
Test Case: test_16_snapshot_capture_on_fault_confirmation TEST_TestFaultManagerIntegration_test_16_snapshot_capture_on_fault_confirmation
|
Test that snapshot is captured when fault is confirmed. Implementation: src/ros2_medkit_fault_manager/test/test_integration.test.py#L559 (Test: |
Test Case: test_17_get_snapshots_nonexistent_fault TEST_TestFaultManagerIntegration_test_17_get_snapshots_nonexistent_fault
|
Test GetSnapshots returns error for nonexistent fault. Implementation: src/ros2_medkit_fault_manager/test/test_integration.test.py#L636 (Test: |
Test Case: test_18_get_snapshots_empty_fault_code TEST_TestFaultManagerIntegration_test_18_get_snapshots_empty_fault_code
|
Test GetSnapshots returns error for empty fault code. Implementation: src/ros2_medkit_fault_manager/test/test_integration.test.py#L652 (Test: |
Test Case: test_19_snapshot_with_topic_filter TEST_TestFaultManagerIntegration_test_19_snapshot_with_topic_filter
|
Test GetSnapshots with specific topic filter. Implementation: src/ros2_medkit_fault_manager/test/test_integration.test.py#L668 (Test: |
Test Case: test_20_snapshot_config_loads_patterns TEST_TestFaultManagerIntegration_test_20_snapshot_config_loads_patterns
|
Test that pattern-based config is loaded correctly. Implementation: src/ros2_medkit_fault_manager/test/test_integration.test.py#L699 (Test: |
Implementation: src/ros2_medkit_integration_tests/test/features/test_faults_api.test.py#L103 (Test: |
Implementation: src/ros2_medkit_integration_tests/test/features/test_faults_api.test.py#L121 (Test: |
Test Case: test_list_faults_response_structure TEST_TestFaultsApi_test_list_faults_response_structure
|
In the heuristic discovery model, ROS nodes are Apps. Implementation: src/ros2_medkit_integration_tests/test/features/test_faults_api.test.py#L79 (Test: |
Implementation: src/ros2_medkit_integration_tests/test/features/test_faults_api.test.py#L48 (Test: |
Test Case: test_app_accessible_without_areas TEST_TestFlatEntityTree_test_app_accessible_without_areas
|
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: |
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: |
Implementation: src/ros2_medkit_integration_tests/test/features/test_flat_entity_tree.test.py#L68 (Test: |
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: |
Expected: autonomous-navigation, teleoperation. Implementation: src/ros2_medkit_integration_tests/test/features/test_flat_entity_tree.test.py#L146 (Test: |
Expected: raspberry-pi, opencr-board, lds-sensor. Implementation: src/ros2_medkit_integration_tests/test/features/test_flat_entity_tree.test.py#L100 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_gateway_node.cpp#L883 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_gateway_node.cpp#L801 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_gateway_node.cpp#L811 (Test: |
Test Case: test_execution_update_execution_not_found TEST_TestGatewayNode_test_execution_update_execution_not_found
|
Implementation: src/ros2_medkit_gateway/test/test_gateway_node.cpp#L707 (Test: |
Test Case: test_execution_update_invalid_component_id TEST_TestGatewayNode_test_execution_update_invalid_component_id
|
Implementation: src/ros2_medkit_gateway/test/test_gateway_node.cpp#L667 (Test: |
Test Case: test_execution_update_missing_capability TEST_TestGatewayNode_test_execution_update_missing_capability
|
Implementation: src/ros2_medkit_gateway/test/test_gateway_node.cpp#L680 (Test: |
Test Case: test_execution_update_unsupported_capability TEST_TestGatewayNode_test_execution_update_unsupported_capability
|
Implementation: src/ros2_medkit_gateway/test/test_gateway_node.cpp#L693 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_gateway_node.cpp#L304 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_gateway_node.cpp#L320 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_gateway_node.cpp#L233 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_gateway_node.cpp#L279 (Test: |
Implementation: src/ros2_medkit_integration_tests/test/features/test_hateoas.test.py#L165 (Test: |
Implementation: src/ros2_medkit_integration_tests/test/features/test_hateoas.test.py#L90 (Test: |
Test Case: test_area_detail_has_capability_uris TEST_TestHateoas_test_area_detail_has_capability_uris
|
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: |
Implementation: src/ros2_medkit_integration_tests/test/features/test_hateoas.test.py#L110 (Test: |
Test Case: test_component_detail_has_capability_uris TEST_TestHateoas_test_component_detail_has_capability_uris
|
SOVD requires entity details to have flat capability URIs. Implementation: src/ros2_medkit_integration_tests/test/features/test_hateoas.test.py#L134 (Test: |
Implementation: src/ros2_medkit_integration_tests/test/features/test_hateoas.test.py#L70 (Test: |
Uses ‘powertrain’ area which contains components in the manifest. Implementation: src/ros2_medkit_integration_tests/test/features/test_hateoas.test.py#L294 (Test: |
Implementation: src/ros2_medkit_integration_tests/test/features/test_hateoas.test.py#L379 (Test: |
Implementation: src/ros2_medkit_integration_tests/test/features/test_hateoas.test.py#L405 (Test: |
Implementation: src/ros2_medkit_integration_tests/test/features/test_hateoas.test.py#L352 (Test: |
Test Case: test_function_detail_has_capability_uris TEST_TestHateoas_test_function_detail_has_capability_uris
|
Requires hybrid discovery mode with a manifest that defines functions. Implementation: src/ros2_medkit_integration_tests/test/features/test_hateoas.test.py#L210 (Test: |
Implementation: src/ros2_medkit_integration_tests/test/features/test_hateoas.test.py#L468 (Test: |
Implementation: src/ros2_medkit_integration_tests/test/features/test_hateoas.test.py#L322 (Test: |
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: |
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: |
Uses ‘powertrain’ area which has subareas defined in the manifest. Implementation: src/ros2_medkit_integration_tests/test/features/test_hateoas.test.py#L238 (Test: |
Implementation: src/ros2_medkit_integration_tests/test/features/test_hateoas.test.py#L263 (Test: |
Test Case: test_x_medkit_extension_in_list_responses TEST_TestHateoas_test_x_medkit_extension_in_list_responses
|
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: |
Implementation: src/ros2_medkit_integration_tests/test/features/test_health.test.py#L131 (Test: |
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: |
Implementation: src/ros2_medkit_integration_tests/test/features/test_health.test.py#L47 (Test: |
Implementation: src/ros2_medkit_integration_tests/test/features/test_health.test.py#L55 (Test: |
Implementation: src/ros2_medkit_integration_tests/test/features/test_health.test.py#L114 (Test: |
Implementation: src/ros2_medkit_integration_tests/test/features/test_health.test.py#L93 (Test: |
App count must match manifest exactly - no underscored duplicates. Implementation: src/ros2_medkit_integration_tests/test/features/test_hybrid_suppression.test.py#L169 (Test: |
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: |
Component count must match manifest exactly - no underscored duplicates. Implementation: src/ros2_medkit_integration_tests/test/features/test_hybrid_suppression.test.py#L148 (Test: |
Function count must match manifest exactly. Implementation: src/ros2_medkit_integration_tests/test/features/test_hybrid_suppression.test.py#L185 (Test: |
Health endpoint should confirm hybrid discovery mode. Implementation: src/ros2_medkit_integration_tests/test/features/test_hybrid_suppression.test.py#L281 (Test: |
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 Case: test_no_root_or_synthetic_areas TEST_TestHybridSuppression_test_no_root_or_synthetic_areas
|
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 Case: test_no_underscored_app_duplicates TEST_TestHybridSuppression_test_no_underscored_app_duplicates
|
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 Case: test_no_underscored_component_duplicates TEST_TestHybridSuppression_test_no_underscored_component_duplicates
|
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 Case: test_health_surfaces_leaf_collision_with_both_peers TEST_TestLeafCollisionAggregation_test_health_surfaces_leaf_collision_with_both_peers
|
Implementation: src/ros2_medkit_integration_tests/test/features/test_leaf_collision_aggregation.test.py#L220 (Test: |
Test Case: test_shared_leaf_resolves_to_exactly_one_peer TEST_TestLeafCollisionAggregation_test_shared_leaf_resolves_to_exactly_one_peer
|
Implementation: src/ros2_medkit_integration_tests/test/features/test_leaf_collision_aggregation.test.py#L238 (Test: |
Test Case: test_global_clear_skips_locked_entity_faults TEST_TestLockingFaults_test_global_clear_skips_locked_entity_faults
|
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 Case: test_component_lock_allows_owner_on_child TEST_TestLockingPropagation_test_component_lock_allows_owner_on_child
|
Lock owner can still access child app. Implementation: src/ros2_medkit_integration_tests/test/features/test_locking_propagation.test.py#L107 (Test: |
Test Case: test_component_lock_blocks_child_app TEST_TestLockingPropagation_test_component_lock_blocks_child_app
|
Lock on component blocks mutating operations on child app. Implementation: src/ros2_medkit_integration_tests/test/features/test_locking_propagation.test.py#L78 (Test: |
Acquire a lock on an app and verify the response. Implementation: src/ros2_medkit_integration_tests/test/features/test_locking.test.py#L103 (Test: |
Acquire a scoped lock. Implementation: src/ros2_medkit_integration_tests/test/features/test_locking.test.py#L119 (Test: |
Test Case: test_acquire_without_client_id_returns_400 TEST_TestLocking_test_acquire_without_client_id_returns_400
|
Acquire without X-Client-Id header returns 400. Implementation: src/ros2_medkit_integration_tests/test/features/test_locking.test.py#L297 (Test: |
Test Case: test_acquire_without_expiration_returns_400 TEST_TestLocking_test_acquire_without_expiration_returns_400
|
Acquire without lock_expiration returns 400. Implementation: src/ros2_medkit_integration_tests/test/features/test_locking.test.py#L307 (Test: |
Second acquire by different client returns 409. Implementation: src/ros2_medkit_integration_tests/test/features/test_locking.test.py#L313 (Test: |
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: |
Acquire then extend a lock’s expiration. Implementation: src/ros2_medkit_integration_tests/test/features/test_locking.test.py#L174 (Test: |
Acquire then get lock details by lock ID. Implementation: src/ros2_medkit_integration_tests/test/features/test_locking.test.py#L155 (Test: |
Acquire then list locks. Implementation: src/ros2_medkit_integration_tests/test/features/test_locking.test.py#L131 (Test: |
List locks when none exist returns empty items. Implementation: src/ros2_medkit_integration_tests/test/features/test_locking.test.py#L148 (Test: |
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: |
Lock with short TTL expires and no longer blocks access. Implementation: src/ros2_medkit_integration_tests/test/features/test_locking.test.py#L345 (Test: |
Acquiring lock on nonexistent entity returns 404. Implementation: src/ros2_medkit_integration_tests/test/features/test_locking.test.py#L371 (Test: |
The ‘owned’ field reflects the requesting client. Implementation: src/ros2_medkit_integration_tests/test/features/test_locking.test.py#L272 (Test: |
Acquire then release a lock, verify it’s gone. Implementation: src/ros2_medkit_integration_tests/test/features/test_locking.test.py#L192 (Test: |
Releasing another client’s lock returns 403. Implementation: src/ros2_medkit_integration_tests/test/features/test_locking.test.py#L328 (Test: |
Test Case: test_scoped_lock_allows_other_collections TEST_TestLocking_test_scoped_lock_allows_other_collections
|
Scoped lock on configurations does not block data writes. Implementation: src/ros2_medkit_integration_tests/test/features/test_locking.test.py#L230 (Test: |
Test Case: test_configurations_subscription_create TEST_TestMultiCollectionSubscriptions_test_configurations_subscription_create
|
Implementation: src/ros2_medkit_integration_tests/test/features/test_multi_collection_subscriptions.test.py#L178 (Test: |
Test Case: test_data_subscription_create TEST_TestMultiCollectionSubscriptions_test_data_subscription_create
|
Implementation: src/ros2_medkit_integration_tests/test/features/test_multi_collection_subscriptions.test.py#L142 (Test: |
Implementation: src/ros2_medkit_integration_tests/test/features/test_multi_collection_subscriptions.test.py#L346 (Test: |
Test Case: test_faults_subscription_create TEST_TestMultiCollectionSubscriptions_test_faults_subscription_create
|
Implementation: src/ros2_medkit_integration_tests/test/features/test_multi_collection_subscriptions.test.py#L161 (Test: |
Implementation: src/ros2_medkit_integration_tests/test/features/test_multi_collection_subscriptions.test.py#L302 (Test: |
Implementation: src/ros2_medkit_integration_tests/test/features/test_multi_collection_subscriptions.test.py#L280 (Test: |
Test Case: test_logs_subscription_create TEST_TestMultiCollectionSubscriptions_test_logs_subscription_create
|
Implementation: src/ros2_medkit_integration_tests/test/features/test_multi_collection_subscriptions.test.py#L195 (Test: |
Test Case: test_logs_subscription_sse_stream TEST_TestMultiCollectionSubscriptions_test_logs_subscription_sse_stream
|
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 Case: test_update_subscription_interval TEST_TestMultiCollectionSubscriptions_test_update_subscription_interval
|
Implementation: src/ros2_medkit_integration_tests/test/features/test_multi_collection_subscriptions.test.py#L325 (Test: |
Test Case: test_all_endpoints_accept_spec_requests TEST_TestOpenApiCallability_test_all_endpoints_accept_spec_requests
|
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 Case: test_configurations_payload_uses_nested_x_medkit TEST_TestOpenApiResponseDrift_test_configurations_payload_uses_nested_x_medkit
|
Items at the top level (only in aggregated mode) and parameters
inside Implementation: src/ros2_medkit_integration_tests/test/features/test_openapi_response_drift.test.py#L368 (Test: |
Test Case: test_get_responses_match_declared_schema TEST_TestOpenApiResponseDrift_test_get_responses_match_declared_schema
|
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
Implementation: src/ros2_medkit_integration_tests/test/features/test_openapi_response_drift.test.py#L255 (Test: |
Test Case: test_update_status_payload_uses_nested_x_medkit TEST_TestOpenApiResponseDrift_test_update_status_payload_uses_nested_x_medkit
|
The handler must emit Implementation: src/ros2_medkit_integration_tests/test/features/test_openapi_response_drift.test.py#L349 (Test: |
Test Case: test_cancel_nonexistent_execution TEST_TestOperationsApi_test_cancel_nonexistent_execution
|
Implementation: src/ros2_medkit_integration_tests/test/features/test_operations_api.test.py#L466 (Test: |
Test Case: test_create_execution_for_service TEST_TestOperationsApi_test_create_execution_for_service
|
Implementation: src/ros2_medkit_integration_tests/test/features/test_operations_api.test.py#L429 (Test: |
Test Case: test_get_operation_details_for_apps TEST_TestOperationsApi_test_get_operation_details_for_apps
|
Implementation: src/ros2_medkit_integration_tests/test/features/test_operations_api.test.py#L353 (Test: |
Test Case: test_get_operation_details_for_service TEST_TestOperationsApi_test_get_operation_details_for_service
|
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: |
Implementation: src/ros2_medkit_integration_tests/test/features/test_operations_api.test.py#L389 (Test: |
Test Case: test_list_executions_returns_items_array TEST_TestOperationsApi_test_list_executions_returns_items_array
|
Implementation: src/ros2_medkit_integration_tests/test/features/test_operations_api.test.py#L410 (Test: |
Implementation: src/ros2_medkit_integration_tests/test/features/test_operations_api.test.py#L486 (Test: |
Test Case: test_operation_call_calibrate_service TEST_TestOperationsApi_test_operation_call_calibrate_service
|
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 Case: test_operation_call_invalid_entity_id TEST_TestOperationsApi_test_operation_call_invalid_entity_id
|
Implementation: src/ros2_medkit_integration_tests/test/features/test_operations_api.test.py#L132 (Test: |
Test Case: test_operation_call_invalid_operation_name TEST_TestOperationsApi_test_operation_call_invalid_operation_name
|
Implementation: src/ros2_medkit_integration_tests/test/features/test_operations_api.test.py#L159 (Test: |
Test Case: test_operation_call_nonexistent_entity TEST_TestOperationsApi_test_operation_call_nonexistent_entity
|
Implementation: src/ros2_medkit_integration_tests/test/features/test_operations_api.test.py#L116 (Test: |
Test Case: test_operation_call_nonexistent_operation TEST_TestOperationsApi_test_operation_call_nonexistent_operation
|
Implementation: src/ros2_medkit_integration_tests/test/features/test_operations_api.test.py#L98 (Test: |
Test Case: test_operation_call_with_invalid_json TEST_TestOperationsApi_test_operation_call_with_invalid_json
|
Implementation: src/ros2_medkit_integration_tests/test/features/test_operations_api.test.py#L186 (Test: |
Test Case: test_operations_listed_in_app_discovery TEST_TestOperationsApi_test_operations_listed_in_app_discovery
|
Implementation: src/ros2_medkit_integration_tests/test/features/test_operations_api.test.py#L207 (Test: |
Test Case: test_root_endpoint_includes_operations TEST_TestOperationsApi_test_root_endpoint_includes_operations
|
Implementation: src/ros2_medkit_integration_tests/test/features/test_operations_api.test.py#L241 (Test: |
Test Case: test_01_create_action_execution_and_poll_to_completion TEST_TestScenarioActionLifecycle_test_01_create_action_execution_and_poll_to_completion
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_action_lifecycle.test.py#L100 (Test: |
Test Case: test_02_cancel_action_execution TEST_TestScenarioActionLifecycle_test_02_cancel_action_execution
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_action_lifecycle.test.py#L118 (Test: |
Test Case: test_03_service_execution_returns_immediately TEST_TestScenarioActionLifecycle_test_03_service_execution_returns_immediately
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_action_lifecycle.test.py#L145 (Test: |
Test Case: test_04_execution_appears_in_list TEST_TestScenarioActionLifecycle_test_04_execution_appears_in_list
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_action_lifecycle.test.py#L187 (Test: |
Test Case: test_06_get_operation_details TEST_TestScenarioActionLifecycle_test_06_get_operation_details
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_action_lifecycle.test.py#L257 (Test: |
Test Case: test_07_get_execution_status TEST_TestScenarioActionLifecycle_test_07_get_execution_status
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_action_lifecycle.test.py#L302 (Test: |
Test Case: test_08_update_execution_not_implemented TEST_TestScenarioActionLifecycle_test_08_update_execution_not_implemented
|
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 Case: test_01_download_rosbag_success TEST_TestScenarioBulkDataDownload_test_01_download_rosbag_success
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_bulk_data_download.test.py#L61 (Test: |
Test Case: test_02_download_wrong_entity_returns_404 TEST_TestScenarioBulkDataDownload_test_02_download_wrong_entity_returns_404
|
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 Case: test_03_verify_complete_rosbag_content TEST_TestScenarioBulkDataDownload_test_03_verify_complete_rosbag_content
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_bulk_data_download.test.py#L121 (Test: |
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_bulk_data_upload.test.py#L136 (Test: |
Test Case: test_02_upload_returns_location_header TEST_TestScenarioBulkDataUpload_test_02_upload_returns_location_header
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_bulk_data_upload.test.py#L152 (Test: |
Test Case: test_03_upload_with_description TEST_TestScenarioBulkDataUpload_test_03_upload_with_description
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_bulk_data_upload.test.py#L170 (Test: |
Test Case: test_04_upload_with_metadata TEST_TestScenarioBulkDataUpload_test_04_upload_with_metadata
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_bulk_data_upload.test.py#L182 (Test: |
Test Case: test_05_upload_missing_file_field TEST_TestScenarioBulkDataUpload_test_05_upload_missing_file_field
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_bulk_data_upload.test.py#L196 (Test: |
Test Case: test_06_upload_unknown_category TEST_TestScenarioBulkDataUpload_test_06_upload_unknown_category
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_bulk_data_upload.test.py#L207 (Test: |
Test Case: test_07_upload_rosbags_rejected TEST_TestScenarioBulkDataUpload_test_07_upload_rosbags_rejected
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_bulk_data_upload.test.py#L217 (Test: |
Test Case: test_08_upload_nonexistent_entity TEST_TestScenarioBulkDataUpload_test_08_upload_nonexistent_entity
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_bulk_data_upload.test.py#L228 (Test: |
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_bulk_data_upload.test.py#L238 (Test: |
Test Case: test_10_upload_to_functions_405 TEST_TestScenarioBulkDataUpload_test_10_upload_to_functions_405
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_bulk_data_upload.test.py#L249 (Test: |
Test Case: test_11_delete_uploaded_item TEST_TestScenarioBulkDataUpload_test_11_delete_uploaded_item
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_bulk_data_upload.test.py#L261 (Test: |
Test Case: test_12_delete_nonexistent_item TEST_TestScenarioBulkDataUpload_test_12_delete_nonexistent_item
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_bulk_data_upload.test.py#L276 (Test: |
Test Case: test_13_delete_rosbags_rejected TEST_TestScenarioBulkDataUpload_test_13_delete_rosbags_rejected
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_bulk_data_upload.test.py#L285 (Test: |
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_bulk_data_upload.test.py#L294 (Test: |
Test Case: test_15_list_categories_includes_configured TEST_TestScenarioBulkDataUpload_test_15_list_categories_includes_configured
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_bulk_data_upload.test.py#L306 (Test: |
Test Case: test_16_list_descriptors_after_upload TEST_TestScenarioBulkDataUpload_test_16_list_descriptors_after_upload
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_bulk_data_upload.test.py#L319 (Test: |
Test Case: test_17_download_uploaded_file TEST_TestScenarioBulkDataUpload_test_17_download_uploaded_file
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_bulk_data_upload.test.py#L335 (Test: |
Test Case: test_18_download_nonexistent_returns_404 TEST_TestScenarioBulkDataUpload_test_18_download_nonexistent_returns_404
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_bulk_data_upload.test.py#L354 (Test: |
Test Case: test_19_list_empty_after_delete TEST_TestScenarioBulkDataUpload_test_19_list_empty_after_delete
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_bulk_data_upload.test.py#L363 (Test: |
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_bulk_data_upload.test.py#L385 (Test: |
Test Case: test_01_list_configurations TEST_TestScenarioConfigManagement_test_01_list_configurations
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_config_management.test.py#L64 (Test: |
Test Case: test_02_get_configuration_value TEST_TestScenarioConfigManagement_test_02_get_configuration_value
|
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 Case: test_03_set_and_verify_configuration TEST_TestScenarioConfigManagement_test_03_set_and_verify_configuration
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_config_management.test.py#L104 (Test: |
Test Case: test_04_reset_all_configurations TEST_TestScenarioConfigManagement_test_04_reset_all_configurations
|
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 Case: test_05_reset_single_configuration TEST_TestScenarioConfigManagement_test_05_reset_single_configuration
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_config_management.test.py#L182 (Test: |
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_data_publish_verify.test.py#L63 (Test: |
Test Case: test_02_publish_command_to_actuator TEST_TestScenarioDataPublishVerify_test_02_publish_command_to_actuator
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_data_publish_verify.test.py#L87 (Test: |
Test Case: test_03_read_actuator_feedback TEST_TestScenarioDataPublishVerify_test_03_read_actuator_feedback
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_data_publish_verify.test.py#L112 (Test: |
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 Case: test_02_area_with_description TEST_TestScenarioDiscoveryHybrid_test_02_area_with_description
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_discovery_hybrid.test.py#L127 (Test: |
Test Case: test_03_area_subareas_hierarchy TEST_TestScenarioDiscoveryHybrid_test_03_area_subareas_hierarchy
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_discovery_hybrid.test.py#L137 (Test: |
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_discovery_hybrid.test.py#L147 (Test: |
Test Case: test_05_components_from_manifest TEST_TestScenarioDiscoveryHybrid_test_05_components_from_manifest
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_discovery_hybrid.test.py#L160 (Test: |
Test Case: test_06_component_type_preserved TEST_TestScenarioDiscoveryHybrid_test_06_component_type_preserved
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_discovery_hybrid.test.py#L170 (Test: |
Test Case: test_07_component_area_relationship TEST_TestScenarioDiscoveryHybrid_test_07_component_area_relationship
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_discovery_hybrid.test.py#L178 (Test: |
Test Case: test_08_component_subcomponents TEST_TestScenarioDiscoveryHybrid_test_08_component_subcomponents
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_discovery_hybrid.test.py#L189 (Test: |
Test Case: test_09_component_subcomponents_not_found TEST_TestScenarioDiscoveryHybrid_test_09_component_subcomponents_not_found
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_discovery_hybrid.test.py#L198 (Test: |
Test Case: test_10_component_depends_on_returns_items TEST_TestScenarioDiscoveryHybrid_test_10_component_depends_on_returns_items
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_discovery_hybrid.test.py#L207 (Test: |
Test Case: test_11_component_depends_on_empty TEST_TestScenarioDiscoveryHybrid_test_11_component_depends_on_empty
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_discovery_hybrid.test.py#L224 (Test: |
Test Case: test_12_component_depends_on_not_found TEST_TestScenarioDiscoveryHybrid_test_12_component_depends_on_not_found
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_discovery_hybrid.test.py#L233 (Test: |
Test Case: test_13_component_capabilities_includes_depends_on_link TEST_TestScenarioDiscoveryHybrid_test_13_component_capabilities_includes_depends_on_link
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_discovery_hybrid.test.py#L240 (Test: |
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_discovery_hybrid.test.py#L259 (Test: |
Test Case: test_15_app_online_with_runtime_node TEST_TestScenarioDiscoveryHybrid_test_15_app_online_with_runtime_node
|
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 Case: test_19_app_depends_on_relationship TEST_TestScenarioDiscoveryHybrid_test_19_app_depends_on_relationship
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_discovery_hybrid.test.py#L345 (Test: |
Test Case: test_20_functions_from_manifest TEST_TestScenarioDiscoveryHybrid_test_20_functions_from_manifest
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_discovery_hybrid.test.py#L358 (Test: |
Test Case: test_21_function_hosts_relationship TEST_TestScenarioDiscoveryHybrid_test_21_function_hosts_relationship
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_discovery_hybrid.test.py#L371 (Test: |
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_discovery_hybrid.test.py#L395 (Test: |
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: |
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_discovery_manifest.test.py#L134 (Test: |
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_discovery_manifest.test.py#L149 (Test: |
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_discovery_manifest.test.py#L159 (Test: |
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_discovery_manifest.test.py#L171 (Test: |
Test Case: test_07_get_component_details TEST_TestScenarioDiscoveryManifest_test_07_get_component_details
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_discovery_manifest.test.py#L184 (Test: |
Test Case: test_09_component_subcomponents TEST_TestScenarioDiscoveryManifest_test_09_component_subcomponents
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_discovery_manifest.test.py#L200 (Test: |
Test Case: test_10_component_subcomponents_not_found TEST_TestScenarioDiscoveryManifest_test_10_component_subcomponents_not_found
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_discovery_manifest.test.py#L209 (Test: |
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_discovery_manifest.test.py#L222 (Test: |
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_discovery_manifest.test.py#L238 (Test: |
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_discovery_manifest.test.py#L269 (Test: |
Test Case: test_17_app_configurations_endpoint TEST_TestScenarioDiscoveryManifest_test_17_app_configurations_endpoint
|
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 Case: test_18_app_data_item_endpoint TEST_TestScenarioDiscoveryManifest_test_18_app_data_item_endpoint
|
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: |
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_discovery_manifest.test.py#L318 (Test: |
Test Case: test_20_get_function_details TEST_TestScenarioDiscoveryManifest_test_20_get_function_details
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_discovery_manifest.test.py#L334 (Test: |
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_discovery_manifest.test.py#L349 (Test: |
Test Case: test_01_fault_response_structure TEST_TestScenarioFaultInspection_test_01_fault_response_structure
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_fault_inspection.test.py#L89 (Test: |
Test Case: test_02_fault_status_object_structure TEST_TestScenarioFaultInspection_test_02_fault_status_object_structure
|
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 Case: test_03_fault_environment_data_structure TEST_TestScenarioFaultInspection_test_03_fault_environment_data_structure
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_fault_inspection.test.py#L123 (Test: |
Test Case: test_04_fault_snapshot_freeze_frame TEST_TestScenarioFaultInspection_test_04_fault_snapshot_freeze_frame
|
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 Case: test_05_fault_snapshot_rosbag_has_bulk_data_uri TEST_TestScenarioFaultInspection_test_05_fault_snapshot_rosbag_has_bulk_data_uri
|
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 Case: test_06_fault_x_medkit_extensions TEST_TestScenarioFaultInspection_test_06_fault_x_medkit_extensions
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_fault_inspection.test.py#L174 (Test: |
Test Case: test_01_wait_for_faults_to_appear TEST_TestScenarioFaultLifecycle_test_01_wait_for_faults_to_appear
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_fault_lifecycle.test.py#L71 (Test: |
Test Case: test_02_delete_all_faults_for_component TEST_TestScenarioFaultLifecycle_test_02_delete_all_faults_for_component
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_fault_lifecycle.test.py#L88 (Test: |
Test Case: test_03_delete_all_faults_for_app TEST_TestScenarioFaultLifecycle_test_03_delete_all_faults_for_app
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_fault_lifecycle.test.py#L105 (Test: |
Test Case: test_04_delete_all_faults_nonexistent TEST_TestScenarioFaultLifecycle_test_04_delete_all_faults_nonexistent
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_fault_lifecycle.test.py#L119 (Test: |
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 Case: test_01_create_subscription_returns_201_with_correct_schema TEST_TestScenarioSubscriptions_test_01_create_subscription_returns_201_with_correct_schema
|
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 Case: test_02_list_subscriptions_returns_created_ones TEST_TestScenarioSubscriptions_test_02_list_subscriptions_returns_created_ones
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_subscriptions.test.py#L182 (Test: |
Test Case: test_03_get_single_subscription TEST_TestScenarioSubscriptions_test_03_get_single_subscription
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_subscriptions.test.py#L212 (Test: |
Test Case: test_04_update_subscription_interval TEST_TestScenarioSubscriptions_test_04_update_subscription_interval
|
Dashboard user decides they need higher-frequency updates. Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_subscriptions.test.py#L231 (Test: |
Test Case: test_05_update_subscription_duration TEST_TestScenarioSubscriptions_test_05_update_subscription_duration
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_subscriptions.test.py#L252 (Test: |
Test Case: test_06_delete_subscription_returns_204 TEST_TestScenarioSubscriptions_test_06_delete_subscription_returns_204
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_subscriptions.test.py#L267 (Test: |
Test Case: test_07_empty_list_after_delete TEST_TestScenarioSubscriptions_test_07_empty_list_after_delete
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_subscriptions.test.py#L287 (Test: |
Test Case: test_10_sse_stream_returns_correct_headers TEST_TestScenarioSubscriptions_test_10_sse_stream_returns_correct_headers
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_subscriptions.test.py#L307 (Test: |
Test Case: test_11_sse_stream_delivers_periodic_data TEST_TestScenarioSubscriptions_test_11_sse_stream_delivers_periodic_data
|
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 Case: test_12_sse_stream_closes_on_subscription_delete TEST_TestScenarioSubscriptions_test_12_sse_stream_closes_on_subscription_delete
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_subscriptions.test.py#L378 (Test: |
Test Case: test_20_create_with_invalid_interval_returns_400 TEST_TestScenarioSubscriptions_test_20_create_with_invalid_interval_returns_400
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_subscriptions.test.py#L427 (Test: |
Test Case: test_21_create_with_zero_duration_returns_400 TEST_TestScenarioSubscriptions_test_21_create_with_zero_duration_returns_400
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_subscriptions.test.py#L445 (Test: |
Test Case: test_22_create_with_unsupported_protocol_returns_400 TEST_TestScenarioSubscriptions_test_22_create_with_unsupported_protocol_returns_400
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_subscriptions.test.py#L462 (Test: |
Test Case: test_23_create_with_invalid_resource_uri_returns_400 TEST_TestScenarioSubscriptions_test_23_create_with_invalid_resource_uri_returns_400
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_subscriptions.test.py#L480 (Test: |
Test Case: test_24_get_nonexistent_subscription_returns_404 TEST_TestScenarioSubscriptions_test_24_get_nonexistent_subscription_returns_404
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_subscriptions.test.py#L497 (Test: |
Test Case: test_25_delete_nonexistent_subscription_returns_404 TEST_TestScenarioSubscriptions_test_25_delete_nonexistent_subscription_returns_404
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_subscriptions.test.py#L509 (Test: |
Test Case: test_26_update_nonexistent_subscription_returns_404 TEST_TestScenarioSubscriptions_test_26_update_nonexistent_subscription_returns_404
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_subscriptions.test.py#L520 (Test: |
Test Case: test_27_create_for_nonexistent_entity_returns_404 TEST_TestScenarioSubscriptions_test_27_create_for_nonexistent_entity_returns_404
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_subscriptions.test.py#L532 (Test: |
Test Case: test_28_sse_stream_for_nonexistent_subscription_returns_404 TEST_TestScenarioSubscriptions_test_28_sse_stream_for_nonexistent_subscription_returns_404
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_subscriptions.test.py#L549 (Test: |
Test Case: test_30_cyclic_subscriptions_work_on_components TEST_TestScenarioSubscriptions_test_30_cyclic_subscriptions_work_on_components
|
Implementation: src/ros2_medkit_integration_tests/test/scenarios/test_scenario_subscriptions.test.py#L564 (Test: |
GET /apps/{app}/scripts returns empty items initially. Implementation: src/ros2_medkit_integration_tests/test/features/test_scripts_api.test.py#L218 (Test: |
Upload a script, verify it appears in the list. Implementation: src/ros2_medkit_integration_tests/test/features/test_scripts_api.test.py#L225 (Test: |
GET /apps/{app}/scripts/{id} returns full metadata. Implementation: src/ros2_medkit_integration_tests/test/features/test_scripts_api.test.py#L235 (Test: |
Test Case: test_04_get_nonexistent_returns_404 TEST_TestScriptsCRUD_test_04_get_nonexistent_returns_404
|
GET /apps/{app}/scripts/nonexistent returns 404. Implementation: src/ros2_medkit_integration_tests/test/features/test_scripts_api.test.py#L246 (Test: |
DELETE /apps/{app}/scripts/{id} removes it. Implementation: src/ros2_medkit_integration_tests/test/features/test_scripts_api.test.py#L255 (Test: |
Test Case: test_06_delete_nonexistent_returns_404 TEST_TestScriptsCRUD_test_06_delete_nonexistent_returns_404
|
DELETE /apps/{app}/scripts/nonexistent returns 404. Implementation: src/ros2_medkit_integration_tests/test/features/test_scripts_api.test.py#L273 (Test: |
POST without multipart file field returns 400. Implementation: src/ros2_medkit_integration_tests/test/features/test_scripts_api.test.py#L282 (Test: |
Upload with metadata field sets custom name and description. Implementation: src/ros2_medkit_integration_tests/test/features/test_scripts_api.test.py#L301 (Test: |
Upload Python script, execute, poll until completed. Implementation: src/ros2_medkit_integration_tests/test/features/test_scripts_api.test.py#L365 (Test: |
Upload shell script, execute, poll until completed. Implementation: src/ros2_medkit_integration_tests/test/features/test_scripts_api.test.py#L388 (Test: |
Test Case: test_03_terminate_running_execution TEST_TestScriptsExecution_test_03_terminate_running_execution
|
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 Case: test_06_get_nonexistent_execution TEST_TestScriptsExecution_test_06_get_nonexistent_execution
|
GET nonexistent execution returns 404. Implementation: src/ros2_medkit_integration_tests/test/features/test_scripts_api.test.py#L511 (Test: |
Test Case: test_07_start_execution_missing_type TEST_TestScriptsExecution_test_07_start_execution_missing_type
|
POST without execution_type returns 400. Implementation: src/ros2_medkit_integration_tests/test/features/test_scripts_api.test.py#L522 (Test: |
Test Case: test_08_start_execution_invalid_json TEST_TestScriptsExecution_test_08_start_execution_invalid_json
|
POST with invalid JSON body returns 400. Implementation: src/ros2_medkit_integration_tests/test/features/test_scripts_api.test.py#L533 (Test: |
Test Case: test_09_execution_has_timestamps TEST_TestScriptsExecution_test_09_execution_has_timestamps
|
Completed execution has started_at and completed_at timestamps. Implementation: src/ros2_medkit_integration_tests/test/features/test_scripts_api.test.py#L545 (Test: |
Upload and execute a .bash script. Implementation: src/ros2_medkit_integration_tests/test/features/test_scripts_api.test.py#L566 (Test: |
Test Case: test_11_output_content_verified TEST_TestScriptsExecution_test_11_output_content_verified
|
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: |
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 Case: test_13_failed_script_execution TEST_TestScriptsExecution_test_13_failed_script_execution
|
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: |
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 Case: test_01_list_scripts_returns_501 TEST_TestScriptsNotConfigured_test_01_list_scripts_returns_501
|
GET /apps/{app}/scripts returns 501 without backend. Implementation: src/ros2_medkit_integration_tests/test/features/test_scripts_api.test.py#L117 (Test: |
Test Case: test_02_upload_script_returns_501 TEST_TestScriptsNotConfigured_test_02_upload_script_returns_501
|
POST /apps/{app}/scripts returns 501 without backend. Implementation: src/ros2_medkit_integration_tests/test/features/test_scripts_api.test.py#L126 (Test: |
Test Case: test_03_get_script_returns_501 TEST_TestScriptsNotConfigured_test_03_get_script_returns_501
|
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 Case: test_04_delete_script_returns_501 TEST_TestScriptsNotConfigured_test_04_delete_script_returns_501
|
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 Case: test_05_start_execution_returns_501 TEST_TestScriptsNotConfigured_test_05_start_execution_returns_501
|
POST /apps/{app}/scripts/{id}/executions returns 501. Implementation: src/ros2_medkit_integration_tests/test/features/test_scripts_api.test.py#L153 (Test: |
Test Case: test_06_get_execution_returns_501 TEST_TestScriptsNotConfigured_test_06_get_execution_returns_501
|
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 Case: test_07_control_execution_returns_501 TEST_TestScriptsNotConfigured_test_07_control_execution_returns_501
|
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 Case: test_root_endpoint_excludes_legacy_snapshots TEST_TestSnapshotsApi_test_root_endpoint_excludes_legacy_snapshots
|
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: |
Implementation: src/ros2_medkit_integration_tests/test/docker/introspection/test_systemd_introspection.py#L128 (Test: |
Implementation: src/ros2_medkit_integration_tests/test/docker/introspection/test_systemd_introspection.py#L98 (Test: |
Implementation: src/ros2_medkit_integration_tests/test/docker/introspection/test_systemd_introspection.py#L116 (Test: |
Implementation: src/ros2_medkit_integration_tests/test/docker/introspection/test_systemd_introspection.py#L142 (Test: |
Test Case: test_returns_units_aggregation TEST_TestSystemdComponentEndpoint_test_returns_units_aggregation
|
Implementation: src/ros2_medkit_integration_tests/test/docker/introspection/test_systemd_introspection.py#L159 (Test: |
Test Case: test_units_have_active_state TEST_TestSystemdComponentEndpoint_test_units_have_active_state
|
Implementation: src/ros2_medkit_integration_tests/test/docker/introspection/test_systemd_introspection.py#L190 (Test: |
Test Case: test_units_include_node_ids TEST_TestSystemdComponentEndpoint_test_units_include_node_ids
|
Implementation: src/ros2_medkit_integration_tests/test/docker/introspection/test_systemd_introspection.py#L174 (Test: |
Test Case: test_nonexistent_app_returns_404 TEST_TestSystemdErrorHandling_test_nonexistent_app_returns_404
|
Implementation: src/ros2_medkit_integration_tests/test/docker/introspection/test_systemd_introspection.py#L208 (Test: |
Test Case: test_nonexistent_component_returns_404 TEST_TestSystemdErrorHandling_test_nonexistent_component_returns_404
|
Implementation: src/ros2_medkit_integration_tests/test/docker/introspection/test_systemd_introspection.py#L219 (Test: |
Test Case: test_01_create_trigger_returns_201_with_correct_schema TEST_TestTriggersData_test_01_create_trigger_returns_201_with_correct_schema
|
POST creates trigger with correct schema response. Implementation: src/ros2_medkit_integration_tests/test/features/test_triggers_data.test.py#L128 (Test: |
Test Case: test_02_list_triggers_returns_created_trigger TEST_TestTriggersData_test_02_list_triggers_returns_created_trigger
|
GET /triggers returns list with the created trigger. Implementation: src/ros2_medkit_integration_tests/test/features/test_triggers_data.test.py#L152 (Test: |
GET /triggers/{id} returns the trigger details. Implementation: src/ros2_medkit_integration_tests/test/features/test_triggers_data.test.py#L169 (Test: |
PUT /triggers/{id} updates the lifetime. Implementation: src/ros2_medkit_integration_tests/test/features/test_triggers_data.test.py#L186 (Test: |
Test Case: test_05_delete_trigger_returns_204 TEST_TestTriggersData_test_05_delete_trigger_returns_204
|
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 Case: test_10_sse_stream_returns_correct_headers TEST_TestTriggersData_test_10_sse_stream_returns_correct_headers
|
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 Case: test_11_sse_stream_delivers_data_events TEST_TestTriggersData_test_11_sse_stream_delivers_data_events
|
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 Case: test_12_sse_stream_closes_on_trigger_delete TEST_TestTriggersData_test_12_sse_stream_closes_on_trigger_delete
|
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 Case: test_27_events_for_nonexistent_trigger_returns_404 TEST_TestTriggersData_test_27_events_for_nonexistent_trigger_returns_404
|
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 Case: test_01_create_fault_trigger_returns_201 TEST_TestTriggersFaults_test_01_create_fault_trigger_returns_201
|
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: |
GET /triggers lists fault triggers for the entity. Implementation: src/ros2_medkit_integration_tests/test/features/test_triggers_faults.test.py#L109 (Test: |
GET /triggers/{id} returns fault trigger details. Implementation: src/ros2_medkit_integration_tests/test/features/test_triggers_faults.test.py#L125 (Test: |
Test Case: test_04_update_fault_trigger_lifetime TEST_TestTriggersFaults_test_04_update_fault_trigger_lifetime
|
PUT /triggers/{id} updates fault trigger lifetime. Implementation: src/ros2_medkit_integration_tests/test/features/test_triggers_faults.test.py#L140 (Test: |
DELETE /triggers/{id} removes the fault trigger. Implementation: src/ros2_medkit_integration_tests/test/features/test_triggers_faults.test.py#L154 (Test: |
Test Case: test_10_sse_endpoint_connects_and_streams TEST_TestTriggersFaults_test_10_sse_endpoint_connects_and_streams
|
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 Case: test_11_sse_fault_event_has_correct_headers TEST_TestTriggersFaults_test_11_sse_fault_event_has_correct_headers
|
SSE events endpoint for faults returns correct headers. Implementation: src/ros2_medkit_integration_tests/test/features/test_triggers_faults.test.py#L217 (Test: |
Test Case: test_01_component_trigger_created_successfully TEST_TestTriggersHierarchy_test_01_component_trigger_created_successfully
|
Create trigger on component that hosts apps. Implementation: src/ros2_medkit_integration_tests/test/features/test_triggers_hierarchy.test.py#L113 (Test: |
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 Case: test_06_delete_trigger_on_function TEST_TestTriggersHierarchy_test_06_delete_trigger_on_function
|
DELETE removes trigger from function entity. Implementation: src/ros2_medkit_integration_tests/test/features/test_triggers_hierarchy.test.py#L299 (Test: |
POST creates a trigger on logs collection. Implementation: src/ros2_medkit_integration_tests/test/features/test_triggers_logs.test.py#L86 (Test: |
GET /triggers lists log triggers for the entity. Implementation: src/ros2_medkit_integration_tests/test/features/test_triggers_logs.test.py#L110 (Test: |
GET /triggers/{id} returns log trigger details. Implementation: src/ros2_medkit_integration_tests/test/features/test_triggers_logs.test.py#L126 (Test: |
Test Case: test_04_update_logs_trigger_lifetime TEST_TestTriggersLogs_test_04_update_logs_trigger_lifetime
|
PUT /triggers/{id} updates log trigger lifetime. Implementation: src/ros2_medkit_integration_tests/test/features/test_triggers_logs.test.py#L145 (Test: |
DELETE /triggers/{id} removes the log trigger. Implementation: src/ros2_medkit_integration_tests/test/features/test_triggers_logs.test.py#L161 (Test: |
Test Case: test_10_sse_endpoint_connects_for_log_trigger TEST_TestTriggersLogs_test_10_sse_endpoint_connects_for_log_trigger
|
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: |
SSE events endpoint for logs returns correct headers. Implementation: src/ros2_medkit_integration_tests/test/features/test_triggers_logs.test.py#L234 (Test: |
Test Case: test_01_create_persistent_trigger TEST_TestTriggersPersistent_test_01_create_persistent_trigger
|
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 Case: test_02_trigger_listed_on_primary TEST_TestTriggersPersistent_test_02_trigger_listed_on_primary
|
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 Case: test_04_restored_trigger_fields_match TEST_TestTriggersPersistent_test_04_restored_trigger_fields_match
|
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 Case: test_06_delete_via_secondary_removes_from_store TEST_TestTriggersPersistent_test_06_delete_via_secondary_removes_from_store
|
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: |
POST creates a trigger on updates collection. Implementation: src/ros2_medkit_integration_tests/test/features/test_triggers_updates.test.py#L89 (Test: |
GET /triggers lists updates triggers for the entity. Implementation: src/ros2_medkit_integration_tests/test/features/test_triggers_updates.test.py#L107 (Test: |
GET /triggers/{id} returns updates trigger details. Implementation: src/ros2_medkit_integration_tests/test/features/test_triggers_updates.test.py#L126 (Test: |
Test Case: test_04_update_updates_trigger_lifetime TEST_TestTriggersUpdates_test_04_update_updates_trigger_lifetime
|
PUT /triggers/{id} updates the trigger lifetime. Implementation: src/ros2_medkit_integration_tests/test/features/test_triggers_updates.test.py#L148 (Test: |
DELETE /triggers/{id} removes the updates trigger. Implementation: src/ros2_medkit_integration_tests/test/features/test_triggers_updates.test.py#L165 (Test: |
Test Case: test_10_events_endpoint_returns_sse_headers TEST_TestTriggersUpdates_test_10_events_endpoint_returns_sse_headers
|
SSE events endpoint returns correct content-type headers. Implementation: src/ros2_medkit_integration_tests/test/features/test_triggers_updates.test.py#L199 (Test: |
Test Case: test_11_events_for_nonexistent_trigger_returns_404 TEST_TestTriggersUpdates_test_11_events_for_nonexistent_trigger_returns_404
|
GET /events for a nonexistent trigger returns 404. Implementation: src/ros2_medkit_integration_tests/test/features/test_triggers_updates.test.py#L218 (Test: |
Automated update runs prepare + execute and completes. Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L470 (Test: |
Test Case: test_02_automated_on_non_automated_returns_400 TEST_TestUpdatesAutomated_test_02_automated_on_non_automated_returns_400
|
Automated on non-automated package returns 400. Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L486 (Test: |
GET /updates returns empty list initially. Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L229 (Test: |
POST /updates registers a new package. Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L236 (Test: |
GET /updates includes registered package. Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L242 (Test: |
GET /updates/{id} returns full metadata. Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L249 (Test: |
Test Case: test_05_get_nonexistent_returns_404 TEST_TestUpdatesCRUD_test_05_get_nonexistent_returns_404
|
GET /updates/{id} returns 404 for unknown package. Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L275 (Test: |
DELETE /updates/{id} removes the package. Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L283 (Test: |
Test Case: test_07_delete_nonexistent_returns_404 TEST_TestUpdatesCRUD_test_07_delete_nonexistent_returns_404
|
DELETE /updates/{id} returns 404 for unknown package. Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L299 (Test: |
Test Case: test_08_register_duplicate_returns_400 TEST_TestUpdatesCRUD_test_08_register_duplicate_returns_400
|
POST /updates returns 400 when ID already exists. Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L307 (Test: |
GET /updates?origin=remote filters by origin. Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L323 (Test: |
Test Case: test_10_list_with_target_version_filter TEST_TestUpdatesCRUD_test_10_list_with_target_version_filter
|
GET /updates?target-version=X filters by target version. Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L337 (Test: |
Test Case: test_01_delete_during_prepare_returns_409 TEST_TestUpdatesErrorCases_test_01_delete_during_prepare_returns_409
|
Cannot delete a package while prepare is in progress. Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L502 (Test: |
Test Case: test_02_prepare_nonexistent_returns_404 TEST_TestUpdatesErrorCases_test_02_prepare_nonexistent_returns_404
|
Cannot prepare a package that doesn’t exist. Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L518 (Test: |
Test Case: test_03_execute_nonexistent_returns_404 TEST_TestUpdatesErrorCases_test_03_execute_nonexistent_returns_404
|
Cannot execute a package that doesn’t exist. Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L529 (Test: |
Test Case: test_04_register_missing_required_fields TEST_TestUpdatesErrorCases_test_04_register_missing_required_fields
|
POST /updates with missing required fields returns 400. Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L540 (Test: |
Test Case: test_05_register_malformed_json TEST_TestUpdatesErrorCases_test_05_register_malformed_json
|
POST /updates with broken JSON returns 400. Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L553 (Test: |
Test Case: test_01_list_updates_returns_501 TEST_TestUpdatesNoPlugin_test_01_list_updates_returns_501
|
GET /updates returns 501 when no plugin loaded. Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L149 (Test: |
GET /updates/{id} returns 501 when no plugin loaded. Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L156 (Test: |
Test Case: test_03_register_update_returns_501 TEST_TestUpdatesNoPlugin_test_03_register_update_returns_501
|
POST /updates returns 501 when no plugin loaded. Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L163 (Test: |
PUT /updates/{id}/prepare returns 501 when no plugin loaded. Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L179 (Test: |
PUT /updates/{id}/execute returns 501 when no plugin loaded. Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L188 (Test: |
PUT /updates/{id}/automated returns 501 when no plugin loaded. Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L197 (Test: |
GET /updates/{id}/status returns 501 when no plugin loaded. Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L206 (Test: |
DELETE /updates/{id} returns 501 when no plugin loaded. Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L215 (Test: |
Test Case: test_00_status_pending_right_after_register TEST_TestUpdatesPrepareExecute_test_00_status_pending_right_after_register
|
GET /status returns 200 pending immediately after POST /updates. Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L357 (Test: |
PUT /updates/{id}/prepare returns 202 Accepted. Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L371 (Test: |
Prepare workflow completes successfully with status polling. Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L382 (Test: |
Test Case: test_03_execute_after_prepare TEST_TestUpdatesPrepareExecute_test_03_execute_after_prepare
|
Execute succeeds after prepare completes. Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L392 (Test: |
Test Case: test_04_execute_without_prepare_returns_400 TEST_TestUpdatesPrepareExecute_test_04_execute_without_prepare_returns_400
|
Execute before prepare returns 400. Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L410 (Test: |
Test Case: test_05_status_shows_progress TEST_TestUpdatesPrepareExecute_test_05_status_shows_progress
|
Status endpoint shows progress during prepare. Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L419 (Test: |
Test Case: test_06_status_not_found_for_unknown TEST_TestUpdatesPrepareExecute_test_06_status_not_found_for_unknown
|
GET /status for unknown package returns 404. Implementation: src/ros2_medkit_integration_tests/test/features/test_updates.test.py#L455 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_auth_manager.cpp#L150 (Test: |
Implementation: src/ros2_medkit_fault_manager/test/test_snapshot_capture.cpp#L131 (Test: |
Implementation: src/ros2_medkit_fault_manager/test/test_snapshot_capture.cpp#L101 (Test: |
Test Case: PatternMatchUsedWhenNoFaultSpecific TEST_TopicResolutionTest_PatternMatchUsedWhenNoFaultSpecific
|
Implementation: src/ros2_medkit_fault_manager/test/test_snapshot_capture.cpp#L117 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_transport_registry.cpp#L56 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_trigger_handlers.cpp#L221 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_trigger_handlers.cpp#L273 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_trigger_manager.cpp#L100 (Test: |
EnterRange requires lower_bound <= upper_bound Implementation: src/ros2_medkit_gateway/test/test_trigger_manager.cpp#L109 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_trigger_manager.cpp#L120 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_trigger_manager.cpp#L88 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_trigger_manager.cpp#L432 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_trigger_manager.cpp#L132 (Test: |
Set up hierarchy: area “navigation” contains apps Implementation: src/ros2_medkit_gateway/test/test_trigger_manager.cpp#L357 (Test: |
Set up hierarchy: component “chassis” contains app “sensor” Implementation: src/ros2_medkit_gateway/test/test_trigger_manager.cpp#L331 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_trigger_manager.cpp#L540 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_trigger_manager.cpp#L311 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_trigger_manager.cpp#L148 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_trigger_manager.cpp#L286 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_trigger_manager.cpp#L412 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_trigger_manager.cpp#L203 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_trigger_manager.cpp#L220 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_trigger_manager.cpp#L253 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_trigger_manager.cpp#L164 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_trigger_handlers.cpp#L252 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_trigger_store.cpp#L366 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_trigger_store.cpp#L70 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_trigger_handlers.cpp#L123 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_trigger_handlers.cpp#L289 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_trigger_handlers.cpp#L308 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_trigger_handlers.cpp#L331 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_trigger_handlers.cpp#L321 (Test: |
Test Case: VendorExtensionCollection_Accepted TEST_TriggerValidationTest_VendorExtensionCollection_Accepted
|
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: |
Test Case: ExecuteExceptionSetsFailedStatus TEST_UpdateManagerFailureTest_ExecuteExceptionSetsFailedStatus
|
Implementation: src/ros2_medkit_gateway/test/test_update_manager.cpp#L571 (Test: |
Test Case: ExecuteFailureSetsFailedStatus TEST_UpdateManagerFailureTest_ExecuteFailureSetsFailedStatus
|
Implementation: src/ros2_medkit_gateway/test/test_update_manager.cpp#L538 (Test: |
Test Case: PrepareExceptionSetsFailedStatus TEST_UpdateManagerFailureTest_PrepareExceptionSetsFailedStatus
|
Implementation: src/ros2_medkit_gateway/test/test_update_manager.cpp#L493 (Test: |
Test Case: PrepareFailureSetsFailedStatus TEST_UpdateManagerFailureTest_PrepareFailureSetsFailedStatus
|
Implementation: src/ros2_medkit_gateway/test/test_update_manager.cpp#L404 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_update_manager.cpp#L248 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_update_manager.cpp#L273 (Test: |
Test Case: ConcurrentPrepareOnSamePackageRejected TEST_UpdateManagerTest_ConcurrentPrepareOnSamePackageRejected
|
Implementation: src/ros2_medkit_gateway/test/test_update_manager.cpp#L329 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_update_manager.cpp#L283 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_update_manager.cpp#L156 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_update_manager.cpp#L318 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_update_manager.cpp#L204 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_update_manager.cpp#L194 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_update_manager.cpp#L139 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_update_manager.cpp#L149 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_update_manager.cpp#L114 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_update_manager.cpp#L119 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_update_manager.cpp#L168 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_update_manager.cpp#L127 (Test: |
Implementation: src/ros2_medkit_gateway/test/test_update_manager.cpp#L295 (Test: |
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: |
Test Case: ContributorsOmitsFieldWhenInputEmpty TEST_XMedkitTest_ContributorsOmitsFieldWhenInputEmpty
|
Implementation: src/ros2_medkit_gateway/test/test_x_medkit.cpp#L307 (Test: |
Test Case: ContributorsPlacesLocalFirstThenPeersAlphabeticallyFromReverseInput TEST_XMedkitTest_ContributorsPlacesLocalFirstThenPeersAlphabeticallyFromReverseInput
|
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: |
Test Case: ContributorsWithoutLocalStaysAlphabetical TEST_XMedkitTest_ContributorsWithoutLocalStaysAlphabetical
|
Implementation: src/ros2_medkit_gateway/test/test_x_medkit.cpp#L332 (Test: |
Implementation: src/ros2_medkit_fault_manager/test/test_entity_thresholds.cpp#L173 (Test: |
Implementation: src/ros2_medkit_fault_manager/test/test_entity_thresholds.cpp#L210 (Test: |
Implementation: src/ros2_medkit_fault_manager/test/test_entity_thresholds.cpp#L204 (Test: |
Test Case: PositiveConfirmationThresholdAutoNegated TEST_YamlLoadTest_PositiveConfirmationThresholdAutoNegated
|
Implementation: src/ros2_medkit_fault_manager/test/test_entity_thresholds.cpp#L222 (Test: |
ID |
Title |
Status |
Verifies |
|---|---|---|---|
TEST_AggregationClassification_hierarchical_parent_drops_routing_across_multiple_peers |
hierarchical_parent_drops_routing_across_multiple_peers |
verified |
|
TEST_AggregationClassification_hierarchical_parent_drops_routing_when_local_subcomponents_exist |
hierarchical_parent_drops_routing_when_local_subcomponents_exist |
verified |
|
TEST_AggregationClassification_hierarchical_parent_drops_routing_when_remote_subcomponents_exist |
hierarchical_parent_drops_routing_when_remote_subcomponents_exist |
verified |
|
TEST_AggregationClassification_leaf_collision_across_multiple_peers_emits_warning |
leaf_collision_across_multiple_peers_emits_warning |
verified |
|
TEST_AggregationClassification_leaf_collision_keeps_routing_to_peer |
leaf_collision_keeps_routing_to_peer |
verified |
|
TEST_AggregationClassification_leaf_collision_routing_respects_input_order |
leaf_collision_routing_respects_input_order |
verified |
|
TEST_AggregationClassification_parent_references_nonexistent_component_falls_back_to_leaf |
parent_references_nonexistent_component_falls_back_to_leaf |
verified |
|
TEST_AggregationClassification_self_parent_is_ignored_and_warned |
self_parent_is_ignored_and_warned |
verified |
|
TEST_AggregationClassification_subcomponents_of_hierarchical_parent_still_route_to_peer |
subcomponents_of_hierarchical_parent_still_route_to_peer |
verified |
|
TEST_AggregationClassification_two_way_parent_cycle_falls_back_to_leaves_with_warning |
two_way_parent_cycle_falls_back_to_leaves_with_warning |
verified |
|
TEST_AggregationManager_fan_out_returns_partial_when_peers_unreachable |
fan_out_returns_partial_when_peers_unreachable |
verified |
|
TEST_AggregationManager_forward_returns_502_for_unknown_peer |
forward_returns_502_for_unknown_peer |
verified |
|
TEST_AggregationManager_forward_strips_peer_prefix_from_path |
forward_strips_peer_prefix_from_path |
verified |
|
routing_table_update_and_find |
verified |
||
ToJson_ContainsRequiredFields |
verified |
||
ToJson_ContainsRequiredFields |
verified |
||
TEST_AuthHandlersAuthorizeTest_AuthorizeErrorBodyFollowsOAuth2Format |
AuthorizeErrorBodyFollowsOAuth2Format |
verified |
|
TEST_AuthHandlersAuthorizeTest_ReturnsBadRequestForEmptyClientId |
ReturnsBadRequestForEmptyClientId |
verified |
|
TEST_AuthHandlersAuthorizeTest_ReturnsBadRequestForEmptyClientSecret |
ReturnsBadRequestForEmptyClientSecret |
verified |
|
TEST_AuthHandlersAuthorizeTest_ReturnsBadRequestForMissingClientId |
ReturnsBadRequestForMissingClientId |
verified |
|
TEST_AuthHandlersAuthorizeTest_ReturnsBadRequestForMissingClientSecret |
ReturnsBadRequestForMissingClientSecret |
verified |
|
TEST_AuthHandlersAuthorizeTest_ReturnsBadRequestForWrongGrantType |
ReturnsBadRequestForWrongGrantType |
verified |
|
TEST_AuthHandlersDisabledTest_AuthorizeErrorBodyContainsErrorCode |
AuthorizeErrorBodyContainsErrorCode |
verified |
|
TEST_AuthHandlersDisabledTest_AuthorizeReturns404WhenAuthDisabled |
AuthorizeReturns404WhenAuthDisabled |
verified |
|
TEST_AuthHandlersDisabledTest_RevokeReturns404WhenAuthDisabled |
RevokeReturns404WhenAuthDisabled |
verified |
|
TEST_AuthHandlersDisabledTest_TokenReturns404WhenAuthDisabled |
TokenReturns404WhenAuthDisabled |
verified |
|
ReturnsBadRequestForInvalidJson |
verified |
||
TEST_AuthHandlersRevokeTest_ReturnsBadRequestForMissingTokenField |
ReturnsBadRequestForMissingTokenField |
verified |
|
TEST_AuthHandlersRevokeTest_ReturnsBadRequestForNonStringToken |
ReturnsBadRequestForNonStringToken |
verified |
|
TEST_AuthHandlersTokenTest_ReturnsBadRequestForEmptyRefreshToken |
ReturnsBadRequestForEmptyRefreshToken |
verified |
|
TEST_AuthHandlersTokenTest_ReturnsBadRequestForMissingRefreshToken |
ReturnsBadRequestForMissingRefreshToken |
verified |
|
TEST_AuthHandlersTokenTest_ReturnsBadRequestForWrongGrantType |
ReturnsBadRequestForWrongGrantType |
verified |
|
TEST_AuthHandlersWithManagerTest_AuthorizeReturnsTokensForValidCredentials |
AuthorizeReturnsTokensForValidCredentials |
verified |
|
TEST_AuthHandlersWithManagerTest_AuthorizeReturnsUnauthorizedForInvalidCredentials |
AuthorizeReturnsUnauthorizedForInvalidCredentials |
verified |
|
TEST_AuthHandlersWithManagerTest_RevokeRevokesRefreshTokenForSubsequentTokenRequest |
RevokeRevokesRefreshTokenForSubsequentTokenRequest |
verified |
|
TEST_AuthHandlersWithManagerTest_TokenReturnsNewAccessTokenForValidRefreshToken |
TokenReturnsNewAccessTokenForValidRefreshToken |
verified |
|
TEST_AuthHandlersWithManagerTest_TokenReturnsUnauthorizedForInvalidRefreshToken |
TokenReturnsUnauthorizedForInvalidRefreshToken |
verified |
|
RS256WithMissingPrivateKeyThrows |
verified |
||
AuthenticateValidCredentials |
verified |
||
AuthorizeViewerCanRead |
verified |
||
DisabledClientTokenBecomesInvalid |
verified |
||
RefreshAccessToken |
verified |
||
TEST_AuthManagerTest_RefreshRevocationPropagatestoAccessToken |
RefreshRevocationPropagatestoAccessToken |
verified |
|
RefreshWithAccessTokenFails |
verified |
||
ValidateTokenWithCorrectType |
verified |
||
ValidateTokenWithWrongTypeRejectsToken |
verified |
||
ValidateValidToken |
verified |
||
AuthEndpointsNeverRequireAuth |
verified |
||
DisabledMiddlewareAllowsAll |
verified |
||
ExtractBearerToken_CaseInsensitive |
verified |
||
ExtractBearerToken_EmptyHeader |
verified |
||
ExtractBearerToken_EmptyToken |
verified |
||
ExtractBearerToken_InvalidPrefix |
verified |
||
ExtractBearerToken_ValidToken |
verified |
||
ProcessGetRequestWithoutAuth |
verified |
||
TEST_AuthMiddlewareTest_ProcessWriteRequestWithInsufficientPermissions |
ProcessWriteRequestWithInsufficientPermissions |
verified |
|
ProcessWriteRequestWithInvalidToken |
verified |
||
ProcessWriteRequestWithoutAuth |
verified |
||
ProcessWriteRequestWithValidToken |
verified |
||
ParseRequestFormUrlEncoded |
verified |
||
ParseRequestInvalidContentType |
verified |
||
ParseRequestInvalidJson |
verified |
||
ParseRequestJson |
verified |
||
ParseRequestJsonWithCharset |
verified |
||
TEST_AuthRequirementPolicyTest_AllAuthPolicyAlwaysRequiresAuth |
AllAuthPolicyAlwaysRequiresAuth |
verified |
|
ConfigurablePolicyExactMatch |
verified |
||
TEST_AuthRequirementPolicyTest_ConfigurablePolicyLongestMatchWins |
ConfigurablePolicyLongestMatchWins |
verified |
|
TEST_AuthRequirementPolicyTest_ConfigurablePolicyMultipleWildcards |
ConfigurablePolicyMultipleWildcards |
verified |
|
TEST_AuthRequirementPolicyTest_ConfigurablePolicyUnknownPathsRequireAuth |
ConfigurablePolicyUnknownPathsRequireAuth |
verified |
|
TEST_AuthRequirementPolicyTest_ConfigurablePolicyWildcardMatch |
ConfigurablePolicyWildcardMatch |
verified |
|
TEST_AuthRequirementPolicyTest_FactoryCreatesAllAuthFromConfig |
FactoryCreatesAllAuthFromConfig |
verified |
|
FactoryCreatesNoAuthPolicy |
verified |
||
TEST_AuthRequirementPolicyTest_FactoryCreatesWriteOnlyFromConfig |
FactoryCreatesWriteOnlyFromConfig |
verified |
|
TEST_AuthRequirementPolicyTest_NoAuthPolicyNeverRequiresAuth |
NoAuthPolicyNeverRequiresAuth |
verified |
|
PolicyDescriptions |
verified |
||
TEST_AuthRequirementPolicyTest_WriteOnlyPolicyForGetRequests |
WriteOnlyPolicyForGetRequests |
verified |
|
TEST_AuthRequirementPolicyTest_WriteOnlyPolicyForWriteRequests |
WriteOnlyPolicyForWriteRequests |
verified |
|
DescriptorToJsonConversion |
verified |
||
DescriptorToJsonWithMetadata |
verified |
||
TEST_BulkDataHandlersTest_DescriptorToJsonWithoutDescription |
DescriptorToJsonWithoutDescription |
verified |
|
FormatTimestampNsEpoch |
verified |
||
FormatTimestampNsNegativeFallback |
verified |
||
FormatTimestampNsValidTimestamp |
verified |
||
FormatTimestampNsWithMilliseconds |
verified |
||
GetRosbagMimetypeCasesSensitive |
verified |
||
GetRosbagMimetypeDb3 |
verified |
||
GetRosbagMimetypeEmpty |
verified |
||
GetRosbagMimetypeMcap |
verified |
||
GetRosbagMimetypeSqlite3 |
verified |
||
GetRosbagMimetypeUnknown |
verified |
||
PayloadTooLargeErrorCodeDefined |
verified |
||
EmptyCategories |
verified |
||
GenerateUniqueIds |
verified |
||
GetFilePath |
verified |
||
GetFilePathNonexistent |
verified |
||
IdFormatIsReadable |
verified |
||
ListCategories |
verified |
||
ListItemsEmptyCategory |
verified |
||
ListItemsInCategory |
verified |
||
ListItemsWrongEntity |
verified |
||
MaxUploadSizeEnforced |
verified |
||
MaxUploadZeroMeansUnlimited |
verified |
||
PathTraversalRejected |
verified |
||
RemoveItem |
verified |
||
RemoveNonexistent |
verified |
||
RemoveThenListDoesNotInclude |
verified |
||
StoreAndRetrieve |
verified |
||
StoreAtomicWriteDescriptorExists |
verified |
||
StoreCreatesDirectoryStructure |
verified |
||
StoreEmptyFile |
verified |
||
StoreEmptyFilename |
verified |
||
StoreLargeFile |
verified |
||
StoreUnknownCategoryRejected |
verified |
||
StoreWithMetadata |
verified |
||
UnknownCategory |
verified |
||
TEST_CapabilityGeneratorTest_EntityCollectionDetailPathHasParameters |
EntityCollectionDetailPathHasParameters |
verified |
|
TEST_CapabilityGeneratorTest_GenerateEntityCollectionReturnsSpec |
GenerateEntityCollectionReturnsSpec |
verified |
|
TEST_CapabilityGeneratorTest_GenerateInvalidPathReturnsNullopt |
GenerateInvalidPathReturnsNullopt |
verified |
|
TEST_CapabilityGeneratorTest_GenerateRootContainsEntityCollections |
GenerateRootContainsEntityCollections |
verified |
|
TEST_CapabilityGeneratorTest_GenerateRootContainsEntityDetailPaths |
GenerateRootContainsEntityDetailPaths |
verified |
|
TEST_CapabilityGeneratorTest_GenerateRootContainsGlobalFaults |
GenerateRootContainsGlobalFaults |
verified |
|
TEST_CapabilityGeneratorTest_GenerateRootContainsHealthEndpoint |
GenerateRootContainsHealthEndpoint |
verified |
|
TEST_CapabilityGeneratorTest_GenerateRootContainsVersionInfo |
GenerateRootContainsVersionInfo |
verified |
|
TEST_CapabilityGeneratorTest_GenerateRootReturnsValidOpenApiSpec |
GenerateRootReturnsValidOpenApiSpec |
verified |
|
CgroupV1FormatNotSupported |
verified |
||
DetectRuntime |
verified |
||
ExtractContainerdContainerId |
verified |
||
ExtractDockerContainerId |
verified |
||
ExtractDockerOldStyleContainerId |
verified |
||
ExtractNoContainerId |
verified |
||
ExtractPodmanContainerId |
verified |
||
IsContainerizedSyntheticProc |
verified |
||
ReadCgroupInfoMissingCgroupFile |
verified |
||
ReadCgroupInfoMissingResourceFiles |
verified |
||
ReadCgroupInfoUnlimitedResources |
verified |
||
ReadCgroupInfoWithResourceLimits |
verified |
||
ToJson_ContainsRequiredFields |
verified |
||
EnterRange_NonNumericReturnsFalse |
verified |
||
LeaveRange_NonNumericReturnsFalse |
verified |
||
OnChange_ValidateParams |
verified |
||
TEST_ConditionEvaluator_OnChangeTo_ValidateParams_MissingTarget |
OnChangeTo_ValidateParams_MissingTarget |
verified |
|
OnChangeTo_ValidateParams_Valid |
verified |
||
CgroupInfoToJsonAllFields |
verified |
||
CgroupInfoToJsonMissingOptionals |
verified |
||
NotContainerizedSkipped |
verified |
||
ContainsAllRequiredFields |
verified |
||
ServerLevelUpdateResource |
verified |
||
TEST_DataAccessManagerWithPublisherTest_set_topic_data_provider_nullptr_detaches_provider |
set_topic_data_provider_nullptr_detaches_provider |
verified |
|
TEST_DataHandlersTest_DataCategoriesErrorBodyContainsFeatureParameter |
DataCategoriesErrorBodyContainsFeatureParameter |
verified |
|
TEST_DataHandlersTest_DataCategoriesErrorBodyContainsMessage |
DataCategoriesErrorBodyContainsMessage |
verified |
|
TEST_DataHandlersTest_DataCategoriesErrorCodeIsNotImplemented |
DataCategoriesErrorCodeIsNotImplemented |
verified |
|
DataCategoriesResponseBodyIsValidJson |
verified |
||
DataCategoriesReturns501 |
verified |
||
TEST_DataHandlersTest_DataGroupsErrorBodyContainsFeatureParameter |
DataGroupsErrorBodyContainsFeatureParameter |
verified |
|
DataGroupsErrorBodyContainsMessage |
verified |
||
DataGroupsErrorCodeIsNotImplemented |
verified |
||
DataGroupsResponseBodyIsValidJson |
verified |
||
DataGroupsReturns501 |
verified |
||
TEST_DataHandlersTest_GetDataItemBadRequestBodyContainsInvalidRequestErrorCode |
GetDataItemBadRequestBodyContainsInvalidRequestErrorCode |
verified |
|
TEST_DataHandlersTest_GetDataItemReturnsBadRequestWhenMatchesMissing |
GetDataItemReturnsBadRequestWhenMatchesMissing |
verified |
|
TEST_DataHandlersTest_ListDataBadRequestBodyContainsErrorCode |
ListDataBadRequestBodyContainsErrorCode |
verified |
|
TEST_DataHandlersTest_ListDataReturnsBadRequestWhenMatchesMissing |
ListDataReturnsBadRequestWhenMatchesMissing |
verified |
|
TEST_DataHandlersTest_PutDataItemBadRequestBodyContainsInvalidRequestErrorCode |
PutDataItemBadRequestBodyContainsInvalidRequestErrorCode |
verified |
|
TEST_DataHandlersTest_PutDataItemReturnsBadRequestWhenMatchesMissing |
PutDataItemReturnsBadRequestWhenMatchesMissing |
verified |
|
ConcurrencyLimit |
verified |
||
TEST_DefaultScriptProviderTest_ControlCompletedExecutionReturnsNotRunning |
ControlCompletedExecutionReturnsNotRunning |
verified |
|
ControlStopExecution |
verified |
||
TEST_DefaultScriptProviderTest_CrossEntityExecutionAccessRejected |
CrossEntityExecutionAccessRejected |
verified |
|
DeleteManifestScriptFails |
verified |
||
DeleteNonexistentScriptFails |
verified |
||
TEST_DefaultScriptProviderTest_DeleteScriptWithRunningExecutionBlocked |
DeleteScriptWithRunningExecutionBlocked |
verified |
|
DeleteUploadedScript |
verified |
||
EnvVars |
verified |
||
ExecutionNotFound |
verified |
||
FlagArgs |
verified |
||
GetManifestScript |
verified |
||
GetNonexistentScript |
verified |
||
GetUploadedScript |
verified |
||
TEST_DefaultScriptProviderTest_ListMergesManifestAndUploaded |
ListMergesManifestAndUploaded |
verified |
|
ManifestScriptsLoaded |
verified |
||
TEST_DefaultScriptProviderTest_ManifestScriptWithParametersSchema |
ManifestScriptWithParametersSchema |
verified |
|
NamedArgs |
verified |
||
PositionalArgs |
verified |
||
ScriptNotFoundExecution |
verified |
||
StdinJsonFallback |
verified |
||
SubprocessExecutionBash |
verified |
||
SubprocessExecutionPython |
verified |
||
SubprocessExecutionSh |
verified |
||
SubprocessFailure |
verified |
||
SubprocessTimeout |
verified |
||
UnsupportedExecutionType |
verified |
||
UploadDisabledReturnsError |
verified |
||
TEST_DefaultScriptProviderTest_UploadedScriptsIsolatedByEntity |
UploadedScriptsIsolatedByEntity |
verified |
|
TEST_DefaultScriptProviderTest_UploadExceedingFileSizeRejected |
UploadExceedingFileSizeRejected |
verified |
|
UploadToFilesystem |
verified |
||
UploadWithoutMetadata |
verified |
||
UploadWithParametersSchema |
verified |
||
TEST_DiscoveryHandlersFixtureTest_AppDependsOnReturnsResolvedAndMissingDependencies |
AppDependsOnReturnsResolvedAndMissingDependencies |
verified |
|
TEST_DiscoveryHandlersFixtureTest_AppDependsOnUnknownAppReturns404 |
AppDependsOnUnknownAppReturns404 |
verified |
|
TEST_DiscoveryHandlersFixtureTest_AppIsLocatedOnReturnsEmptyWhenAppHasNoComponent |
AppIsLocatedOnReturnsEmptyWhenAppHasNoComponent |
verified |
|
TEST_DiscoveryHandlersFixtureTest_AppIsLocatedOnReturnsMissingItemWhenHostComponentUnresolved |
AppIsLocatedOnReturnsMissingItemWhenHostComponentUnresolved |
verified |
|
TEST_DiscoveryHandlersFixtureTest_AppIsLocatedOnReturnsParentComponent |
AppIsLocatedOnReturnsParentComponent |
verified |
|
TEST_DiscoveryHandlersFixtureTest_AppIsLocatedOnUnknownAppReturns404 |
AppIsLocatedOnUnknownAppReturns404 |
verified |
|
TEST_DiscoveryHandlersFixtureTest_AreaComponentsReturnsMatchingComponentsOnly |
AreaComponentsReturnsMatchingComponentsOnly |
verified |
|
TEST_DiscoveryHandlersFixtureTest_AreaComponentsUnknownAreaReturns404 |
AreaComponentsUnknownAreaReturns404 |
verified |
|
TEST_DiscoveryHandlersFixtureTest_ComponentDependsOnReturnsResolvedAndMissingDependencies |
ComponentDependsOnReturnsResolvedAndMissingDependencies |
verified |
|
TEST_DiscoveryHandlersFixtureTest_ComponentDependsOnUnknownComponentReturns404 |
ComponentDependsOnUnknownComponentReturns404 |
verified |
|
TEST_DiscoveryHandlersFixtureTest_FunctionHostsReturnsHostingApps |
FunctionHostsReturnsHostingApps |
verified |
|
TEST_DiscoveryHandlersFixtureTest_FunctionHostsUnknownFunctionReturns404 |
FunctionHostsUnknownFunctionReturns404 |
verified |
|
TEST_DiscoveryHandlersFixtureTest_GetAppReturnsLinksAndCapabilities |
GetAppReturnsLinksAndCapabilities |
verified |
|
GetAppUnknownIdReturns404 |
verified |
||
TEST_DiscoveryHandlersFixtureTest_GetAreaReturnsCapabilitiesAndLinks |
GetAreaReturnsCapabilitiesAndLinks |
verified |
|
TEST_DiscoveryHandlersFixtureTest_GetAreaUnknownIdReturns404 |
GetAreaUnknownIdReturns404 |
verified |
|
TEST_DiscoveryHandlersFixtureTest_GetComponentReturnsRelationshipsAndCapabilities |
GetComponentReturnsRelationshipsAndCapabilities |
verified |
|
TEST_DiscoveryHandlersFixtureTest_GetContainsReturnsAreaComponents |
GetContainsReturnsAreaComponents |
verified |
|
TEST_DiscoveryHandlersFixtureTest_GetContainsUnknownAreaReturns404 |
GetContainsUnknownAreaReturns404 |
verified |
|
TEST_DiscoveryHandlersFixtureTest_GetFunctionReturnsCapabilitiesAndGraphLink |
GetFunctionReturnsCapabilitiesAndGraphLink |
verified |
|
TEST_DiscoveryHandlersFixtureTest_GetFunctionUnknownIdReturns404 |
GetFunctionUnknownIdReturns404 |
verified |
|
GetHostsReturnsHostedApps |
verified |
||
TEST_DiscoveryHandlersFixtureTest_GetHostsUnknownComponentReturns404 |
GetHostsUnknownComponentReturns404 |
verified |
|
TEST_DiscoveryHandlersFixtureTest_GetSubareasReturnsChildAreas |
GetSubareasReturnsChildAreas |
verified |
|
TEST_DiscoveryHandlersFixtureTest_GetSubareasUnknownAreaReturns404 |
GetSubareasUnknownAreaReturns404 |
verified |
|
TEST_DiscoveryHandlersFixtureTest_GetSubcomponentsReturnsChildren |
GetSubcomponentsReturnsChildren |
verified |
|
TEST_DiscoveryHandlersFixtureTest_GetSubcomponentsUnknownComponentReturns404 |
GetSubcomponentsUnknownComponentReturns404 |
verified |
|
TEST_DiscoveryHandlersFixtureTest_ListAppsReturnsSeededMetadata |
ListAppsReturnsSeededMetadata |
verified |
|
TEST_DiscoveryHandlersFixtureTest_ListAreasReturnsSeededItems |
ListAreasReturnsSeededItems |
verified |
|
TEST_DiscoveryHandlersFixtureTest_ListComponentsReturnsMetadata |
ListComponentsReturnsMetadata |
verified |
|
TEST_DiscoveryHandlersFixtureTest_ListFunctionsReturnsSeededFunctions |
ListFunctionsReturnsSeededFunctions |
verified |
|
TEST_DiscoveryHandlersValidationTest_AppDependsOnInvalidIdReturns400 |
AppDependsOnInvalidIdReturns400 |
verified |
|
TEST_DiscoveryHandlersValidationTest_AppIsLocatedOnInvalidIdReturns400 |
AppIsLocatedOnInvalidIdReturns400 |
verified |
|
TEST_DiscoveryHandlersValidationTest_AreaComponentsInvalidIdReturns400 |
AreaComponentsInvalidIdReturns400 |
verified |
|
TEST_DiscoveryHandlersValidationTest_ComponentDependsOnInvalidIdReturns400 |
ComponentDependsOnInvalidIdReturns400 |
verified |
|
TEST_DiscoveryHandlersValidationTest_FunctionHostsInvalidIdReturns400 |
FunctionHostsInvalidIdReturns400 |
verified |
|
TEST_DiscoveryHandlersValidationTest_GetAppInvalidIdReturns400 |
GetAppInvalidIdReturns400 |
verified |
|
TEST_DiscoveryHandlersValidationTest_GetAreaInvalidIdReturns400 |
GetAreaInvalidIdReturns400 |
verified |
|
TEST_DiscoveryHandlersValidationTest_GetAreaMissingMatchesReturns400 |
GetAreaMissingMatchesReturns400 |
verified |
|
TEST_DiscoveryHandlersValidationTest_GetComponentInvalidIdReturns400 |
GetComponentInvalidIdReturns400 |
verified |
|
TEST_DiscoveryHandlersValidationTest_GetContainsInvalidIdReturns400 |
GetContainsInvalidIdReturns400 |
verified |
|
TEST_DiscoveryHandlersValidationTest_GetFunctionInvalidIdReturns400 |
GetFunctionInvalidIdReturns400 |
verified |
|
TEST_DiscoveryHandlersValidationTest_GetHostsInvalidIdReturns400 |
GetHostsInvalidIdReturns400 |
verified |
|
TEST_DiscoveryHandlersValidationTest_GetSubareasInvalidIdReturns400 |
GetSubareasInvalidIdReturns400 |
verified |
|
TEST_DiscoveryHandlersValidationTest_GetSubcomponentsInvalidIdReturns400 |
GetSubcomponentsInvalidIdReturns400 |
verified |
|
TEST_DiscoveryManagerTest_SetTopicDataProviderNullptrIsAcceptedAfterAttach |
SetTopicDataProviderNullptrIsAcceptedAfterAttach |
verified |
|
TEST_DocsHandlersTest_DocsAnyPathReturns200ForEntityCollection |
DocsAnyPathReturns200ForEntityCollection |
verified |
|
DocsAnyPathReturns404ForInvalidPath |
verified |
||
DocsDisabledReturns501 |
verified |
||
DocsRootReturnsValidJson |
verified |
||
TEST_EntityMerger_apps_collision_prefixed_gets_peer_contributor_only |
apps_collision_prefixed_gets_peer_contributor_only |
verified |
|
apps_collision_sets_original_id |
verified |
||
apps_prefix_on_collision |
verified |
||
areas_merge_by_id |
verified |
||
builds_routing_table_for_remote_entities |
verified |
||
TEST_EntityMerger_components_collision_appends_peer_contributor |
components_collision_appends_peer_contributor |
verified |
|
components_merge_by_id |
verified |
||
TEST_EntityMerger_components_remote_only_gets_peer_contributor_only |
components_remote_only_gets_peer_contributor_only |
verified |
|
contributors_no_duplicate_on_repeat_merge |
verified |
||
functions_merge_by_id_combining_hosts |
verified |
||
TEST_EntityMerger_merged_component_hybrid_synthetic_collision_routes_to_peer |
merged_component_hybrid_synthetic_collision_routes_to_peer |
verified |
|
TEST_EntityMerger_multi_peer_overlapping_app_ids_no_data_loss |
multi_peer_overlapping_app_ids_no_data_loss |
verified |
|
TEST_FaultEventPublishingTest_ListFaultsForEntityEmptyResult |
ListFaultsForEntityEmptyResult |
verified |
|
ListFaultsForEntitySuccess |
verified |
||
TEST_FaultEventPublishingTest_ListFaultsForEntityWithEmptyId |
ListFaultsForEntityWithEmptyId |
verified |
|
BuildSovdFaultResponseBasicFields |
verified |
||
TEST_FaultHandlersTest_BuildSovdFaultResponseExtendedDataRecords |
BuildSovdFaultResponseExtendedDataRecords |
verified |
|
BuildSovdFaultResponseMixedSnapshots |
verified |
||
TEST_FaultHandlersTest_BuildSovdFaultResponseMultipleSources |
BuildSovdFaultResponseMultipleSources |
verified |
|
TEST_FaultHandlersTest_BuildSovdFaultResponseNestedEntityPath |
BuildSovdFaultResponseNestedEntityPath |
verified |
|
TEST_FaultHandlersTest_BuildSovdFaultResponsePrimaryValueExtraction |
BuildSovdFaultResponsePrimaryValueExtraction |
verified |
|
BuildSovdFaultResponseSeverityLabels |
verified |
||
BuildSovdFaultResponseStatusCleared |
verified |
||
BuildSovdFaultResponseStatusPassive |
verified |
||
TEST_FaultHandlersTest_BuildSovdFaultResponseWithFreezeFrame |
BuildSovdFaultResponseWithFreezeFrame |
verified |
|
TEST_FaultHandlersTest_BuildSovdFaultResponseWithInvalidJson |
BuildSovdFaultResponseWithInvalidJson |
verified |
|
BuildSovdFaultResponseWithRosbag |
verified |
||
GetRosbagNotFound |
verified |
||
GetRosbagServiceNotAvailable |
verified |
||
GetRosbagSuccess |
verified |
||
TEST_FaultManagerTest_GetRosbagUsesConfiguredFaultManagerNamespace |
GetRosbagUsesConfiguredFaultManagerNamespace |
verified |
|
GetSnapshotsEmptyResponse |
verified |
||
GetSnapshotsErrorResponse |
verified |
||
GetSnapshotsInvalidJsonFallback |
verified |
||
GetSnapshotsServiceNotAvailable |
verified |
||
GetSnapshotsSuccessWithTopicFilter |
verified |
||
GetSnapshotsSuccessWithValidJson |
verified |
||
TEST_FaultManagerTest_GetSnapshotsUsesConfiguredFaultManagerNamespace |
GetSnapshotsUsesConfiguredFaultManagerNamespace |
verified |
|
ToJson_ContainsRequiredFields |
verified |
||
AreaSupportsFaults |
verified |
||
FunctionChildAppIds |
verified |
||
TEST_FunctionResourceCollections_FunctionDataAggregatesFromHostedApps |
FunctionDataAggregatesFromHostedApps |
verified |
|
FunctionSupportsFaults |
verified |
||
DefaultAllowsAll |
verified |
||
NamespaceBlacklistFiltersAreas |
verified |
||
NamespaceWhitelistFiltersAreas |
verified |
||
TEST_GraphProviderPluginRouteTest_RegistersFunctionCapabilityOnContext |
RegistersFunctionCapabilityOnContext |
verified |
|
TEST_GraphProviderPluginRouteTest_RegistersSamplerForCyclicSubscriptions |
RegistersSamplerForCyclicSubscriptions |
verified |
|
TEST_GraphProviderPluginRouteTest_ServesFunctionGraphFromCachedSnapshot |
ServesFunctionGraphFromCachedSnapshot |
verified |
|
TEST_HealthHandlersTest_HandleRootAuthDisabledNoAuthEndpoints |
HandleRootAuthDisabledNoAuthEndpoints |
verified |
|
TEST_HealthHandlersTest_HandleRootAuthEnabledAddsAuthEndpoints |
HandleRootAuthEnabledAddsAuthEndpoints |
verified |
|
TEST_HealthHandlersTest_HandleRootAuthEnabledIncludesAuthMetadataBlock |
HandleRootAuthEnabledIncludesAuthMetadataBlock |
verified |
|
HandleRootCapabilitiesAuthDisabled |
verified |
||
TEST_HealthHandlersTest_HandleRootCapabilitiesContainsDiscovery |
HandleRootCapabilitiesContainsDiscovery |
verified |
|
HandleRootCapabilitiesTlsDisabled |
verified |
||
HandleRootEndpointsIsNonEmptyArray |
verified |
||
TEST_HealthHandlersTest_HandleRootResponseContainsRequiredTopLevelFields |
HandleRootResponseContainsRequiredTopLevelFields |
verified |
|
TEST_HealthHandlersTest_HandleRootTlsEnabledIncludesTlsMetadataBlock |
HandleRootTlsEnabledIncludesTlsMetadataBlock |
verified |
|
HandleVersionInfoContainsItemsArray |
verified |
||
TEST_HealthHandlersTest_HandleVersionInfoItemsEntryHasBaseUri |
HandleVersionInfoItemsEntryHasBaseUri |
verified |
|
TEST_HealthHandlersTest_HandleVersionInfoItemsEntryHasVendorInfo |
HandleVersionInfoItemsEntryHasVendorInfo |
verified |
|
TEST_HealthHandlersTest_HandleVersionInfoItemsEntryHasVersionField |
HandleVersionInfoItemsEntryHasVersionField |
verified |
|
creates_default_component |
verified |
||
TEST_HostInfoProviderTest_sanitizes_hostname_to_valid_entity_id |
sanitizes_hostname_to_valid_entity_id |
verified |
|
ParsesValidIntervals |
verified |
||
TEST_LoadPersistentTriggers_ExpiredTriggerMarkedTerminatedOnLoad |
ExpiredTriggerMarkedTerminatedOnLoad |
verified |
|
TEST_LoadPersistentTriggers_NewTriggerIdIsHigherThanRestoredId |
NewTriggerIdIsHigherThanRestoredId |
verified |
|
TEST_LoadPersistentTriggers_ResetBehaviorDoesNotRestoreTriggers |
ResetBehaviorDoesNotRestoreTriggers |
verified |
|
TEST_LoadPersistentTriggers_RestoreBehaviorLoadsActiveTrigger |
RestoreBehaviorLoadsActiveTrigger |
verified |
|
test_acquire_already_locked |
verified |
||
test_acquire_break_lock |
verified |
||
test_acquire_break_lock_not_breakable |
verified |
||
test_acquire_invalid_expiration |
verified |
||
test_acquire_invalid_scope |
verified |
||
test_acquire_lock_basic |
verified |
||
test_acquire_lock_full |
verified |
||
test_acquire_lock_scoped |
verified |
||
test_check_access_area_propagation |
verified |
||
test_check_access_not_owner |
verified |
||
test_check_access_owner |
verified |
||
test_check_access_parent_propagation |
verified |
||
TEST_LockManagerTest_test_check_access_partial_scope_propagation |
test_check_access_partial_scope_propagation |
verified |
|
test_check_access_scoped_match |
verified |
||
test_check_access_scoped_no_match |
verified |
||
test_check_access_unlocked |
verified |
||
test_cleanup_expired |
verified |
||
test_cleanup_not_expired |
verified |
||
test_config_disabled |
verified |
||
test_extend_lock |
verified |
||
test_extend_not_found |
verified |
||
test_extend_not_owner |
verified |
||
test_get_lock |
verified |
||
test_get_lock_by_id |
verified |
||
TEST_LockManagerTest_test_lock_required_different_collection_not_blocked |
test_lock_required_different_collection_not_blocked |
verified |
|
test_lock_required_has_lock |
verified |
||
test_lock_required_no_lock_held |
verified |
||
test_release_lock |
verified |
||
test_release_not_found |
verified |
||
test_release_not_owner |
verified |
||
TEST_LogHandlersTest_GetLogsBadRequestBodyContainsInvalidRequestErrorCode |
GetLogsBadRequestBodyContainsInvalidRequestErrorCode |
verified |
|
GetLogsBadRequestBodyIsValidJson |
verified |
||
TEST_LogHandlersTest_GetLogsConfigurationBadRequestBodyContainsInvalidRequestErrorCode |
GetLogsConfigurationBadRequestBodyContainsInvalidRequestErrorCode |
verified |
|
TEST_LogHandlersTest_GetLogsConfigurationBadRequestBodyIsValidJson |
GetLogsConfigurationBadRequestBodyIsValidJson |
verified |
|
TEST_LogHandlersTest_GetLogsConfigurationReturnsBadRequestWhenMatchesMissing |
GetLogsConfigurationReturnsBadRequestWhenMatchesMissing |
verified |
|
TEST_LogHandlersTest_GetLogsReturnsBadRequestWhenMatchesMissing |
GetLogsReturnsBadRequestWhenMatchesMissing |
verified |
|
TEST_LogHandlersTest_PutLogsConfigurationBadRequestBodyContainsInvalidRequestErrorCode |
PutLogsConfigurationBadRequestBodyContainsInvalidRequestErrorCode |
verified |
|
TEST_LogHandlersTest_PutLogsConfigurationBadRequestBodyIsValidJson |
PutLogsConfigurationBadRequestBodyIsValidJson |
verified |
|
TEST_LogHandlersTest_PutLogsConfigurationReturnsBadRequestWhenMatchesMissing |
PutLogsConfigurationReturnsBadRequestWhenMatchesMissing |
verified |
|
AddLogEntry_EmptyMetadataNoSuffix |
verified |
||
AddLogEntry_EntryRetrievable |
verified |
||
TEST_LogManagerBufferTest_AddLogEntry_InvalidSeverityFallsBackToInfo |
AddLogEntry_InvalidSeverityFallsBackToInfo |
verified |
|
TEST_LogManagerBufferTest_AddLogEntry_MetadataAppendedToMessage |
AddLogEntry_MetadataAppendedToMessage |
verified |
|
BufferCapDropsNewNodesWhenFull |
verified |
||
ContextFilterMatchesSubstring |
verified |
||
FqnWithLeadingSlashMatchesBuffer |
verified |
||
TEST_LogManagerBufferTest_GetConfigReturnsDefaultsForUnknownEntity |
GetConfigReturnsDefaultsForUnknownEntity |
verified |
|
TEST_LogManagerBufferTest_GetLogsMatchesDotNotationLoggerNames |
GetLogsMatchesDotNotationLoggerNames |
verified |
|
TEST_LogManagerBufferTest_GetLogsPrefixMatchesDotNotationLoggerNames |
GetLogsPrefixMatchesDotNotationLoggerNames |
verified |
|
MaxEntriesCapsMostRecentEntries |
verified |
||
TEST_LogManagerBufferTest_PartialConfigUpdatePreservesOtherField |
PartialConfigUpdatePreservesOtherField |
verified |
|
TEST_LogManagerBufferTest_PrefixMatchDoesNotFalsePositiveOnSubstring |
PrefixMatchDoesNotFalsePositiveOnSubstring |
verified |
|
TEST_LogManagerBufferTest_PrefixMatchIncludesChildNamespaces |
PrefixMatchIncludesChildNamespaces |
verified |
|
TEST_LogManagerBufferTest_RingBufferEvictsOldestEntryWhenFull |
RingBufferEvictsOldestEntryWhenFull |
verified |
|
SeverityFilterExcludesLowerLevels |
verified |
||
TEST_LogManagerBufferTest_UpdateConfigRejectsInvalidSeverity |
UpdateConfigRejectsInvalidSeverity |
verified |
|
UpdateConfigRejectsZeroMaxEntries |
verified |
||
AllSeverityLevels |
verified |
||
BasicFields |
verified |
||
EmptyOptionalFieldsOmitted |
verified |
||
NormalizeEmptyStringUnchanged |
verified |
||
NormalizeNoLeadingSlashUnchanged |
verified |
||
NormalizeStripsLeadingSlash |
verified |
||
TEST_LogManagerIngestionTest_DefaultManagesIngestionPreservesCurrentBehavior |
DefaultManagesIngestionPreservesCurrentBehavior |
verified |
|
TEST_LogManagerIngestionTest_ManagesIngestionDelegatesToPlugin |
ManagesIngestionDelegatesToPlugin |
verified |
|
TEST_LogManagerIngestionTest_ManagesIngestionGetConfigDelegatesToPlugin |
ManagesIngestionGetConfigDelegatesToPlugin |
verified |
|
TEST_LogManagerIngestionTest_ManagesIngestionLocalBufferBypassed |
ManagesIngestionLocalBufferBypassed |
verified |
|
TEST_LogManagerIngestionTest_ManagesIngestionStillValidatesBeforeDelegation |
ManagesIngestionStillValidatesBeforeDelegation |
verified |
|
TEST_LogManagerIngestionTest_ManagesIngestionUpdateConfigDelegatesToPlugin |
ManagesIngestionUpdateConfigDelegatesToPlugin |
verified |
|
TEST_LogManagerIngestionTest_NoPluginPreservesDefaultBehavior |
NoPluginPreservesDefaultBehavior |
verified |
|
TEST_LogManagerIngestionTest_PluginGetConfigThrowReturnsError |
PluginGetConfigThrowReturnsError |
verified |
|
PluginGetLogsThrowReturnsError |
verified |
||
TEST_LogManagerResolverTest_ResolverMatchesBareNameReturnsEntityId |
ResolverMatchesBareNameReturnsEntityId |
verified |
|
TEST_LogManagerResolverTest_ResolverMatchesWithSlashPrefixReturnsEntityId |
ResolverMatchesWithSlashPrefixReturnsEntityId |
verified |
|
TEST_LogManagerResolverTest_ResolverReturnsEmptyFallsBackToLastSegment |
ResolverReturnsEmptyFallsBackToLastSegment |
verified |
|
IsValidSeverity |
verified |
||
LevelToSeverityMapping |
verified |
||
SeverityToLevelMapping |
verified |
||
DefaultPolicies |
verified |
||
ParseScripts |
verified |
||
ParseScriptsMissingFormat |
verified |
||
ParseScriptsMissingId |
verified |
||
ParseScriptsMissingPath |
verified |
||
ParseScriptsTimeoutClampedToMinimum |
verified |
||
default_config_values |
verified |
||
instance_name_returns_explicit_name |
verified |
||
respects_announce_flag |
verified |
||
TEST_MdnsDiscovery_start_announce_on_ephemeral_port_does_not_crash |
start_announce_on_ephemeral_port_does_not_crash |
verified |
|
AppStatusMerge_BoolOrSemantics |
verified |
||
LayerExceptionDoesNotCrashPipeline |
verified |
||
PluginReceivesDiscoveryContext |
verified |
||
TEST_MergePipelineTest_ThreeLayerMerge_PerFieldGroupOwnerTracking |
ThreeLayerMerge_PerFieldGroupOwnerTracking |
verified |
|
TEST_MergePipelineTest_ThreeLayerMerge_PluginEnrichesManifestEntity |
ThreeLayerMerge_PluginEnrichesManifestEntity |
verified |
|
MergePolicyValues |
verified |
||
TEST_OpenApiSpecBuilderTest_AlwaysIncludesGenericErrorResponse |
AlwaysIncludesGenericErrorResponse |
verified |
|
BuildContainsComponentsSchemas |
verified |
||
BuildContainsInfoBlock |
verified |
||
BuildContainsPathsObject |
verified |
||
BuildContainsServersArray |
verified |
||
BuildContainsSovdVersion |
verified |
||
BuildProducesOpenApi310Version |
verified |
||
FluentInterfaceChaining |
verified |
||
GenericErrorSchemaAlwaysPresent |
verified |
||
TEST_OpenApiSpecBuilderTest_NonEmptySchemasArePresentInOutput |
NonEmptySchemasArePresentInOutput |
verified |
|
SecuritySchemeAddsToComponents |
verified |
||
DataCollectionWithTopic |
verified |
||
UpdateStatusUri |
verified |
||
ActionOperationHasGetAndPost |
verified |
||
BulkDataHasGet |
verified |
||
ConfigurationsHasGetAndDelete |
verified |
||
CyclicSubscriptionsHasGetAndPost |
verified |
||
DataCollectionHasGet |
verified |
||
DataItemGetAlwaysPresent |
verified |
||
DataItemPutForSubscribeTopic |
verified |
||
EntityCollectionHasGet |
verified |
||
TEST_PathBuilderTest_EntityDetailConcretePathOmitsParameters |
EntityDetailConcretePathOmitsParameters |
verified |
|
EntityDetailHasGet |
verified |
||
EntityDetailTemplatePathHasParameters |
verified |
||
ErrorResponsesWithoutAuth |
verified |
||
FaultsHasGetAndDelete |
verified |
||
LogsHasGet |
verified |
||
OperationsCollectionHasGet |
verified |
||
ServiceOperationHasGetAndPost |
verified |
||
SseEndpointHasGet |
verified |
||
DeepNestedPath |
verified |
||
EntityCollection |
verified |
||
HostsIsResourceCollection |
verified |
||
TEST_PathResolverTest_HostsUnderFunctionsIsResourceCollection |
HostsUnderFunctionsIsResourceCollection |
verified |
|
MultiSegmentResourceId |
verified |
||
NestedEntityCollection |
verified |
||
ResourceCollection |
verified |
||
RootPath |
verified |
||
SpecificEntity |
verified |
||
SpecificResource |
verified |
||
TEST_PeerClient_fetch_entities_returns_error_on_connection_refused |
fetch_entities_returns_error_on_connection_refused |
verified |
|
forward_sets_502_on_connection_error |
verified |
||
fetch_entities_parses_collections |
verified |
||
TEST_PeerClientHappyPath_fetch_entities_parses_is_located_on_without_vendor_extension |
fetch_entities_parses_is_located_on_without_vendor_extension |
verified |
|
TEST_PeerClientHappyPath_fetch_entities_parses_relationship_fields |
fetch_entities_parses_relationship_fields |
verified |
|
TEST_PeerClientHappyPath_fetch_entities_parses_vendor_only_component_id_fallback |
fetch_entities_parses_vendor_only_component_id_fallback |
verified |
|
TEST_PeerClientHappyPath_fetch_entities_rejects_malicious_component_id_in_located_on |
fetch_entities_rejects_malicious_component_id_in_located_on |
verified |
|
TEST_PeerClientHappyPath_forward_and_get_json_returns_parsed_json |
forward_and_get_json_returns_parsed_json |
verified |
|
TEST_PeerClientHappyPath_forward_request_proxies_response_with_auth |
forward_request_proxies_response_with_auth |
verified |
|
TEST_PeerClientHappyPath_forward_request_rejects_oversized_response |
forward_request_rejects_oversized_response |
verified |
|
BackwardCompatibleWithoutResolver |
verified |
||
DifferentEntitiesSameFaultCode |
verified |
||
LidarFaultConfirmsImmediately |
verified |
||
LidarHealingWithThreshold1 |
verified |
||
MotorFaultNeedsDebouncing |
verified |
||
UnknownEntityUsesGlobalConfig |
verified |
||
AutoRefreshOnTTLExpiry |
verified |
||
ConcurrentLookupDoesNotCrash |
verified |
||
EmptyProcDir |
verified |
||
LookupAfterRefresh |
verified |
||
LookupMissingNode |
verified |
||
LookupRootNamespaceNode |
verified |
||
NonexistentProcDir |
verified |
||
NoRefreshWithinTTL |
verified |
||
DefaultPolicies |
verified |
||
ProcessInfoToJsonAllFields |
verified |
||
ProcessInfoToJsonNegativeUptimeClamped |
verified |
||
ProcessInfoToJsonZeroUptime |
verified |
||
ReadNonexistentPidFails |
verified |
||
ReadSelfProcess |
verified |
||
ReadSystemUptime |
verified |
||
ReadSystemUptimeMissingFile |
verified |
||
StateFieldPopulated |
verified |
||
EmptyResolverReturnsGlobal |
verified |
||
ExactMatch |
verified |
||
LongestPrefixWins |
verified |
||
NoMatchReturnsGlobal |
verified |
||
PartialOverrideMergesWithGlobal |
verified |
||
PrefixMatch |
verified |
||
PrefixMatchRequiresPathBoundary |
verified |
||
SizeReturnsEntryCount |
verified |
||
AsyncDispatchNonBlocking |
verified |
||
SubscribeAndNotify |
verified |
||
TEST_Ros2TopicDataProviderTest_ColdWaitCapExceededReturns503 |
ColdWaitCapExceededReturns503 |
verified |
|
TEST_Ros2TopicDataProviderTest_DiscoverByNamespaceGroupsTopics |
DiscoverByNamespaceGroupsTopics |
verified |
|
DiscoverFindsPublisher |
verified |
||
InterfacePolymorphismWorks |
verified |
||
TEST_Ros2TopicDataProviderTest_SampleHitReturnsDataAfterPublish |
SampleHitReturnsDataAfterPublish |
verified |
|
TEST_Ros2TopicDataProviderTest_SampleMatchesReliablePublisherQoS |
SampleMatchesReliablePublisherQoS |
verified |
|
TEST_Ros2TopicDataProviderTest_SampleParallelEmbedsPerTopicErrorInsteadOfFailingBatch |
SampleParallelEmbedsPerTopicErrorInsteadOfFailingBatch |
verified |
|
TEST_Ros2TopicDataProviderTest_SampleParallelHonorsMaxParallelSamplesAndPreservesOrder |
SampleParallelHonorsMaxParallelSamplesAndPreservesOrder |
verified |
|
TEST_Ros2TopicDataProviderTest_SampleParallelReturnsOneResultPerTopic |
SampleParallelReturnsOneResultPerTopic |
verified |
|
TEST_Ros2TopicDataProviderTest_SampleWithoutPublishersReturnsMetadataOnly |
SampleWithoutPublishersReturnsMetadataOnly |
verified |
|
ConstructorAcceptsMcapFormat |
verified |
||
ConstructorRequiresValidNode |
verified |
||
ConstructorRequiresValidStorage |
verified |
||
ConstructorSucceedsWithValidParams |
verified |
||
ConstructorThrowsOnInvalidFormat |
verified |
||
ConstructorWithDisabledRosbag |
verified |
||
IsEnabledReturnsConfigState |
verified |
||
TEST_RouteDescriptionsTest_EmptyBuilderProducesEmptyDescriptions |
EmptyBuilderProducesEmptyDescriptions |
verified |
|
MultipleEndpoints |
verified |
||
PostWithRequestBody |
verified |
||
SchemaTypes |
verified |
||
SingleGetEndpoint |
verified |
||
AuthEnabledAdds401And403Responses |
verified |
||
ErrorResponsesUseGenericErrorRef |
verified |
||
OperationIdIsGenerated |
verified |
||
PathParamDescriptionsArePresent |
verified |
||
TEST_RouteRegistryTest_ToOpenapiPathsContainsRegisteredRoute |
ToOpenapiPathsContainsRegisteredRoute |
verified |
|
TEST_RouteRegistryTest_ToOpenapiPathsMultipleMethodsSamePath |
ToOpenapiPathsMultipleMethodsSamePath |
verified |
|
ToRegexPathRootBecomesRootAnchored |
verified |
||
TEST_RuntimeDiscoveryMultiNsTest_DiscoverFunctions_GroupsByNamespace |
DiscoverFunctions_GroupsByNamespace |
verified |
|
TEST_RuntimeDiscoveryTest_DiscoverFunctions_DefaultCreatesFromNamespaces |
DiscoverFunctions_DefaultCreatesFromNamespaces |
verified |
|
DefaultPolicies |
verified |
||
ExactMatch_NodeNameAndNamespace |
verified |
||
OrphanPolicy_IncludeAsOrphan_NoError |
verified |
||
OrphanPolicy_Warn_NoError |
verified |
||
FromRosMsgKnownType |
verified |
||
FromRosMsgUnknownType |
verified |
||
AcquireLockRequestSchema |
verified |
||
BulkDataCategoryListSchema |
verified |
||
BulkDataDescriptorSchema |
verified |
||
ConfigurationMetaDataSchema |
verified |
||
TEST_SchemaBuilderStaticTest_ConfigurationMetaDataXMedkitDeclaresAllEmittedFields |
ConfigurationMetaDataXMedkitDeclaresAllEmittedFields |
verified |
|
ConfigurationReadValueSchema |
verified |
||
ConfigurationWriteValueSchema |
verified |
||
TEST_SchemaBuilderStaticTest_CyclicSubscriptionCreateRequestSchema |
CyclicSubscriptionCreateRequestSchema |
verified |
|
DataWriteRequestSchema |
verified |
||
ExecutionUpdateRequestSchema |
verified |
||
ExtendLockRequestSchema |
verified |
||
TEST_SchemaBuilderStaticTest_LogConfigurationSchemaFieldsOptional |
LogConfigurationSchemaFieldsOptional |
verified |
|
OperationDetailSchema |
verified |
||
ScriptControlRequestSchema |
verified |
||
ScriptUploadResponseSchema |
verified |
||
TriggerConditionSchemaShared |
verified |
||
TriggerCreateRequestSchema |
verified |
||
TriggerUpdateRequestSchema |
verified |
||
TEST_SchemaConsistencyTest_AllRefsResolveToRegisteredSchemas |
AllRefsResolveToRegisteredSchemas |
verified |
|
TEST_SchemaConsistencyTest_ListSchemasReferenceExistingItemSchemas |
ListSchemasReferenceExistingItemSchemas |
verified |
|
RequiredFieldsExistInProperties |
verified |
||
AlreadyRunningMapsTo409 |
verified |
||
TEST_ScriptHandlersErrorMappingTest_ConcurrencyLimitMapsTo429 |
ConcurrencyLimitMapsTo429 |
verified |
|
DeleteReturns204 |
verified |
||
FileTooLargeMapsTo413 |
verified |
||
ManagedScriptMapsTo409 |
verified |
||
NotFoundMapsTo404 |
verified |
||
TEST_ScriptHandlersErrorMappingTest_StartExecutionReturns202WithLocation |
StartExecutionReturns202WithLocation |
verified |
|
TEST_ScriptHandlersErrorMappingTest_UploadRejectsWrongContentType |
UploadRejectsWrongContentType |
verified |
|
TEST_ScriptHandlersErrorMappingTest_UploadReturns201WithLocation |
UploadReturns201WithLocation |
verified |
|
TEST_ScriptHandlersNoBackendTest_ControlExecutionReturns501WhenNoBackend |
ControlExecutionReturns501WhenNoBackend |
verified |
|
TEST_ScriptHandlersNoBackendTest_DeleteReturns501WhenNoBackend |
DeleteReturns501WhenNoBackend |
verified |
|
TEST_ScriptHandlersNoBackendTest_GetExecutionReturns501WhenNoBackend |
GetExecutionReturns501WhenNoBackend |
verified |
|
GetReturns501WhenNoBackend |
verified |
||
TEST_ScriptHandlersNoBackendTest_ListReturns501WhenNoBackend |
ListReturns501WhenNoBackend |
verified |
|
TEST_ScriptHandlersNoBackendTest_StartExecutionReturns501WhenNoBackend |
StartExecutionReturns501WhenNoBackend |
verified |
|
TEST_ScriptHandlersNoBackendTest_UploadReturns501WhenNoBackend |
UploadReturns501WhenNoBackend |
verified |
|
ControlExecution |
verified |
||
DeleteManifestScript |
verified |
||
DeleteScript |
verified |
||
GetExecution |
verified |
||
GetScript |
verified |
||
GetScriptNotFound |
verified |
||
ListScripts |
verified |
||
StartExecution |
verified |
||
UploadScript |
verified |
||
TEST_SnapshotCaptureTest_BackgroundCaptureInitializesSubscriptions |
BackgroundCaptureInitializesSubscriptions |
verified |
|
ConfigAccessorReturnsCorrectValues |
verified |
||
ConstructorRequiresValidNode |
verified |
||
ConstructorRequiresValidStorage |
verified |
||
ConstructorSucceedsWithValidParams |
verified |
||
DisabledCaptureSkipsProcessing |
verified |
||
TEST_SnapshotCaptureTest_EmptyConfigurationHandledGracefully |
EmptyConfigurationHandledGracefully |
verified |
|
InvalidRegexPatternIsSkipped |
verified |
||
IsEnabledReturnsConfigState |
verified |
||
MultipleValidPatternsCompiled |
verified |
||
TEST_SnapshotCaptureTest_OnDemandCaptureHandlesNonExistentTopic |
OnDemandCaptureHandlesNonExistentTopic |
verified |
|
TEST_SqliteFaultStorageTest_ClearFaultDeletesAssociatedSnapshots |
ClearFaultDeletesAssociatedSnapshots |
verified |
|
FilterSnapshotsByTopic |
verified |
||
TEST_SqliteFaultStorageTest_GetAllRosbagFilesReturnsSortedByCreatedAt |
GetAllRosbagFilesReturnsSortedByCreatedAt |
verified |
|
TEST_SqliteFaultStorageTest_ListRosbagsForEntityFiltersCorrectly |
ListRosbagsForEntityFiltersCorrectly |
verified |
|
MultipleSnapshotsForSameFault |
verified |
||
NoSnapshotsForUnknownFault |
verified |
||
StoreAndRetrieveSnapshot |
verified |
||
TEST_SSEStreamProxyIntegration_receives_events_from_mock_server |
receives_events_from_mock_server |
verified |
|
ProtocolReturnsSse |
verified |
||
StartReturnsEventsUrl |
verified |
||
StopRemovesStream |
verified |
||
parse_sse_multiple_events |
verified |
||
parse_sse_single_event |
verified |
||
parse_sse_with_event_type |
verified |
||
EmptyStatFile |
verified |
||
FindPidForNodeInSyntheticProc |
verified |
||
MalformedStatMissingComm |
verified |
||
ReadSyntheticProc |
verified |
||
ReadSystemUptimeSynthetic |
verified |
||
TruncatedStatAfterComm |
verified |
||
ComponentEndpointEmptyUnitsArray |
verified |
||
EscapeAtSignInTemplateUnit |
verified |
||
EscapeDotInServiceExtension |
verified |
||
EscapeEmptyString |
verified |
||
EscapeHyphenInUnitName |
verified |
||
EscapeSimpleServiceName |
verified |
||
EscapeSlashInPath |
verified |
||
TEST_TestAuthenticationIntegration_test_03_authenticate_valid_credentials |
test_03_authenticate_valid_credentials |
verified |
|
TEST_TestAuthenticationIntegration_test_06_authenticate_form_urlencoded |
test_06_authenticate_form_urlencoded |
verified |
|
test_07_refresh_token |
verified |
||
TEST_TestBulkDataApi_test_bulk_data_component_aggregates_child_apps |
test_bulk_data_component_aggregates_child_apps |
verified |
|
test_bulk_data_download_not_found |
verified |
||
TEST_TestBulkDataApi_test_bulk_data_list_categories_all_entity_types |
test_bulk_data_list_categories_all_entity_types |
verified |
|
TEST_TestBulkDataApi_test_bulk_data_list_categories_entity_not_found |
test_bulk_data_list_categories_entity_not_found |
verified |
|
test_bulk_data_list_categories_success |
verified |
||
TEST_TestBulkDataApi_test_bulk_data_list_descriptors_empty_result |
test_bulk_data_list_descriptors_empty_result |
verified |
|
TEST_TestBulkDataApi_test_bulk_data_list_descriptors_structure |
test_bulk_data_list_descriptors_structure |
verified |
|
test_bulk_data_nested_entity_path |
verified |
||
TEST_TestBulkDataApi_test_bulk_data_unknown_category_returns_404 |
test_bulk_data_unknown_category_returns_404 |
verified |
|
test_01_list_configurations |
verified |
||
test_02_get_configuration |
verified |
||
test_03_set_configuration |
verified |
||
TEST_TestConfigurationApi_test_04_delete_configuration_resets_to_default |
test_04_delete_configuration_resets_to_default |
verified |
|
TEST_TestConfigurationApi_test_05_configurations_nonexistent_app |
test_05_configurations_nonexistent_app |
verified |
|
TEST_TestConfigurationApi_test_06_configuration_nonexistent_parameter |
test_06_configuration_nonexistent_parameter |
verified |
|
TEST_TestConfigurationApi_test_07_set_configuration_missing_value |
test_07_set_configuration_missing_value |
verified |
|
TEST_TestConfigurationApi_test_08_root_endpoint_includes_configurations |
test_08_root_endpoint_includes_configurations |
verified |
|
test_all_apps_same_container |
verified |
||
TEST_TestContainerAppEndpoint_test_container_id_is_64_char_hex |
test_container_id_is_64_char_hex |
verified |
|
test_cpu_quota_detected |
verified |
||
test_memory_limit_detected |
verified |
||
test_returns_container_info |
verified |
||
test_runtime_is_docker |
verified |
||
TEST_TestContainerComponentEndpoint_test_containers_include_node_ids |
test_containers_include_node_ids |
verified |
|
TEST_TestContainerComponentEndpoint_test_containers_include_runtime |
test_containers_include_runtime |
verified |
|
TEST_TestContainerComponentEndpoint_test_returns_containers_aggregation |
test_returns_containers_aggregation |
verified |
|
TEST_TestContainerErrorHandling_test_nonexistent_app_returns_404 |
test_nonexistent_app_returns_404 |
verified |
|
TEST_TestContainerErrorHandling_test_nonexistent_component_returns_404 |
test_nonexistent_component_returns_404 |
verified |
|
test_logs_include_peer_entries |
verified |
||
test_logs_severity_filter_forwarded |
verified |
||
TEST_TestDaisyChainAggregation_test_primary_forwards_ecu_b_detail_one_hop |
test_primary_forwards_ecu_b_detail_one_hop |
verified |
|
TEST_TestDaisyChainAggregation_test_primary_forwards_ecu_c_detail_two_hops |
test_primary_forwards_ecu_c_detail_two_hops |
verified |
|
TEST_TestDaisyChainAggregation_test_primary_sees_all_ecus_as_subcomponents_of_robot_x |
test_primary_sees_all_ecus_as_subcomponents_of_robot_x |
verified |
|
TEST_TestDaisyChainAggregation_test_primary_serves_robot_x_detail_locally_with_contributors |
test_primary_serves_robot_x_detail_locally_with_contributors |
verified |
|
test_app_data_body_door |
verified |
||
test_app_data_chassis_brakes |
verified |
||
test_app_data_powertrain_engine |
verified |
||
test_app_data_structure |
verified |
||
test_app_no_topics |
verified |
||
test_app_nonexistent_error |
verified |
||
TEST_TestDataRead_test_component_nonexistent_topic_metadata_only |
test_component_nonexistent_topic_metadata_only |
verified |
|
test_component_topic_data_structure |
verified |
||
TEST_TestDataRead_test_component_topic_nonexistent_component_error |
test_component_topic_nonexistent_component_error |
verified |
|
test_component_topic_pressure |
verified |
||
test_component_topic_rpm |
verified |
||
test_component_topic_temperature |
verified |
||
test_component_topic_valid_names |
verified |
||
test_component_topic_with_slashes |
verified |
||
test_list_function_data |
verified |
||
test_list_function_data_invalid_id |
verified |
||
test_list_function_data_nonexistent |
verified |
||
test_publish_brake_command |
verified |
||
test_publish_invalid_json_body |
verified |
||
test_publish_nonexistent_component |
verified |
||
TEST_TestDataWrite_test_publish_validation_invalid_type_format |
test_publish_validation_invalid_type_format |
verified |
|
test_publish_validation_missing_data |
verified |
||
test_publish_validation_missing_type |
verified |
||
TEST_TestDocsEndpoint_test_apps_docs_returns_entity_collection_spec |
test_apps_docs_returns_entity_collection_spec |
verified |
|
TEST_TestDocsEndpoint_test_areas_docs_returns_entity_collection_spec |
test_areas_docs_returns_entity_collection_spec |
verified |
|
TEST_TestDocsEndpoint_test_components_docs_returns_entity_collection_spec |
test_components_docs_returns_entity_collection_spec |
verified |
|
test_data_collection_docs |
verified |
||
TEST_TestDocsEndpoint_test_logs_configuration_schema_field_names |
test_logs_configuration_schema_field_names |
verified |
|
TEST_TestDocsEndpoint_test_nonexistent_entity_docs_returns_404 |
test_nonexistent_entity_docs_returns_404 |
verified |
|
TEST_TestDocsEndpoint_test_nonexistent_path_docs_returns_404 |
test_nonexistent_path_docs_returns_404 |
verified |
|
test_operations_collection_docs |
verified |
||
test_root_docs_returns_openapi_spec |
verified |
||
test_spec_contains_components |
verified |
||
test_spec_contains_server_info |
verified |
||
test_specific_app_docs |
verified |
||
TEST_TestEntityListing_test_area_components_nonexistent_error |
test_area_components_nonexistent_error |
verified |
|
test_function_detail_accessible |
verified |
||
test_invalid_app_id_special_chars |
verified |
||
test_invalid_area_id_special_chars |
verified |
||
test_invalid_ids_with_special_chars |
verified |
||
TEST_TestEntityListing_test_list_areas_empty_in_runtime_mode |
test_list_areas_empty_in_runtime_mode |
verified |
|
test_list_components |
verified |
||
test_list_functions |
verified |
||
test_valid_ids_with_underscores |
verified |
||
test_app_is_located_on_endpoint |
verified |
||
TEST_TestEntityModelRuntime_test_apps_linked_to_default_component |
test_apps_linked_to_default_component |
verified |
|
TEST_TestEntityModelRuntime_test_areas_empty_in_runtime_mode |
test_areas_empty_in_runtime_mode |
verified |
|
test_default_component_detail |
verified |
||
TEST_TestEntityModelRuntime_test_default_component_from_host |
test_default_component_from_host |
verified |
|
TEST_TestEntityModelRuntime_test_function_detail_shows_namespace_source |
test_function_detail_shows_namespace_source |
verified |
|
test_function_hosts_apps |
verified |
||
TEST_TestEntityModelRuntime_test_multiple_apps_same_component |
test_multiple_apps_same_component |
verified |
|
TEST_TestEntityModelRuntime_test_namespaces_create_functions |
test_namespaces_create_functions |
verified |
|
test_app_routes_work_with_app_id |
verified |
||
TEST_TestEntityRouting_test_component_route_rejects_app_id_configurations |
test_component_route_rejects_app_id_configurations |
verified |
|
TEST_TestEntityRouting_test_component_route_rejects_app_id_data |
test_component_route_rejects_app_id_data |
verified |
|
TEST_TestEntityRouting_test_component_route_rejects_app_id_faults |
test_component_route_rejects_app_id_faults |
verified |
|
TEST_TestEntityRouting_test_component_route_rejects_app_id_operations |
test_component_route_rejects_app_id_operations |
verified |
|
TEST_TestFaultManagerIntegration_test_16_snapshot_capture_on_fault_confirmation |
test_16_snapshot_capture_on_fault_confirmation |
verified |
|
TEST_TestFaultManagerIntegration_test_17_get_snapshots_nonexistent_fault |
test_17_get_snapshots_nonexistent_fault |
verified |
|
TEST_TestFaultManagerIntegration_test_18_get_snapshots_empty_fault_code |
test_18_get_snapshots_empty_fault_code |
verified |
|
TEST_TestFaultManagerIntegration_test_19_snapshot_with_topic_filter |
test_19_snapshot_with_topic_filter |
verified |
|
TEST_TestFaultManagerIntegration_test_20_snapshot_config_loads_patterns |
test_20_snapshot_config_loads_patterns |
verified |
|
test_faults_nonexistent_component |
verified |
||
test_get_nonexistent_fault |
verified |
||
test_list_faults_response_structure |
verified |
||
test_root_endpoint_includes_faults |
verified |
||
test_app_accessible_without_areas |
verified |
||
test_apps_count |
verified |
||
test_areas_empty |
verified |
||
test_components_count |
verified |
||
test_functions_count |
verified |
||
test_subcomponents_count |
verified |
||
test_app_is_located_on_endpoint |
verified |
||
test_area_contains_nonexistent |
verified |
||
test_component_hosts_nonexistent |
verified |
||
TEST_TestGatewayNode_test_execution_update_execution_not_found |
test_execution_update_execution_not_found |
verified |
|
TEST_TestGatewayNode_test_execution_update_invalid_component_id |
test_execution_update_invalid_component_id |
verified |
|
TEST_TestGatewayNode_test_execution_update_missing_capability |
test_execution_update_missing_capability |
verified |
|
TEST_TestGatewayNode_test_execution_update_unsupported_capability |
test_execution_update_unsupported_capability |
verified |
|
test_list_areas_endpoint |
verified |
||
test_list_components_endpoint |
verified |
||
test_root_endpoint |
verified |
||
test_version_info_endpoint |
verified |
||
test_app_detail_has_capability_uris |
verified |
||
test_apps_list_has_href |
verified |
||
test_area_detail_has_capability_uris |
verified |
||
test_areas_list_has_href |
verified |
||
test_component_detail_has_capability_uris |
verified |
||
test_components_list_has_href |
verified |
||
test_contains_list_has_href |
verified |
||
test_depends_on_apps_has_href |
verified |
||
test_depends_on_apps_nonexistent |
verified |
||
test_depends_on_components_has_href |
verified |
||
test_function_detail_has_capability_uris |
verified |
||
test_functions_list_has_href |
verified |
||
test_hosts_list_has_href |
verified |
||
test_is_located_on_apps_has_href |
verified |
||
test_is_located_on_apps_nonexistent |
verified |
||
test_subareas_list_has_href |
verified |
||
test_subcomponents_list_has_href |
verified |
||
test_x_medkit_extension_in_list_responses |
verified |
||
test_docs_endpoint |
verified |
||
test_docs_spec_completeness |
verified |
||
test_health_endpoint_returns_200 |
verified |
||
test_root_endpoint_returns_api_info |
verified |
||
test_root_includes_apps_endpoints |
verified |
||
test_version_endpoint |
verified |
||
test_exact_app_count |
verified |
||
test_exact_area_count |
verified |
||
test_exact_component_count |
verified |
||
test_exact_function_count |
verified |
||
test_health_shows_hybrid_mode |
verified |
||
test_manifest_apps_are_online |
verified |
||
test_no_root_or_synthetic_areas |
verified |
||
TEST_TestHybridSuppression_test_no_underscored_app_duplicates |
test_no_underscored_app_duplicates |
verified |
|
TEST_TestHybridSuppression_test_no_underscored_component_duplicates |
test_no_underscored_component_duplicates |
verified |
|
TEST_TestLeafCollisionAggregation_test_health_surfaces_leaf_collision_with_both_peers |
test_health_surfaces_leaf_collision_with_both_peers |
verified |
|
TEST_TestLeafCollisionAggregation_test_shared_leaf_resolves_to_exactly_one_peer |
test_shared_leaf_resolves_to_exactly_one_peer |
verified |
|
test_acquire_lock_on_app |
verified |
||
test_acquire_lock_with_scopes |
verified |
||
test_acquire_without_client_id_returns_400 |
verified |
||
TEST_TestLocking_test_acquire_without_expiration_returns_400 |
test_acquire_without_expiration_returns_400 |
verified |
|
test_already_locked_returns_409 |
verified |
||
test_break_lock |
verified |
||
test_extend_lock |
verified |
||
test_get_lock_details |
verified |
||
test_list_locks |
verified |
||
test_list_locks_empty |
verified |
||
test_lock_blocks_other_client |
verified |
||
test_lock_expires_automatically |
verified |
||
test_nonexistent_entity_returns_404 |
verified |
||
test_owned_field_per_client |
verified |
||
test_release_lock |
verified |
||
test_release_not_owner_returns_403 |
verified |
||
test_scoped_lock_allows_other_collections |
verified |
||
TEST_TestLockingFaults_test_global_clear_skips_locked_entity_faults |
test_global_clear_skips_locked_entity_faults |
verified |
|
TEST_TestLockingPropagation_test_component_lock_allows_owner_on_child |
test_component_lock_allows_owner_on_child |
verified |
|
TEST_TestLockingPropagation_test_component_lock_blocks_child_app |
test_component_lock_blocks_child_app |
verified |
|
TEST_TestMultiCollectionSubscriptions_test_configurations_subscription_create |
test_configurations_subscription_create |
verified |
|
TEST_TestMultiCollectionSubscriptions_test_data_subscription_create |
test_data_subscription_create |
verified |
|
TEST_TestMultiCollectionSubscriptions_test_delete_subscription |
test_delete_subscription |
verified |
|
TEST_TestMultiCollectionSubscriptions_test_faults_subscription_create |
test_faults_subscription_create |
verified |
|
test_get_subscription |
verified |
||
TEST_TestMultiCollectionSubscriptions_test_list_subscriptions |
test_list_subscriptions |
verified |
|
TEST_TestMultiCollectionSubscriptions_test_logs_subscription_create |
test_logs_subscription_create |
verified |
|
TEST_TestMultiCollectionSubscriptions_test_logs_subscription_sse_stream |
test_logs_subscription_sse_stream |
verified |
|
TEST_TestMultiCollectionSubscriptions_test_update_subscription_interval |
test_update_subscription_interval |
verified |
|
TEST_TestOpenApiCallability_test_all_endpoints_accept_spec_requests |
test_all_endpoints_accept_spec_requests |
verified |
|
TEST_TestOpenApiResponseDrift_test_configurations_payload_uses_nested_x_medkit |
test_configurations_payload_uses_nested_x_medkit |
verified |
|
TEST_TestOpenApiResponseDrift_test_get_responses_match_declared_schema |
test_get_responses_match_declared_schema |
verified |
|
TEST_TestOpenApiResponseDrift_test_update_status_payload_uses_nested_x_medkit |
test_update_status_payload_uses_nested_x_medkit |
verified |
|
test_cancel_nonexistent_execution |
verified |
||
test_create_execution_for_service |
verified |
||
test_get_operation_details_for_apps |
verified |
||
TEST_TestOperationsApi_test_get_operation_details_for_service |
test_get_operation_details_for_service |
verified |
|
test_get_operation_not_found |
verified |
||
TEST_TestOperationsApi_test_list_executions_returns_items_array |
test_list_executions_returns_items_array |
verified |
|
test_list_operations |
verified |
||
TEST_TestOperationsApi_test_operation_call_calibrate_service |
test_operation_call_calibrate_service |
verified |
|
TEST_TestOperationsApi_test_operation_call_invalid_entity_id |
test_operation_call_invalid_entity_id |
verified |
|
TEST_TestOperationsApi_test_operation_call_invalid_operation_name |
test_operation_call_invalid_operation_name |
verified |
|
TEST_TestOperationsApi_test_operation_call_nonexistent_entity |
test_operation_call_nonexistent_entity |
verified |
|
TEST_TestOperationsApi_test_operation_call_nonexistent_operation |
test_operation_call_nonexistent_operation |
verified |
|
TEST_TestOperationsApi_test_operation_call_with_invalid_json |
test_operation_call_with_invalid_json |
verified |
|
TEST_TestOperationsApi_test_operations_listed_in_app_discovery |
test_operations_listed_in_app_discovery |
verified |
|
TEST_TestOperationsApi_test_root_endpoint_includes_operations |
test_root_endpoint_includes_operations |
verified |
|
TEST_TestScenarioActionLifecycle_test_01_create_action_execution_and_poll_to_completion |
test_01_create_action_execution_and_poll_to_completion |
verified |
|
TEST_TestScenarioActionLifecycle_test_02_cancel_action_execution |
test_02_cancel_action_execution |
verified |
|
TEST_TestScenarioActionLifecycle_test_03_service_execution_returns_immediately |
test_03_service_execution_returns_immediately |
verified |
|
TEST_TestScenarioActionLifecycle_test_04_execution_appears_in_list |
test_04_execution_appears_in_list |
verified |
|
TEST_TestScenarioActionLifecycle_test_06_get_operation_details |
test_06_get_operation_details |
verified |
|
TEST_TestScenarioActionLifecycle_test_07_get_execution_status |
test_07_get_execution_status |
verified |
|
TEST_TestScenarioActionLifecycle_test_08_update_execution_not_implemented |
test_08_update_execution_not_implemented |
verified |
|
TEST_TestScenarioBulkDataDownload_test_01_download_rosbag_success |
test_01_download_rosbag_success |
verified |
|
TEST_TestScenarioBulkDataDownload_test_02_download_wrong_entity_returns_404 |
test_02_download_wrong_entity_returns_404 |
verified |
|
TEST_TestScenarioBulkDataDownload_test_03_verify_complete_rosbag_content |
test_03_verify_complete_rosbag_content |
verified |
|
test_01_upload_small_file |
verified |
||
TEST_TestScenarioBulkDataUpload_test_02_upload_returns_location_header |
test_02_upload_returns_location_header |
verified |
|
TEST_TestScenarioBulkDataUpload_test_03_upload_with_description |
test_03_upload_with_description |
verified |
|
TEST_TestScenarioBulkDataUpload_test_04_upload_with_metadata |
test_04_upload_with_metadata |
verified |
|
TEST_TestScenarioBulkDataUpload_test_05_upload_missing_file_field |
test_05_upload_missing_file_field |
verified |
|
TEST_TestScenarioBulkDataUpload_test_06_upload_unknown_category |
test_06_upload_unknown_category |
verified |
|
TEST_TestScenarioBulkDataUpload_test_07_upload_rosbags_rejected |
test_07_upload_rosbags_rejected |
verified |
|
TEST_TestScenarioBulkDataUpload_test_08_upload_nonexistent_entity |
test_08_upload_nonexistent_entity |
verified |
|
test_09_upload_to_areas_405 |
verified |
||
TEST_TestScenarioBulkDataUpload_test_10_upload_to_functions_405 |
test_10_upload_to_functions_405 |
verified |
|
TEST_TestScenarioBulkDataUpload_test_11_delete_uploaded_item |
test_11_delete_uploaded_item |
verified |
|
TEST_TestScenarioBulkDataUpload_test_12_delete_nonexistent_item |
test_12_delete_nonexistent_item |
verified |
|
TEST_TestScenarioBulkDataUpload_test_13_delete_rosbags_rejected |
test_13_delete_rosbags_rejected |
verified |
|
test_14_delete_to_areas_405 |
verified |
||
TEST_TestScenarioBulkDataUpload_test_15_list_categories_includes_configured |
test_15_list_categories_includes_configured |
verified |
|
TEST_TestScenarioBulkDataUpload_test_16_list_descriptors_after_upload |
test_16_list_descriptors_after_upload |
verified |
|
TEST_TestScenarioBulkDataUpload_test_17_download_uploaded_file |
test_17_download_uploaded_file |
verified |
|
TEST_TestScenarioBulkDataUpload_test_18_download_nonexistent_returns_404 |
test_18_download_nonexistent_returns_404 |
verified |
|
TEST_TestScenarioBulkDataUpload_test_19_list_empty_after_delete |
test_19_list_empty_after_delete |
verified |
|
test_20_full_crud_cycle |
verified |
||
TEST_TestScenarioConfigManagement_test_01_list_configurations |
test_01_list_configurations |
verified |
|
TEST_TestScenarioConfigManagement_test_02_get_configuration_value |
test_02_get_configuration_value |
verified |
|
TEST_TestScenarioConfigManagement_test_03_set_and_verify_configuration |
test_03_set_and_verify_configuration |
verified |
|
TEST_TestScenarioConfigManagement_test_04_reset_all_configurations |
test_04_reset_all_configurations |
verified |
|
TEST_TestScenarioConfigManagement_test_05_reset_single_configuration |
test_05_reset_single_configuration |
verified |
|
test_01_read_sensor_data |
verified |
||
TEST_TestScenarioDataPublishVerify_test_02_publish_command_to_actuator |
test_02_publish_command_to_actuator |
verified |
|
TEST_TestScenarioDataPublishVerify_test_03_read_actuator_feedback |
test_03_read_actuator_feedback |
verified |
|
TEST_TestScenarioDiscoveryHybrid_test_01_areas_from_manifest |
test_01_areas_from_manifest |
verified |
|
TEST_TestScenarioDiscoveryHybrid_test_02_area_with_description |
test_02_area_with_description |
verified |
|
TEST_TestScenarioDiscoveryHybrid_test_03_area_subareas_hierarchy |
test_03_area_subareas_hierarchy |
verified |
|
test_04_nested_subareas |
verified |
||
TEST_TestScenarioDiscoveryHybrid_test_05_components_from_manifest |
test_05_components_from_manifest |
verified |
|
TEST_TestScenarioDiscoveryHybrid_test_06_component_type_preserved |
test_06_component_type_preserved |
verified |
|
TEST_TestScenarioDiscoveryHybrid_test_07_component_area_relationship |
test_07_component_area_relationship |
verified |
|
TEST_TestScenarioDiscoveryHybrid_test_08_component_subcomponents |
test_08_component_subcomponents |
verified |
|
TEST_TestScenarioDiscoveryHybrid_test_09_component_subcomponents_not_found |
test_09_component_subcomponents_not_found |
verified |
|
TEST_TestScenarioDiscoveryHybrid_test_10_component_depends_on_returns_items |
test_10_component_depends_on_returns_items |
verified |
|
TEST_TestScenarioDiscoveryHybrid_test_11_component_depends_on_empty |
test_11_component_depends_on_empty |
verified |
|
TEST_TestScenarioDiscoveryHybrid_test_12_component_depends_on_not_found |
test_12_component_depends_on_not_found |
verified |
|
TEST_TestScenarioDiscoveryHybrid_test_13_component_capabilities_includes_depends_on_link |
test_13_component_capabilities_includes_depends_on_link |
verified |
|
test_14_apps_from_manifest |
verified |
||
TEST_TestScenarioDiscoveryHybrid_test_15_app_online_with_runtime_node |
test_15_app_online_with_runtime_node |
verified |
|
TEST_TestScenarioDiscoveryHybrid_test_19_app_depends_on_relationship |
test_19_app_depends_on_relationship |
verified |
|
TEST_TestScenarioDiscoveryHybrid_test_20_functions_from_manifest |
test_20_functions_from_manifest |
verified |
|
TEST_TestScenarioDiscoveryHybrid_test_21_function_hosts_relationship |
test_21_function_hosts_relationship |
verified |
|
test_24_function_with_tags |
verified |
||
test_01_list_areas |
verified |
||
test_02_get_area_details |
verified |
||
test_04_area_subareas |
verified |
||
test_05_area_components |
verified |
||
test_06_list_components |
verified |
||
TEST_TestScenarioDiscoveryManifest_test_07_get_component_details |
test_07_get_component_details |
verified |
|
TEST_TestScenarioDiscoveryManifest_test_09_component_subcomponents |
test_09_component_subcomponents |
verified |
|
TEST_TestScenarioDiscoveryManifest_test_10_component_subcomponents_not_found |
test_10_component_subcomponents_not_found |
verified |
|
test_11_list_apps |
verified |
||
test_12_get_app_details |
verified |
||
TEST_TestScenarioDiscoveryManifest_test_15_app_data_endpoint |
test_15_app_data_endpoint |
verified |
|
TEST_TestScenarioDiscoveryManifest_test_17_app_configurations_endpoint |
test_17_app_configurations_endpoint |
verified |
|
TEST_TestScenarioDiscoveryManifest_test_18_app_data_item_endpoint |
test_18_app_data_item_endpoint |
verified |
|
test_19_list_functions |
verified |
||
TEST_TestScenarioDiscoveryManifest_test_20_get_function_details |
test_20_get_function_details |
verified |
|
test_22_function_hosts |
verified |
||
TEST_TestScenarioFaultInspection_test_01_fault_response_structure |
test_01_fault_response_structure |
verified |
|
TEST_TestScenarioFaultInspection_test_02_fault_status_object_structure |
test_02_fault_status_object_structure |
verified |
|
TEST_TestScenarioFaultInspection_test_03_fault_environment_data_structure |
test_03_fault_environment_data_structure |
verified |
|
TEST_TestScenarioFaultInspection_test_04_fault_snapshot_freeze_frame |
test_04_fault_snapshot_freeze_frame |
verified |
|
TEST_TestScenarioFaultInspection_test_05_fault_snapshot_rosbag_has_bulk_data_uri |
test_05_fault_snapshot_rosbag_has_bulk_data_uri |
verified |
|
TEST_TestScenarioFaultInspection_test_06_fault_x_medkit_extensions |
test_06_fault_x_medkit_extensions |
verified |
|
TEST_TestScenarioFaultLifecycle_test_01_wait_for_faults_to_appear |
test_01_wait_for_faults_to_appear |
verified |
|
TEST_TestScenarioFaultLifecycle_test_02_delete_all_faults_for_component |
test_02_delete_all_faults_for_component |
verified |
|
TEST_TestScenarioFaultLifecycle_test_03_delete_all_faults_for_app |
test_03_delete_all_faults_for_app |
verified |
|
TEST_TestScenarioFaultLifecycle_test_04_delete_all_faults_nonexistent |
test_04_delete_all_faults_nonexistent |
verified |
|
test_05_delete_single_fault |
verified |
||
TEST_TestScenarioSubscriptions_test_01_create_subscription_returns_201_with_correct_schema |
test_01_create_subscription_returns_201_with_correct_schema |
verified |
|
TEST_TestScenarioSubscriptions_test_02_list_subscriptions_returns_created_ones |
test_02_list_subscriptions_returns_created_ones |
verified |
|
TEST_TestScenarioSubscriptions_test_03_get_single_subscription |
test_03_get_single_subscription |
verified |
|
TEST_TestScenarioSubscriptions_test_04_update_subscription_interval |
test_04_update_subscription_interval |
verified |
|
TEST_TestScenarioSubscriptions_test_05_update_subscription_duration |
test_05_update_subscription_duration |
verified |
|
TEST_TestScenarioSubscriptions_test_06_delete_subscription_returns_204 |
test_06_delete_subscription_returns_204 |
verified |
|
TEST_TestScenarioSubscriptions_test_07_empty_list_after_delete |
test_07_empty_list_after_delete |
verified |
|
TEST_TestScenarioSubscriptions_test_10_sse_stream_returns_correct_headers |
test_10_sse_stream_returns_correct_headers |
verified |
|
TEST_TestScenarioSubscriptions_test_11_sse_stream_delivers_periodic_data |
test_11_sse_stream_delivers_periodic_data |
verified |
|
TEST_TestScenarioSubscriptions_test_12_sse_stream_closes_on_subscription_delete |
test_12_sse_stream_closes_on_subscription_delete |
verified |
|
TEST_TestScenarioSubscriptions_test_20_create_with_invalid_interval_returns_400 |
test_20_create_with_invalid_interval_returns_400 |
verified |
|
TEST_TestScenarioSubscriptions_test_21_create_with_zero_duration_returns_400 |
test_21_create_with_zero_duration_returns_400 |
verified |
|
TEST_TestScenarioSubscriptions_test_22_create_with_unsupported_protocol_returns_400 |
test_22_create_with_unsupported_protocol_returns_400 |
verified |
|
TEST_TestScenarioSubscriptions_test_23_create_with_invalid_resource_uri_returns_400 |
test_23_create_with_invalid_resource_uri_returns_400 |
verified |
|
TEST_TestScenarioSubscriptions_test_24_get_nonexistent_subscription_returns_404 |
test_24_get_nonexistent_subscription_returns_404 |
verified |
|
TEST_TestScenarioSubscriptions_test_25_delete_nonexistent_subscription_returns_404 |
test_25_delete_nonexistent_subscription_returns_404 |
verified |
|
TEST_TestScenarioSubscriptions_test_26_update_nonexistent_subscription_returns_404 |
test_26_update_nonexistent_subscription_returns_404 |
verified |
|
TEST_TestScenarioSubscriptions_test_27_create_for_nonexistent_entity_returns_404 |
test_27_create_for_nonexistent_entity_returns_404 |
verified |
|
TEST_TestScenarioSubscriptions_test_28_sse_stream_for_nonexistent_subscription_returns_404 |
test_28_sse_stream_for_nonexistent_subscription_returns_404 |
verified |
|
TEST_TestScenarioSubscriptions_test_30_cyclic_subscriptions_work_on_components |
test_30_cyclic_subscriptions_work_on_components |
verified |
|
test_01_list_scripts_empty |
verified |
||
test_02_upload_and_list |
verified |
||
test_03_get_script_metadata |
verified |
||
test_04_get_nonexistent_returns_404 |
verified |
||
test_05_delete_script |
verified |
||
test_06_delete_nonexistent_returns_404 |
verified |
||
test_07_upload_missing_file_field |
verified |
||
test_09_upload_with_metadata |
verified |
||
test_01_execute_python_script |
verified |
||
test_02_execute_shell_script |
verified |
||
TEST_TestScriptsExecution_test_03_terminate_running_execution |
test_03_terminate_running_execution |
verified |
|
test_06_get_nonexistent_execution |
verified |
||
TEST_TestScriptsExecution_test_07_start_execution_missing_type |
test_07_start_execution_missing_type |
verified |
|
TEST_TestScriptsExecution_test_08_start_execution_invalid_json |
test_08_start_execution_invalid_json |
verified |
|
test_09_execution_has_timestamps |
verified |
||
test_10_bash_script_execution |
verified |
||
test_11_output_content_verified |
verified |
||
test_12_parameters_via_stdin |
verified |
||
test_13_failed_script_execution |
verified |
||
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 |
|
TEST_TestScriptsNotConfigured_test_02_upload_script_returns_501 |
test_02_upload_script_returns_501 |
verified |
|
TEST_TestScriptsNotConfigured_test_03_get_script_returns_501 |
test_03_get_script_returns_501 |
verified |
|
TEST_TestScriptsNotConfigured_test_04_delete_script_returns_501 |
test_04_delete_script_returns_501 |
verified |
|
TEST_TestScriptsNotConfigured_test_05_start_execution_returns_501 |
test_05_start_execution_returns_501 |
verified |
|
TEST_TestScriptsNotConfigured_test_06_get_execution_returns_501 |
test_06_get_execution_returns_501 |
verified |
|
TEST_TestScriptsNotConfigured_test_07_control_execution_returns_501 |
test_07_control_execution_returns_501 |
verified |
|
TEST_TestSnapshotsApi_test_root_endpoint_excludes_legacy_snapshots |
test_root_endpoint_excludes_legacy_snapshots |
verified |
|
test_returns_restart_count |
verified |
||
test_returns_unit_info |
verified |
||
test_returns_unit_type |
verified |
||
test_returns_watchdog_usec |
verified |
||
TEST_TestSystemdComponentEndpoint_test_returns_units_aggregation |
test_returns_units_aggregation |
verified |
|
TEST_TestSystemdComponentEndpoint_test_units_have_active_state |
test_units_have_active_state |
verified |
|
TEST_TestSystemdComponentEndpoint_test_units_include_node_ids |
test_units_include_node_ids |
verified |
|
TEST_TestSystemdErrorHandling_test_nonexistent_app_returns_404 |
test_nonexistent_app_returns_404 |
verified |
|
TEST_TestSystemdErrorHandling_test_nonexistent_component_returns_404 |
test_nonexistent_component_returns_404 |
verified |
|
TEST_TestTriggersData_test_01_create_trigger_returns_201_with_correct_schema |
test_01_create_trigger_returns_201_with_correct_schema |
verified |
|
TEST_TestTriggersData_test_02_list_triggers_returns_created_trigger |
test_02_list_triggers_returns_created_trigger |
verified |
|
test_03_get_single_trigger |
verified |
||
test_04_update_trigger_lifetime |
verified |
||
test_05_delete_trigger_returns_204 |
verified |
||
TEST_TestTriggersData_test_10_sse_stream_returns_correct_headers |
test_10_sse_stream_returns_correct_headers |
verified |
|
TEST_TestTriggersData_test_11_sse_stream_delivers_data_events |
test_11_sse_stream_delivers_data_events |
verified |
|
TEST_TestTriggersData_test_12_sse_stream_closes_on_trigger_delete |
test_12_sse_stream_closes_on_trigger_delete |
verified |
|
TEST_TestTriggersData_test_27_events_for_nonexistent_trigger_returns_404 |
test_27_events_for_nonexistent_trigger_returns_404 |
verified |
|
TEST_TestTriggersFaults_test_01_create_fault_trigger_returns_201 |
test_01_create_fault_trigger_returns_201 |
verified |
|
test_02_list_fault_triggers |
verified |
||
test_03_get_fault_trigger |
verified |
||
TEST_TestTriggersFaults_test_04_update_fault_trigger_lifetime |
test_04_update_fault_trigger_lifetime |
verified |
|
test_05_delete_fault_trigger |
verified |
||
TEST_TestTriggersFaults_test_10_sse_endpoint_connects_and_streams |
test_10_sse_endpoint_connects_and_streams |
verified |
|
TEST_TestTriggersFaults_test_11_sse_fault_event_has_correct_headers |
test_11_sse_fault_event_has_correct_headers |
verified |
|
TEST_TestTriggersHierarchy_test_01_component_trigger_created_successfully |
test_01_component_trigger_created_successfully |
verified |
|
test_05_list_triggers_on_area |
verified |
||
TEST_TestTriggersHierarchy_test_06_delete_trigger_on_function |
test_06_delete_trigger_on_function |
verified |
|
test_01_create_logs_trigger |
verified |
||
test_02_list_logs_triggers |
verified |
||
test_03_get_logs_trigger |
verified |
||
test_04_update_logs_trigger_lifetime |
verified |
||
test_05_delete_logs_trigger |
verified |
||
TEST_TestTriggersLogs_test_10_sse_endpoint_connects_for_log_trigger |
test_10_sse_endpoint_connects_for_log_trigger |
verified |
|
test_11_sse_log_event_headers |
verified |
||
TEST_TestTriggersPersistent_test_01_create_persistent_trigger |
test_01_create_persistent_trigger |
verified |
|
TEST_TestTriggersPersistent_test_02_trigger_listed_on_primary |
test_02_trigger_listed_on_primary |
verified |
|
TEST_TestTriggersPersistent_test_04_restored_trigger_fields_match |
test_04_restored_trigger_fields_match |
verified |
|
TEST_TestTriggersPersistent_test_06_delete_via_secondary_removes_from_store |
test_06_delete_via_secondary_removes_from_store |
verified |
|
test_01_create_updates_trigger |
verified |
||
test_02_list_updates_triggers |
verified |
||
test_03_get_updates_trigger |
verified |
||
TEST_TestTriggersUpdates_test_04_update_updates_trigger_lifetime |
test_04_update_updates_trigger_lifetime |
verified |
|
test_05_delete_updates_trigger |
verified |
||
TEST_TestTriggersUpdates_test_10_events_endpoint_returns_sse_headers |
test_10_events_endpoint_returns_sse_headers |
verified |
|
TEST_TestTriggersUpdates_test_11_events_for_nonexistent_trigger_returns_404 |
test_11_events_for_nonexistent_trigger_returns_404 |
verified |
|
test_01_automated_completes |
verified |
||
TEST_TestUpdatesAutomated_test_02_automated_on_non_automated_returns_400 |
test_02_automated_on_non_automated_returns_400 |
verified |
|
test_01_list_updates_empty |
verified |
||
test_02_register_update |
verified |
||
test_03_list_after_register |
verified |
||
test_04_get_update_metadata |
verified |
||
test_05_get_nonexistent_returns_404 |
verified |
||
test_06_delete_update |
verified |
||
test_07_delete_nonexistent_returns_404 |
verified |
||
test_08_register_duplicate_returns_400 |
verified |
||
test_09_list_with_origin_filter |
verified |
||
TEST_TestUpdatesCRUD_test_10_list_with_target_version_filter |
test_10_list_with_target_version_filter |
verified |
|
TEST_TestUpdatesErrorCases_test_01_delete_during_prepare_returns_409 |
test_01_delete_during_prepare_returns_409 |
verified |
|
TEST_TestUpdatesErrorCases_test_02_prepare_nonexistent_returns_404 |
test_02_prepare_nonexistent_returns_404 |
verified |
|
TEST_TestUpdatesErrorCases_test_03_execute_nonexistent_returns_404 |
test_03_execute_nonexistent_returns_404 |
verified |
|
TEST_TestUpdatesErrorCases_test_04_register_missing_required_fields |
test_04_register_missing_required_fields |
verified |
|
test_05_register_malformed_json |
verified |
||
test_01_list_updates_returns_501 |
verified |
||
test_02_get_update_returns_501 |
verified |
||
TEST_TestUpdatesNoPlugin_test_03_register_update_returns_501 |
test_03_register_update_returns_501 |
verified |
|
test_04_prepare_returns_501 |
verified |
||
test_05_execute_returns_501 |
verified |
||
test_06_automated_returns_501 |
verified |
||
test_07_status_returns_501 |
verified |
||
test_08_delete_returns_501 |
verified |
||
TEST_TestUpdatesPrepareExecute_test_00_status_pending_right_after_register |
test_00_status_pending_right_after_register |
verified |
|
test_01_prepare_returns_202 |
verified |
||
test_02_prepare_completes |
verified |
||
TEST_TestUpdatesPrepareExecute_test_03_execute_after_prepare |
test_03_execute_after_prepare |
verified |
|
TEST_TestUpdatesPrepareExecute_test_04_execute_without_prepare_returns_400 |
test_04_execute_without_prepare_returns_400 |
verified |
|
TEST_TestUpdatesPrepareExecute_test_05_status_shows_progress |
test_05_status_shows_progress |
verified |
|
TEST_TestUpdatesPrepareExecute_test_06_status_not_found_for_unknown |
test_06_status_not_found_for_unknown |
verified |
|
TokenTypeToString |
verified |
||
DefaultTopicsUsedAsFallback |
verified |
||
FaultSpecificHasHighestPriority |
verified |
||
TEST_TopicResolutionTest_PatternMatchUsedWhenNoFaultSpecific |
PatternMatchUsedWhenNoFaultSpecific |
verified |
|
RegisterAndLookup |
verified |
||
InvalidParameterErrorFormat |
verified |
REQ_INTEROP_029; REQ_INTEROP_030; REQ_INTEROP_097; REQ_INTEROP_096; REQ_INTEROP_032; REQ_INTEROP_031 |
|
InvalidResourceUriVendorError |
verified |
||
Create_InvalidConditionType |
verified |
||
Create_InvalidParams |
verified |
||
Create_MaxTriggersExceeded |
verified |
||
Create_ValidOnChangeTrigger |
verified |
||
EventEnvelopeFormat |
verified |
||
Get_Existing |
verified |
||
Hierarchy_AreaToApp |
verified |
||
Hierarchy_ComponentToApp |
verified |
||
JsonPointer_ExtractsSubElement |
verified |
||
LifetimeExpiry |
verified |
||
List_ReturnsTriggersForEntity |
verified |
||
Multishot_NotifyTwice |
verified |
||
OnRemovedCallback |
verified |
||
Remove_ExistingTrigger |
verified |
||
SingleShot_NotifyMatchingChange |
verified |
||
SingleShot_RemovedAfterFiring |
verified |
||
Update_ChangeLifetime |
verified |
||
ClientLimitEnforced |
verified |
||
FilePersistence |
verified |
||
SaveAndLoadRoundTrip |
verified |
||
ContainsAllRequiredFields |
verified |
||
InvalidJsonPointer_Returns400 |
verified |
||
PathTooLong_Returns400 |
verified |
||
UnknownCollection_Returns400 |
verified |
||
UnsupportedProtocol_Returns400 |
verified |
||
TEST_TriggerValidationTest_VendorExtensionCollection_Accepted |
VendorExtensionCollection_Accepted |
verified |
|
TEST_UpdateManagerFailureTest_ExecuteExceptionSetsFailedStatus |
ExecuteExceptionSetsFailedStatus |
verified |
|
TEST_UpdateManagerFailureTest_ExecuteFailureSetsFailedStatus |
ExecuteFailureSetsFailedStatus |
verified |
|
TEST_UpdateManagerFailureTest_PrepareExceptionSetsFailedStatus |
PrepareExceptionSetsFailedStatus |
verified |
|
TEST_UpdateManagerFailureTest_PrepareFailureSetsFailedStatus |
PrepareFailureSetsFailedStatus |
verified |
|
AutomatedCompletes |
verified |
||
AutomatedRejectsNonAutomated |
verified |
||
TEST_UpdateManagerTest_ConcurrentPrepareOnSamePackageRejected |
ConcurrentPrepareOnSamePackageRejected |
verified |
|
DeleteDuringOperationFails |
verified |
||
DeleteUpdate |
verified |
||
DuplicateRegistration |
verified |
||
ExecuteAfterPrepare |
verified |
||
ExecuteRequiresPrepare |
verified |
||
GetUpdate |
verified |
||
GetUpdateNotFound |
verified |
||
HasBackend |
verified |
||
NoBackendMode |
verified |
||
PrepareAndPollStatus |
verified |
||
RegisterAndList |
verified |
||
StatusNotFoundForUnknown |
verified |
||
StatusPendingRightAfterRegister |
verified |
||
ContributorsOmitsFieldWhenInputEmpty |
verified |
||
TEST_XMedkitTest_ContributorsPlacesLocalFirstThenPeersAlphabeticallyFromReverseInput |
ContributorsPlacesLocalFirstThenPeersAlphabeticallyFromReverseInput |
verified |
|
ContributorsWithoutLocalStaysAlphabetical |
verified |
||
LoadValidFile |
verified |
||
MalformedYamlReturnsEmpty |
verified |
||
MissingFileReturnsEmpty |
verified |
||
PositiveConfirmationThresholdAutoNegated |
verified |