",
)
- return response, resp.queries[0], flight_id, resp.includes_advisories
+ return (
+ response,
+ resp.queries[0],
+ flight_id,
+ resp.includes_advisories
+ if "includes_advisories" in resp
+ else AdvisoryInclusion.Unknown,
+ )
def cleanup_flight(
self, flight_id: str
diff --git a/monitoring/uss_qualifier/scenarios/astm/utm/data_exchange_validation/test_steps/validate_sharing_operational_intent_but_with_invalid_interuss_data.md b/monitoring/uss_qualifier/scenarios/astm/utm/data_exchange_validation/test_steps/validate_sharing_operational_intent_but_with_invalid_interuss_data.md
index 12f4ce1496..82dff852a4 100644
--- a/monitoring/uss_qualifier/scenarios/astm/utm/data_exchange_validation/test_steps/validate_sharing_operational_intent_but_with_invalid_interuss_data.md
+++ b/monitoring/uss_qualifier/scenarios/astm/utm/data_exchange_validation/test_steps/validate_sharing_operational_intent_but_with_invalid_interuss_data.md
@@ -4,7 +4,8 @@ This step verifies that a created flight is shared properly per ASTM F3548-21 by
## 🛑 DSS responses check
-**[astm.f3548.v21.DSS0005](../../../../../requirements/astm/f3548/v21.md)**
+If the DSS fails to properly respond to a valid search query for operational intent references in an area,
+it is in violation of **[astm.f3548.v21.DSS0005,2](../../../../../requirements/astm/f3548/v21.md)**, and this check will fail.
## 🛑 Operational intent shared correctly check
diff --git a/monitoring/uss_qualifier/scenarios/astm/utm/flight_intent_validation/flight_intent_validation.md b/monitoring/uss_qualifier/scenarios/astm/utm/flight_intent_validation/flight_intent_validation.md
index 1ab4a1f4cc..f606904927 100644
--- a/monitoring/uss_qualifier/scenarios/astm/utm/flight_intent_validation/flight_intent_validation.md
+++ b/monitoring/uss_qualifier/scenarios/astm/utm/flight_intent_validation/flight_intent_validation.md
@@ -59,7 +59,9 @@ The flight intent should be successfully transition to Ended state by the flight
### Validate flight intent is non-discoverable test step
#### DSS responses check
-**[astm.f3548.v21.DSS0005](../../../../requirements/astm/f3548/v21.md)**
+
+If the DSS fails to reply to a query concerning operational intent references in a given area,
+it is in violation of **[astm.f3548.v21.DSS0005,2](../../../../requirements/astm/f3548/v21.md)**, and this check will fail.
#### Operational intent not shared check
If the operational intent is still discoverable after it was transitioned to Ended,
diff --git a/monitoring/uss_qualifier/scenarios/astm/utm/off_nominal_planning/down_uss.md b/monitoring/uss_qualifier/scenarios/astm/utm/off_nominal_planning/down_uss.md
index d8d2039b8c..06a7da38b2 100644
--- a/monitoring/uss_qualifier/scenarios/astm/utm/off_nominal_planning/down_uss.md
+++ b/monitoring/uss_qualifier/scenarios/astm/utm/off_nominal_planning/down_uss.md
@@ -32,7 +32,7 @@ FlightPlannerResource that is under test and will manage Flight 1.
### dss
DSSInstanceResource that provides access to a DSS instance where:
- flight creation/sharing can be verified,
-- the USS qualifier acting as a virtual USS can create operational intents, and
+- the USS qualifier acting as a virtual USS can create operational intent references, and
- the USS qualifier can act as an availability arbitrator.
## Setup test case
@@ -44,11 +44,10 @@ Make a dummy request to the DSS in order to resolve the USS ID of the virtual US
### [Restore virtual USS availability test step](../set_uss_available.md)
### Clear operational intents created by virtual USS test step
-Delete any leftover operational intents created at DSS by virtual USS.
+Delete any leftover operational intent references created at DSS by virtual USS.
#### Successful operational intents cleanup check
-If the search for own operational intents or their deletion fail, this check fails per **[astm.f3548.v21.DSS0005](../../../../requirements/astm/f3548/v21.md)**.
-
+If the search for operational intent references or their deletion fail, this check fails per **[astm.f3548.v21.DSS0005,2](../../../../requirements/astm/f3548/v21.md)** or **[astm.f3548.v21.DSS0005,1](../../../../requirements/astm/f3548/v21.md)**, respectively.
## Plan Flight 1 in conflict with accepted operational intent managed by down USS test case
This test case aims at testing requirement **[astm.f3548.v21.SCD0005](../../../../requirements/astm/f3548/v21.md)**.
@@ -93,11 +92,14 @@ All flight intent data provided was complete and correct. It should have been pr
to reject or accept Flight 1. If the USS indicates that the injection attempt failed, this check will fail per
**[interuss.automated_testing.flight_planning.ExpectedBehavior](../../../../requirements/interuss/automated_testing/flight_planning.md)**.
-### [Validate Flight 1 status test step](../validate_shared_operational_intent.md)
+### Validate Flight 1 status test step
This step validates that the response of the USS is consistent with the flight shared, i.e. either it was properly
planned, or the USS rejected the planning.
+#### [Validate accepted Flight 1 status](../validate_shared_operational_intent.md)
If the planning was accepted, Flight 1 should have been shared.
+
+#### [Validate rejected Flight 1 status](../validate_not_shared_operational_intent.md)
If the planning was rejected, Flight 1 should not have been shared, thus should not exist.
## Cleanup
@@ -110,4 +112,4 @@ Delete flights injected at USS through the flight planning interface.
### Successful operational intents cleanup check
Delete operational intents created at DSS by virtual USS.
-If the search for own operational intents or their deletion fail, this check fails per **[astm.f3548.v21.DSS0005](../../../../requirements/astm/f3548/v21.md)**.
+If the search for operational intent references or their deletion fail, this check fails per **[astm.f3548.v21.DSS0005,2](../../../../requirements/astm/f3548/v21.md)** or **[astm.f3548.v21.DSS0005,1](../../../../requirements/astm/f3548/v21.md)**, respectively.
diff --git a/monitoring/uss_qualifier/scenarios/astm/utm/off_nominal_planning/down_uss.py b/monitoring/uss_qualifier/scenarios/astm/utm/off_nominal_planning/down_uss.py
index 43becbfecd..05486cefb4 100644
--- a/monitoring/uss_qualifier/scenarios/astm/utm/off_nominal_planning/down_uss.py
+++ b/monitoring/uss_qualifier/scenarios/astm/utm/off_nominal_planning/down_uss.py
@@ -278,7 +278,7 @@ def _clear_op_intents(self):
) as check:
if find_query.status_code != 200:
check.record_failed(
- summary=f"Failed to query operational intents from DSS in {self._intents_extent} for cleanup",
+ summary=f"Failed to query operational intent references from DSS in {self._intents_extent} for cleanup",
severity=Severity.High,
details=f"DSS responded code {find_query.status_code}; error message: {find_query.error_message}",
query_timestamps=[find_query.request.timestamp],
diff --git a/monitoring/uss_qualifier/scenarios/astm/utm/off_nominal_planning/down_uss_equal_priority_not_permitted.md b/monitoring/uss_qualifier/scenarios/astm/utm/off_nominal_planning/down_uss_equal_priority_not_permitted.md
index 70186a0a67..4bca58ad6f 100644
--- a/monitoring/uss_qualifier/scenarios/astm/utm/off_nominal_planning/down_uss_equal_priority_not_permitted.md
+++ b/monitoring/uss_qualifier/scenarios/astm/utm/off_nominal_planning/down_uss_equal_priority_not_permitted.md
@@ -48,7 +48,7 @@ Make a dummy request to the DSS in order to resolve the USS ID of the virtual US
Delete any leftover operational intents created at DSS by virtual USS.
#### Successful operational intents cleanup check
-If the search for own operational intents or their deletion fail, this check fails per **[astm.f3548.v21.DSS0005](../../../../requirements/astm/f3548/v21.md)**.
+If the search for operational intent references or their deletion fail, this check fails per **[astm.f3548.v21.DSS0005,2](../../../../requirements/astm/f3548/v21.md)** or **[astm.f3548.v21.DSS0005,1](../../../../requirements/astm/f3548/v21.md)**, respectively.
## Plan Flight 2 in conflict with activated operational intent managed by down USS test case
This test case aims at testing requirement **[astm.f3548.v21.SCD0010](../../../../requirements/astm/f3548/v21.md)**.
@@ -176,4 +176,4 @@ Delete flights injected at USS through the flight planning interface.
### Successful operational intents cleanup check
Delete operational intents created at DSS by virtual USS.
-If the search for own operational intents or their deletion fail, this check fails per **[astm.f3548.v21.DSS0005](../../../../requirements/astm/f3548/v21.md)**.
+If the search for operational intent references or their deletion fail, this check fails per **[astm.f3548.v21.DSS0005,2](../../../../requirements/astm/f3548/v21.md)** or **[astm.f3548.v21.DSS0005,1](../../../../requirements/astm/f3548/v21.md)**, respectively.
diff --git a/monitoring/uss_qualifier/scenarios/astm/utm/prep_planners.md b/monitoring/uss_qualifier/scenarios/astm/utm/prep_planners.md
index 5ab857df78..e7c61aace3 100644
--- a/monitoring/uss_qualifier/scenarios/astm/utm/prep_planners.md
+++ b/monitoring/uss_qualifier/scenarios/astm/utm/prep_planners.md
@@ -66,7 +66,9 @@ uss_qualifier verifies with the DSS that there are no operational intents remain
#### 🛑 DSS responses check
-**[astm.f3548.v21.DSS0005](../../../requirements/astm/f3548/v21.md)**
+If the DSS fails to reply to a query concerning operational intent references in a given area, or fails to allow the deletion of
+an operational intent from its own creator, it is in violation of **[astm.f3548.v21.DSS0005,1](../../../requirements/astm/f3548/v21.md)**
+or **[astm.f3548.v21.DSS0005,2](../../../requirements/astm/f3548/v21.md)**, and this check will fail.
#### 🛑 Area is clear check
diff --git a/monitoring/uss_qualifier/scenarios/astm/utm/test_steps.py b/monitoring/uss_qualifier/scenarios/astm/utm/test_steps.py
index a760e0943b..bde5bb26da 100644
--- a/monitoring/uss_qualifier/scenarios/astm/utm/test_steps.py
+++ b/monitoring/uss_qualifier/scenarios/astm/utm/test_steps.py
@@ -106,7 +106,7 @@ def _begin_step(self):
len(oi_ids_delta) > 1
): # TODO: could a USS cut up a submitted flight intent into several op intents?
raise TestRunCannotContinueError(
- f"unexpectedly got more than 1 new operational intent after planning request was created (IDs: {oi_ids_delta}): the test scenario might be malformed or some external requests might have interfered"
+ f"unexpectedly got more than 1 new operational intent reference after planning request was created (IDs: {oi_ids_delta}): the test scenario might be malformed or some external requests might have interfered"
)
if len(oi_ids_delta) == 1:
self._new_oi_ref = self._find_after_oi(oi_ids_delta.pop())
@@ -118,14 +118,14 @@ def _begin_step(self):
with self._scenario.check("DSS responses", [self._dss.participant_id]) as check:
if self._before_query.status_code != 200:
check.record_failed(
- summary="Failed to query DSS for operational intents before planning request",
+ summary="Failed to query DSS for operational intent references before planning request",
severity=Severity.High,
details=f"Received status code {self._before_query.status_code} from the DSS",
query_timestamps=[self._before_query.request.timestamp],
)
if self._after_query.status_code != 200:
check.record_failed(
- summary="Failed to query DSS for operational intents after planning request",
+ summary="Failed to query DSS for operational intent references after planning request",
severity=Severity.High,
details=f"Received status code {self._after_query.status_code} from the DSS",
query_timestamps=[self._after_query.request.timestamp],
diff --git a/monitoring/uss_qualifier/scenarios/astm/utm/validate_not_shared_operational_intent.md b/monitoring/uss_qualifier/scenarios/astm/utm/validate_not_shared_operational_intent.md
index af939a904c..fb3a89ef2e 100644
--- a/monitoring/uss_qualifier/scenarios/astm/utm/validate_not_shared_operational_intent.md
+++ b/monitoring/uss_qualifier/scenarios/astm/utm/validate_not_shared_operational_intent.md
@@ -8,7 +8,8 @@ See `OpIntentValidator.expect_not_shared()` in [test_steps.py](test_steps.py).
## 🛑 DSS responses check
-**[astm.f3548.v21.DSS0005](../../../requirements/astm/f3548/v21.md)**
+If the DSS fails to reply to a query concerning operational intent references in a given area,
+it is in violation of **[astm.f3548.v21.DSS0005,2](../../../requirements/astm/f3548/v21.md)**, and this check will fail.
## 🛑 Operational intent not shared check
If there are new operational intent references in the area of the flight intent, this check will fail per
diff --git a/monitoring/uss_qualifier/scenarios/astm/utm/validate_shared_operational_intent.md b/monitoring/uss_qualifier/scenarios/astm/utm/validate_shared_operational_intent.md
index f7e77daf67..cf89e31a83 100644
--- a/monitoring/uss_qualifier/scenarios/astm/utm/validate_shared_operational_intent.md
+++ b/monitoring/uss_qualifier/scenarios/astm/utm/validate_shared_operational_intent.md
@@ -4,7 +4,8 @@ This step verifies that a created flight is shared properly per ASTM F3548-21 by
## 🛑 DSS responses check
-**[astm.f3548.v21.DSS0005](../../../requirements/astm/f3548/v21.md)**
+If the DSS fails to properly respond to a valid search query for operational intents in an area,
+it is in violation of **[astm.f3548.v21.DSS0005,2](../../../requirements/astm/f3548/v21.md)**, and this check will fail.
## 🛑 Operational intent shared correctly check
diff --git a/monitoring/uss_qualifier/scenarios/scenario.py b/monitoring/uss_qualifier/scenarios/scenario.py
index ccdec94961..964ead7fdb 100644
--- a/monitoring/uss_qualifier/scenarios/scenario.py
+++ b/monitoring/uss_qualifier/scenarios/scenario.py
@@ -9,6 +9,7 @@
from monitoring import uss_qualifier as uss_qualifier_module
from monitoring.monitorlib import fetch, inspection
+from monitoring.monitorlib.errors import current_stack_string
from monitoring.monitorlib.inspection import fullname
from monitoring.uss_qualifier import scenarios as scenarios_module
from monitoring.uss_qualifier.common_data_definitions import Severity
@@ -363,6 +364,12 @@ def record_query(self, query: fetch.Query) -> None:
self._expect_phase({ScenarioPhase.RunningTestStep, ScenarioPhase.CleaningUp})
if "queries" not in self._step_report:
self._step_report.queries = []
+ for existing_query in self._step_report.queries:
+ if query.request.timestamp == existing_query.request.timestamp:
+ logger.error(
+ f"The same query ({query.query_type} to {query.participant_id} at {query.request.timestamp}) was recorded multiple times. This is likely a bug in uss_qualifier at:\n{current_stack_string(2)}"
+ )
+ return
self._step_report.queries.append(query)
participant = (
"UNKNOWN"
diff --git a/monitoring/uss_qualifier/suites/astm/utm/f3548_21.md b/monitoring/uss_qualifier/suites/astm/utm/f3548_21.md
index 69f6505dd9..6b63849983 100644
--- a/monitoring/uss_qualifier/suites/astm/utm/f3548_21.md
+++ b/monitoring/uss_qualifier/suites/astm/utm/f3548_21.md
@@ -31,20 +31,15 @@
Checked in |
- astm .f3548 .v21 |
- DSS0005 |
- Implemented |
- ASTM F3548 flight planners preparation 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 .v21 |
DSS0005,1 |
Implemented |
- ASTM F3548-21 UTM DSS Operational Intent Reference Access Control 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 Off-Nominal planning: down USS Off-Nominal planning: down USS with equal priority conflicts not permitted |
DSS0005,2 |
Implemented |
- ASTM F3548-21 UTM DSS Operational Intent Reference Access Control |
+ ASTM F3548 flight planners preparation ASTM F3548-21 UTM DSS Operational Intent Reference Access Control 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 |
DSS0100 |
diff --git a/monitoring/uss_qualifier/suites/faa/uft/message_signing.md b/monitoring/uss_qualifier/suites/faa/uft/message_signing.md
index f1fc60c97e..3ff13eb844 100644
--- a/monitoring/uss_qualifier/suites/faa/uft/message_signing.md
+++ b/monitoring/uss_qualifier/suites/faa/uft/message_signing.md
@@ -18,20 +18,15 @@
Checked in |
- astm .f3548 .v21 |
- DSS0005 |
- Implemented |
- ASTM F3548 flight planners preparation 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 .v21 |
DSS0005,1 |
Implemented |
- ASTM F3548-21 UTM DSS Operational Intent Reference Access Control 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 Off-Nominal planning: down USS Off-Nominal planning: down USS with equal priority conflicts not permitted |
DSS0005,2 |
Implemented |
- ASTM F3548-21 UTM DSS Operational Intent Reference Access Control |
+ ASTM F3548 flight planners preparation ASTM F3548-21 UTM DSS Operational Intent Reference Access Control 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 |
DSS0100 |
diff --git a/monitoring/uss_qualifier/suites/uspace/flight_auth.md b/monitoring/uss_qualifier/suites/uspace/flight_auth.md
index 21ea7f935c..e94aec6801 100644
--- a/monitoring/uss_qualifier/suites/uspace/flight_auth.md
+++ b/monitoring/uss_qualifier/suites/uspace/flight_auth.md
@@ -19,20 +19,15 @@
Checked in |
- astm .f3548 .v21 |
- DSS0005 |
- Implemented |
- ASTM F3548 flight planners preparation 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 .v21 |
DSS0005,1 |
Implemented |
- ASTM F3548-21 UTM DSS Operational Intent Reference Access Control 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 Off-Nominal planning: down USS Off-Nominal planning: down USS with equal priority conflicts not permitted |
DSS0005,2 |
Implemented |
- ASTM F3548-21 UTM DSS Operational Intent Reference Access Control |
+ ASTM F3548 flight planners preparation ASTM F3548-21 UTM DSS Operational Intent Reference Access Control 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 |
DSS0100 |
diff --git a/monitoring/uss_qualifier/suites/uspace/required_services.md b/monitoring/uss_qualifier/suites/uspace/required_services.md
index c4a3ed480a..b1399f5b71 100644
--- a/monitoring/uss_qualifier/suites/uspace/required_services.md
+++ b/monitoring/uss_qualifier/suites/uspace/required_services.md
@@ -454,20 +454,15 @@
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 |
- DSS0005 |
- Implemented |
- ASTM F3548 flight planners preparation 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 .v21 |
DSS0005,1 |
Implemented |
- ASTM F3548-21 UTM DSS Operational Intent Reference Access Control 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 Off-Nominal planning: down USS Off-Nominal planning: down USS with equal priority conflicts not permitted |
DSS0005,2 |
Implemented |
- ASTM F3548-21 UTM DSS Operational Intent Reference Access Control |
+ ASTM F3548 flight planners preparation ASTM F3548-21 UTM DSS Operational Intent Reference Access Control 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 |
DSS0100 |