From 8e073c7f0b23136477b3dd0eb396d8b748dcc56e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micka=C3=ABl=20Misbach?= Date: Wed, 11 Dec 2024 15:39:35 +0100 Subject: [PATCH] [uss_qualifier/scenarios/netrid/nominal_behavior] Add checks for UA type in DP (NET0470) --- .../netrid/common_dictionary_evaluator.py | 33 ++++++++++++++----- .../astm/netrid/display_data_evaluator.py | 8 +++-- .../common_dictionary_evaluator_dp_flight.md | 15 ++++++++- .../common_dictionary_evaluator_dp_flight.md | 13 ++++++++ .../suites/astm/netrid/f3411_19.md | 7 +++- .../suites/astm/netrid/f3411_22a.md | 7 +++- .../suites/uspace/network_identification.md | 7 +++- .../suites/uspace/required_services.md | 7 +++- 8 files changed, 81 insertions(+), 16 deletions(-) diff --git a/monitoring/uss_qualifier/scenarios/astm/netrid/common_dictionary_evaluator.py b/monitoring/uss_qualifier/scenarios/astm/netrid/common_dictionary_evaluator.py index 8740f2f3ba..dd23f082c4 100644 --- a/monitoring/uss_qualifier/scenarios/astm/netrid/common_dictionary_evaluator.py +++ b/monitoring/uss_qualifier/scenarios/astm/netrid/common_dictionary_evaluator.py @@ -19,7 +19,6 @@ injection, ) from uas_standards.interuss.automated_testing.rid.v1.injection import ( - RIDAircraftState, RIDAircraftPosition, ) @@ -70,23 +69,39 @@ def evaluate_sp_flight( def evaluate_dp_flight( self, - injected_flight: RIDAircraftState, + injected_telemetry: injection.RIDAircraftState, + injected_flight: injection.TestFlight, observed_flight: observation_api.Flight, participants: List[str], + query_timestamp: datetime.datetime, ): """Implements fragment documented in `common_dictionary_evaluator_dp_flight.md`.""" + self._evaluate_ua_type( + injected_flight, + None, + observed_flight, + participants[ + 0 + ], # TODO: flatten 'participants', it always has a single value + query_timestamp, + ) + # If the state is present, we do validate its content, # but its presence is optional - if injected_flight.has_field_with_value("current_state"): + if injected_telemetry.has_field_with_value("current_state"): self._evaluate_speed( - injected_flight.speed, observed_flight.current_state.speed, participants + injected_telemetry.speed, + observed_flight.current_state.speed, + participants, ) self._evaluate_track( - injected_flight.track, observed_flight.current_state.track, participants + injected_telemetry.track, + observed_flight.current_state.track, + participants, ) self._evaluate_timestamp( - injected_flight.timestamp, + injected_telemetry.timestamp, observed_flight.current_state.timestamp, participants, ) @@ -98,10 +113,12 @@ def evaluate_dp_flight( ) self._evaluate_position( - injected_flight.position, observed_flight.most_recent_position, participants + injected_telemetry.position, + observed_flight.most_recent_position, + participants, ) self._evaluate_height( - injected_flight.get("height"), + injected_telemetry.get("height"), observed_flight.most_recent_position.get("height"), participants, ) diff --git a/monitoring/uss_qualifier/scenarios/astm/netrid/display_data_evaluator.py b/monitoring/uss_qualifier/scenarios/astm/netrid/display_data_evaluator.py index fda2ffc773..b63b337aa9 100644 --- a/monitoring/uss_qualifier/scenarios/astm/netrid/display_data_evaluator.py +++ b/monitoring/uss_qualifier/scenarios/astm/netrid/display_data_evaluator.py @@ -406,9 +406,11 @@ def _evaluate_normal_observation( ) self._common_dictionary_evaluator.evaluate_dp_flight( - injected_flight=injected_telemetry, - observed_flight=mapping.observed_flight, - participants=[observer.participant_id], + injected_telemetry, + mapping.injected_flight.flight, + mapping.observed_flight, + [observer.participant_id], + query.request.timestamp, ) # Check that flights using telemetry are not using extrapolated position data diff --git a/monitoring/uss_qualifier/scenarios/astm/netrid/v19/common_dictionary_evaluator_dp_flight.md b/monitoring/uss_qualifier/scenarios/astm/netrid/v19/common_dictionary_evaluator_dp_flight.md index 99cfd96720..80eccfa279 100644 --- a/monitoring/uss_qualifier/scenarios/astm/netrid/v19/common_dictionary_evaluator_dp_flight.md +++ b/monitoring/uss_qualifier/scenarios/astm/netrid/v19/common_dictionary_evaluator_dp_flight.md @@ -2,6 +2,19 @@ This fragment is implemented in `common_dictionary_evaluator.py:RIDCommonDictionaryEvaluator.evaluate_dp_flight`. -#### Correct up-to-date altitude if present check +## ⚠️ UA type is exposed correctly check + +If the UA type value exposed by the observation API is invalid this check will fail per: +**[interuss.automated_testing.rid.observation.ObservationSuccess](../../../../requirements/interuss/automated_testing/rid/observation.md)** because the DP violates the observation API contract; +**[astm.f3411.v19.NET0450](../../../../requirements/astm/f3411/v19.md)** because the DP fails to provide accurate data; +**[astm.f3411.v19.NET0470,Table1,3](../../../../requirements/astm/f3411/v19.md)** because the DP fails to expose data consistent with the Common Data Dictionary. + +## ⚠️ UA type is consistent with injected value check + +If the UA type value exposed by the observer API is inconsistent with the injected value this check will fail per: +**[astm.f3411.v19.NET0450](../../../../requirements/astm/f3411/v19.md)** because the DP fails to provide accurate data; +**[astm.f3411.v19.NET0470,Table1,3](../../../../requirements/astm/f3411/v19.md)** because the DP fails to expose data consistent with the valid injected value. + +## Correct up-to-date altitude if present check If the observed altitude of a flight is reported, but it does not match the altitude of the injected telemetry, the display provider is not providing precise and up-to-date information, and thus does not respect **[astm.f3411.v19.NET0450](../../../../requirements/astm/f3411/v19.md)**. diff --git a/monitoring/uss_qualifier/scenarios/astm/netrid/v22a/common_dictionary_evaluator_dp_flight.md b/monitoring/uss_qualifier/scenarios/astm/netrid/v22a/common_dictionary_evaluator_dp_flight.md index f7bc163025..8ebf4631fd 100644 --- a/monitoring/uss_qualifier/scenarios/astm/netrid/v22a/common_dictionary_evaluator_dp_flight.md +++ b/monitoring/uss_qualifier/scenarios/astm/netrid/v22a/common_dictionary_evaluator_dp_flight.md @@ -2,6 +2,19 @@ This fragment is implemented in `common_dictionary_evaluator.py:RIDCommonDictionaryEvaluator.evaluate_dp_flight`. +## ⚠️ UA type is exposed correctly check + +If the UA type value exposed by the observation API is invalid this check will fail per: +**[interuss.automated_testing.rid.observation.ObservationSuccess](../../../../requirements/interuss/automated_testing/rid/observation.md)** because the DP violates the observation API contract; +**[astm.f3411.v22a.NET0450](../../../../requirements/astm/f3411/v22a.md)** because the DP fails to provide accurate data; +**[astm.f3411.v22a.NET0470,Table1,2](../../../../requirements/astm/f3411/v22a.md)** because the DP fails to expose data consistent with the Common Data Dictionary. + +## ⚠️ UA type is consistent with injected value check + +If the UA type value exposed by the observer API is inconsistent with the injected value this check will fail per: +**[astm.f3411.v22a.NET0450](../../../../requirements/astm/f3411/v22a.md)** because the DP fails to provide accurate data; +**[astm.f3411.v22a.NET0470,Table1,2](../../../../requirements/astm/f3411/v22a.md)** because the DP fails to expose data consistent with the valid injected value. + ## Correct up-to-date altitude if present check If the observed altitude of a flight is reported, but it does not match the altitude of the injected telemetry, the display provider is not providing precise and up-to-date information, and thus does not respect **[astm.f3411.v22a.NET0450](../../../../requirements/astm/f3411/v22a.md)**. diff --git a/monitoring/uss_qualifier/suites/astm/netrid/f3411_19.md b/monitoring/uss_qualifier/suites/astm/netrid/f3411_19.md index 2a7626467a..b5c79ed78c 100644 --- a/monitoring/uss_qualifier/suites/astm/netrid/f3411_19.md +++ b/monitoring/uss_qualifier/suites/astm/netrid/f3411_19.md @@ -21,7 +21,7 @@ Checked in - astm
.f3411
.v19
+ astm
.f3411
.v19
DSS0010 Implemented ASTM NetRID DSS: Token Validation @@ -361,6 +361,11 @@ Implemented ASTM NetRID nominal behavior + + NET0470,Table1,3 + Implemented + ASTM NetRID nominal behavior + NET0480 Implemented diff --git a/monitoring/uss_qualifier/suites/astm/netrid/f3411_22a.md b/monitoring/uss_qualifier/suites/astm/netrid/f3411_22a.md index 282a3bbf35..ca7e03fcd7 100644 --- a/monitoring/uss_qualifier/suites/astm/netrid/f3411_22a.md +++ b/monitoring/uss_qualifier/suites/astm/netrid/f3411_22a.md @@ -21,7 +21,7 @@ Checked in - astm
.f3411
.v22a
+ astm
.f3411
.v22a
DSS0010 Implemented ASTM NetRID DSS: Token Validation @@ -451,6 +451,11 @@ Implemented ASTM NetRID nominal behavior + + NET0470,Table1,2 + Implemented + ASTM NetRID nominal behavior + NET0470,Table1,20 Implemented diff --git a/monitoring/uss_qualifier/suites/uspace/network_identification.md b/monitoring/uss_qualifier/suites/uspace/network_identification.md index 03518135b2..fed28dc075 100644 --- a/monitoring/uss_qualifier/suites/uspace/network_identification.md +++ b/monitoring/uss_qualifier/suites/uspace/network_identification.md @@ -17,7 +17,7 @@ Checked in - astm
.f3411
.v22a
+ astm
.f3411
.v22a
DSS0010 Implemented ASTM NetRID DSS: Token Validation @@ -447,6 +447,11 @@ Implemented ASTM NetRID nominal behavior + + NET0470,Table1,2 + Implemented + ASTM NetRID nominal behavior + NET0470,Table1,20 Implemented diff --git a/monitoring/uss_qualifier/suites/uspace/required_services.md b/monitoring/uss_qualifier/suites/uspace/required_services.md index 676d861aaf..1a19da1b8b 100644 --- a/monitoring/uss_qualifier/suites/uspace/required_services.md +++ b/monitoring/uss_qualifier/suites/uspace/required_services.md @@ -18,7 +18,7 @@ Checked in - astm
.f3411
.v22a
+ astm
.f3411
.v22a
DSS0010 Implemented ASTM NetRID DSS: Token Validation @@ -448,6 +448,11 @@ Implemented ASTM NetRID nominal behavior + + NET0470,Table1,2 + Implemented + ASTM NetRID nominal behavior + NET0470,Table1,20 Implemented