Skip to content

Commit

Permalink
Merge remote-tracking branch 'interuss/main' into clean-up-data-valid…
Browse files Browse the repository at this point in the history
…ation
  • Loading branch information
BenjaminPelletier committed Dec 18, 2023
2 parents 6833bd1 + c4d1768 commit 341dd75
Show file tree
Hide file tree
Showing 26 changed files with 210 additions and 168 deletions.
2 changes: 2 additions & 0 deletions monitoring/uss_qualifier/configurations/dev/uspace.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,8 @@ v1:
- astm.f3411.v22a.display_provider#Operator Position transmitter
- astm.f3411.v22a.dss_provider
- astm.f3548.v21.scd#Automated verification
- requirements:
- uspace.article8.MSLAltitude
participant_requirements:
uss1: uspace
uss2: uspace
Expand Down
21 changes: 21 additions & 0 deletions monitoring/uss_qualifier/requirements/uspace/article8.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# [U-space Article 8](https://eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri=CELEX:32021R0664&qid=1702917443967#d1e905-161-1): Network Identification Service

## Article 8(2)(c)

> The network identification service shall allow for the authorised users to receive messages with the geographical position of the UAS, its altitude above mean sea level and its height above the surface or take-off point.
<tt>MSLAltitude</tt>: Authorised users must receive messages with UAS altitude above mean sea level.

## Article 8(4)

> The authorised users shall be:
>
> (a) the general public as regards information that is deemed public in accordance with applicable Union and national rules;
>
> (b) other U-space service providers in order to ensure the safety of operations in the U-space airspace;
>
> (c) the air traffic services providers concerned;
>
> (d) when designated, the single common information service provider;
>
> (e) the relevant competent authorities.
Original file line number Diff line number Diff line change
Expand Up @@ -188,7 +188,6 @@ def _inspect_participant_queries(
summary=f"found {len(cleartext_queries)} cleartext http queries",
details=f"unique cleartext urls: {urls}",
severity=Severity.Medium,
participants=[participant_id],
query_timestamps=timestamps,
)
else:
Expand Down Expand Up @@ -233,14 +232,12 @@ def _dp_display_data_details_times_step(self):
check.record_failed(
summary=f"95th percentile of durations for DP display_data details queries is higher than threshold",
severity=Severity.Medium,
participants=[participant],
details=f"threshold: {self._rid_version.dp_details_resp_percentile95_s}s, 95th percentile: {p95}s",
)
if p99 > self._rid_version.dp_details_resp_percentile99_s:
check.record_failed(
summary=f"99th percentile of durations for DP display_data details queries is higher than threshold",
severity=Severity.Medium,
participants=[participant],
details=f"threshold: {self._rid_version.dp_details_resp_percentile99_s}s, 99th percentile: {p99}s",
)

Expand Down Expand Up @@ -279,15 +276,13 @@ def _sp_flights_area_times_step(self):
check.record_failed(
summary=f"95th percentile of /flights?view requests is {p95} s",
severity=Severity.Medium,
participants=[participant],
details=f"expected less than {self._rid_version.sp_data_resp_percentile95_s} s, was {p95}",
)
with self.check("99th percentile response time", [participant]) as check:
if p99 > self._rid_version.sp_data_resp_percentile99_s:
check.record_failed(
summary=f"99th percentile of /flights?view requests is {p99} s",
severity=Severity.Medium,
participants=[participant],
details=f"expected less than {self._rid_version.sp_data_resp_percentile99_s} s, was {p99}",
)

Expand Down Expand Up @@ -339,14 +334,12 @@ def _dp_display_data_times_step(self):
check.record_failed(
summary=f"95th percentile of durations for initial DP display_data queries is higher than threshold",
severity=Severity.Medium,
participants=[participant],
details=f"threshold: {self._rid_version.dp_init_resp_percentile95_s}, 95th percentile: {init_95th}",
)
if init_99th > self._rid_version.dp_init_resp_percentile99_s:
check.record_failed(
summary=f"99th percentile of durations for initial DP display_data queries is higher than threshold",
severity=Severity.Medium,
participants=[participant],
details=f"threshold: {self._rid_version.dp_init_resp_percentile99_s}, 99th percentile: {init_99th}",
)

