From 70593a24193a89306755bade64bf2516abf7c6c4 Mon Sep 17 00:00:00 2001 From: Julien Perrochet Date: Fri, 27 Oct 2023 09:50:51 +0200 Subject: [PATCH] [uss_qualifier] DSS0030 simple subscription test scenario --- monitoring/monitorlib/fetch/rid.py | 11 + .../interuss/f3411/dss_endpoints.md | 6 + .../resources/netrid/service_area.py | 21 +- .../netrid/common/dss/subscription_simple.py | 372 ++++++++++++++++++ .../scenarios/astm/netrid/dss_wrapper.py | 108 ++++- .../scenarios/astm/netrid/v19/dss/__init__.py | 1 + .../netrid/v19/dss/subscription_simple.md | 184 +++++++++ .../netrid/v19/dss/subscription_simple.py | 8 + .../netrid/v19/dss/subscription_validation.md | 4 +- .../astm/netrid/v22a/dss/__init__.py | 1 + .../netrid/v22a/dss/subscription_simple.md | 184 +++++++++ .../netrid/v22a/dss/subscription_simple.py | 8 + .../v22a/dss/subscription_validation.md | 4 +- .../suites/astm/netrid/f3411_19.md | 35 +- .../astm/netrid/f3411_19/dss_probing.md | 40 +- .../astm/netrid/f3411_19/dss_probing.yaml | 7 + .../suites/astm/netrid/f3411_22a.md | 35 +- .../astm/netrid/f3411_22a/dss_probing.md | 40 +- .../astm/netrid/f3411_22a/dss_probing.yaml | 7 + .../suites/interuss/dss/all_tests.md | 48 ++- .../suites/uspace/network_identification.md | 35 +- .../suites/uspace/required_services.md | 35 +- 22 files changed, 1141 insertions(+), 53 deletions(-) create mode 100644 monitoring/uss_qualifier/scenarios/astm/netrid/common/dss/subscription_simple.py create mode 100644 monitoring/uss_qualifier/scenarios/astm/netrid/v19/dss/subscription_simple.md create mode 100644 monitoring/uss_qualifier/scenarios/astm/netrid/v19/dss/subscription_simple.py create mode 100644 monitoring/uss_qualifier/scenarios/astm/netrid/v22a/dss/subscription_simple.md create mode 100644 monitoring/uss_qualifier/scenarios/astm/netrid/v22a/dss/subscription_simple.py diff --git a/monitoring/monitorlib/fetch/rid.py b/monitoring/monitorlib/fetch/rid.py index e6b26c046e..d8122b5404 100644 --- a/monitoring/monitorlib/fetch/rid.py +++ b/monitoring/monitorlib/fetch/rid.py @@ -603,6 +603,17 @@ def isa_url(self) -> str: f"Cannot retrieve isa_url using RID version {self.rid_version}" ) + @property + def notification_index(self) -> int: + if self.rid_version == RIDVersion.f3411_19: + return self.v19_value.notification_index + elif self.rid_version == RIDVersion.f3411_22a: + return self.v22a_value.notification_index + else: + raise NotImplementedError( + f"Cannot retrieve notification_index using RID version {self.rid_version}" + ) + class RIDQuery(ImplicitDict): v19_query: Optional[Query] = None diff --git a/monitoring/uss_qualifier/requirements/interuss/f3411/dss_endpoints.md b/monitoring/uss_qualifier/requirements/interuss/f3411/dss_endpoints.md index 2d8a926754..45d5cf8de9 100644 --- a/monitoring/uss_qualifier/requirements/interuss/f3411/dss_endpoints.md +++ b/monitoring/uss_qualifier/requirements/interuss/f3411/dss_endpoints.md @@ -2,5 +2,11 @@ While neither ASTM F3411-19 nor F3411-22a explicitly require DSS implementations to implement all endpoints specified in Annex A4 (of each respective standard), InterUSS automated testing expects DSS implementations to implement all DSS endpoints specified in Annex A4. Specifically: +* PutISA: The DSS implementation under test must implement the ability to create and update an Identification Service Area by ID in accordance with the API specified in Annex A4 of the respective standard. * GetISA: The DSS implementation under test must implement the ability to retrieve an Identification Service Area by ID in accordance with the API specified in Annex A4 of the respective standard. +* DeleteISA: The DSS implementation under test must implement the ability to delete an Identification Service Area by ID in accordance with the API specified in Annex A4 of the respective standard. * SearchISAs: The DSS implementation under test must implement the ability to search for Identification Service Areas meeting the specified criteria in accordance with the API specified in Annex A4 of the respective standard. +* PutSubscription: The DSS implementation under test must implement the ability to create a subscription in accordance with the API specified in Annex A4 of the respective standard. +* GetSubscription: The DSS implementation under test must implement the ability to retrieve a Subscription by ID in accordance with the API specified in Annex A4 of the respective standard. +* DeleteSubscription: The DSS implementation under test must implement the ability to delete s Subscription in accordance with the API specified in Annex A4 of the respective standard. +* SearchSubscriptions: The DSS implementation under test must implement the ability to search for subscriptions in accordance with the API specified in Annex A4 of the respective standard. diff --git a/monitoring/uss_qualifier/resources/netrid/service_area.py b/monitoring/uss_qualifier/resources/netrid/service_area.py index 826007354e..7905fbff93 100644 --- a/monitoring/uss_qualifier/resources/netrid/service_area.py +++ b/monitoring/uss_qualifier/resources/netrid/service_area.py @@ -1,9 +1,9 @@ import datetime -from typing import List +from typing import List, Dict, Any from implicitdict import ImplicitDict, StringBasedDateTime -from monitoring.monitorlib.geo import LatLngPoint +from monitoring.monitorlib.geo import LatLngPoint from monitoring.uss_qualifier.resources.resource import Resource @@ -45,6 +45,23 @@ def shifted_time_end( dt = new_reference_time - self.reference_time.datetime return self.time_end.datetime + dt + def get_new_subscription_params( + self, sub_id: str, start_time: datetime.datetime, duration: datetime.timedelta + ) -> Dict[str, Any]: + """ + Builds a dict of parameters that can be used to create a subscription, using this ISA's parameters + and the passed start time and duration + """ + return dict( + sub_id=sub_id, + area_vertices=[vertex.as_s2sphere() for vertex in self.footprint], + alt_lo=self.altitude_min, + alt_hi=self.altitude_max, + start_time=start_time, + end_time=start_time + duration, + uss_base_url=self.base_url, + ) + class ServiceAreaResource(Resource[ServiceAreaSpecification]): specification: ServiceAreaSpecification diff --git a/monitoring/uss_qualifier/scenarios/astm/netrid/common/dss/subscription_simple.py b/monitoring/uss_qualifier/scenarios/astm/netrid/common/dss/subscription_simple.py new file mode 100644 index 0000000000..12f273bc95 --- /dev/null +++ b/monitoring/uss_qualifier/scenarios/astm/netrid/common/dss/subscription_simple.py @@ -0,0 +1,372 @@ +import re +from datetime import datetime, timedelta +from typing import Dict, Any, List + +import s2sphere + +from monitoring.prober.infrastructure import register_resource_type +from monitoring.uss_qualifier.common_data_definitions import Severity +from monitoring.uss_qualifier.resources import VerticesResource +from monitoring.uss_qualifier.resources.astm.f3411.dss import DSSInstanceResource +from monitoring.uss_qualifier.resources.interuss.id_generator import IDGeneratorResource +from monitoring.uss_qualifier.resources.netrid.service_area import ServiceAreaResource +from monitoring.uss_qualifier.scenarios.astm.netrid.dss_wrapper import DSSWrapper +from monitoring.uss_qualifier.scenarios.scenario import ( + GenericTestScenario, +) + +TIME_TOLERANCE_SEC = 1 + + +class SubscriptionSimple(GenericTestScenario): + """Based on prober/rid/v2/test_subscription_simple.py from the legacy prober tool.""" + + SUB_TYPE = register_resource_type(371, "Subscription") + + _test_subscription_params: Dict[str, Any] + _problematically_big_area: List[s2sphere.LatLng] + + def __init__( + self, + dss: DSSInstanceResource, + id_generator: IDGeneratorResource, + isa: ServiceAreaResource, + problematically_big_area: VerticesResource, + ): + """ + + Args: + dss: dss to test + id_generator: will let us generate specific identifiers + isa: Service Area to use for the tests. It should be an area for which the DSS is responsible, + but has no other requirements. + """ + super().__init__() + # This is an UTMClientSession + self._dss = dss.dss_instance + self._dss_wrapper = DSSWrapper(self, self._dss) + self._sub_id = id_generator.id_factory.make_id(self.SUB_TYPE) + self._isa = isa.specification + self._isa_area = [vertex.as_s2sphere() for vertex in self._isa.footprint] + + self._test_subscription_params = self._isa.get_new_subscription_params( + sub_id=self._sub_id, + start_time=datetime.now().astimezone(), + duration=timedelta( + minutes=5 + ), # 5 minutes are enough to run through this test + ) + + self._problematically_big_area = [ + vertex.as_s2sphere() + for vertex in problematically_big_area.specification.vertices + ] + + def run(self): + self.begin_test_scenario() + + self._setup_case() + + self.begin_test_case("Subscription Simple") + + self.begin_test_step("Create subscription validation") + + self._create_and_validate_sub() + + self.end_test_step() + self.begin_test_step("Query Existing Subscription") + + self._test_get_sub() + + self._test_valid_search_sub() + + self._test_huge_area_search_sub() + + # TODO implement and include the loop search + # self._test_loop_vertices_search_sub() + + self.end_test_step() + self.begin_test_step("Delete Subscription") + + self._test_delete_sub_faulty() + + self._test_delete_sub() + + self.end_test_step() + self.begin_test_step("Query Deleted Subscription") + + self._test_get_deleted_sub() + self._test_search_deleted_sub() + + # TODO implement and include the loop search + # self._test_loop_vertices_search_deleted_sub() + + self.end_test_step() + self.end_test_case() + + self.end_test_scenario() + + def _setup_case(self): + self.begin_test_case("Setup") + + self._ensure_clean_workspace_step() + + self.end_test_case() + + def _ensure_clean_workspace_step(self): + self.begin_test_step("Ensure clean workspace") + self._ensure_test_sub_does_not_exist() + self.end_test_step() + + def _ensure_test_sub_does_not_exist(self): + with self.check( + "Ensure subscription with test ID does not exist", + [self._dss_wrapper.participant_id], + ) as check: + self._dss_wrapper.cleanup_sub(check, self._sub_id) + + def _create_and_validate_sub(self): + """Creates a subscription and ensures that the data obtained in the response is correct. + Note that this does not check for services areas in the response: this behavior is checked + in the isa_subscription_interactions scenario. + """ + with self.check( + "Create subscription", [self._dss_wrapper.participant_id] + ) as check: + created_sub = self._dss_wrapper.put_sub( + check, + **self._test_subscription_params, + ) + + # Make sure the subscription corresponds to what we requested + self._validate_subscription(created_sub.subscription) + + # Check the notification index is 0 + with self.check( + "Returned notification index is 0", [self._dss_wrapper.participant_id] + ) as check: + notif_index = created_sub.subscription.notification_index + if notif_index != 0: + check.record_failed( + f"Returned notification index was {notif_index} instead of 0", + Severity.High, + query_timestamps=[created_sub.query.request.timestamp], + ) + + self._current_sub_version = created_sub.subscription.version + + def _test_get_sub(self): + """Retrieves the previously created Submission by its ID and ensures that + the data obtained in the response is correct.""" + with self.check( + "Get Subscription by ID", [self._dss_wrapper.participant_id] + ) as check: + fetched_sub = self._dss_wrapper.get_sub( + check, + self._sub_id, + ) + + # Make sure the subscription corresponds to what we requested + self._validate_subscription_and_notif_index(fetched_sub.subscription) + + def _test_valid_search_sub(self): + """Search for the created subscription by using the configured ISA's footprint. This is expected to work""" + + with self.check( + "Search for all subscriptions in ISA area", + [self._dss_wrapper.participant_id], + ) as check: + subs_in_area = self._dss_wrapper.search_subs( + check, + self._isa_area, + ) + + with self.check( + "Created Subscription is in search results", + [self._dss_wrapper.participant_id], + ) as check: + if self._sub_id not in subs_in_area.subscriptions: + check.record_failed( + "Created subscription is not present in search results", + Severity.High, + f"The subscription {self._sub_id} was expected to be found in the search results, but these only contained the following subscriptions: {subs_in_area.subscriptions.keys()}", + query_timestamps=[subs_in_area.query.request.timestamp], + ) + + # Make sure the returned subscription corresponds to what we created + self._validate_subscription_and_notif_index( + subs_in_area.subscriptions[self._sub_id] + ) + + def _test_huge_area_search_sub(self): + """Checks that too big search areas are rejected""" + with self.check( + "No huge search area allowed", [self._dss_wrapper.participant_id] + ) as check: + self._dss_wrapper.search_subs_expect_response_code( + check=check, + expected_codes={413}, + area=self._problematically_big_area, + ) + + def _test_delete_sub_faulty(self): + """Try to delete subscription in an incorrect way""" + with self.check( + "Missing version prevents deletion", [self._dss_wrapper.participant_id] + ) as check: + self._dss_wrapper.del_sub_expect_response_code( + check=check, + expected_response_codes={400}, + sub_id=self._sub_id, + sub_version="", # this results in an empty url path parameter in the query (what we want to test) + ) + + with self.check( + "Incorrect version prevents deletion", [self._dss_wrapper.participant_id] + ) as check: + self._dss_wrapper.del_sub_expect_response_code( + check=check, + expected_response_codes={400}, + sub_id=self._sub_id, + sub_version="notacorrectversion", + ) + + def _test_delete_sub(self): + """Delete the subscription in the correct way""" + with self.check( + "Subscription can be deleted", [self._dss_wrapper.participant_id] + ) as check: + deleted_sub = self._dss_wrapper.del_sub( + check=check, sub_id=self._sub_id, sub_version=self._current_sub_version + ) + + # Make sure the returned subscription corresponds to what we created + self._validate_subscription_and_notif_index(deleted_sub.subscription) + + def _test_get_deleted_sub(self): + """Try to retrieve the deleted subscription by its ID.""" + with self.check( + "Query by subscription ID should fail", [self._dss_wrapper.participant_id] + ) as check: + self._dss_wrapper.get_sub_expect_response_code( + check=check, + expected_response_codes={404}, + sub_id=self._sub_id, + ) + + def _test_search_deleted_sub(self): + """Try searching for the deleted subscription""" + # Search should succeed + with self.check( + "Search for all subscriptions in ISA area", + [self._dss_wrapper.participant_id], + ) as check: + subs_in_area = self._dss_wrapper.search_subs( + check, + self._isa_area, + ) + + with self.check( + "Deleted subscription should not be present in search results", + [self._dss_wrapper.participant_id], + ) as check: + if self._sub_id in subs_in_area.subscriptions: + check.record_failed( + "Deleted subscription is still present in search results", + Severity.High, + f"The subscription {self._sub_id} was deleted, and thus not expected to be found in the search results.", + query_timestamps=[subs_in_area.query.request.timestamp], + ) + + def _validate_subscription_and_notif_index(self, sub_under_test): + """Compare the passed subscription with the data we specified when creating it""" + self._validate_subscription(sub_under_test) + + # Check the notification index is 0 or more + # (notifications might have been sent out between the creation and subsequent query) + with self.check( + "Returned notification index is equal to or greater than 0", + [self._dss_wrapper.participant_id], + ) as check: + if sub_under_test.notification_index < 0: + check.record_failed( + "Returned notification index is lower than 0", + Severity.High, + f"Returned: {sub_under_test.notification_index} when 0 or more was expected", + query_timestamps=[sub_under_test.query.request.timestamp], + ) + + def _validate_subscription(self, sub_under_test): + + with self.check( + "Returned subscription ID is correct", [self._dss_wrapper.participant_id] + ) as check: + if sub_under_test.id != self._sub_id: + check.record_failed( + "Returned subscription ID does not match provided one", + Severity.High, + f"Provided: {self._sub_id}, Returned: {sub_under_test.id}", + query_timestamps=[sub_under_test.query.request.timestamp], + ) + + with self.check( + "Returned ISA URL has correct base URL", [self._dss_wrapper.participant_id] + ) as check: + if not sub_under_test.isa_url.startswith(self._isa.base_url): + check.record_failed( + "Returned USS Base URL does not match provided one", + Severity.High, + f"Provided: {self._isa.base_url}, Returned: {sub_under_test.isa_url}", + query_timestamps=[sub_under_test.query.request.timestamp], + ) + + with self.check( + "Returned start time is correct", [self._dss_wrapper.participant_id] + ) as check: + if ( + abs( + sub_under_test.time_start + - self._test_subscription_params["start_time"] + ).total_seconds() + > TIME_TOLERANCE_SEC + ): + check.record_failed( + "Returned start time does not match provided one", + Severity.High, + f"Provided: {self._test_subscription_params['time_start']}, Returned: {sub_under_test.time_start}", + query_timestamps=[sub_under_test.query.request.timestamp], + ) + + with self.check( + "Returned end time is correct", [self._dss_wrapper.participant_id] + ) as check: + if ( + abs( + sub_under_test.time_end - self._test_subscription_params["end_time"] + ).total_seconds() + > TIME_TOLERANCE_SEC + ): + check.record_failed( + "Returned end time does not match provided one", + Severity.High, + f"Provided: {self._test_subscription_params['time_end']}, Returned: {sub_under_test.time_end}", + query_timestamps=[sub_under_test.query.request.timestamp], + ) + + with self.check( + "Generated subscription version has proper format", + [self._dss_wrapper.participant_id], + ) as check: + if not re.match(r"[a-z0-9]{10,}$", sub_under_test.version): + check.record_failed( + "Returned subscription version does not match expected format", + Severity.High, + f"Returned: {sub_under_test.version}, this does not match" + + "[a-z0-9]{10,}$", + query_timestamps=[sub_under_test.query.request.timestamp], + ) + + def cleanup(self): + self.begin_cleanup() + self._ensure_test_sub_does_not_exist() + self.end_cleanup() diff --git a/monitoring/uss_qualifier/scenarios/astm/netrid/dss_wrapper.py b/monitoring/uss_qualifier/scenarios/astm/netrid/dss_wrapper.py index e49500a326..d18ef2b063 100644 --- a/monitoring/uss_qualifier/scenarios/astm/netrid/dss_wrapper.py +++ b/monitoring/uss_qualifier/scenarios/astm/netrid/dss_wrapper.py @@ -1,8 +1,7 @@ import datetime -import s2sphere - from typing import Optional, List, Set, Dict, Any +import s2sphere from implicitdict import StringBasedDateTime from monitoring.monitorlib import schema_validation @@ -12,6 +11,7 @@ RequestDescription, ResponseDescription, ) +from monitoring.monitorlib.fetch import rid as fetch from monitoring.monitorlib.fetch.rid import ( FetchedSubscription, FetchedSubscriptions, @@ -20,7 +20,6 @@ FetchedISAs, ) from monitoring.monitorlib.mutate import rid as mutate -from monitoring.monitorlib.fetch import rid as fetch from monitoring.monitorlib.mutate.rid import ISAChange, ChangedSubscription from monitoring.monitorlib.rid import RIDVersion from monitoring.uss_qualifier.common_data_definitions import Severity @@ -604,6 +603,38 @@ def cleanup_isa( "DSS query was not successful, but a High Severity issue didn't interrupt execution" ) + def search_subs_expect_response_code( + self, + check: PendingCheck, + expected_codes: Set[int], + area: List[s2sphere.LatLng], + ) -> FetchedSubscriptions: + """Search for subscriptions at the DSS, expecting one of the passed HTTP response codes. + + :return: anything the DSS responded with if the response code was as expected + """ + try: + subs = fetch.subscriptions( + area=area, + rid_version=self._dss.rid_version, + session=self._dss.client, + participant_id=self._dss.participant_id, + ) + + self._handle_query_result( + check=check, + q=subs, + fail_msg=f"Search for subscriptions in area {area} failed to yield a result code in {expected_codes}", + required_status_code=expected_codes, + ) + return subs + + except QueryError as e: + self._handle_query_error(check, e) + raise RuntimeError( + "DSS query was not successful, but a High Severity issue didn't interrupt execution" + ) + def search_subs( self, check: PendingCheck, @@ -634,6 +665,39 @@ def search_subs( "DSS query was not successful, but a High Severity issue didn't interrupt execution" ) + def get_sub_expect_response_code( + self, + check: PendingCheck, + expected_response_codes: Set[int], + sub_id: str, + ) -> FetchedSubscription: + """Get a subscription at the DSS, expecting one the passed HTTP response codes. + + :return: anything the DSS responded with if the response code was as expected + """ + try: + sub = fetch.subscription( + subscription_id=sub_id, + rid_version=self._dss.rid_version, + session=self._dss.client, + participant_id=self._dss.participant_id, + ) + + self._handle_query_result( + check=check, + q=sub, + fail_msg=f"The request to get subscription with ID {sub_id} yielded a response code that wasn't in {expected_response_codes}", + required_status_code=expected_response_codes, + ) + + return sub + + except QueryError as e: + self._handle_query_error(check, e) + raise RuntimeError( + "DSS query was not successful, but a High Severity issue didn't interrupt execution" + ) + def get_sub( self, check: PendingCheck, @@ -720,7 +784,7 @@ def put_sub_expect_response_code( ) -> ChangedSubscription: """Attempt to create or update a subscription at the DSS, and expect the specified HTTP response code. - :return: the DSS response + :return: anything the DSS responded with if the response code was as expected """ try: created_sub = mutate.upsert_subscription( @@ -797,6 +861,42 @@ def put_sub( "DSS query was not successful, but a High Severity issue didn't interrupt execution" ) + def del_sub_expect_response_code( + self, + check: PendingCheck, + expected_response_codes: Set[int], + sub_id: str, + sub_version: str, + ) -> ChangedSubscription: + """Attempts to delete a subscription at the DSS, + and verifies that the response code is part of the expected ones. + + :return: anything the DSS responded with if the response code was as expected + """ + + try: + del_sub = mutate.delete_subscription( + subscription_id=sub_id, + subscription_version=sub_version, + rid_version=self._dss.rid_version, + utm_client=self._dss.client, + participant_id=self._dss.participant_id, + ) + + self._handle_query_result( + check=check, + q=del_sub, + fail_msg=f"Query to delete subscription with ID {sub_id} wit not yield a response code in {expected_response_codes}", + required_status_code=expected_response_codes, + ) + + return del_sub + except QueryError as e: + self._handle_query_error(check, e) + raise RuntimeError( + "DSS query was not successful, but a High Severity issue didn't interrupt execution" + ) + def del_sub( self, check: PendingCheck, diff --git a/monitoring/uss_qualifier/scenarios/astm/netrid/v19/dss/__init__.py b/monitoring/uss_qualifier/scenarios/astm/netrid/v19/dss/__init__.py index 2b5fc635d5..84a31d6bb1 100644 --- a/monitoring/uss_qualifier/scenarios/astm/netrid/v19/dss/__init__.py +++ b/monitoring/uss_qualifier/scenarios/astm/netrid/v19/dss/__init__.py @@ -2,4 +2,5 @@ from .isa_validation import ISAValidation from .isa_expiry import ISAExpiry from .subscription_validation import SubscriptionValidation +from .subscription_simple import SubscriptionSimple from .crdb_access import CRDBAccess diff --git a/monitoring/uss_qualifier/scenarios/astm/netrid/v19/dss/subscription_simple.md b/monitoring/uss_qualifier/scenarios/astm/netrid/v19/dss/subscription_simple.md new file mode 100644 index 0000000000..0941643a94 --- /dev/null +++ b/monitoring/uss_qualifier/scenarios/astm/netrid/v19/dss/subscription_simple.md @@ -0,0 +1,184 @@ +# ASTM NetRID DSS: Subscription Simple test scenario + +## Overview + +Perform basic operations on a single DSS instance to create, update and delete subscriptions. + +## Resources + +### dss + +[`DSSInstanceResource`](../../../../../resources/astm/f3411/dss.py) to be tested in this scenario. + +### id_generator + +[`IDGeneratorResource`](../../../../../resources/interuss/id_generator.py) providing the Subscription IDs for this scenario. + +### isa + +[`ServiceAreaResource`](../../../../../resources/netrid/service_area.py) describing a service area for which to subscribe. + +### problematically_big_area + +[`VerticesResource`](../../../../../resources/vertices.py) describing an area designed to be too big to be accepted by the DSS. + +## Setup test case + +### Ensure clean workspace test step + +This step ensures that no subscription with the known test ID exists in the DSS. + +#### Ensure subscription with test ID does not exist check + +If the DSS cannot be queried for the existing test ID, or if a subscription with that ID exists and it cannot be removed, +the DSS is likely not implementing **[astm.f3411.v19.DSS0030,e](../../../../../requirements/astm/f3411/v19.md)** or **[astm.f3411.v19.DSS0030,d](../../../../../requirements/astm/f3411/v19.md)** properly. + +## Subscription Simple test case + +This test case creates a subscription, goes on to query and search it in different ways, then deletes it and searches for it again. + +### Create subscription validation test step + +This test step creates a subscription and ensures that the subscription the DSS returned in the API call is correct and well-formed. + +#### Create subscription check + +As per **[astm.f3411.v19.DSS0030,c](../../../../../requirements/astm/f3411/v19.md)**, the DSS API must allow callers to create a valid subscription. + +#### Returned subscription ID is correct check + +If the returned subscription ID does not correspond to the one specified in the creation parameters, +**[interuss.f3411.dss_endpoints.PutSubscription](../../../../../requirements/interuss/f3411/dss_endpoints.md)** is not respected. + +#### Returned notification index is 0 check + +The notification index of a newly created subscription must be 0, otherwise the DSS is in violation of **[interuss.f3411.dss_endpoints.PutSubscription](../../../../../requirements/interuss/f3411/dss_endpoints.md)**. + +#### Returned ISA URL has correct base URL check + +The returned ISA URL must be prefixed with the USS base URL that was provided at subscription creation, otherwise the DSS is in violation of **[interuss.f3411.dss_endpoints.PutSubscription](../../../../../requirements/interuss/f3411/dss_endpoints.md)**. + +#### Returned start time is correct check + +The returned start time must be the same as the provided one, otherwise the DSS is in violation of **[interuss.f3411.dss_endpoints.PutSubscription](../../../../../requirements/interuss/f3411/dss_endpoints.md)**. + +#### Returned end time is correct check + +The returned end time must be the same as the provided one, otherwise the DSS is in violation of **[interuss.f3411.dss_endpoints.PutSubscription](../../../../../requirements/interuss/f3411/dss_endpoints.md)**. + +#### Generated subscription version has proper format check + +The subscription version generated by the DSS must be a lower-case alphanumeric string of 10 characters or more, otherwise the DSS is in violation of **[interuss.f3411.dss_endpoints.PutSubscription](../../../../../requirements/interuss/f3411/dss_endpoints.md)**. + +### Query Existing Subscription test step + +Query and search for the created subscription in various ways + +#### Get Subscription by ID check + +If the freshly created subscription cannot be queried using its ID, the DSS is failing to meet **[astm.f3411.v19.DSS0030,e](../../../../../requirements/astm/f3411/v19.md)**. + +#### Search for all subscriptions in ISA area check + +If the DSS fails to let us search in the area for which the subscription was just created, it is failing to meet **[astm.f3411.v19.DSS0030,f](../../../../../requirements/astm/f3411/v19.md)**. + +#### Created Subscription is in search results check + +If the created subscription is not returned in a search that covers the area it was created for, the DSS is not properly implementing **[interuss.f3411.dss_endpoints.SearchSubscriptions](../../../../../requirements/interuss/f3411/dss_endpoints.md)**. + +#### No huge search area allowed check + +In accordance with **[interuss.f3411.dss_endpoints.SearchSubscriptions](../../../../../requirements/interuss/f3411/dss_endpoints.md)**, the DSS should not allow searches for areas that are too big. + +#### Returned subscription ID is correct check + +If the returned subscription ID does not correspond to the one specified in the creation parameters, +**[interuss.f3411.dss_endpoints.PutSubscription](../../../../../requirements/interuss/f3411/dss_endpoints.md)** is not respected. + +#### Returned notification index is equal to or greater than 0 check + +If the notification index of the subscription is less than 0, the DSS fails to properly implement **[interuss.f3411.dss_endpoints.GetSubscription](../../../../../requirements/interuss/f3411/dss_endpoints.md)**. + +#### Returned ISA URL has correct base URL check + +The returned ISA URL must be prefixed with the USS base URL that was provided at subscription creation, otherwise the DSS is in violation of **[interuss.f3411.dss_endpoints.PutSubscription](../../../../../requirements/interuss/f3411/dss_endpoints.md)**. + +#### Returned start time is correct check + +The returned start time must be the same as the provided one, otherwise the DSS is in violation of **[interuss.f3411.dss_endpoints.PutSubscription](../../../../../requirements/interuss/f3411/dss_endpoints.md)**. + +#### Returned end time is correct check + +The returned end time must be the same as the provided one, otherwise the DSS is in violation of **[interuss.f3411.dss_endpoints.PutSubscription](../../../../../requirements/interuss/f3411/dss_endpoints.md)**. + +#### Generated subscription version has proper format check + +The subscription version generated by the DSS must be a lower-case alphanumeric string of 10 characters or more, otherwise the DSS is in violation of **[interuss.f3411.dss_endpoints.PutSubscription](../../../../../requirements/interuss/f3411/dss_endpoints.md)**. + +### Delete Subscription test step + +Attempt to delete the subscription in various ways and ensure that the DSS reacts properly. + +This also checks that the subscription data returned by a successful deletion is correct. + +#### Missing version prevents deletion check + +An attempt to delete a subscription without providing a version should fail, otherwise the DSS is in violation of **[interuss.f3411.dss_endpoints.DeleteSubscription](../../../../../requirements/interuss/f3411/dss_endpoints.md)**. + +#### Incorrect version prevents deletion check + +An attempt to delete a subscription while providing an incorrect version should fail, otherwise the DSS is in violation of **[interuss.f3411.dss_endpoints.DeleteSubscription](../../../../../requirements/interuss/f3411/dss_endpoints.md)**. + +#### Subscription can be deleted check + +An attempt to delete a subscription when the correct version is provided should succeed, otherwise the DSS is in violation of **[interuss.f3411.dss_endpoints.DeleteSubscription](../../../../../requirements/interuss/f3411/dss_endpoints.md)**. + +#### Returned subscription ID is correct check + +If the returned subscription ID does not correspond to the one specified in the deletion request, +**[interuss.f3411.dss_endpoints.PutSubscription](../../../../../requirements/interuss/f3411/dss_endpoints.md)** is not respected. + +#### Returned notification index is equal to or greater than 0 check + +If the notification index of the subscription is less than 0, the DSS fails to properly implement **[interuss.f3411.dss_endpoints.GetSubscription](../../../../../requirements/interuss/f3411/dss_endpoints.md)**. + +#### Returned ISA URL has correct base URL check + +The returned ISA URL must be prefixed with the USS base URL that was provided at subscription creation, otherwise the DSS is in violation of **[interuss.f3411.dss_endpoints.PutSubscription](../../../../../requirements/interuss/f3411/dss_endpoints.md)**. + +#### Returned start time is correct check + +The returned start time must be the same as the provided one, otherwise the DSS is in violation of **[interuss.f3411.dss_endpoints.PutSubscription](../../../../../requirements/interuss/f3411/dss_endpoints.md)**. + +#### Returned end time is correct check + +The returned end time must be the same as the provided one, otherwise the DSS is in violation of **[interuss.f3411.dss_endpoints.PutSubscription](../../../../../requirements/interuss/f3411/dss_endpoints.md)**. + +#### Generated subscription version has proper format check + +The subscription version generated by the DSS must be a lower-case alphanumeric string of 10 characters or more, otherwise the DSS is in violation of **[interuss.f3411.dss_endpoints.PutSubscription](../../../../../requirements/interuss/f3411/dss_endpoints.md)**. + +### Query Deleted Subscription test step + +Attempt to query and search for the deleted subscription in various ways + +#### Query by subscription ID should fail check + +If the DSS provides a successful reply to a direct query for the deleted subscription, it is in violation of **[astm.f3411.v19.DSS0030,e](../../../../../requirements/astm/f3411/v19.md)**. + +#### Search for all subscriptions in ISA area check + +If the DSS fails to let us search in the area for which the subscription was just created, it is failing to meet **[astm.f3411.v19.DSS0030,f](../../../../../requirements/astm/f3411/v19.md)**. + +#### Deleted subscription should not be present in search results check + +If the DSS returns the deleted subscription in a search that covers the area it was originally created for, the DSS is not properly implementing **[interuss.f3411.dss_endpoints.SearchSubscriptions](../../../../../requirements/interuss/f3411/dss_endpoints.md)**. + +## Cleanup + +The cleanup phase of this test scenario removes the subscription with the known test ID if it has not been removed before. + +#### Ensure subscription with test ID does not exist check + +If the DSS cannot be queried for the existing test ID, or if a subscription with that ID exists and it cannot be removed, +the DSS is likely not implementing **[astm.f3411.v19.DSS0030,e](../../../../../requirements/astm/f3411/v19.md)** or **[astm.f3411.v19.DSS0030,d](../../../../../requirements/astm/f3411/v19.md)** properly. diff --git a/monitoring/uss_qualifier/scenarios/astm/netrid/v19/dss/subscription_simple.py b/monitoring/uss_qualifier/scenarios/astm/netrid/v19/dss/subscription_simple.py new file mode 100644 index 0000000000..25f95e1d88 --- /dev/null +++ b/monitoring/uss_qualifier/scenarios/astm/netrid/v19/dss/subscription_simple.py @@ -0,0 +1,8 @@ +from monitoring.uss_qualifier.scenarios.astm.netrid.common.dss.subscription_simple import ( + SubscriptionSimple as CommonSubscriptionSimple, +) +from monitoring.uss_qualifier.scenarios.scenario import TestScenario + + +class SubscriptionSimple(TestScenario, CommonSubscriptionSimple): + pass diff --git a/monitoring/uss_qualifier/scenarios/astm/netrid/v19/dss/subscription_validation.md b/monitoring/uss_qualifier/scenarios/astm/netrid/v19/dss/subscription_validation.md index 7b987cc193..e7b6cbcc0b 100644 --- a/monitoring/uss_qualifier/scenarios/astm/netrid/v19/dss/subscription_validation.md +++ b/monitoring/uss_qualifier/scenarios/astm/netrid/v19/dss/subscription_validation.md @@ -28,7 +28,7 @@ This step ensures that we remove any subscription that may already exist for the If the query for subscriptions fails, **[astm.f3411.v19.DSS0030,f](../../../../../requirements/astm/f3411/v19.md)** was not met. -#### Successful subscription deletion +#### Successful subscription deletion check If the deletion attempt fails, **[astm.f3411.v19.DSS0030,d](../../../../../requirements/astm/f3411/v19.md)** was not met. @@ -105,6 +105,6 @@ The cleanup phase of this test scenario will remove any subscription that may ha If the query for subscriptions fails, the "GET Subscriptions" portion of **[astm.f3411.v19.DSS0030,f](../../../../../requirements/astm/f3411/v19.md)** was not met. -### Successful subscription deletion +### Successful subscription deletion check If the deletion attempt fails, the "DELETE Subscription" portion of **[astm.f3411.v19.DSS0030,d](../../../../../requirements/astm/f3411/v19.md)** was not met. diff --git a/monitoring/uss_qualifier/scenarios/astm/netrid/v22a/dss/__init__.py b/monitoring/uss_qualifier/scenarios/astm/netrid/v22a/dss/__init__.py index 2b5fc635d5..84a31d6bb1 100644 --- a/monitoring/uss_qualifier/scenarios/astm/netrid/v22a/dss/__init__.py +++ b/monitoring/uss_qualifier/scenarios/astm/netrid/v22a/dss/__init__.py @@ -2,4 +2,5 @@ from .isa_validation import ISAValidation from .isa_expiry import ISAExpiry from .subscription_validation import SubscriptionValidation +from .subscription_simple import SubscriptionSimple from .crdb_access import CRDBAccess diff --git a/monitoring/uss_qualifier/scenarios/astm/netrid/v22a/dss/subscription_simple.md b/monitoring/uss_qualifier/scenarios/astm/netrid/v22a/dss/subscription_simple.md new file mode 100644 index 0000000000..1d1db4a453 --- /dev/null +++ b/monitoring/uss_qualifier/scenarios/astm/netrid/v22a/dss/subscription_simple.md @@ -0,0 +1,184 @@ +# ASTM NetRID DSS: Subscription Simple test scenario + +## Overview + +Perform basic operations on a single DSS instance to create, update and delete subscriptions. + +## Resources + +### dss + +[`DSSInstanceResource`](../../../../../resources/astm/f3411/dss.py) to be tested in this scenario. + +### id_generator + +[`IDGeneratorResource`](../../../../../resources/interuss/id_generator.py) providing the Subscription IDs for this scenario. + +### isa + +[`ServiceAreaResource`](../../../../../resources/netrid/service_area.py) describing a service area for which to subscribe. + +### problematically_big_area + +[`VerticesResource`](../../../../../resources/vertices.py) describing an area designed to be too big to be accepted by the DSS. + +## Setup test case + +### Ensure clean workspace test step + +This step ensures that no subscription with the known test ID exists in the DSS. + +#### Ensure subscription with test ID does not exist check + +If the DSS cannot be queried for the existing test ID, or if a subscription with that ID exists and it cannot be removed, +the DSS is likely not implementing **[astm.f3411.v22a.DSS0030,e](../../../../../requirements/astm/f3411/v22a.md)** or **[astm.f3411.v22a.DSS0030,d](../../../../../requirements/astm/f3411/v22a.md)** properly. + +## Subscription Simple test case + +This test case creates a subscription, goes on to query and search it in different ways, then deletes it and searches for it again. + +### Create subscription validation test step + +This test step creates a subscription and ensures that the subscription the DSS returned in the API call is correct and well-formed. + +#### Create subscription check + +As per **[astm.f3411.v22a.DSS0030,c](../../../../../requirements/astm/f3411/v22a.md)**, the DSS API must allow callers to create a valid subscription. + +#### Returned subscription ID is correct check + +If the returned subscription ID does not correspond to the one specified in the creation parameters, +**[interuss.f3411.dss_endpoints.PutSubscription](../../../../../requirements/interuss/f3411/dss_endpoints.md)** is not respected. + +#### Returned notification index is 0 check + +The notification index of a newly created subscription must be 0, otherwise the DSS is in violation of **[interuss.f3411.dss_endpoints.PutSubscription](../../../../../requirements/interuss/f3411/dss_endpoints.md)**. + +#### Returned ISA URL has correct base URL check + +The returned ISA URL must be prefixed with the USS base URL that was provided at subscription creation, otherwise the DSS is in violation of **[interuss.f3411.dss_endpoints.PutSubscription](../../../../../requirements/interuss/f3411/dss_endpoints.md)**. + +#### Returned start time is correct check + +The returned start time must be the same as the provided one, otherwise the DSS is in violation of **[interuss.f3411.dss_endpoints.PutSubscription](../../../../../requirements/interuss/f3411/dss_endpoints.md)**. + +#### Returned end time is correct check + +The returned end time must be the same as the provided one, otherwise the DSS is in violation of **[interuss.f3411.dss_endpoints.PutSubscription](../../../../../requirements/interuss/f3411/dss_endpoints.md)**. + +#### Generated subscription version has proper format check + +The subscription version generated by the DSS must be a lower-case alphanumeric string of 10 characters or more, otherwise the DSS is in violation of **[interuss.f3411.dss_endpoints.PutSubscription](../../../../../requirements/interuss/f3411/dss_endpoints.md)**. + +### Query Existing Subscription test step + +Query and search for the created subscription in various ways + +#### Get Subscription by ID check + +If the freshly created subscription cannot be queried using its ID, the DSS is failing to meet **[astm.f3411.v22a.DSS0030,e](../../../../../requirements/astm/f3411/v22a.md)**. + +#### Search for all subscriptions in ISA area check + +If the DSS fails to let us search in the area for which the subscription was just created, it is failing to meet **[astm.f3411.v22a.DSS0030,f](../../../../../requirements/astm/f3411/v22a.md)**. + +#### Created Subscription is in search results check + +If the created subscription is not returned in a search that covers the area it was created for, the DSS is not properly implementing **[interuss.f3411.dss_endpoints.SearchSubscriptions](../../../../../requirements/interuss/f3411/dss_endpoints.md)**. + +#### No huge search area allowed check + +In accordance with **[interuss.f3411.dss_endpoints.SearchSubscriptions](../../../../../requirements/interuss/f3411/dss_endpoints.md)**, the DSS should not allow searches for areas that are too big. + +#### Returned subscription ID is correct check + +If the returned subscription ID does not correspond to the one specified in the creation parameters, +**[interuss.f3411.dss_endpoints.PutSubscription](../../../../../requirements/interuss/f3411/dss_endpoints.md)** is not respected. + +#### Returned notification index is equal to or greater than 0 check + +If the notification index of the subscription is less than 0, the DSS fails to properly implement **[interuss.f3411.dss_endpoints.GetSubscription](../../../../../requirements/interuss/f3411/dss_endpoints.md)**. + +#### Returned ISA URL has correct base URL check + +The returned ISA URL must be prefixed with the USS base URL that was provided at subscription creation, otherwise the DSS is in violation of **[interuss.f3411.dss_endpoints.PutSubscription](../../../../../requirements/interuss/f3411/dss_endpoints.md)**. + +#### Returned start time is correct check + +The returned start time must be the same as the provided one, otherwise the DSS is in violation of **[interuss.f3411.dss_endpoints.PutSubscription](../../../../../requirements/interuss/f3411/dss_endpoints.md)**. + +#### Returned end time is correct check + +The returned end time must be the same as the provided one, otherwise the DSS is in violation of **[interuss.f3411.dss_endpoints.PutSubscription](../../../../../requirements/interuss/f3411/dss_endpoints.md)**. + +#### Generated subscription version has proper format check + +The subscription version generated by the DSS must be a lower-case alphanumeric string of 10 characters or more, otherwise the DSS is in violation of **[interuss.f3411.dss_endpoints.PutSubscription](../../../../../requirements/interuss/f3411/dss_endpoints.md)**. + +### Delete Subscription test step + +Attempt to delete the subscription in various ways and ensure that the DSS reacts properly. + +This also checks that the subscription data returned by a successful deletion is correct. + +#### Missing version prevents deletion check + +An attempt to delete a subscription without providing a version should fail, otherwise the DSS is in violation of **[interuss.f3411.dss_endpoints.DeleteSubscription](../../../../../requirements/interuss/f3411/dss_endpoints.md)**. + +#### Incorrect version prevents deletion check + +An attempt to delete a subscription while providing an incorrect version should fail, otherwise the DSS is in violation of **[interuss.f3411.dss_endpoints.DeleteSubscription](../../../../../requirements/interuss/f3411/dss_endpoints.md)**. + +#### Subscription can be deleted check + +An attempt to delete a subscription when the correct version is provided should succeed, otherwise the DSS is in violation of **[interuss.f3411.dss_endpoints.DeleteSubscription](../../../../../requirements/interuss/f3411/dss_endpoints.md)**. + +#### Returned subscription ID is correct check + +If the returned subscription ID does not correspond to the one specified in the deletion request, +**[interuss.f3411.dss_endpoints.PutSubscription](../../../../../requirements/interuss/f3411/dss_endpoints.md)** is not respected. + +#### Returned notification index is equal to or greater than 0 check + +If the notification index of the subscription is less than 0, the DSS fails to properly implement **[interuss.f3411.dss_endpoints.GetSubscription](../../../../../requirements/interuss/f3411/dss_endpoints.md)**. + +#### Returned ISA URL has correct base URL check + +The returned ISA URL must be prefixed with the USS base URL that was provided at subscription creation, otherwise the DSS is in violation of **[interuss.f3411.dss_endpoints.PutSubscription](../../../../../requirements/interuss/f3411/dss_endpoints.md)**. + +#### Returned start time is correct check + +The returned start time must be the same as the provided one, otherwise the DSS is in violation of **[interuss.f3411.dss_endpoints.PutSubscription](../../../../../requirements/interuss/f3411/dss_endpoints.md)**. + +#### Returned end time is correct check + +The returned end time must be the same as the provided one, otherwise the DSS is in violation of **[interuss.f3411.dss_endpoints.PutSubscription](../../../../../requirements/interuss/f3411/dss_endpoints.md)**. + +#### Generated subscription version has proper format check + +The subscription version generated by the DSS must be a lower-case alphanumeric string of 10 characters or more, otherwise the DSS is in violation of **[interuss.f3411.dss_endpoints.PutSubscription](../../../../../requirements/interuss/f3411/dss_endpoints.md)**. + +### Query Deleted Subscription test step + +Attempt to query and search for the deleted subscription in various ways + +#### Query by subscription ID should fail check + +If the DSS provides a successful reply to a direct query for the deleted subscription, it is in violation of **[astm.f3411.v22a.DSS0030,e](../../../../../requirements/astm/f3411/v22a.md)**. + +#### Search for all subscriptions in ISA area check + +If the DSS fails to let us search in the area for which the subscription was just created, it is failing to meet **[astm.f3411.v22a.DSS0030,f](../../../../../requirements/astm/f3411/v22a.md)**. + +#### Deleted subscription should not be present in search results check + +If the DSS returns the deleted subscription in a search that covers the area it was originally created for, the DSS is not properly implementing **[interuss.f3411.dss_endpoints.SearchSubscriptions](../../../../../requirements/interuss/f3411/dss_endpoints.md)**. + +## Cleanup + +The cleanup phase of this test scenario removes the subscription with the known test ID if it has not been removed before. + +#### Ensure subscription with test ID does not exist check + +If the DSS cannot be queried for the existing test ID, or if a subscription with that ID exists and it cannot be removed, +the DSS is likely not implementing **[astm.f3411.v22a.DSS0030,e](../../../../../requirements/astm/f3411/v22a.md)** or **[astm.f3411.v22a.DSS0030,d](../../../../../requirements/astm/f3411/v22a.md)** properly. diff --git a/monitoring/uss_qualifier/scenarios/astm/netrid/v22a/dss/subscription_simple.py b/monitoring/uss_qualifier/scenarios/astm/netrid/v22a/dss/subscription_simple.py new file mode 100644 index 0000000000..25f95e1d88 --- /dev/null +++ b/monitoring/uss_qualifier/scenarios/astm/netrid/v22a/dss/subscription_simple.py @@ -0,0 +1,8 @@ +from monitoring.uss_qualifier.scenarios.astm.netrid.common.dss.subscription_simple import ( + SubscriptionSimple as CommonSubscriptionSimple, +) +from monitoring.uss_qualifier.scenarios.scenario import TestScenario + + +class SubscriptionSimple(TestScenario, CommonSubscriptionSimple): + pass diff --git a/monitoring/uss_qualifier/scenarios/astm/netrid/v22a/dss/subscription_validation.md b/monitoring/uss_qualifier/scenarios/astm/netrid/v22a/dss/subscription_validation.md index d92aa31975..7df8283fdd 100644 --- a/monitoring/uss_qualifier/scenarios/astm/netrid/v22a/dss/subscription_validation.md +++ b/monitoring/uss_qualifier/scenarios/astm/netrid/v22a/dss/subscription_validation.md @@ -28,7 +28,7 @@ This step ensures that we remove any subscription that may already exist for the If the query for subscriptions fails, **[astm.f3411.v22a.DSS0030,f](../../../../../requirements/astm/f3411/v22a.md)** was not met. -#### Successful subscription deletion +#### Successful subscription deletion check If the deletion attempt fails, **[astm.f3411.v22a.DSS0030,d](../../../../../requirements/astm/f3411/v22a.md)** was not met. @@ -105,6 +105,6 @@ The cleanup phase of this test scenario will remove any subscription that may ha If the query for subscriptions fails, the "GET Subscriptions" portion of **[astm.f3411.v22a.DSS0030,f](../../../../../requirements/astm/f3411/v22a.md)** was not met. -### Successful subscription deletion +### Successful subscription deletion check If the deletion attempt fails, the "DELETE Subscription" portion of **[astm.f3411.v22a.DSS0030,d](../../../../../requirements/astm/f3411/v22a.md)** was not met. diff --git a/monitoring/uss_qualifier/suites/astm/netrid/f3411_19.md b/monitoring/uss_qualifier/suites/astm/netrid/f3411_19.md index 5866e3105c..beb037f58a 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
DSS0030,a Implemented ASTM F3411-19 NetRID DSS interoperability
ASTM NetRID DSS: ISA Expiry
ASTM NetRID DSS: Simple ISA @@ -34,17 +34,22 @@ DSS0030,c Implemented - ASTM NetRID DSS: Subscription Validation + ASTM NetRID DSS: Subscription Simple
ASTM NetRID DSS: Subscription Validation DSS0030,d Implemented - ASTM NetRID DSS: Subscription Validation + ASTM NetRID DSS: Subscription Simple
ASTM NetRID DSS: Subscription Validation + + + DSS0030,e + Implemented + ASTM NetRID DSS: Subscription Simple DSS0030,f Implemented - ASTM NetRID DSS: Subscription Validation + ASTM NetRID DSS: Subscription Simple
ASTM NetRID DSS: Subscription Validation DSS0050 @@ -359,14 +364,34 @@ ASTM NetRID nominal behavior - interuss
.f3411
.dss_endpoints
+ interuss
.f3411
.dss_endpoints
+ DeleteSubscription + Implemented + ASTM NetRID DSS: Subscription Simple + + GetISA Implemented ASTM NetRID DSS: ISA Expiry
ASTM NetRID DSS: Simple ISA
ASTM NetRID DSS: Submitted ISA Validations + + GetSubscription + Implemented + ASTM NetRID DSS: Subscription Simple + + + PutSubscription + Implemented + ASTM NetRID DSS: Subscription Simple + SearchISAs Implemented ASTM NetRID DSS: ISA Expiry
ASTM NetRID DSS: Simple ISA
ASTM NetRID nominal behavior + + SearchSubscriptions + Implemented + ASTM NetRID DSS: Subscription Simple + diff --git a/monitoring/uss_qualifier/suites/astm/netrid/f3411_19/dss_probing.md b/monitoring/uss_qualifier/suites/astm/netrid/f3411_19/dss_probing.md index d834ea7d80..e3a07c1353 100644 --- a/monitoring/uss_qualifier/suites/astm/netrid/f3411_19/dss_probing.md +++ b/monitoring/uss_qualifier/suites/astm/netrid/f3411_19/dss_probing.md @@ -8,8 +8,9 @@ 2. Scenario: [ASTM NetRID DSS: Submitted ISA Validations](../../../../scenarios/astm/netrid/v19/dss/isa_validation.md) ([`scenarios.astm.netrid.v19.dss.ISAValidation`](../../../../scenarios/astm/netrid/v19/dss/isa_validation.py)) 3. Scenario: [ASTM NetRID DSS: ISA Expiry](../../../../scenarios/astm/netrid/v19/dss/isa_expiry.md) ([`scenarios.astm.netrid.v19.dss.ISAExpiry`](../../../../scenarios/astm/netrid/v19/dss/isa_expiry.py)) 4. Scenario: [ASTM NetRID DSS: Subscription Validation](../../../../scenarios/astm/netrid/v19/dss/subscription_validation.md) ([`scenarios.astm.netrid.v19.dss.SubscriptionValidation`](../../../../scenarios/astm/netrid/v19/dss/subscription_validation.py)) -5. Scenario: [ASTM F3411-19 NetRID DSS interoperability](../../../../scenarios/astm/netrid/v19/dss_interoperability.md) ([`scenarios.astm.netrid.v19.DSSInteroperability`](../../../../scenarios/astm/netrid/v19/dss_interoperability.py)) -6. Scenario: [ASTM NetRID DSS: Direct CRDB access](../../../../scenarios/astm/netrid/v19/dss/crdb_access.md) ([`scenarios.astm.netrid.v19.dss.CRDBAccess`](../../../../scenarios/astm/netrid/v19/dss/crdb_access.py)) +5. Scenario: [ASTM NetRID DSS: Subscription Simple](../../../../scenarios/astm/netrid/v19/dss/subscription_simple.md) ([`scenarios.astm.netrid.v19.dss.SubscriptionSimple`](../../../../scenarios/astm/netrid/v19/dss/subscription_simple.py)) +6. Scenario: [ASTM F3411-19 NetRID DSS interoperability](../../../../scenarios/astm/netrid/v19/dss_interoperability.md) ([`scenarios.astm.netrid.v19.DSSInteroperability`](../../../../scenarios/astm/netrid/v19/dss_interoperability.py)) +7. Scenario: [ASTM NetRID DSS: Direct CRDB access](../../../../scenarios/astm/netrid/v19/dss/crdb_access.md) ([`scenarios.astm.netrid.v19.dss.CRDBAccess`](../../../../scenarios/astm/netrid/v19/dss/crdb_access.py)) ## [Checked requirements](../../../README.md#checked-requirements) @@ -21,7 +22,7 @@ Checked in - astm
.f3411
.v19
+ astm
.f3411
.v19
DSS0030,a Implemented ASTM F3411-19 NetRID DSS interoperability
ASTM NetRID DSS: ISA Expiry
ASTM NetRID DSS: Simple ISA @@ -34,17 +35,22 @@ DSS0030,c Implemented - ASTM NetRID DSS: Subscription Validation + ASTM NetRID DSS: Subscription Simple
ASTM NetRID DSS: Subscription Validation DSS0030,d Implemented - ASTM NetRID DSS: Subscription Validation + ASTM NetRID DSS: Subscription Simple
ASTM NetRID DSS: Subscription Validation + + + DSS0030,e + Implemented + ASTM NetRID DSS: Subscription Simple DSS0030,f Implemented - ASTM NetRID DSS: Subscription Validation + ASTM NetRID DSS: Subscription Simple
ASTM NetRID DSS: Subscription Validation DSS0050 @@ -202,14 +208,34 @@ ASTM NetRID DSS: ISA Expiry
ASTM NetRID DSS: Simple ISA
ASTM NetRID DSS: Submitted ISA Validations - interuss
.f3411
.dss_endpoints
+ interuss
.f3411
.dss_endpoints
+ DeleteSubscription + Implemented + ASTM NetRID DSS: Subscription Simple + + GetISA Implemented ASTM NetRID DSS: ISA Expiry
ASTM NetRID DSS: Simple ISA
ASTM NetRID DSS: Submitted ISA Validations + + GetSubscription + Implemented + ASTM NetRID DSS: Subscription Simple + + + PutSubscription + Implemented + ASTM NetRID DSS: Subscription Simple + SearchISAs Implemented ASTM NetRID DSS: ISA Expiry
ASTM NetRID DSS: Simple ISA + + SearchSubscriptions + Implemented + ASTM NetRID DSS: Subscription Simple + diff --git a/monitoring/uss_qualifier/suites/astm/netrid/f3411_19/dss_probing.yaml b/monitoring/uss_qualifier/suites/astm/netrid/f3411_19/dss_probing.yaml index d8a6128878..140beea219 100644 --- a/monitoring/uss_qualifier/suites/astm/netrid/f3411_19/dss_probing.yaml +++ b/monitoring/uss_qualifier/suites/astm/netrid/f3411_19/dss_probing.yaml @@ -32,6 +32,13 @@ actions: dss: dss id_generator: id_generator isa: isa + - test_scenario: + scenario_type: scenarios.astm.netrid.v19.dss.SubscriptionSimple + resources: + dss: dss + id_generator: id_generator + isa: isa + problematically_big_area: problematically_big_area - test_scenario: scenario_type: scenarios.astm.netrid.v19.DSSInteroperability resources: diff --git a/monitoring/uss_qualifier/suites/astm/netrid/f3411_22a.md b/monitoring/uss_qualifier/suites/astm/netrid/f3411_22a.md index 4180056274..9ff18bf3c2 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
DSS0030 Implemented ASTM NetRID DSS: ISA Expiry @@ -39,17 +39,22 @@ DSS0030,c Implemented - ASTM NetRID DSS: Subscription Validation + ASTM NetRID DSS: Subscription Simple
ASTM NetRID DSS: Subscription Validation DSS0030,d Implemented - ASTM NetRID DSS: Subscription Validation + ASTM NetRID DSS: Subscription Simple
ASTM NetRID DSS: Subscription Validation + + + DSS0030,e + Implemented + ASTM NetRID DSS: Subscription Simple DSS0030,f Implemented - ASTM NetRID DSS: Subscription Validation + ASTM NetRID DSS: Subscription Simple
ASTM NetRID DSS: Subscription Validation DSS0050 @@ -484,14 +489,34 @@ ASTM NetRID nominal behavior - interuss
.f3411
.dss_endpoints
+ interuss
.f3411
.dss_endpoints
+ DeleteSubscription + Implemented + ASTM NetRID DSS: Subscription Simple + + GetISA Implemented ASTM NetRID DSS: ISA Expiry
ASTM NetRID DSS: Simple ISA
ASTM NetRID DSS: Submitted ISA Validations + + GetSubscription + Implemented + ASTM NetRID DSS: Subscription Simple + + + PutSubscription + Implemented + ASTM NetRID DSS: Subscription Simple + SearchISAs Implemented ASTM NetRID DSS: ISA Expiry
ASTM NetRID DSS: Simple ISA
ASTM NetRID nominal behavior + + SearchSubscriptions + Implemented + ASTM NetRID DSS: Subscription Simple + diff --git a/monitoring/uss_qualifier/suites/astm/netrid/f3411_22a/dss_probing.md b/monitoring/uss_qualifier/suites/astm/netrid/f3411_22a/dss_probing.md index 375ff330c9..109c579e4c 100644 --- a/monitoring/uss_qualifier/suites/astm/netrid/f3411_22a/dss_probing.md +++ b/monitoring/uss_qualifier/suites/astm/netrid/f3411_22a/dss_probing.md @@ -8,8 +8,9 @@ 2. Scenario: [ASTM NetRID DSS: Submitted ISA Validations](../../../../scenarios/astm/netrid/v22a/dss/isa_validation.md) ([`scenarios.astm.netrid.v22a.dss.ISAValidation`](../../../../scenarios/astm/netrid/v22a/dss/isa_validation.py)) 3. Scenario: [ASTM NetRID DSS: ISA Expiry](../../../../scenarios/astm/netrid/v22a/dss/isa_expiry.md) ([`scenarios.astm.netrid.v22a.dss.ISAExpiry`](../../../../scenarios/astm/netrid/v22a/dss/isa_expiry.py)) 4. Scenario: [ASTM NetRID DSS: Subscription Validation](../../../../scenarios/astm/netrid/v22a/dss/subscription_validation.md) ([`scenarios.astm.netrid.v22a.dss.SubscriptionValidation`](../../../../scenarios/astm/netrid/v22a/dss/subscription_validation.py)) -5. Scenario: [ASTM F3411-22a NetRID DSS interoperability](../../../../scenarios/astm/netrid/v22a/dss_interoperability.md) ([`scenarios.astm.netrid.v22a.DSSInteroperability`](../../../../scenarios/astm/netrid/v22a/dss_interoperability.py)) -6. Scenario: [ASTM NetRID DSS: Direct CRDB access](../../../../scenarios/astm/netrid/v22a/dss/crdb_access.md) ([`scenarios.astm.netrid.v22a.dss.CRDBAccess`](../../../../scenarios/astm/netrid/v22a/dss/crdb_access.py)) +5. Scenario: [ASTM NetRID DSS: Subscription Simple](../../../../scenarios/astm/netrid/v22a/dss/subscription_simple.md) ([`scenarios.astm.netrid.v22a.dss.SubscriptionSimple`](../../../../scenarios/astm/netrid/v22a/dss/subscription_simple.py)) +6. Scenario: [ASTM F3411-22a NetRID DSS interoperability](../../../../scenarios/astm/netrid/v22a/dss_interoperability.md) ([`scenarios.astm.netrid.v22a.DSSInteroperability`](../../../../scenarios/astm/netrid/v22a/dss_interoperability.py)) +7. Scenario: [ASTM NetRID DSS: Direct CRDB access](../../../../scenarios/astm/netrid/v22a/dss/crdb_access.md) ([`scenarios.astm.netrid.v22a.dss.CRDBAccess`](../../../../scenarios/astm/netrid/v22a/dss/crdb_access.py)) ## [Checked requirements](../../../README.md#checked-requirements) @@ -21,7 +22,7 @@ Checked in - astm
.f3411
.v22a
+ astm
.f3411
.v22a
DSS0030 Implemented ASTM NetRID DSS: ISA Expiry @@ -39,17 +40,22 @@ DSS0030,c Implemented - ASTM NetRID DSS: Subscription Validation + ASTM NetRID DSS: Subscription Simple
ASTM NetRID DSS: Subscription Validation DSS0030,d Implemented - ASTM NetRID DSS: Subscription Validation + ASTM NetRID DSS: Subscription Simple
ASTM NetRID DSS: Subscription Validation + + + DSS0030,e + Implemented + ASTM NetRID DSS: Subscription Simple DSS0030,f Implemented - ASTM NetRID DSS: Subscription Validation + ASTM NetRID DSS: Subscription Simple
ASTM NetRID DSS: Subscription Validation DSS0050 @@ -212,14 +218,34 @@ ASTM NetRID DSS: ISA Expiry
ASTM NetRID DSS: Simple ISA
ASTM NetRID DSS: Submitted ISA Validations - interuss
.f3411
.dss_endpoints
+ interuss
.f3411
.dss_endpoints
+ DeleteSubscription + Implemented + ASTM NetRID DSS: Subscription Simple + + GetISA Implemented ASTM NetRID DSS: ISA Expiry
ASTM NetRID DSS: Simple ISA
ASTM NetRID DSS: Submitted ISA Validations + + GetSubscription + Implemented + ASTM NetRID DSS: Subscription Simple + + + PutSubscription + Implemented + ASTM NetRID DSS: Subscription Simple + SearchISAs Implemented ASTM NetRID DSS: ISA Expiry
ASTM NetRID DSS: Simple ISA + + SearchSubscriptions + Implemented + ASTM NetRID DSS: Subscription Simple + diff --git a/monitoring/uss_qualifier/suites/astm/netrid/f3411_22a/dss_probing.yaml b/monitoring/uss_qualifier/suites/astm/netrid/f3411_22a/dss_probing.yaml index d71c1f72dc..3652c0a89e 100644 --- a/monitoring/uss_qualifier/suites/astm/netrid/f3411_22a/dss_probing.yaml +++ b/monitoring/uss_qualifier/suites/astm/netrid/f3411_22a/dss_probing.yaml @@ -32,6 +32,13 @@ actions: dss: dss id_generator: id_generator isa: isa + - test_scenario: + scenario_type: scenarios.astm.netrid.v22a.dss.SubscriptionSimple + resources: + dss: dss + id_generator: id_generator + isa: isa + problematically_big_area: problematically_big_area - test_scenario: scenario_type: scenarios.astm.netrid.v22a.DSSInteroperability resources: diff --git a/monitoring/uss_qualifier/suites/interuss/dss/all_tests.md b/monitoring/uss_qualifier/suites/interuss/dss/all_tests.md index 9f2ca89d2f..86e0b068bf 100644 --- a/monitoring/uss_qualifier/suites/interuss/dss/all_tests.md +++ b/monitoring/uss_qualifier/suites/interuss/dss/all_tests.md @@ -19,7 +19,7 @@ Checked in - astm
.f3411
.v19
+ astm
.f3411
.v19
DSS0030,a Implemented ASTM F3411-19 NetRID DSS interoperability
ASTM NetRID DSS: ISA Expiry
ASTM NetRID DSS: Simple ISA @@ -32,17 +32,22 @@ DSS0030,c Implemented - ASTM NetRID DSS: Subscription Validation + ASTM NetRID DSS: Subscription Simple
ASTM NetRID DSS: Subscription Validation DSS0030,d Implemented - ASTM NetRID DSS: Subscription Validation + ASTM NetRID DSS: Subscription Simple
ASTM NetRID DSS: Subscription Validation + + + DSS0030,e + Implemented + ASTM NetRID DSS: Subscription Simple DSS0030,f Implemented - ASTM NetRID DSS: Subscription Validation + ASTM NetRID DSS: Subscription Simple
ASTM NetRID DSS: Subscription Validation DSS0050 @@ -200,7 +205,7 @@ ASTM NetRID DSS: ISA Expiry
ASTM NetRID DSS: Simple ISA
ASTM NetRID DSS: Submitted ISA Validations - astm
.f3411
.v22a
+ astm
.f3411
.v22a
DSS0030 Implemented ASTM NetRID DSS: ISA Expiry @@ -218,17 +223,22 @@ DSS0030,c Implemented - ASTM NetRID DSS: Subscription Validation + ASTM NetRID DSS: Subscription Simple
ASTM NetRID DSS: Subscription Validation DSS0030,d Implemented - ASTM NetRID DSS: Subscription Validation + ASTM NetRID DSS: Subscription Simple
ASTM NetRID DSS: Subscription Validation + + + DSS0030,e + Implemented + ASTM NetRID DSS: Subscription Simple DSS0030,f Implemented - ASTM NetRID DSS: Subscription Validation + ASTM NetRID DSS: Subscription Simple
ASTM NetRID DSS: Subscription Validation DSS0050 @@ -391,14 +401,34 @@ ASTM NetRID DSS: ISA Expiry
ASTM NetRID DSS: Simple ISA
ASTM NetRID DSS: Submitted ISA Validations - interuss
.f3411
.dss_endpoints
+ interuss
.f3411
.dss_endpoints
+ DeleteSubscription + Implemented + ASTM NetRID DSS: Subscription Simple + + GetISA Implemented ASTM NetRID DSS: ISA Expiry
ASTM NetRID DSS: Simple ISA
ASTM NetRID DSS: Submitted ISA Validations + + GetSubscription + Implemented + ASTM NetRID DSS: Subscription Simple + + + PutSubscription + Implemented + ASTM NetRID DSS: Subscription Simple + SearchISAs Implemented ASTM NetRID DSS: ISA Expiry
ASTM NetRID DSS: Simple ISA + + SearchSubscriptions + Implemented + ASTM NetRID DSS: Subscription Simple + diff --git a/monitoring/uss_qualifier/suites/uspace/network_identification.md b/monitoring/uss_qualifier/suites/uspace/network_identification.md index f99a13245d..81e49fdf7f 100644 --- a/monitoring/uss_qualifier/suites/uspace/network_identification.md +++ b/monitoring/uss_qualifier/suites/uspace/network_identification.md @@ -16,7 +16,7 @@ Checked in - astm
.f3411
.v22a
+ astm
.f3411
.v22a
DSS0030 Implemented ASTM NetRID DSS: ISA Expiry @@ -34,17 +34,22 @@ DSS0030,c Implemented - ASTM NetRID DSS: Subscription Validation + ASTM NetRID DSS: Subscription Simple
ASTM NetRID DSS: Subscription Validation DSS0030,d Implemented - ASTM NetRID DSS: Subscription Validation + ASTM NetRID DSS: Subscription Simple
ASTM NetRID DSS: Subscription Validation + + + DSS0030,e + Implemented + ASTM NetRID DSS: Subscription Simple DSS0030,f Implemented - ASTM NetRID DSS: Subscription Validation + ASTM NetRID DSS: Subscription Simple
ASTM NetRID DSS: Subscription Validation DSS0050 @@ -479,14 +484,34 @@ ASTM NetRID nominal behavior - interuss
.f3411
.dss_endpoints
+ interuss
.f3411
.dss_endpoints
+ DeleteSubscription + Implemented + ASTM NetRID DSS: Subscription Simple + + GetISA Implemented ASTM NetRID DSS: ISA Expiry
ASTM NetRID DSS: Simple ISA
ASTM NetRID DSS: Submitted ISA Validations + + GetSubscription + Implemented + ASTM NetRID DSS: Subscription Simple + + + PutSubscription + Implemented + ASTM NetRID DSS: Subscription Simple + SearchISAs Implemented ASTM NetRID DSS: ISA Expiry
ASTM NetRID DSS: Simple ISA
ASTM NetRID nominal behavior + + SearchSubscriptions + Implemented + ASTM NetRID DSS: Subscription Simple + diff --git a/monitoring/uss_qualifier/suites/uspace/required_services.md b/monitoring/uss_qualifier/suites/uspace/required_services.md index 9a1b53a142..de9f187f83 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
DSS0030 Implemented ASTM NetRID DSS: ISA Expiry @@ -36,17 +36,22 @@ DSS0030,c Implemented - ASTM NetRID DSS: Subscription Validation + ASTM NetRID DSS: Subscription Simple
ASTM NetRID DSS: Subscription Validation DSS0030,d Implemented - ASTM NetRID DSS: Subscription Validation + ASTM NetRID DSS: Subscription Simple
ASTM NetRID DSS: Subscription Validation + + + DSS0030,e + Implemented + ASTM NetRID DSS: Subscription Simple DSS0030,f Implemented - ASTM NetRID DSS: Subscription Validation + ASTM NetRID DSS: Subscription Simple
ASTM NetRID DSS: Subscription Validation DSS0050 @@ -598,16 +603,36 @@ ASTM NetRID nominal behavior - interuss
.f3411
.dss_endpoints
+ interuss
.f3411
.dss_endpoints
+ DeleteSubscription + Implemented + ASTM NetRID DSS: Subscription Simple + + GetISA Implemented ASTM NetRID DSS: ISA Expiry
ASTM NetRID DSS: Simple ISA
ASTM NetRID DSS: Submitted ISA Validations + + GetSubscription + Implemented + ASTM NetRID DSS: Subscription Simple + + + PutSubscription + Implemented + ASTM NetRID DSS: Subscription Simple + SearchISAs Implemented ASTM NetRID DSS: ISA Expiry
ASTM NetRID DSS: Simple ISA
ASTM NetRID nominal behavior + + SearchSubscriptions + Implemented + ASTM NetRID DSS: Subscription Simple + versioning ReportSystemVersion