From 6aa6f8bbd2983529e19b9b9bae6d99c561979d40 Mon Sep 17 00:00:00 2001 From: Julien Perrochet Date: Wed, 13 Mar 2024 16:33:57 +0100 Subject: [PATCH] DSS0210 prepare sub interactions scenario: oir creation --- monitoring/prober/infrastructure.py | 2 +- .../dev/f3548_self_contained.yaml | 1 + .../resources/astm/f3548/v21/dss.py | 9 +- .../scenarios/astm/utm/dss/__init__.py | 1 + .../oir/crud/{create.md => create_correct.md} | 10 +- .../dss/fragments/oir/crud/create_query.md | 8 + .../sub/crud/{create.md => create_correct.md} | 5 +- .../dss/fragments/sub/crud/create_query.md | 8 + .../astm/utm/dss/subscription_interactions.md | 75 ++++ .../astm/utm/dss/subscription_interactions.py | 330 ++++++++++++++++++ .../subscription_synchronization.md | 2 +- .../suites/astm/utm/dss_probing.md | 30 +- .../suites/astm/utm/dss_probing.yaml | 9 + .../uss_qualifier/suites/astm/utm/f3548_21.md | 13 +- .../suites/astm/utm/f3548_21.yaml | 3 + .../suites/faa/uft/message_signing.md | 13 +- .../suites/interuss/dss/all_tests.md | 13 +- .../suites/uspace/flight_auth.md | 13 +- .../suites/uspace/required_services.md | 13 +- 19 files changed, 516 insertions(+), 42 deletions(-) rename monitoring/uss_qualifier/scenarios/astm/utm/dss/fragments/oir/crud/{create.md => create_correct.md} (61%) create mode 100644 monitoring/uss_qualifier/scenarios/astm/utm/dss/fragments/oir/crud/create_query.md rename monitoring/uss_qualifier/scenarios/astm/utm/dss/fragments/sub/crud/{create.md => create_correct.md} (74%) create mode 100644 monitoring/uss_qualifier/scenarios/astm/utm/dss/fragments/sub/crud/create_query.md create mode 100644 monitoring/uss_qualifier/scenarios/astm/utm/dss/subscription_interactions.md create mode 100644 monitoring/uss_qualifier/scenarios/astm/utm/dss/subscription_interactions.py diff --git a/monitoring/prober/infrastructure.py b/monitoring/prober/infrastructure.py index 95e3aac299..cb4045a0fc 100644 --- a/monitoring/prober/infrastructure.py +++ b/monitoring/prober/infrastructure.py @@ -100,7 +100,7 @@ def wrapper_default_scope(*args, **kwargs): resource_type_code_descriptions: Dict[ResourceType, str] = {} -# Next code: 381 +# Next code: 385 def register_resource_type(code: int, description: str) -> ResourceType: """Register that the specified code refers to the described resource. diff --git a/monitoring/uss_qualifier/configurations/dev/f3548_self_contained.yaml b/monitoring/uss_qualifier/configurations/dev/f3548_self_contained.yaml index c5a5b232fd..6c6ae21ef2 100644 --- a/monitoring/uss_qualifier/configurations/dev/f3548_self_contained.yaml +++ b/monitoring/uss_qualifier/configurations/dev/f3548_self_contained.yaml @@ -26,6 +26,7 @@ v1: second_utm_auth: second_utm_auth planning_area: planning_area problematically_big_area: problematically_big_area + utm_client_identity: utm_client_identity # This block defines all the resources available in the resource pool. # Presumably all resources defined below would be used either diff --git a/monitoring/uss_qualifier/resources/astm/f3548/v21/dss.py b/monitoring/uss_qualifier/resources/astm/f3548/v21/dss.py index 6b6afdd8ec..f54f8669d5 100644 --- a/monitoring/uss_qualifier/resources/astm/f3548/v21/dss.py +++ b/monitoring/uss_qualifier/resources/astm/f3548/v21/dss.py @@ -303,8 +303,15 @@ def put_op_intent( result = query.parse_json_result(ChangeOperationalIntentReferenceResponse) return result.operational_intent_reference, result.subscribers, query else: + err_msg = query.error_message if query.error_message is not None else "" + if ( + query.status_code == 409 + and "missing_operational_intents" in query.response.json + ): + err_msg += f" (missing_operational_intents: {query.response.json['missing_operational_intents']})" + raise QueryError( - f"Received code {query.status_code} when attempting to {'create' if create else 'update'} operational intent with ID {oi_uuid}{f'; error message: `{query.error_message}`' if query.error_message is not None else ''}", + f"Received code {query.status_code} when attempting to {'create' if create else 'update'} operational intent with ID {oi_uuid}; error message: `{err_msg}`", query, ) diff --git a/monitoring/uss_qualifier/scenarios/astm/utm/dss/__init__.py b/monitoring/uss_qualifier/scenarios/astm/utm/dss/__init__.py index 47a422e5d9..4333161a45 100644 --- a/monitoring/uss_qualifier/scenarios/astm/utm/dss/__init__.py +++ b/monitoring/uss_qualifier/scenarios/astm/utm/dss/__init__.py @@ -4,3 +4,4 @@ from .op_intent_ref_access_control import OpIntentReferenceAccessControl from .dss_interoperability import DSSInteroperability from .report import Report +from .subscription_interactions import SubscriptionInteractions diff --git a/monitoring/uss_qualifier/scenarios/astm/utm/dss/fragments/oir/crud/create.md b/monitoring/uss_qualifier/scenarios/astm/utm/dss/fragments/oir/crud/create_correct.md similarity index 61% rename from monitoring/uss_qualifier/scenarios/astm/utm/dss/fragments/oir/crud/create.md rename to monitoring/uss_qualifier/scenarios/astm/utm/dss/fragments/oir/crud/create_correct.md index f0ae40f967..53d2b92d69 100644 --- a/monitoring/uss_qualifier/scenarios/astm/utm/dss/fragments/oir/crud/create.md +++ b/monitoring/uss_qualifier/scenarios/astm/utm/dss/fragments/oir/crud/create_correct.md @@ -1,11 +1,13 @@ # Create operational intent reference test step fragment -This test step fragment validates that operational intent references can be created +This test step fragment validates that: + - a query to create an operational intent reference with valid parameters succeeds + - the response to the query conforms to the OpenAPI specification + - the content of the response reflects the created operational intent reference -## 🛑 Create operational intent reference query succeeds check +## [Query Success](./create_query.md) -As per **[astm.f3548.v21.DSS0005,1](../../../../../../../requirements/astm/f3548/v21.md)**, the DSS API must allow callers to create an operational intent reference with either one or both of the -start and end time missing, provided all the required parameters are valid. +Check query succeeds ## [Response Format](./create_format.md) diff --git a/monitoring/uss_qualifier/scenarios/astm/utm/dss/fragments/oir/crud/create_query.md b/monitoring/uss_qualifier/scenarios/astm/utm/dss/fragments/oir/crud/create_query.md new file mode 100644 index 0000000000..4db2c3944f --- /dev/null +++ b/monitoring/uss_qualifier/scenarios/astm/utm/dss/fragments/oir/crud/create_query.md @@ -0,0 +1,8 @@ +# Create operational intent reference test step fragment + +This test step fragment validates that a query to create an operational intent reference with valid parameters succeeds + +## 🛑 Create operational intent reference query succeeds check + +As per **[astm.f3548.v21.DSS0005,1](../../../../../../../requirements/astm/f3548/v21.md)**, the DSS API must allow callers to create an operational intent reference with either one or both of the +start and end time missing, provided all the required parameters are valid. diff --git a/monitoring/uss_qualifier/scenarios/astm/utm/dss/fragments/sub/crud/create.md b/monitoring/uss_qualifier/scenarios/astm/utm/dss/fragments/sub/crud/create_correct.md similarity index 74% rename from monitoring/uss_qualifier/scenarios/astm/utm/dss/fragments/sub/crud/create.md rename to monitoring/uss_qualifier/scenarios/astm/utm/dss/fragments/sub/crud/create_correct.md index de0bc5cfab..1991d4038e 100644 --- a/monitoring/uss_qualifier/scenarios/astm/utm/dss/fragments/sub/crud/create.md +++ b/monitoring/uss_qualifier/scenarios/astm/utm/dss/fragments/sub/crud/create_correct.md @@ -2,10 +2,9 @@ This test step fragment validates that subscriptions can be created. -## 🛑 Create subscription query succeeds check +## [Query Success](./create_query.md) -As per **[astm.f3548.v21.DSS0005,5](../../../../../../../requirements/astm/f3548/v21.md)**, the DSS API must allow callers to create a subscription with either one or both of the -start and end time missing, provided all the required parameters are valid. +Check query succeeds ## 🛑 Create subscription response format conforms to spec check diff --git a/monitoring/uss_qualifier/scenarios/astm/utm/dss/fragments/sub/crud/create_query.md b/monitoring/uss_qualifier/scenarios/astm/utm/dss/fragments/sub/crud/create_query.md new file mode 100644 index 0000000000..ed438e1a7d --- /dev/null +++ b/monitoring/uss_qualifier/scenarios/astm/utm/dss/fragments/sub/crud/create_query.md @@ -0,0 +1,8 @@ +# Create subscription test step fragment + +This test step fragment validates that a query to create a subscription with valid parameters succeeds. + +## 🛑 Create subscription query succeeds check + +As per **[astm.f3548.v21.DSS0005,5](../../../../../../../requirements/astm/f3548/v21.md)**, the DSS API must allow callers to create a subscription with either one or both of the +start and end time missing, provided all the required parameters are valid. diff --git a/monitoring/uss_qualifier/scenarios/astm/utm/dss/subscription_interactions.md b/monitoring/uss_qualifier/scenarios/astm/utm/dss/subscription_interactions.md new file mode 100644 index 0000000000..c63da98d65 --- /dev/null +++ b/monitoring/uss_qualifier/scenarios/astm/utm/dss/subscription_interactions.md @@ -0,0 +1,75 @@ +# ASTM SCD DSS: Subscription and entity interaction test scenario + +## Overview + +Create and mutate subscriptions as well as entities, and verify that the DSS handles notifications and expiry correctly. + +## Resources + +### dss + +[`DSSInstanceResource`](../../../../resources/astm/f3548/v21/dss.py) to be tested in this scenario. + +### other_instances + +[`DSSInstancesResource`](../../../../resources/astm/f3548/v21/dss.py) pointing to the DSS instances used to confirm that entities are properly propagated. + +### id_generator + +[`IDGeneratorResource`](../../../../resources/interuss/id_generator.py) providing the Subscription IDs for this scenario. + +### planning_area + +[`PlanningAreaResource`](../../../../resources/astm/f3548/v21/planning_area.py) describes the 3D volume in which subscriptions will be created. + +## Setup test case + +### [Ensure clean workspace test step](clean_workspace.md) + +This step ensures that no subscriptions and OIRs with the known test IDs exists in the DSS deployment. + +## Subscription interactions test case + +Test case that ensures that interactions between subscriptions and entities are correctly handled by a deployment of multiple DSS instances. + +### [Create background subscriptions test step](./fragments/sub/crud/create_query.md) + +Sets up two subscriptions that cover the planning area at different times, and which will be used as part of the interaction tests. + +### Create an OIR at every DSS in sequence test step + +This test step will create an operational intent reference and assorted subscription at every DSS, in sequence, each time verifying that the DSS +requires notifications for any previously established subscription that intersects with the newly created OIR. + +Note that this step is run once for each involved DSS (that is, once for the primary DSS and once for every secondary DSS) + +#### [Create OIR](./fragments/oir/crud/create_query.md) + +Check that the OIR creation query succeeds + +#### 🛑 DSS response contains the expected background subscription check + +The response from a DSS to a valid OIR creation request is expected to contain any relevant subscription for the OIR's extents. +This includes one of the subscriptions created earlier, as it is designed to intersect with the OIRs being created. + +If the DSS omits the intersecting subscription, it fails to implement **[astm.f3548.v21.DSS0210,A2-7-2,4](../../../../requirements/astm/f3548/v21.md)**. + +#### 🛑 DSS does not return non-intersecting background subscription check + +The response from a DSS to a valid OIR creation request is expected to contain any relevant subscription for the OIR's extents. +This should exclude one of subscriptions created earlier, as it is designed to not intersect with the OIRs being created. + +If the DSS includes the non-intersecting subscription, it fails to implement **[astm.f3548.v21.DSS0210,A2-7-2,4](../../../../requirements/astm/f3548/v21.md)**. + +#### 🛑 DSS returns the implicit subscriptions from intersecting OIRs check + +The response from a DSS to a valid OIR creation request is expected to contain any relevant subscription for the OIR's extents. +This includes any implicit subscription previously created on the DSS as part of a previously created OIR. + +If the DSS omits any of the implicit subscriptions belonging to an OIR previously created on another DSS (which are designed to all intersect), +any of the DSSes at which an earlier OIR was created, or the DSS at which the current OIR has been created, +are in violation of **[astm.f3548.v21.DSS0210,A2-7-2,4](../../../../requirements/astm/f3548/v21.md)**. + +More specifically, they are breaking the above requirement by failing one or both of the following requirements: + +## [Cleanup](./clean_workspace.md) diff --git a/monitoring/uss_qualifier/scenarios/astm/utm/dss/subscription_interactions.py b/monitoring/uss_qualifier/scenarios/astm/utm/dss/subscription_interactions.py new file mode 100644 index 0000000000..129b5d8d17 --- /dev/null +++ b/monitoring/uss_qualifier/scenarios/astm/utm/dss/subscription_interactions.py @@ -0,0 +1,330 @@ +from datetime import datetime, timedelta +from typing import Dict, List, Tuple, Set + +from uas_standards.astm.f3548.v21.api import ( + Subscription, + SubscriptionID, + EntityID, + OperationalIntentReference, + OperationalIntentState, + PutOperationalIntentReferenceParameters, + SubscriberToNotify, +) +from uas_standards.astm.f3548.v21.constants import Scope + +from monitoring.monitorlib.delay import sleep +from monitoring.monitorlib.fetch import QueryError, Query +from monitoring.monitorlib.geotemporal import Volume4D +from monitoring.monitorlib.mutate.scd import MutatedSubscription +from monitoring.prober.infrastructure import register_resource_type +from monitoring.uss_qualifier.resources.astm.f3548.v21 import PlanningAreaResource +from monitoring.uss_qualifier.resources.astm.f3548.v21.dss import ( + DSSInstanceResource, + DSSInstancesResource, + DSSInstance, +) +from monitoring.uss_qualifier.resources.astm.f3548.v21.subscription_params import ( + SubscriptionParams, +) +from monitoring.uss_qualifier.resources.communications import ClientIdentityResource +from monitoring.uss_qualifier.resources.interuss.id_generator import IDGeneratorResource +from monitoring.uss_qualifier.scenarios.astm.utm.dss import test_step_fragments +from monitoring.uss_qualifier.scenarios.scenario import ( + TestScenario, + PendingCheck, +) +from monitoring.uss_qualifier.suites.suite import ExecutionContext + +SUBSCRIPTION_EXPIRY_DELAY_SEC = 5 +WAIT_FOR_EXPIRY_SEC = 7 + + +class SubscriptionInteractions(TestScenario): + """ + A scenario that tests interactions between subscriptions and entities across a DSS cluster. + + Currently, this does: + - verify that subscriptions that ended are properly expired: + - they disappear from the DSS + - they don't trigger notifications. + """ + + SUB_TYPE = register_resource_type(383, "Subscriptions") + OIR_TYPE = register_resource_type(384, "Operational Intent References") + + _sub_ids: List[SubscriptionID] + _oir_ids: List[EntityID] + + _current_subs: Dict[SubscriptionID, Subscription] + _current_oirs: Dict[EntityID, OperationalIntentReference] + + # Times for the background subscriptions + _sub_1_start: datetime + _sub_1_end: datetime + _sub_2_start: datetime + _sub_2_end: datetime + + _manager: str + + def __init__( + self, + dss: DSSInstanceResource, + other_instances: DSSInstancesResource, + id_generator: IDGeneratorResource, + planning_area: PlanningAreaResource, + utm_client_identity: ClientIdentityResource, + ): + """ + Args: + dss: primary dss to test + other_instances: other dss instances to test + id_generator: will let us generate specific identifiers + planning_area: An Area to use for the tests. It should be an area for which the DSS is responsible, + but has no other requirements. + """ + super().__init__() + scopes = { + Scope.StrategicCoordination: "create and delete subscriptions and entities" + } + # This is an UTMClientSession + self._dss = dss.get_instance(scopes) + self._pid = [self._dss.participant_id] + self._planning_area = planning_area.specification + + self._secondary_instances = [ + dss.get_instance(scopes) for dss in other_instances.dss_instances + ] + + base_sub_id = id_generator.id_factory.make_id(self.SUB_TYPE) + # Prepare 2 different subscription ids: + self._sub_ids = [f"{base_sub_id[:-3]}{i:03d}" for i in range(2)] + + base_oir_id = id_generator.id_factory.make_id(self.OIR_TYPE) + # Prepare one OIR id for each DSS we will interact with (one for the main and one for each secondary) + self._oir_ids = [ + f"{base_oir_id[:-3]}{i:03d}" + for i in range(len(self._secondary_instances) + 1) + ] + + # First subscription from now to 20 minutes in the future + self._sub_1_start = datetime.utcnow() + self._sub_1_end = self._sub_1_start + timedelta(minutes=20) + + # Second subscription starts 20 minutes after the first ends and lasts for 1 hour + self._sub_2_start = self._sub_1_end + timedelta(minutes=20) + self._sub_2_end = self._sub_2_start + timedelta(hours=1) + + self._manager = utm_client_identity.subscriber() + + def run(self, context: ExecutionContext): + self.begin_test_scenario(context) + self._setup_case() + self.begin_test_case("Subscription interactions") + + self.begin_test_step("Create background subscriptions") + self._step_create_background_subs() + self.end_test_step() + + self._steps_create_oirs_at_each_dss() + + self.end_test_case() + self.end_test_scenario() + + def _step_create_background_subs(self): + """Creates two subscription through the primary DSS: one that is valid from now into a short future, + and one that starts one hour after the first ends""" + + # TODO creation checks + + # Create the first subscription + sub_now_params = self._planning_area.get_new_subscription_params( + subscription_id=self._sub_ids[0], + start_time=self._sub_1_start, + duration=self._sub_1_end - self._sub_1_start, + # This is a planning area without constraint processing + notify_for_op_intents=True, + notify_for_constraints=False, + ) + + sub_now = self._create_sub_with_params(sub_now_params) + self._current_subs[sub_now_params.sub_id] = sub_now + + # Create the second subscription, that starts later + sub_later_params = self._planning_area.get_new_subscription_params( + subscription_id=self._sub_ids[1], + start_time=self._sub_2_start, + duration=self._sub_2_end - self._sub_2_start, + # This is a planning area without constraint processing + notify_for_op_intents=True, + notify_for_constraints=False, + ) + + sub_later = self._create_sub_with_params(sub_later_params) + self._current_subs[sub_later_params.sub_id] = sub_later + + def _steps_create_oirs_at_each_dss(self): + """Creates an OIR at each DSS instance""" + + common_params = self._planning_area.get_new_operational_intent_ref_params( + key=[], # Added in each step below + state=OperationalIntentState.Accepted, + uss_base_url="https://example.interuss.org/oir_base_url", + time_start=datetime.utcnow(), + time_end=self._sub_1_end + + timedelta( + minutes=10 + ), # Cover the first subscription but not the second one + subscription_id=None, + implicit_sub_base_url="https://example.interuss.org/sub_base_url", + ) + + existing_oir = None + possible_culprits = [] + for i, dss in enumerate([self._dss] + self._secondary_instances): + + self.begin_test_step("Create an OIR at every DSS in sequence") + + oir_id = self._oir_ids[i] + + if existing_oir: + common_params.key.append(existing_oir.ovn) + oir, subs, q = self._put_op_intent(dss, oir_id, common_params) + notification_ids = _to_sub_ids(subs) + possible_culprits.append(dss.participant_id) + + with self.check( + "DSS response contains the expected background subscription", + dss.participant_id, + ) as check: + # Check if the background subscription is present: + if self._sub_ids[0] not in notification_ids: + check.record_failed( + summary="DSS did not return the intersecting background subscription", + details=f"Expected subscription {self._sub_ids[0]} (first background subscription) in the" + f" list of subscriptions to notify, but got {notification_ids}", + query_timestamps=[q.request.timestamp], + ) + + with self.check( + "DSS does not return non-intersecting background subscription", + dss.participant_id, + ) as check: + # Check if the background subscription is present: + if self._sub_ids[1] in notification_ids: + check.record_failed( + summary="DSS returned the non-intersecting background subscription", + details=f"Expected subscription {self._sub_ids[1]} (second background subscription) to not be in the" + f" list of subscriptions to notify, but got {notification_ids}", + query_timestamps=[q.request.timestamp], + ) + + with self.check( + "DSS returns the implicit subscriptions from intersecting OIRs", + possible_culprits, + ) as check: + # Previously created OIRs have subscriptions that should be triggered: + for existing_oir_id, existing_oir in self._current_oirs.items(): + if existing_oir.subscription_id not in notification_ids: + check.record_failed( + summary="Missing subscription to notify", + details=f"Expected subscription {existing_oir.subscription_id} to be notified for " + f"freshly created OIR {existing_oir_id}", + query_timestamps=[q.request.timestamp], + ) + + existing_oir = oir + self._current_oirs[oir_id] = oir + self.end_test_step() + + def _put_op_intent( + self, + dss: DSSInstance, + oir_id: EntityID, + params: PutOperationalIntentReferenceParameters, + ) -> Tuple[OperationalIntentReference, List[SubscriberToNotify], Query]: + + with self.check( + "Create operational intent reference query succeeds", [dss.participant_id] + ) as check: + try: + oir, subs, q = dss.put_op_intent( + extents=params.extents, + key=params.key, + state=params.state, + base_url=params.uss_base_url, + oi_id=oir_id, + ovn=None, + ) + self.record_query(q) + except QueryError as qe: + self.record_queries(qe.queries) + check.record_failed( + summary="Failed to create operational intent reference", + details=f"Failed to create operational intent reference: {qe}", + query_timestamps=qe.query_timestamps, + ) + + return oir, subs, q + + def _create_sub_with_params(self, params: SubscriptionParams) -> Subscription: + """Create a subscription with the given parameters via the primary DSS instance""" + with self.check("Create subscription query succeeds") as check: + r = self._dss.upsert_subscription(**params) + if not r.success: + check.record_failed( + summary="Create subscription query failed", + details=f"Failed to create a subscription on primary DSS with code {r.status_code}: {r.error_message}", + query_timestamps=[r.request.timestamp], + ) + return r.subscription + + def _setup_case(self): + self.begin_test_case("Setup") + + # Multiple runs of the scenario seem to rely on the same instance of it: + # thus we need to reset the state of the scenario before running it. + self._current_subs = {} + self._current_oirs = {} + + self._ensure_clean_workspace_step() + + self.end_test_case() + + def _ensure_clean_workspace_step(self): + self.begin_test_step("Ensure clean workspace") + # Start by dropping any active sub + self._clean_workspace() + self.end_test_step() + + def _clean_workspace(self): + extents = Volume4D(volume=self._planning_area.volume) + test_step_fragments.cleanup_active_oirs( + self, + self._dss, + extents, + self._manager, + ) + for oir_id in self._oir_ids: + test_step_fragments.cleanup_op_intent(self, self._dss, oir_id) + test_step_fragments.cleanup_active_subs( + self, + self._dss, + extents, + ) + for sub_id in self._sub_ids: + test_step_fragments.cleanup_sub(self, self._dss, sub_id) + + def cleanup(self): + self.begin_cleanup() + self._clean_workspace() + self.end_cleanup() + + +def _to_sub_ids(subscribers: List[SubscriberToNotify]) -> Set[SubscriptionID]: + """Flatten the passed list of subscribers to notify to a set of subscription IDs""" + sub_ids = set() + for subscriber in subscribers: + for subscription in subscriber.subscriptions: + sub_ids.add(subscription.subscription_id) + + return sub_ids diff --git a/monitoring/uss_qualifier/scenarios/astm/utm/dss/synchronization/subscription_synchronization.md b/monitoring/uss_qualifier/scenarios/astm/utm/dss/synchronization/subscription_synchronization.md index 01c3dea057..8b40ec3d56 100644 --- a/monitoring/uss_qualifier/scenarios/astm/utm/dss/synchronization/subscription_synchronization.md +++ b/monitoring/uss_qualifier/scenarios/astm/utm/dss/synchronization/subscription_synchronization.md @@ -40,7 +40,7 @@ This test step creates multiple subscriptions with different combinations of the All subscriptions are left on the DSS when this step ends, as they are expected to be present for the subsequent step. -#### [Create subscription](../fragments/sub/crud/create.md) +#### [Create subscription](../fragments/sub/crud/create_correct.md) Verify that a subscription can be created on the primary DSS. diff --git a/monitoring/uss_qualifier/suites/astm/utm/dss_probing.md b/monitoring/uss_qualifier/suites/astm/utm/dss_probing.md index aa77032f43..e23f7ad858 100644 --- a/monitoring/uss_qualifier/suites/astm/utm/dss_probing.md +++ b/monitoring/uss_qualifier/suites/astm/utm/dss_probing.md @@ -4,14 +4,15 @@ ## [Actions](../../README.md#actions) -1. Scenario: [ASTM SCD DSS: Interfaces authentication](../../../scenarios/astm/utm/dss/authentication/authentication_validation.md) ([`scenarios.astm.utm.dss.authentication.AuthenticationValidation`](../../../scenarios/astm/utm/dss/authentication/authentication_validation.py)) -2. Scenario: [ASTM SCD DSS: Subscription Simple](../../../scenarios/astm/utm/dss/subscription_simple.md) ([`scenarios.astm.utm.dss.SubscriptionSimple`](../../../scenarios/astm/utm/dss/subscription_simple.py)) -3. Scenario: [ASTM SCD DSS: Subscription Validation](../../../scenarios/astm/utm/dss/subscription_validation.md) ([`scenarios.astm.utm.dss.SubscriptionValidation`](../../../scenarios/astm/utm/dss/subscription_validation.py)) -4. Scenario: [ASTM F3548-21 UTM DSS Operational Intent Reference Access Control](../../../scenarios/astm/utm/dss/op_intent_ref_access_control.md) ([`scenarios.astm.utm.dss.OpIntentReferenceAccessControl`](../../../scenarios/astm/utm/dss/op_intent_ref_access_control.py)) -5. Scenario: [ASTM F3548-21 UTM DSS interoperability](../../../scenarios/astm/utm/dss/dss_interoperability.md) ([`scenarios.astm.utm.dss.DSSInteroperability`](../../../scenarios/astm/utm/dss/dss_interoperability.py)) -6. Scenario: [ASTM SCD DSS: Subscription Synchronization](../../../scenarios/astm/utm/dss/synchronization/subscription_synchronization.md) ([`scenarios.astm.utm.dss.synchronization.SubscriptionSynchronization`](../../../scenarios/astm/utm/dss/synchronization/subscription_synchronization.py)) -7. Scenario: [ASTM UTM DSS: Direct CRDB access](../../../scenarios/astm/utm/dss/crdb_access.md) ([`scenarios.astm.utm.dss.CRDBAccess`](../../../scenarios/astm/utm/dss/crdb_access.py)) -8. Scenario: [ASTM SCD DSS: Report](../../../scenarios/astm/utm/dss/report.md) ([`scenarios.astm.utm.dss.Report`](../../../scenarios/astm/utm/dss/report.py)) +1. Scenario: [ASTM SCD DSS: Subscription and entity interaction](../../../scenarios/astm/utm/dss/subscription_interactions.md) ([`scenarios.astm.utm.dss.SubscriptionInteractions`](../../../scenarios/astm/utm/dss/subscription_interactions.py)) +2. Scenario: [ASTM SCD DSS: Interfaces authentication](../../../scenarios/astm/utm/dss/authentication/authentication_validation.md) ([`scenarios.astm.utm.dss.authentication.AuthenticationValidation`](../../../scenarios/astm/utm/dss/authentication/authentication_validation.py)) +3. Scenario: [ASTM SCD DSS: Subscription Simple](../../../scenarios/astm/utm/dss/subscription_simple.md) ([`scenarios.astm.utm.dss.SubscriptionSimple`](../../../scenarios/astm/utm/dss/subscription_simple.py)) +4. Scenario: [ASTM SCD DSS: Subscription Validation](../../../scenarios/astm/utm/dss/subscription_validation.md) ([`scenarios.astm.utm.dss.SubscriptionValidation`](../../../scenarios/astm/utm/dss/subscription_validation.py)) +5. Scenario: [ASTM F3548-21 UTM DSS Operational Intent Reference Access Control](../../../scenarios/astm/utm/dss/op_intent_ref_access_control.md) ([`scenarios.astm.utm.dss.OpIntentReferenceAccessControl`](../../../scenarios/astm/utm/dss/op_intent_ref_access_control.py)) +6. Scenario: [ASTM F3548-21 UTM DSS interoperability](../../../scenarios/astm/utm/dss/dss_interoperability.md) ([`scenarios.astm.utm.dss.DSSInteroperability`](../../../scenarios/astm/utm/dss/dss_interoperability.py)) +7. Scenario: [ASTM SCD DSS: Subscription Synchronization](../../../scenarios/astm/utm/dss/synchronization/subscription_synchronization.md) ([`scenarios.astm.utm.dss.synchronization.SubscriptionSynchronization`](../../../scenarios/astm/utm/dss/synchronization/subscription_synchronization.py)) +8. Scenario: [ASTM UTM DSS: Direct CRDB access](../../../scenarios/astm/utm/dss/crdb_access.md) ([`scenarios.astm.utm.dss.CRDBAccess`](../../../scenarios/astm/utm/dss/crdb_access.py)) +9. Scenario: [ASTM SCD DSS: Report](../../../scenarios/astm/utm/dss/report.md) ([`scenarios.astm.utm.dss.Report`](../../../scenarios/astm/utm/dss/report.py)) ## [Checked requirements](../../README.md#checked-requirements) @@ -23,20 +24,20 @@ Checked in - astm
.f3548
.v21
+ astm
.f3548
.v21
DSS0005,1 Implemented - ASTM F3548-21 UTM DSS Operational Intent Reference Access Control
ASTM SCD DSS: Interfaces authentication
ASTM SCD DSS: Subscription Simple
ASTM SCD DSS: Subscription Synchronization
ASTM SCD DSS: Subscription Validation + ASTM F3548-21 UTM DSS Operational Intent Reference Access Control
ASTM SCD DSS: Interfaces authentication
ASTM SCD DSS: Subscription Simple
ASTM SCD DSS: Subscription Synchronization
ASTM SCD DSS: Subscription Validation
ASTM SCD DSS: Subscription and entity interaction DSS0005,2 Implemented - ASTM F3548-21 UTM DSS Operational Intent Reference Access Control
ASTM SCD DSS: Interfaces authentication
ASTM SCD DSS: Subscription Simple
ASTM SCD DSS: Subscription Synchronization
ASTM SCD DSS: Subscription Validation + ASTM F3548-21 UTM DSS Operational Intent Reference Access Control
ASTM SCD DSS: Interfaces authentication
ASTM SCD DSS: Subscription Simple
ASTM SCD DSS: Subscription Synchronization
ASTM SCD DSS: Subscription Validation
ASTM SCD DSS: Subscription and entity interaction DSS0005,5 Implemented - ASTM F3548-21 UTM DSS Operational Intent Reference Access Control
ASTM SCD DSS: Interfaces authentication
ASTM SCD DSS: Subscription Simple
ASTM SCD DSS: Subscription Synchronization
ASTM SCD DSS: Subscription Validation + ASTM F3548-21 UTM DSS Operational Intent Reference Access Control
ASTM SCD DSS: Interfaces authentication
ASTM SCD DSS: Subscription Simple
ASTM SCD DSS: Subscription Synchronization
ASTM SCD DSS: Subscription Validation
ASTM SCD DSS: Subscription and entity interaction DSS0015 @@ -108,6 +109,11 @@ Implemented ASTM SCD DSS: Subscription Synchronization + + DSS0210,A2-7-2,4 + Implemented + ASTM SCD DSS: Subscription and entity interaction + DSS0210,A2-7-2,7 Implemented diff --git a/monitoring/uss_qualifier/suites/astm/utm/dss_probing.yaml b/monitoring/uss_qualifier/suites/astm/utm/dss_probing.yaml index f91516fd35..8ee9f4d992 100644 --- a/monitoring/uss_qualifier/suites/astm/utm/dss_probing.yaml +++ b/monitoring/uss_qualifier/suites/astm/utm/dss_probing.yaml @@ -8,7 +8,16 @@ resources: id_generator: resources.interuss.IDGeneratorResource planning_area: resources.astm.f3548.v21.PlanningAreaResource problematically_big_area: resources.VerticesResource + utm_client_identity: resources.communications.ClientIdentityResource actions: + - test_scenario: + scenario_type: scenarios.astm.utm.dss.SubscriptionInteractions + resources: + dss: dss + other_instances: all_dss_instances + id_generator: id_generator + planning_area: planning_area + utm_client_identity: utm_client_identity - test_scenario: scenario_type: scenarios.astm.utm.dss.authentication.AuthenticationValidation resources: diff --git a/monitoring/uss_qualifier/suites/astm/utm/f3548_21.md b/monitoring/uss_qualifier/suites/astm/utm/f3548_21.md index 1e9959bc3e..d46cc3a691 100644 --- a/monitoring/uss_qualifier/suites/astm/utm/f3548_21.md +++ b/monitoring/uss_qualifier/suites/astm/utm/f3548_21.md @@ -35,20 +35,20 @@ Checked in - astm
.f3548
.v21
+ astm
.f3548
.v21
DSS0005,1 Implemented - ASTM F3548 flight planners preparation
ASTM F3548-21 UTM DSS Operational Intent Reference Access Control
ASTM SCD DSS: Interfaces authentication
ASTM SCD DSS: Subscription Simple
ASTM SCD DSS: Subscription Synchronization
ASTM SCD DSS: Subscription Validation
Off-Nominal planning: down USS
Off-Nominal planning: down USS with equal priority conflicts not permitted + ASTM F3548 flight planners preparation
ASTM F3548-21 UTM DSS Operational Intent Reference Access Control
ASTM SCD DSS: Interfaces authentication
ASTM SCD DSS: Subscription Simple
ASTM SCD DSS: Subscription Synchronization
ASTM SCD DSS: Subscription Validation
ASTM SCD DSS: Subscription and entity interaction
Off-Nominal planning: down USS
Off-Nominal planning: down USS with equal priority conflicts not permitted DSS0005,2 Implemented - ASTM F3548 flight planners preparation
ASTM F3548-21 UTM DSS Operational Intent Reference Access Control
ASTM SCD DSS: Interfaces authentication
ASTM SCD DSS: Subscription Simple
ASTM SCD DSS: Subscription Synchronization
ASTM SCD DSS: Subscription Validation
Awareness of relevant operational intents
Data Validation of GET operational intents by USS
Nominal planning: conflict with higher priority
Nominal planning: not permitted conflict with equal priority
Off-Nominal planning: down USS
Off-Nominal planning: down USS with equal priority conflicts not permitted
Validation of operational intents + ASTM F3548 flight planners preparation
ASTM F3548-21 UTM DSS Operational Intent Reference Access Control
ASTM SCD DSS: Interfaces authentication
ASTM SCD DSS: Subscription Simple
ASTM SCD DSS: Subscription Synchronization
ASTM SCD DSS: Subscription Validation
ASTM SCD DSS: Subscription and entity interaction
Awareness of relevant operational intents
Data Validation of GET operational intents by USS
Nominal planning: conflict with higher priority
Nominal planning: not permitted conflict with equal priority
Off-Nominal planning: down USS
Off-Nominal planning: down USS with equal priority conflicts not permitted
Validation of operational intents DSS0005,5 Implemented - ASTM F3548-21 UTM DSS Operational Intent Reference Access Control
ASTM SCD DSS: Interfaces authentication
ASTM SCD DSS: Subscription Simple
ASTM SCD DSS: Subscription Synchronization
ASTM SCD DSS: Subscription Validation + ASTM F3548-21 UTM DSS Operational Intent Reference Access Control
ASTM SCD DSS: Interfaces authentication
ASTM SCD DSS: Subscription Simple
ASTM SCD DSS: Subscription Synchronization
ASTM SCD DSS: Subscription Validation
ASTM SCD DSS: Subscription and entity interaction DSS0015 @@ -125,6 +125,11 @@ Implemented ASTM SCD DSS: Subscription Synchronization + + DSS0210,A2-7-2,4 + Implemented + ASTM SCD DSS: Subscription and entity interaction + DSS0210,A2-7-2,7 Implemented diff --git a/monitoring/uss_qualifier/suites/astm/utm/f3548_21.yaml b/monitoring/uss_qualifier/suites/astm/utm/f3548_21.yaml index 88cbe33c9f..cdf14b7e1e 100644 --- a/monitoring/uss_qualifier/suites/astm/utm/f3548_21.yaml +++ b/monitoring/uss_qualifier/suites/astm/utm/f3548_21.yaml @@ -18,6 +18,7 @@ resources: planning_area: resources.astm.f3548.v21.PlanningAreaResource problematically_big_area: resources.VerticesResource system_identity: resources.versioning.SystemIdentityResource? + utm_client_identity: resources.communications.ClientIdentityResource local_resources: system_identity: resource_type: resources.versioning.SystemIdentityResource @@ -51,6 +52,7 @@ actions: id_generator: id_generator planning_area: planning_area problematically_big_area: problematically_big_area + utm_client_identity: utm_client_identity specification: action_to_repeat: test_suite: @@ -64,6 +66,7 @@ actions: id_generator: id_generator planning_area: planning_area problematically_big_area: problematically_big_area + utm_client_identity: utm_client_identity on_failure: Continue dss_instances_source: dss_instances dss_instance_id: dss diff --git a/monitoring/uss_qualifier/suites/faa/uft/message_signing.md b/monitoring/uss_qualifier/suites/faa/uft/message_signing.md index 51ff8f2706..e56388f8bc 100644 --- a/monitoring/uss_qualifier/suites/faa/uft/message_signing.md +++ b/monitoring/uss_qualifier/suites/faa/uft/message_signing.md @@ -18,20 +18,20 @@ Checked in - astm
.f3548
.v21
+ astm
.f3548
.v21
DSS0005,1 Implemented - ASTM F3548 flight planners preparation
ASTM F3548-21 UTM DSS Operational Intent Reference Access Control
ASTM SCD DSS: Interfaces authentication
ASTM SCD DSS: Subscription Simple
ASTM SCD DSS: Subscription Synchronization
ASTM SCD DSS: Subscription Validation
Off-Nominal planning: down USS
Off-Nominal planning: down USS with equal priority conflicts not permitted + ASTM F3548 flight planners preparation
ASTM F3548-21 UTM DSS Operational Intent Reference Access Control
ASTM SCD DSS: Interfaces authentication
ASTM SCD DSS: Subscription Simple
ASTM SCD DSS: Subscription Synchronization
ASTM SCD DSS: Subscription Validation
ASTM SCD DSS: Subscription and entity interaction
Off-Nominal planning: down USS
Off-Nominal planning: down USS with equal priority conflicts not permitted DSS0005,2 Implemented - ASTM F3548 flight planners preparation
ASTM F3548-21 UTM DSS Operational Intent Reference Access Control
ASTM SCD DSS: Interfaces authentication
ASTM SCD DSS: Subscription Simple
ASTM SCD DSS: Subscription Synchronization
ASTM SCD DSS: Subscription Validation
Awareness of relevant operational intents
Data Validation of GET operational intents by USS
Nominal planning: conflict with higher priority
Nominal planning: not permitted conflict with equal priority
Off-Nominal planning: down USS
Off-Nominal planning: down USS with equal priority conflicts not permitted
Validation of operational intents + ASTM F3548 flight planners preparation
ASTM F3548-21 UTM DSS Operational Intent Reference Access Control
ASTM SCD DSS: Interfaces authentication
ASTM SCD DSS: Subscription Simple
ASTM SCD DSS: Subscription Synchronization
ASTM SCD DSS: Subscription Validation
ASTM SCD DSS: Subscription and entity interaction
Awareness of relevant operational intents
Data Validation of GET operational intents by USS
Nominal planning: conflict with higher priority
Nominal planning: not permitted conflict with equal priority
Off-Nominal planning: down USS
Off-Nominal planning: down USS with equal priority conflicts not permitted
Validation of operational intents DSS0005,5 Implemented - ASTM F3548-21 UTM DSS Operational Intent Reference Access Control
ASTM SCD DSS: Interfaces authentication
ASTM SCD DSS: Subscription Simple
ASTM SCD DSS: Subscription Synchronization
ASTM SCD DSS: Subscription Validation + ASTM F3548-21 UTM DSS Operational Intent Reference Access Control
ASTM SCD DSS: Interfaces authentication
ASTM SCD DSS: Subscription Simple
ASTM SCD DSS: Subscription Synchronization
ASTM SCD DSS: Subscription Validation
ASTM SCD DSS: Subscription and entity interaction DSS0015 @@ -108,6 +108,11 @@ Implemented ASTM SCD DSS: Subscription Synchronization + + DSS0210,A2-7-2,4 + Implemented + ASTM SCD DSS: Subscription and entity interaction + DSS0210,A2-7-2,7 Implemented diff --git a/monitoring/uss_qualifier/suites/interuss/dss/all_tests.md b/monitoring/uss_qualifier/suites/interuss/dss/all_tests.md index f805a4a36e..ecfe28beed 100644 --- a/monitoring/uss_qualifier/suites/interuss/dss/all_tests.md +++ b/monitoring/uss_qualifier/suites/interuss/dss/all_tests.md @@ -408,20 +408,20 @@ ASTM NetRID DSS: Concurrent Requests
ASTM NetRID DSS: ISA Expiry
ASTM NetRID DSS: ISA Subscription Interactions
ASTM NetRID DSS: Simple ISA
ASTM NetRID DSS: Submitted ISA Validations
ASTM NetRID DSS: Subscription Simple
ASTM NetRID DSS: Subscription Validation
ASTM NetRID DSS: Token Validation - astm
.f3548
.v21
+ astm
.f3548
.v21
DSS0005,1 Implemented - ASTM F3548-21 UTM DSS Operational Intent Reference Access Control
ASTM SCD DSS: Interfaces authentication
ASTM SCD DSS: Subscription Simple
ASTM SCD DSS: Subscription Synchronization
ASTM SCD DSS: Subscription Validation + ASTM F3548-21 UTM DSS Operational Intent Reference Access Control
ASTM SCD DSS: Interfaces authentication
ASTM SCD DSS: Subscription Simple
ASTM SCD DSS: Subscription Synchronization
ASTM SCD DSS: Subscription Validation
ASTM SCD DSS: Subscription and entity interaction DSS0005,2 Implemented - ASTM F3548-21 UTM DSS Operational Intent Reference Access Control
ASTM SCD DSS: Interfaces authentication
ASTM SCD DSS: Subscription Simple
ASTM SCD DSS: Subscription Synchronization
ASTM SCD DSS: Subscription Validation + ASTM F3548-21 UTM DSS Operational Intent Reference Access Control
ASTM SCD DSS: Interfaces authentication
ASTM SCD DSS: Subscription Simple
ASTM SCD DSS: Subscription Synchronization
ASTM SCD DSS: Subscription Validation
ASTM SCD DSS: Subscription and entity interaction DSS0005,5 Implemented - ASTM F3548-21 UTM DSS Operational Intent Reference Access Control
ASTM SCD DSS: Interfaces authentication
ASTM SCD DSS: Subscription Simple
ASTM SCD DSS: Subscription Synchronization
ASTM SCD DSS: Subscription Validation + ASTM F3548-21 UTM DSS Operational Intent Reference Access Control
ASTM SCD DSS: Interfaces authentication
ASTM SCD DSS: Subscription Simple
ASTM SCD DSS: Subscription Synchronization
ASTM SCD DSS: Subscription Validation
ASTM SCD DSS: Subscription and entity interaction DSS0015 @@ -493,6 +493,11 @@ Implemented ASTM SCD DSS: Subscription Synchronization + + DSS0210,A2-7-2,4 + Implemented + ASTM SCD DSS: Subscription and entity interaction + DSS0210,A2-7-2,7 Implemented diff --git a/monitoring/uss_qualifier/suites/uspace/flight_auth.md b/monitoring/uss_qualifier/suites/uspace/flight_auth.md index 1613c6fe67..9043bade60 100644 --- a/monitoring/uss_qualifier/suites/uspace/flight_auth.md +++ b/monitoring/uss_qualifier/suites/uspace/flight_auth.md @@ -19,20 +19,20 @@ Checked in - astm
.f3548
.v21
+ astm
.f3548
.v21
DSS0005,1 Implemented - ASTM F3548 flight planners preparation
ASTM F3548-21 UTM DSS Operational Intent Reference Access Control
ASTM SCD DSS: Interfaces authentication
ASTM SCD DSS: Subscription Simple
ASTM SCD DSS: Subscription Synchronization
ASTM SCD DSS: Subscription Validation
Off-Nominal planning: down USS
Off-Nominal planning: down USS with equal priority conflicts not permitted + ASTM F3548 flight planners preparation
ASTM F3548-21 UTM DSS Operational Intent Reference Access Control
ASTM SCD DSS: Interfaces authentication
ASTM SCD DSS: Subscription Simple
ASTM SCD DSS: Subscription Synchronization
ASTM SCD DSS: Subscription Validation
ASTM SCD DSS: Subscription and entity interaction
Off-Nominal planning: down USS
Off-Nominal planning: down USS with equal priority conflicts not permitted DSS0005,2 Implemented - ASTM F3548 flight planners preparation
ASTM F3548-21 UTM DSS Operational Intent Reference Access Control
ASTM SCD DSS: Interfaces authentication
ASTM SCD DSS: Subscription Simple
ASTM SCD DSS: Subscription Synchronization
ASTM SCD DSS: Subscription Validation
Awareness of relevant operational intents
Data Validation of GET operational intents by USS
Nominal planning: conflict with higher priority
Nominal planning: not permitted conflict with equal priority
Off-Nominal planning: down USS
Off-Nominal planning: down USS with equal priority conflicts not permitted
Validation of operational intents + ASTM F3548 flight planners preparation
ASTM F3548-21 UTM DSS Operational Intent Reference Access Control
ASTM SCD DSS: Interfaces authentication
ASTM SCD DSS: Subscription Simple
ASTM SCD DSS: Subscription Synchronization
ASTM SCD DSS: Subscription Validation
ASTM SCD DSS: Subscription and entity interaction
Awareness of relevant operational intents
Data Validation of GET operational intents by USS
Nominal planning: conflict with higher priority
Nominal planning: not permitted conflict with equal priority
Off-Nominal planning: down USS
Off-Nominal planning: down USS with equal priority conflicts not permitted
Validation of operational intents DSS0005,5 Implemented - ASTM F3548-21 UTM DSS Operational Intent Reference Access Control
ASTM SCD DSS: Interfaces authentication
ASTM SCD DSS: Subscription Simple
ASTM SCD DSS: Subscription Synchronization
ASTM SCD DSS: Subscription Validation + ASTM F3548-21 UTM DSS Operational Intent Reference Access Control
ASTM SCD DSS: Interfaces authentication
ASTM SCD DSS: Subscription Simple
ASTM SCD DSS: Subscription Synchronization
ASTM SCD DSS: Subscription Validation
ASTM SCD DSS: Subscription and entity interaction DSS0015 @@ -109,6 +109,11 @@ Implemented ASTM SCD DSS: Subscription Synchronization + + DSS0210,A2-7-2,4 + Implemented + ASTM SCD DSS: Subscription and entity interaction + DSS0210,A2-7-2,7 Implemented diff --git a/monitoring/uss_qualifier/suites/uspace/required_services.md b/monitoring/uss_qualifier/suites/uspace/required_services.md index 60e1ff0ad4..964360acb3 100644 --- a/monitoring/uss_qualifier/suites/uspace/required_services.md +++ b/monitoring/uss_qualifier/suites/uspace/required_services.md @@ -454,20 +454,20 @@ ASTM NetRID DSS: Concurrent Requests
ASTM NetRID DSS: ISA Expiry
ASTM NetRID DSS: ISA Subscription Interactions
ASTM NetRID DSS: Simple ISA
ASTM NetRID DSS: Submitted ISA Validations
ASTM NetRID DSS: Subscription Simple
ASTM NetRID DSS: Subscription Validation
ASTM NetRID DSS: Token Validation - astm
.f3548
.v21
+ astm
.f3548
.v21
DSS0005,1 Implemented - ASTM F3548 flight planners preparation
ASTM F3548-21 UTM DSS Operational Intent Reference Access Control
ASTM SCD DSS: Interfaces authentication
ASTM SCD DSS: Subscription Simple
ASTM SCD DSS: Subscription Synchronization
ASTM SCD DSS: Subscription Validation
Off-Nominal planning: down USS
Off-Nominal planning: down USS with equal priority conflicts not permitted + ASTM F3548 flight planners preparation
ASTM F3548-21 UTM DSS Operational Intent Reference Access Control
ASTM SCD DSS: Interfaces authentication
ASTM SCD DSS: Subscription Simple
ASTM SCD DSS: Subscription Synchronization
ASTM SCD DSS: Subscription Validation
ASTM SCD DSS: Subscription and entity interaction
Off-Nominal planning: down USS
Off-Nominal planning: down USS with equal priority conflicts not permitted DSS0005,2 Implemented - ASTM F3548 flight planners preparation
ASTM F3548-21 UTM DSS Operational Intent Reference Access Control
ASTM SCD DSS: Interfaces authentication
ASTM SCD DSS: Subscription Simple
ASTM SCD DSS: Subscription Synchronization
ASTM SCD DSS: Subscription Validation
Awareness of relevant operational intents
Data Validation of GET operational intents by USS
Nominal planning: conflict with higher priority
Nominal planning: not permitted conflict with equal priority
Off-Nominal planning: down USS
Off-Nominal planning: down USS with equal priority conflicts not permitted
Validation of operational intents + ASTM F3548 flight planners preparation
ASTM F3548-21 UTM DSS Operational Intent Reference Access Control
ASTM SCD DSS: Interfaces authentication
ASTM SCD DSS: Subscription Simple
ASTM SCD DSS: Subscription Synchronization
ASTM SCD DSS: Subscription Validation
ASTM SCD DSS: Subscription and entity interaction
Awareness of relevant operational intents
Data Validation of GET operational intents by USS
Nominal planning: conflict with higher priority
Nominal planning: not permitted conflict with equal priority
Off-Nominal planning: down USS
Off-Nominal planning: down USS with equal priority conflicts not permitted
Validation of operational intents DSS0005,5 Implemented - ASTM F3548-21 UTM DSS Operational Intent Reference Access Control
ASTM SCD DSS: Interfaces authentication
ASTM SCD DSS: Subscription Simple
ASTM SCD DSS: Subscription Synchronization
ASTM SCD DSS: Subscription Validation + ASTM F3548-21 UTM DSS Operational Intent Reference Access Control
ASTM SCD DSS: Interfaces authentication
ASTM SCD DSS: Subscription Simple
ASTM SCD DSS: Subscription Synchronization
ASTM SCD DSS: Subscription Validation
ASTM SCD DSS: Subscription and entity interaction DSS0015 @@ -544,6 +544,11 @@ Implemented ASTM SCD DSS: Subscription Synchronization + + DSS0210,A2-7-2,4 + Implemented + ASTM SCD DSS: Subscription and entity interaction + DSS0210,A2-7-2,7 Implemented