Expand All @@ -357,14 +350,12 @@ def _dp_display_data_times_step(self):
check.record_failed(
summary=f"95th percentile of durations for subsequent DP display_data queries is higher than threshold",
severity=Severity.Medium,
participants=[participant],
details=f"threshold: {self._rid_version.dp_data_resp_percentile95_s}, 95th percentile: {subsequent_95th}",
)
if subsequent_99th > self._rid_version.dp_data_resp_percentile99_s:
check.record_failed(
summary=f"99th percentile of durations for subsequent DP display_data queries is higher than threshold",
severity=Severity.Medium,
participants=[participant],
details=f"threshold: {self._rid_version.dp_data_resp_percentile99_s}, 95th percentile: {subsequent_99th}",
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,6 @@ def _check_expiry_behaviors(self):
check.record_failed(
summary=f"Expired ISA {self._isa_id} found in search results",
severity=Severity.Medium,
participants=[self._dss.participant_id],
details=f"Searched for area {self._isa_area} with unspecified end and start time.",
query_timestamps=[
created_isa.dss_query.query.request.timestamp,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,6 @@ def _new_subscription_in_isa_step(self):
check.record_failed(
summary="Subscription response does not include the freshly created ISA",
severity=Severity.High,
participants=[self._dss.participant_id],
details=f"The subscription created for the area {self._isa_area} is expected to contain the ISA created for this same area. The returned subscription did not mention it.",
query_timestamps=[
created_isa.dss_query.query.request.timestamp,
Expand All @@ -152,7 +151,6 @@ def _new_subscription_in_isa_step(self):
check.record_failed(
summary="Subscription notification_index is not 0",
severity=Severity.High,
participants=[self._dss.participant_id],
details=f"The subscription created for the area {self._isa_area} is expected to have a notification_index of 0. The returned subscription has a notification_index of {created_subscription.subscription.notification_index}.",
query_timestamps=[created_subscription.query.request.timestamp],
)
Expand Down Expand Up @@ -188,7 +186,6 @@ def _new_subscription_in_isa_step(self):
check.record_failed(
summary="ISA mutation response does not contain expected subscription ID",
severity=Severity.High,
participants=[self._dss.participant_id],
details="Mutating an ISA to which a subscription was made, the DSS failed to return the subscription ID in the response.",
query_timestamps=[
created_isa.dss_query.query.request.timestamp,
Expand All @@ -210,7 +207,6 @@ def _new_subscription_in_isa_step(self):
check.record_failed(
summary="Subscription notification_index has not been increased",
severity=Severity.High,
participants=[self._dss.participant_id],
details=f"The subscription created for the area {self._isa_area} is expected to have a notification_index of 1 or more. The returned subscription has a notification_index of {subs_to_mutated_isa[created_subscription.subscription.id].notification_index}.",
query_timestamps=[created_subscription.query.request.timestamp],
)
Expand Down Expand Up @@ -244,7 +240,6 @@ def _new_subscription_in_isa_step(self):
check.record_failed(
summary="ISA deletion response does not contain expected subscription ID",
severity=Severity.High,
participants=[self._dss.participant_id],
details="Deleting an ISA to which a subscription was made, the DSS failed to return the subscription ID in the response.",
query_timestamps=[
created_isa.dss_query.query.request.timestamp,
Expand Down Expand Up @@ -285,7 +280,6 @@ def _new_subscription_in_isa_step(self):
check.record_failed(
summary="Subscription notification_index has not been incremented",
severity=Severity.High,
participants=[self._dss.participant_id],
details=f"The subscription created for the area {self._isa_area} is expected to have its notification increased after the subscription was deleted."
f"The returned subscription has a notification_index of {subs_after_deletion.notification_index}, whilte the previous notification_index for that subscription was {sub_to_mutated_isa.notification_index}",
query_timestamps=[created_subscription.query.request.timestamp],
Expand Down Expand Up @@ -353,7 +347,6 @@ def _mutate_subscription_towards_isa_boundary_step(self):
check.record_failed(
summary="Subscription response does not include the freshly created ISA",
severity=Severity.High,
participants=[self._dss.participant_id],
details=f"The subscription created for the area {self._isa_area} is expected to contain the ISA created for this same area. The returned subscription did not mention it.",
query_timestamps=[
created_isa.dss_query.query.request.timestamp,
Expand All @@ -369,7 +362,6 @@ def _mutate_subscription_towards_isa_boundary_step(self):
check.record_failed(
summary="Subscription notification_index is not 0",
severity=Severity.High,
participants=[self._dss.participant_id],
details=f"The subscription created for the area {self._isa_area} is expected to have a notification_index of 0. The returned subscription has a notification_index of {created_subscription.subscription.notification_index}.",
query_timestamps=[created_subscription.query.request.timestamp],
)
Expand Down Expand Up @@ -405,7 +397,6 @@ def _mutate_subscription_towards_isa_boundary_step(self):
check.record_failed(
summary="ISA mutation response does not contain expected subscription ID",
severity=Severity.High,
participants=[self._dss.participant_id],
details="Mutating an ISA to which a subscription was made and then subsequently moved to the ISA's boundary,"
" the DSS failed to return the subscription ID in the response.",
query_timestamps=[
Expand All @@ -429,7 +420,6 @@ def _mutate_subscription_towards_isa_boundary_step(self):
check.record_failed(
summary="Subscription notification_index has not been increased",
severity=Severity.High,
participants=[self._dss.participant_id],
details=f"The subscription created for the area {self._isa_area} is expected to have a notification_index of 1 or more. The returned subscription has a notification_index of {subs_to_mutated_isa[created_subscription.subscription.id].notification_index}.",
query_timestamps=[created_subscription.query.request.timestamp],
)
Expand Down Expand Up @@ -463,7 +453,6 @@ def _mutate_subscription_towards_isa_boundary_step(self):
check.record_failed(
summary="ISA deletion response does not contain expected subscription ID",
severity=Severity.High,
participants=[self._dss.participant_id],
details="Deleting an ISA to which a subscription was made, the DSS failed to return the subscription ID in the response.",
query_timestamps=[
created_isa.dss_query.query.request.timestamp,
Expand Down Expand Up @@ -504,7 +493,6 @@ def _mutate_subscription_towards_isa_boundary_step(self):
check.record_failed(
summary="Subscription notification_index has not been incremented",
severity=Severity.High,
participants=[self._dss.participant_id],
details=f"The subscription created for the area {self._isa_area} is expected to have its notification increased after the subscription was deleted."
f"The returned subscription has a notification_index of {subs_after_deletion.notification_index}, whilte the previous notification_index for that subscription was {sub_to_mutated_isa.notification_index}",
query_timestamps=[created_subscription.query.request.timestamp],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,6 @@ def _test_env_reqs(self):
check.record_failed(
summary=f"DSS host {parsed_url.netloc} is not publicly addressable",
severity=Severity.Medium,
participants=[dss.participant_id],
details=f"DSS (URL: {dss.base_url}, netloc: {parsed_url.netloc}, resolved IP: {ip_addr}) is not publicly addressable",
)

Expand Down Expand Up @@ -184,7 +183,6 @@ def step2(self):
check.record_failed(
summary=f"DSS did not return ISA {isa_1.uuid} from testStep1 when creating Subscription {sub_1.uuid}",
severity=Severity.High,
participants=[dss.participant_id],
details=f"service_areas IDs: {', '.join([isa.id for isa in created_sub.isas])}",
query_timestamps=[created_sub.query.request.timestamp],
)
Expand All @@ -206,7 +204,6 @@ def get_fail_params(
summary=f"ISA[{dss.participant_id}].{field_name} not equal ISA[{self._dss_primary.participant_id}].{field_name}",
details=f"ISA[{dss.participant_id}].{field_name} is {primary_isa_field_value}; ISA[{self._dss_primary.participant_id}].{field_name} is {other_isa_field_value}",
severity=Severity.High,
participants=[dss.participant_id],
query_timestamps=[created_sub.query.request.timestamp],
)

Expand Down Expand Up @@ -304,7 +301,6 @@ def get_fail_params(
summary=f"Subscription[{dss.participant_id}].{field_name} not equal Subscription[{self._dss_primary.participant_id}].{field_name}",
details=f"Subscription[{dss.participant_id}].{field_name} is {primary_sub_field_value}; Subscription[{self._dss_primary.participant_id}].{field_name} is {other_sub_field_value}",
severity=Severity.High,
participants=[dss.participant_id],
query_timestamps=[other_sub.query.request.timestamp],
)

Expand Down Expand Up @@ -417,7 +413,6 @@ def step4(self):
check.record_failed(
summary=f"DSS returned too few subscriptions",
severity=Severity.High,
participants=[dss.participant_id],
details=f"Missing: {', '.join(missing_subs)}",
query_timestamps=[subs.query.request.timestamp],
)
Expand Down Expand Up @@ -496,7 +491,6 @@ def step8(self):
check.record_failed(
summary="Found deleted Subscriptions",
severity=Severity.High,
participants=[dss.participant_id],
details=f"Deleted Subscriptions found: {found_deleted_sub}",
query_timestamps=[subs.query.request.timestamp],
)
Expand Down Expand Up @@ -532,7 +526,6 @@ def step9(self):
check.record_failed(
summary=f"DSS returned expired ISA {isa_1.uuid} when creating Subscription {sub_2.uuid}",
severity=Severity.High,
participants=[dss.participant_id],
details=f"service_areas IDs: {', '.join(isa_ids)}",
query_timestamps=[created_sub.query.request.timestamp],
)
Expand Down Expand Up @@ -563,7 +556,6 @@ def step10(self):
check.record_failed(
summary=f"DSS returned too few Subscriptions",
severity=Severity.High,
participants=[self._dss_primary.participant_id],
details=f"Missing Subscriptions: {', '.join(missing_subs)}",
query_timestamps=[mutated_isa.dss_query.query.request.timestamp],
)
Expand Down Expand Up @@ -591,7 +583,6 @@ def step11(self):
check.record_failed(
summary=f"DSS returned too few Subscriptions",
severity=Severity.High,
participants=[self._dss_primary.participant_id],
details=f"Missing Subscriptions: {', '.join(missing_subs)}",
query_timestamps=[del_isa.dss_query.query.request.timestamp],
)
Expand Down Expand Up @@ -628,7 +619,6 @@ def step12(self):
check.record_failed(
summary="Found expired Subscriptions",
severity=Severity.High,
participants=[self._dss_primary.participant_id],
details=f"Expired Subscriptions found: {', '.join(found_expired_sub)}",
query_timestamps=[mutated_isa.dss_query.query.request.timestamp],
)
Expand Down Expand Up @@ -658,7 +648,6 @@ def step13(self):
check.record_failed(
summary="Found expired Subscriptions",
severity=Severity.High,
participants=[dss.participant_id],
details=f"Expired Subscriptions found: {', '.join(found_expired_sub)}",
query_timestamps=[subs.query.request.timestamp],
)
Expand Down Expand Up @@ -702,7 +691,6 @@ def step15(self):
check.record_failed(
summary="Found expired Subscriptions",
severity=Severity.High,
participants=[self._dss_primary.participant_id],
details=f"Expired Subscriptions found: {', '.join(found_expired_sub)}",
query_timestamps=[del_isa.dss_query.query.request.timestamp],
)
Expand Down Expand Up @@ -734,7 +722,6 @@ def step16(self):
check.record_failed(
summary=f"DSS returned expired ISA {isa_3.uuid} when creating Subscription {sub_3.uuid}",
severity=Severity.High,
participants=[dss.participant_id],
details=f"service_areas IDs: {', '.join(isa_ids)}",
query_timestamps=[created_sub.query.request.timestamp],
)
Expand Down
Loading

0 comments on commit 341dd75

Please sign in to comment.