From 5b8b95752f4600f40f423c24e679b3ec9502d107 Mon Sep 17 00:00:00 2001 From: Michel Davit Date: Mon, 15 Sep 2025 12:55:04 +0200 Subject: [PATCH 1/6] [uss_qualifier] factorize uss availability fragment --- .../utm/dss/fragments/availability/sync.md | 4 +- .../utm/dss/fragments/availability/update.md | 2 +- .../fragments/report/report.md} | 0 .../uss_availability_synchronization.py | 121 ++++++------------ .../astm/utm/dss/test_step_fragments.py | 59 +++++++++ .../scenarios/astm/utm/set_uss_available.md | 5 +- .../scenarios/astm/utm/set_uss_down.md | 5 +- .../scenarios/astm/utm/test_steps.py | 66 ++-------- 8 files changed, 119 insertions(+), 143 deletions(-) rename monitoring/uss_qualifier/scenarios/astm/utm/{make_dss_report.md => dss/fragments/report/report.md} (100%) diff --git a/monitoring/uss_qualifier/scenarios/astm/utm/dss/fragments/availability/sync.md b/monitoring/uss_qualifier/scenarios/astm/utm/dss/fragments/availability/sync.md index 8fd46ecfb0..8563bca23e 100644 --- a/monitoring/uss_qualifier/scenarios/astm/utm/dss/fragments/availability/sync.md +++ b/monitoring/uss_qualifier/scenarios/astm/utm/dss/fragments/availability/sync.md @@ -1,6 +1,6 @@ # USS Availability Sync test step fragment -## 🛑USS Availability is consistent across every DSS instance check +## 🛑 USS Availability is consistent across every DSS instance check If the reported availability for a USS is not consistent, across a set of DSS instances, with the value that was previously read or set on an arbitrary DSS instance, either the DSS through which the value was set or the one through which the values was retrieved is failing to meet at least one of these requirements: @@ -11,7 +11,7 @@ either the DSS through which the value was set or the one through which the valu As a consequence, the DSS also fails to meet **[astm.f3548.v21.DSS0210,A2-7-2,6](../../../../../../requirements/astm/f3548/v21.md)** and **[astm.f3548.v21.DSS0020](../../../../../../requirements/astm/f3548/v21.md)**. -## 🛑USS Availability version is consistent across every DSS instance check +## 🛑 USS Availability version is consistent across every DSS instance check If the reported availability version for a USS is not consistent, across a set of DSS instances, with the value that was previously read or set on an arbitrary DSS instance, either the DSS through which the value was set or the one through which the values was retrieved is failing to meet at least one of these requirements: diff --git a/monitoring/uss_qualifier/scenarios/astm/utm/dss/fragments/availability/update.md b/monitoring/uss_qualifier/scenarios/astm/utm/dss/fragments/availability/update.md index 6b7f48bde0..84892e8db3 100644 --- a/monitoring/uss_qualifier/scenarios/astm/utm/dss/fragments/availability/update.md +++ b/monitoring/uss_qualifier/scenarios/astm/utm/dss/fragments/availability/update.md @@ -3,7 +3,7 @@ This fragment contains the steps for the USS Availability synchronization scenario where we confirm that a USS availability can be correctly read from a DSS instance -## 🛑USS Availability can be updated check +## 🛑 USS Availability can be updated check If, when presented with a valid query to update the availability state of a USS, a DSS responds with anything else than a 200 OK response, it is in violation of the OpenAPI specification referenced by **[astm.f3548.v21.DSS0100,1](../../../../../../requirements/astm/f3548/v21.md)**. diff --git a/monitoring/uss_qualifier/scenarios/astm/utm/make_dss_report.md b/monitoring/uss_qualifier/scenarios/astm/utm/dss/fragments/report/report.md similarity index 100% rename from monitoring/uss_qualifier/scenarios/astm/utm/make_dss_report.md rename to monitoring/uss_qualifier/scenarios/astm/utm/dss/fragments/report/report.md diff --git a/monitoring/uss_qualifier/scenarios/astm/utm/dss/synchronization/uss_availability_synchronization.py b/monitoring/uss_qualifier/scenarios/astm/utm/dss/synchronization/uss_availability_synchronization.py index b7a15ff677..6559d63473 100644 --- a/monitoring/uss_qualifier/scenarios/astm/utm/dss/synchronization/uss_availability_synchronization.py +++ b/monitoring/uss_qualifier/scenarios/astm/utm/dss/synchronization/uss_availability_synchronization.py @@ -8,6 +8,10 @@ DSSInstancesResource, ) from monitoring.uss_qualifier.resources.communications import ClientIdentityResource +from monitoring.uss_qualifier.scenarios.astm.utm.dss.test_step_fragments import ( + get_uss_availability, + set_uss_availability, +) from monitoring.uss_qualifier.scenarios.scenario import TestScenario from monitoring.uss_qualifier.suites.suite import ExecutionContext @@ -145,55 +149,31 @@ def _step_unknown_uss_reported_as_unknown(self): ) def _step_update_to_unknown(self): - with self.check( - "USS Availability can be updated", self._dss.participant_id - ) as check: - try: - self._current_version, q = self._dss.set_uss_availability( - self._uss_id, UssAvailabilityState.Unknown, self._current_version - ) - self.record_query(q) - except QueryError as qe: - self.record_queries(qe.queries) - check.record_failed( - summary="Failed to set USS availability to Unknown", - details=qe.msg, - query_timestamps=qe.query_timestamps, - ) + self._current_version = set_uss_availability( + self, + self._dss, + self._uss_id, + UssAvailabilityState.Unknown, + self._current_version, + ) def _step_update_to_down(self): - with self.check( - "USS Availability can be updated", self._dss.participant_id - ) as check: - try: - self._current_version, q = self._dss.set_uss_availability( - self._uss_id, UssAvailabilityState.Down, self._current_version - ) - self.record_query(q) - except QueryError as qe: - self.record_queries(qe.queries) - check.record_failed( - summary="Failed to set USS availability to Down", - details=qe.msg, - query_timestamps=qe.query_timestamps, - ) + self._current_version = set_uss_availability( + self, + self._dss, + self._uss_id, + UssAvailabilityState.Down, + self._current_version, + ) def _step_update_to_normal(self): - with self.check( - "USS Availability can be updated", self._dss.participant_id - ) as check: - try: - self._current_version, q = self._dss.set_uss_availability( - self._uss_id, UssAvailabilityState.Normal, self._current_version - ) - self.record_query(q) - except QueryError as qe: - self.record_queries(qe.queries) - check.record_failed( - summary="Failed to set USS availability to Normal", - details=qe.msg, - query_timestamps=qe.query_timestamps, - ) + self._current_version = set_uss_availability( + self, + self._dss, + self._uss_id, + UssAvailabilityState.Normal, + self._current_version, + ) def _ensure_test_uss_availability_unknown(self, check_consistency: bool = True): """ @@ -202,27 +182,13 @@ def _ensure_test_uss_availability_unknown(self, check_consistency: bool = True): We want to both start and end this scenario with this state. """ - with self.check( - "USS Availability can be requested", self._dss.participant_id - ) as check: - try: - availability, q = self._dss.get_uss_availability( - self._uss_id, Scope.AvailabilityArbitration - ) - self.record_query(q) - except QueryError as qe: - self.record_queries(qe.queries) - check.record_failed( - summary="Failed to get USS availability", - details=qe.msg, - query_timestamps=qe.query_timestamps, - ) - return - - self._current_version = availability.version + availability, version = get_uss_availability( + self, self._dss, self._uss_id, Scope.AvailabilityArbitration + ) + self._current_version = version # If the state is not currently unknown, we set it to unknown - if availability.status.availability != UssAvailabilityState.Unknown: + if availability != UssAvailabilityState.Unknown: with self.check("USS Availability can be set to Unknown") as check: try: self._current_version, q = self._dss.set_uss_availability( @@ -254,40 +220,27 @@ def _query_and_expect_on_secondary( expected_availability: UssAvailabilityState, expected_version: str, ): - with self.check( - "USS Availability can be requested", dss.participant_id - ) as check: - try: - availability, q = dss.get_uss_availability( - uss_id, Scope.StrategicCoordination - ) - self.record_query(q) - except QueryError as qe: - self.record_queries(qe.queries) - check.record_failed( - summary="Failed to get USS availability", - details=qe.msg, - query_timestamps=qe.query_timestamps, - ) - return + availability, version = get_uss_availability( + self, dss, uss_id, Scope.StrategicCoordination + ) with self.check( "USS Availability is consistent across every DSS instance", participants ) as check: - if availability.status.availability != expected_availability: + if availability != expected_availability: check.record_failed( summary="USS availability not as expected on secondary DSS", - details=f"Expected {expected_availability}, got {availability.status.availability}", + details=f"Expected {expected_availability}, got {availability}", ) with self.check( "USS Availability version is consistent across every DSS instance", participants, ) as check: - if availability.version != expected_version: + if version != expected_version: check.record_failed( summary="USS availability version not as expected on secondary DSS", - details=f"Expected {expected_version}, got {availability.version}", + details=f"Expected {expected_version}, got {version}", ) def _query_and_expect_on_secondaries( diff --git a/monitoring/uss_qualifier/scenarios/astm/utm/dss/test_step_fragments.py b/monitoring/uss_qualifier/scenarios/astm/utm/dss/test_step_fragments.py index d84721fa9a..5f746e0a30 100644 --- a/monitoring/uss_qualifier/scenarios/astm/utm/dss/test_step_fragments.py +++ b/monitoring/uss_qualifier/scenarios/astm/utm/dss/test_step_fragments.py @@ -1,7 +1,9 @@ from uas_standards.astm.f3548.v21.api import ( EntityID, + UssAvailabilityState, Volume4D, ) +from uas_standards.astm.f3548.v21.constants import Scope from monitoring.monitorlib import fetch from monitoring.monitorlib.fetch import QueryError @@ -331,3 +333,60 @@ def verify_constraint_does_not_exist( summary=f"Constraint intent reference {cr_id} was still found on DSS {dss.participant_id}", details=f"Expected constraint reference {cr_id} to not be found on secondary DSS because it was not present on, or has been removed, from the primary DSS, but it was returned.", ) + + +def get_uss_availability( + scenario: TestScenarioType, + dss: DSSInstance, + uss_sub: str, + scope: Scope = Scope.StrategicCoordination, +) -> tuple[UssAvailabilityState, str]: + availability = UssAvailabilityState.Unknown + version = "" + with scenario.check( + "USS Availability can be requested", dss.participant_id + ) as check: + try: + avail_response, avail_query = dss.get_uss_availability(uss_sub, scope) + scenario.record_query(avail_query) + + availability = avail_response.status.availability + version = avail_response.version + except QueryError as e: + scenario.record_queries(e.queries) + avail_query = e.queries[0] + check.record_failed( + summary=f"Availability of USS {uss_sub} could not be requested", + details=f"DSS responded code {avail_query.status_code}; {e}", + query_timestamps=[avail_query.request.timestamp], + ) + return availability, version + + +def set_uss_availability( + scenario: TestScenarioType, + dss: DSSInstance, + uss_sub: str, + uss_availability: UssAvailabilityState, + version: str = "", +) -> str: + version = "" + with scenario.check( + "USS Availability can be updated", [dss.participant_id] + ) as check: + try: + version, avail_query = dss.set_uss_availability( + uss_sub, + uss_availability, + version, + ) + scenario.record_query(avail_query) + except QueryError as e: + scenario.record_queries(e.queries) + avail_query = e.queries[0] + check.record_failed( + summary=f"Availability of USS {uss_sub} could not be updated to {uss_availability}", + details=f"DSS responded code {avail_query.status_code}; {e}", + query_timestamps=[avail_query.request.timestamp], + ) + return version diff --git a/monitoring/uss_qualifier/scenarios/astm/utm/set_uss_available.md b/monitoring/uss_qualifier/scenarios/astm/utm/set_uss_available.md index 5e9e2e1e45..d3596ab7f0 100644 --- a/monitoring/uss_qualifier/scenarios/astm/utm/set_uss_available.md +++ b/monitoring/uss_qualifier/scenarios/astm/utm/set_uss_available.md @@ -4,5 +4,6 @@ This step sets the USS availability to 'Available' at the DSS. See `set_uss_available` in [test_steps.py](test_steps.py). -## 🛑 USS availability successfully set to 'Available' check -**[astm.f3548.v21.DSS0100,1](../../../requirements/astm/f3548/v21.md)** +## [Availability can be read](./dss/fragments/availability/read.md) + +## [Availability can be updated](./dss/fragments/availability/update.md) diff --git a/monitoring/uss_qualifier/scenarios/astm/utm/set_uss_down.md b/monitoring/uss_qualifier/scenarios/astm/utm/set_uss_down.md index 401b9b65d8..546ddf29b2 100644 --- a/monitoring/uss_qualifier/scenarios/astm/utm/set_uss_down.md +++ b/monitoring/uss_qualifier/scenarios/astm/utm/set_uss_down.md @@ -4,5 +4,6 @@ This step sets the USS availability to 'Down' at the DSS. See `set_uss_down` in [test_steps.py](test_steps.py). -## 🛑 USS availability successfully set to 'Down' check -**[astm.f3548.v21.DSS0100,1](../../../requirements/astm/f3548/v21.md)** +## [Availability can be read](./dss/fragments/availability/read.md) + +## [Availability can be updated](./dss/fragments/availability/update.md) diff --git a/monitoring/uss_qualifier/scenarios/astm/utm/test_steps.py b/monitoring/uss_qualifier/scenarios/astm/utm/test_steps.py index e952024ee8..2b28a19e49 100644 --- a/monitoring/uss_qualifier/scenarios/astm/utm/test_steps.py +++ b/monitoring/uss_qualifier/scenarios/astm/utm/test_steps.py @@ -24,6 +24,10 @@ from monitoring.monitorlib.fetch import QueryError from monitoring.monitorlib.geotemporal import Volume4DCollection from monitoring.uss_qualifier.resources.astm.f3548.v21.dss import DSSInstance +from monitoring.uss_qualifier.scenarios.astm.utm.dss.test_step_fragments import ( + get_uss_availability, + set_uss_availability, +) from monitoring.uss_qualifier.scenarios.astm.utm.evaluation import ( validate_op_intent_details, ) @@ -650,64 +654,22 @@ def set_uss_available( scenario: TestScenarioType, dss: DSSInstance, uss_sub: str, -) -> str: - """Set the USS availability to 'Available'. - - This function implements the test step fragment described in set_uss_available.md. - - Returns: - The new version of the USS availability. - """ - with scenario.check( - "USS availability successfully set to 'Available'", [dss.participant_id] - ) as check: - try: - availability_version, avail_query = dss.set_uss_availability( - uss_sub, - UssAvailabilityState.Normal, - ) - scenario.record_query(avail_query) - except QueryError as e: - scenario.record_queries(e.queries) - avail_query = e.queries[0] - check.record_failed( - summary=f"Availability of USS {uss_sub} could not be set to available", - details=f"DSS responded code {avail_query.status_code}; {e}", - query_timestamps=[avail_query.request.timestamp], - ) - return availability_version +): + _, version = get_uss_availability( + scenario, dss, uss_sub, Scope.AvailabilityArbitration + ) + set_uss_availability(scenario, dss, uss_sub, UssAvailabilityState.Normal, version) def set_uss_down( scenario: TestScenarioType, dss: DSSInstance, uss_sub: str, -) -> str: - """Set the USS availability to 'Down'. - - This function implements the test step fragment described in set_uss_down.md. - - Returns: - The new version of the USS availability. - """ - with scenario.check( - "USS availability successfully set to 'Down'", [dss.participant_id] - ) as check: - try: - availability_version, avail_query = dss.set_uss_availability( - uss_sub, - UssAvailabilityState.Down, - ) - scenario.record_query(avail_query) - except QueryError as e: - scenario.record_queries(e.queries) - avail_query = e.queries[0] - check.record_failed( - summary=f"Availability of USS {uss_sub} could not be set to down", - details=f"DSS responded code {avail_query.status_code}; {e}", - query_timestamps=[avail_query.request.timestamp], - ) - return availability_version +): + _, version = get_uss_availability( + scenario, dss, uss_sub, Scope.AvailabilityArbitration + ) + set_uss_availability(scenario, dss, uss_sub, UssAvailabilityState.Down, version) def make_dss_report( From 8b215c0b03680929fb8553cba38ab837f5282599 Mon Sep 17 00:00:00 2001 From: Michel Davit Date: Mon, 15 Sep 2025 12:57:09 +0200 Subject: [PATCH 2/6] fix circular import --- .../astm/utm/dss/fragments/report/report.md | 2 +- .../scenarios/astm/utm/dss/report.md | 2 +- .../scenarios/astm/utm/dss/report.py | 4 +- .../astm/utm/dss/test_step_fragments.py | 43 +++++++++++++++++++ .../scenarios/astm/utm/test_steps.py | 40 ----------------- 5 files changed, 48 insertions(+), 43 deletions(-) diff --git a/monitoring/uss_qualifier/scenarios/astm/utm/dss/fragments/report/report.md b/monitoring/uss_qualifier/scenarios/astm/utm/dss/fragments/report/report.md index 5b66df538a..2e08e08496 100644 --- a/monitoring/uss_qualifier/scenarios/astm/utm/dss/fragments/report/report.md +++ b/monitoring/uss_qualifier/scenarios/astm/utm/dss/fragments/report/report.md @@ -1,7 +1,7 @@ # Make report to DSS test step fragment This step makes a report to the DSS. -See `make_dss_report` in [test_steps.py](test_steps.py). +See `make_dss_report` in [test_steps_fragments.py](../../test_step_fragments.py). ## 🛑 DSS report successfully submitted check If the submission of the report to the DSS does not succeed, this check will fail per **[astm.f3548.v21.DSS0100,2](../../../requirements/astm/f3548/v21.md)**. diff --git a/monitoring/uss_qualifier/scenarios/astm/utm/dss/report.md b/monitoring/uss_qualifier/scenarios/astm/utm/dss/report.md index 109954384a..e64518f5d9 100644 --- a/monitoring/uss_qualifier/scenarios/astm/utm/dss/report.md +++ b/monitoring/uss_qualifier/scenarios/astm/utm/dss/report.md @@ -17,4 +17,4 @@ A dummy `getOperationalIntentReference` query is made to a non-existent DSS in o ### Make valid DSS report test step -#### [Make report to DSS](../make_dss_report.md) +#### [Make report to DSS](./fragments/report/report.md) diff --git a/monitoring/uss_qualifier/scenarios/astm/utm/dss/report.py b/monitoring/uss_qualifier/scenarios/astm/utm/dss/report.py index 54bfc13c47..d32a93f114 100644 --- a/monitoring/uss_qualifier/scenarios/astm/utm/dss/report.py +++ b/monitoring/uss_qualifier/scenarios/astm/utm/dss/report.py @@ -6,7 +6,9 @@ from monitoring.monitorlib.fetch import QueryType, query_and_describe from monitoring.monitorlib.testing import make_fake_url from monitoring.uss_qualifier.resources.astm.f3548.v21.dss import DSSInstanceResource -from monitoring.uss_qualifier.scenarios.astm.utm.test_steps import make_dss_report +from monitoring.uss_qualifier.scenarios.astm.utm.dss.test_step_fragments import ( + make_dss_report, +) from monitoring.uss_qualifier.scenarios.scenario import ( TestScenario, ) diff --git a/monitoring/uss_qualifier/scenarios/astm/utm/dss/test_step_fragments.py b/monitoring/uss_qualifier/scenarios/astm/utm/dss/test_step_fragments.py index 5f746e0a30..d35efc3229 100644 --- a/monitoring/uss_qualifier/scenarios/astm/utm/dss/test_step_fragments.py +++ b/monitoring/uss_qualifier/scenarios/astm/utm/dss/test_step_fragments.py @@ -1,5 +1,6 @@ from uas_standards.astm.f3548.v21.api import ( EntityID, + ExchangeRecord, UssAvailabilityState, Volume4D, ) @@ -341,6 +342,7 @@ def get_uss_availability( uss_sub: str, scope: Scope = Scope.StrategicCoordination, ) -> tuple[UssAvailabilityState, str]: + """TODO""" availability = UssAvailabilityState.Unknown version = "" with scenario.check( @@ -370,6 +372,7 @@ def set_uss_availability( uss_availability: UssAvailabilityState, version: str = "", ) -> str: + """TODO""" version = "" with scenario.check( "USS Availability can be updated", [dss.participant_id] @@ -390,3 +393,43 @@ def set_uss_availability( query_timestamps=[avail_query.request.timestamp], ) return version + + +def make_dss_report( + scenario: TestScenarioType, + dss: DSSInstance, + exchange: ExchangeRecord, +) -> str | None: + """Make a DSS report. + + This function implements the test step fragment described in report.md. + + Returns: + The report ID. + """ + report_id = None + with scenario.check( + "DSS report successfully submitted", [dss.participant_id] + ) as check: + try: + report_id, report_query = dss.make_report(exchange) + scenario.record_query(report_query) + except QueryError as e: + scenario.record_queries(e.queries) + report_query = e.queries[0] + check.record_failed( + summary="DSS report could not be submitted", + details=f"DSS responded code {report_query.status_code}; {e}", + query_timestamps=[report_query.request.timestamp], + ) + + with scenario.check( + "DSS returned a valid report ID", [dss.participant_id] + ) as check: + if not report_id: + check.record_failed( + summary="Submitted DSS report returned no or empty ID", + details=f"DSS responded code {report_query.status_code} but with no ID for the report", + query_timestamps=[report_query.request.timestamp], + ) + return report_id diff --git a/monitoring/uss_qualifier/scenarios/astm/utm/test_steps.py b/monitoring/uss_qualifier/scenarios/astm/utm/test_steps.py index 2b28a19e49..d5eace6db2 100644 --- a/monitoring/uss_qualifier/scenarios/astm/utm/test_steps.py +++ b/monitoring/uss_qualifier/scenarios/astm/utm/test_steps.py @@ -5,7 +5,6 @@ from implicitdict import ImplicitDict from uas_standards.astm.f3548.v21.api import ( EntityID, - ExchangeRecord, GetOperationalIntentDetailsResponse, OperationalIntentReference, OperationalIntentState, @@ -670,42 +669,3 @@ def set_uss_down( scenario, dss, uss_sub, Scope.AvailabilityArbitration ) set_uss_availability(scenario, dss, uss_sub, UssAvailabilityState.Down, version) - - -def make_dss_report( - scenario: TestScenarioType, - dss: DSSInstance, - exchange: ExchangeRecord, -) -> str: - """Make a DSS report. - - This function implements the test step fragment described in make_dss_report.md. - - Returns: - The report ID. - """ - with scenario.check( - "DSS report successfully submitted", [dss.participant_id] - ) as check: - try: - report_id, report_query = dss.make_report(exchange) - scenario.record_query(report_query) - except QueryError as e: - scenario.record_queries(e.queries) - report_query = e.cause - check.record_failed( - summary="DSS report could not be submitted", - details=f"DSS responded code {report_query.status_code}; {e}", - query_timestamps=[report_query.request.timestamp], - ) - - with scenario.check( - "DSS returned a valid report ID", [dss.participant_id] - ) as check: - if not report_id: - check.record_failed( - summary="Submitted DSS report returned no or empty ID", - details=f"DSS responded code {report_query.status_code} but with no ID for the report", - query_timestamps=[report_query.request.timestamp], - ) - return report_id From 30ef856c639319b16c6629cf7dafdd376a37c5a2 Mon Sep 17 00:00:00 2001 From: Michel Davit Date: Mon, 15 Sep 2025 13:27:01 +0200 Subject: [PATCH 3/6] please linter --- monitoring/uss_qualifier/scenarios/astm/utm/dss/report.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/monitoring/uss_qualifier/scenarios/astm/utm/dss/report.py b/monitoring/uss_qualifier/scenarios/astm/utm/dss/report.py index d32a93f114..22e8ec7330 100644 --- a/monitoring/uss_qualifier/scenarios/astm/utm/dss/report.py +++ b/monitoring/uss_qualifier/scenarios/astm/utm/dss/report.py @@ -60,5 +60,6 @@ def gen_record() -> ExchangeRecord: self.begin_test_step("Make valid DSS report") dummy_record = gen_record() report_id = make_dss_report(self, self._dss, dummy_record) - self.record_note(f"{self._dss.participant_id}/report_id", report_id) + if report_id: + self.record_note(f"{self._dss.participant_id}/report_id", report_id) self.end_test_step() From b49f42b3c9b3777e063b064106bab16624b3db20 Mon Sep 17 00:00:00 2001 From: Michel Davit Date: Mon, 15 Sep 2025 13:33:23 +0200 Subject: [PATCH 4/6] pydoc --- .../astm/utm/dss/test_step_fragments.py | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/monitoring/uss_qualifier/scenarios/astm/utm/dss/test_step_fragments.py b/monitoring/uss_qualifier/scenarios/astm/utm/dss/test_step_fragments.py index d35efc3229..9e2408995c 100644 --- a/monitoring/uss_qualifier/scenarios/astm/utm/dss/test_step_fragments.py +++ b/monitoring/uss_qualifier/scenarios/astm/utm/dss/test_step_fragments.py @@ -342,7 +342,14 @@ def get_uss_availability( uss_sub: str, scope: Scope = Scope.StrategicCoordination, ) -> tuple[UssAvailabilityState, str]: - """TODO""" + """ + Get the USS availability. + + This function implements the test step fragment described in dss/fragments/availability/read.md. + + Returns: + The state and version of the USS availability. + """ availability = UssAvailabilityState.Unknown version = "" with scenario.check( @@ -372,7 +379,14 @@ def set_uss_availability( uss_availability: UssAvailabilityState, version: str = "", ) -> str: - """TODO""" + """ + Set the USS availability. + + This function implements the test step fragment described in dss/fragments/availability/update.md. + + Returns: + The new version of the USS availability. + """ version = "" with scenario.check( "USS Availability can be updated", [dss.participant_id] @@ -402,7 +416,7 @@ def make_dss_report( ) -> str | None: """Make a DSS report. - This function implements the test step fragment described in report.md. + This function implements the test step fragment described in dss/fragments/report/report.md. Returns: The report ID. From 994cb7404b8bf913c40cef9fb991c9dc6f35ed15 Mon Sep 17 00:00:00 2001 From: Michel Davit Date: Mon, 15 Sep 2025 14:26:19 +0200 Subject: [PATCH 5/6] fix lint warnings --- .basedpyright/baseline.json | 80 ------------------- .../astm/utm/dss/test_step_fragments.py | 6 +- 2 files changed, 3 insertions(+), 83 deletions(-) diff --git a/.basedpyright/baseline.json b/.basedpyright/baseline.json index b545399a55..977c58c443 100644 --- a/.basedpyright/baseline.json +++ b/.basedpyright/baseline.json @@ -21683,30 +21683,6 @@ "lineCount": 1 } }, - { - "code": "reportPossiblyUnboundVariable", - "range": { - "startColumn": 11, - "endColumn": 31, - "lineCount": 1 - } - }, - { - "code": "reportInvalidTypeVarUse", - "range": { - "startColumn": 14, - "endColumn": 30, - "lineCount": 1 - } - }, - { - "code": "reportPossiblyUnboundVariable", - "range": { - "startColumn": 11, - "endColumn": 31, - "lineCount": 1 - } - }, { "code": "reportInvalidTypeVarUse", "range": { @@ -21714,62 +21690,6 @@ "endColumn": 30, "lineCount": 1 } - }, - { - "code": "reportOptionalMemberAccess", - "range": { - "startColumn": 59, - "endColumn": 70, - "lineCount": 1 - } - }, - { - "code": "reportOptionalMemberAccess", - "range": { - "startColumn": 47, - "endColumn": 54, - "lineCount": 1 - } - }, - { - "code": "reportPossiblyUnboundVariable", - "range": { - "startColumn": 15, - "endColumn": 24, - "lineCount": 1 - } - }, - { - "code": "reportOptionalMemberAccess", - "range": { - "startColumn": 59, - "endColumn": 70, - "lineCount": 1 - } - }, - { - "code": "reportOptionalMemberAccess", - "range": { - "startColumn": 47, - "endColumn": 54, - "lineCount": 1 - } - }, - { - "code": "reportReturnType", - "range": { - "startColumn": 11, - "endColumn": 20, - "lineCount": 1 - } - }, - { - "code": "reportPossiblyUnboundVariable", - "range": { - "startColumn": 11, - "endColumn": 20, - "lineCount": 1 - } } ], "./monitoring/uss_qualifier/scenarios/astm/utm/versioning/evaluate_system_versions.py": [ diff --git a/monitoring/uss_qualifier/scenarios/astm/utm/dss/test_step_fragments.py b/monitoring/uss_qualifier/scenarios/astm/utm/dss/test_step_fragments.py index 9e2408995c..996018ab61 100644 --- a/monitoring/uss_qualifier/scenarios/astm/utm/dss/test_step_fragments.py +++ b/monitoring/uss_qualifier/scenarios/astm/utm/dss/test_step_fragments.py @@ -337,7 +337,7 @@ def verify_constraint_does_not_exist( def get_uss_availability( - scenario: TestScenarioType, + scenario: TestScenario, dss: DSSInstance, uss_sub: str, scope: Scope = Scope.StrategicCoordination, @@ -373,7 +373,7 @@ def get_uss_availability( def set_uss_availability( - scenario: TestScenarioType, + scenario: TestScenario, dss: DSSInstance, uss_sub: str, uss_availability: UssAvailabilityState, @@ -410,7 +410,7 @@ def set_uss_availability( def make_dss_report( - scenario: TestScenarioType, + scenario: TestScenario, dss: DSSInstance, exchange: ExchangeRecord, ) -> str | None: From 778b1ac89eddae00f5ba3570373750c7dd9f4a9c Mon Sep 17 00:00:00 2001 From: Michel Davit Date: Tue, 16 Sep 2025 08:39:42 +0200 Subject: [PATCH 6/6] fix rel paths links --- .../scenarios/astm/utm/dss/fragments/report/report.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/monitoring/uss_qualifier/scenarios/astm/utm/dss/fragments/report/report.md b/monitoring/uss_qualifier/scenarios/astm/utm/dss/fragments/report/report.md index 2e08e08496..d0e20964b0 100644 --- a/monitoring/uss_qualifier/scenarios/astm/utm/dss/fragments/report/report.md +++ b/monitoring/uss_qualifier/scenarios/astm/utm/dss/fragments/report/report.md @@ -4,7 +4,7 @@ This step makes a report to the DSS. See `make_dss_report` in [test_steps_fragments.py](../../test_step_fragments.py). ## 🛑 DSS report successfully submitted check -If the submission of the report to the DSS does not succeed, this check will fail per **[astm.f3548.v21.DSS0100,2](../../../requirements/astm/f3548/v21.md)**. +If the submission of the report to the DSS does not succeed, this check will fail per **[astm.f3548.v21.DSS0100,2](../../../../../../requirements/astm/f3548/v21.md)**. ## ⚠️ DSS returned a valid report ID check -If the ID returned by the DSS is not present or is empty, this check will fail per **[astm.f3548.v21.DSS0100,2](../../../requirements/astm/f3548/v21.md)**. +If the ID returned by the DSS is not present or is empty, this check will fail per **[astm.f3548.v21.DSS0100,2](../../../../../../requirements/astm/f3548/v21.md)**.