Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions monitoring/uss_qualifier/suites/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,10 @@ Test suites are tolerant of incomplete resources available for an action. All r

Test suite documentation is generated automatically; use `make format` from the repository root to regenerate it.

### Resources

This section lists the input resources used/accepted by the suite, their types, whether they are optional, and any descriptions of their purpose or usage.

### Actions

This section of a test suite documentation page summarizes the actions that will be taken when the test suite is run.
Expand Down
18 changes: 18 additions & 0 deletions monitoring/uss_qualifier/suites/astm/netrid/f3411_19.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,24 @@
# ASTM F3411-19 test suite
[`suites.astm.netrid.f3411_19`](./f3411_19.yaml)

## [Resource inputs](../../README.md#resources)

- `flights_data`: `resources.netrid.FlightDataResource`
- `service_providers`: `resources.netrid.NetRIDServiceProviders`
- `observers`: `resources.netrid.NetRIDObserversResource`
- `mock_uss_dp`: `resources.interuss.mock_uss.client.MockUSSResource` (optional)
- `mock_uss_sp`: `resources.interuss.mock_uss.client.MockUSSResource` (optional)
- `evaluation_configuration`: `resources.netrid.EvaluationConfigurationResource`
- `dss_instances`: `resources.astm.f3411.DSSInstancesResource`
- `dss_datastore_cluster`: `resources.interuss.datastore.DatastoreDBClusterResource` (optional)
- `utm_client_identity`: `resources.communications.ClientIdentityResource`
- `id_generator`: `resources.interuss.IDGeneratorResource`
- `service_area`: `resources.netrid.ServiceAreaResource`
- `problematically_big_area`: `resources.VolumeResource`
- `planning_area`: `resources.PlanningAreaResource`
- `test_exclusions`: `resources.dev.TestExclusionsResource` (optional)
- `uss_identification`: `resources.interuss.uss_identification.USSIdentificationResource` (optional)

## [Actions](../../README.md#actions)

1. Scenario: [ASTM NetRID Service Provider operator notification under slow update rate](../../../scenarios/astm/netrid/v19/sp_operator_notify_slow_update.md) ([`scenarios.astm.netrid.v19.ServiceProviderNotifiesSlowUpdates`](../../../scenarios/astm/netrid/v19/sp_operator_notify_slow_update.py))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,18 @@
# DSS testing for ASTM NetRID F3411-19 test suite
[`suites.astm.netrid.f3411_19.dss_probing`](./dss_probing.yaml)

## [Resource inputs](../../../README.md#resources)

- `dss`: `resources.astm.f3411.DSSInstanceResource`
- `all_dss_instances`: `resources.astm.f3411.DSSInstancesResource` (optional)
- `dss_datastore_cluster`: `resources.interuss.datastore.DatastoreDBClusterResource` (optional)
- `id_generator`: `resources.interuss.IDGeneratorResource`
- `utm_client_identity`: `resources.communications.ClientIdentityResource`
- `isa`: `resources.netrid.ServiceAreaResource`
- `problematically_big_area`: `resources.VolumeResource`
- `planning_area`: `resources.PlanningAreaResource`
- `test_exclusions`: `resources.dev.TestExclusionsResource` (optional)

## [Actions](../../../README.md#actions)

1. Scenario: [ASTM NetRID DSS: Endpoint encryption](../../../../scenarios/astm/netrid/v19/dss/endpoint_encryption.md) ([`scenarios.astm.netrid.v19.dss.EndpointEncryption`](../../../../scenarios/astm/netrid/v19/dss/endpoint_encryption.py))
Expand Down
26 changes: 26 additions & 0 deletions monitoring/uss_qualifier/suites/astm/netrid/f3411_22a.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,32 @@
# ASTM F3411-22a test suite
[`suites.astm.netrid.f3411_22a`](./f3411_22a.yaml)

Verify compliance to ASTM F3411-22a requirements for a collection of Service Providers, Display Providers, and/or DSS providers.

## [Resource inputs](../../README.md#resources)

- `test_env_version_providers`: `resources.versioning.VersionProvidersResource` (optional)

Means by which to retrieve and record the versions of the systems under test.

- `system_identity`: `resources.versioning.SystemIdentityResource` (optional)
- `flights_data`: `resources.netrid.FlightDataResource`
- `service_providers`: `resources.netrid.NetRIDServiceProviders` (optional)
- `observers`: `resources.netrid.NetRIDObserversResource` (optional)
- `mock_uss_dp`: `resources.interuss.mock_uss.client.MockUSSResource` (optional)
- `mock_uss_sp`: `resources.interuss.mock_uss.client.MockUSSResource` (optional)
- `evaluation_configuration`: `resources.netrid.EvaluationConfigurationResource`
- `dss_instances`: `resources.astm.f3411.DSSInstancesResource` (optional)
- `dss_datastore_cluster`: `resources.interuss.datastore.DatastoreDBClusterResource` (optional)
- `utm_client_identity`: `resources.communications.ClientIdentityResource`
- `id_generator`: `resources.interuss.IDGeneratorResource`
- `service_area`: `resources.netrid.ServiceAreaResource`
- `problematically_big_area`: `resources.VolumeResource`
- `planning_area`: `resources.PlanningAreaResource`
- `test_exclusions`: `resources.dev.TestExclusionsResource` (optional)
- `uss_identification`: `resources.interuss.uss_identification.USSIdentificationResource` (optional)
- `concurrency_behavior_adjustment`: `resources.interuss.scenarios.astm.netrid.common.dss.heavy_traffic_concurrent.HeavyTrafficConcurrentBehaviorResource` (optional)

## [Actions](../../README.md#actions)

1. Scenario: [Get system versions](../../../scenarios/versioning/get_system_versions.md) ([`scenarios.versioning.GetSystemVersions`](../../../scenarios/versioning/get_system_versions.py))
Expand Down
58 changes: 39 additions & 19 deletions monitoring/uss_qualifier/suites/astm/netrid/f3411_22a.yaml
Original file line number Diff line number Diff line change
@@ -1,23 +1,43 @@
name: ASTM F3411-22a
resources:
test_env_version_providers: resources.versioning.VersionProvidersResource?
system_identity: resources.versioning.SystemIdentityResource?
flights_data: resources.netrid.FlightDataResource
service_providers: resources.netrid.NetRIDServiceProviders?
observers: resources.netrid.NetRIDObserversResource?
mock_uss_dp: resources.interuss.mock_uss.client.MockUSSResource?
mock_uss_sp: resources.interuss.mock_uss.client.MockUSSResource?
evaluation_configuration: resources.netrid.EvaluationConfigurationResource
dss_instances: resources.astm.f3411.DSSInstancesResource?
dss_datastore_cluster: resources.interuss.datastore.DatastoreDBClusterResource?
utm_client_identity: resources.communications.ClientIdentityResource
id_generator: resources.interuss.IDGeneratorResource
service_area: resources.netrid.ServiceAreaResource
problematically_big_area: resources.VolumeResource
planning_area: resources.PlanningAreaResource
test_exclusions: resources.dev.TestExclusionsResource?
uss_identification: resources.interuss.uss_identification.USSIdentificationResource?
concurrency_behavior_adjustment: resources.interuss.scenarios.astm.netrid.common.dss.heavy_traffic_concurrent.HeavyTrafficConcurrentBehaviorResource?
description: Verify compliance to ASTM F3411-22a requirements for a collection of Service Providers, Display Providers, and/or DSS providers.
resource_inputs:
- resource_id: test_env_version_providers
type: resources.versioning.VersionProvidersResource?
description: Means by which to retrieve and record the versions of the systems under test.
- resource_id: system_identity
type: resources.versioning.SystemIdentityResource?
- resource_id: flights_data
type: resources.netrid.FlightDataResource
- resource_id: service_providers
type: resources.netrid.NetRIDServiceProviders?
- resource_id: observers
type: resources.netrid.NetRIDObserversResource?
- resource_id: mock_uss_dp
type: resources.interuss.mock_uss.client.MockUSSResource?
- resource_id: mock_uss_sp
type: resources.interuss.mock_uss.client.MockUSSResource?
- resource_id: evaluation_configuration
type: resources.netrid.EvaluationConfigurationResource
- resource_id: dss_instances
type: resources.astm.f3411.DSSInstancesResource?
- resource_id: dss_datastore_cluster
type: resources.interuss.datastore.DatastoreDBClusterResource?
- resource_id: utm_client_identity
type: resources.communications.ClientIdentityResource
- resource_id: id_generator
type: resources.interuss.IDGeneratorResource
- resource_id: service_area
type: resources.netrid.ServiceAreaResource
- resource_id: problematically_big_area
type: resources.VolumeResource
- resource_id: planning_area
type: resources.PlanningAreaResource
- resource_id: test_exclusions
type: resources.dev.TestExclusionsResource?
- resource_id: uss_identification
type: resources.interuss.uss_identification.USSIdentificationResource?
- resource_id: concurrency_behavior_adjustment
type: resources.interuss.scenarios.astm.netrid.common.dss.heavy_traffic_concurrent.HeavyTrafficConcurrentBehaviorResource?
actions:
- test_scenario:
scenario_type: scenarios.versioning.GetSystemVersions
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,19 @@
# DSS testing for ASTM NetRID F3411-22a test suite
[`suites.astm.netrid.f3411_22a.dss_probing`](./dss_probing.yaml)

## [Resource inputs](../../../README.md#resources)

- `dss`: `resources.astm.f3411.DSSInstanceResource`
- `all_dss_instances`: `resources.astm.f3411.DSSInstancesResource` (optional)
- `dss_datastore_cluster`: `resources.interuss.datastore.DatastoreDBClusterResource` (optional)
- `id_generator`: `resources.interuss.IDGeneratorResource`
- `utm_client_identity`: `resources.communications.ClientIdentityResource`
- `isa`: `resources.netrid.ServiceAreaResource`
- `problematically_big_area`: `resources.VolumeResource`
- `planning_area`: `resources.PlanningAreaResource`
- `test_exclusions`: `resources.dev.TestExclusionsResource` (optional)
- `concurrency_behavior_adjustment`: `resources.interuss.scenarios.astm.netrid.common.dss.heavy_traffic_concurrent.HeavyTrafficConcurrentBehaviorResource` (optional)

## [Actions](../../../README.md#actions)

1. Scenario: [ASTM NetRID DSS: Endpoint encryption](../../../../scenarios/astm/netrid/v22a/dss/endpoint_encryption.md) ([`scenarios.astm.netrid.v22a.dss.EndpointEncryption`](../../../../scenarios/astm/netrid/v22a/dss/endpoint_encryption.py))
Expand Down
13 changes: 13 additions & 0 deletions monitoring/uss_qualifier/suites/astm/utm/dss_probing.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,19 @@
# DSS testing for ASTM F3548-21 test suite
[`suites.astm.utm.dss_probing`](./dss_probing.yaml)

## [Resource inputs](../../README.md#resources)

- `dss`: `resources.astm.f3548.v21.DSSInstanceResource`
- `utm_client_identity`: `resources.communications.ClientIdentityResource`
- `second_utm_auth`: `resources.communications.AuthAdapterResource` (optional)
- `all_dss_instances`: `resources.astm.f3548.v21.DSSInstancesResource` (optional)
- `dss_datastore_cluster`: `resources.interuss.datastore.DatastoreDBClusterResource` (optional)
- `flight_intents`: `resources.flight_planning.FlightIntentsResource`
- `id_generator`: `resources.interuss.IDGeneratorResource`
- `planning_area`: `resources.PlanningAreaResource`
- `problematically_big_area`: `resources.VolumeResource`
- `test_exclusions`: `resources.dev.TestExclusionsResource` (optional)

## [Actions](../../README.md#actions)

1. Scenario: [ASTM SCD DSS: Operational Intent Explicit Subscription handling](../../../scenarios/astm/utm/dss/oir_explicit_sub_handling.md) ([`scenarios.astm.utm.dss.OIRExplicitSubHandling`](../../../scenarios/astm/utm/dss/oir_explicit_sub_handling.py))
Expand Down
29 changes: 29 additions & 0 deletions monitoring/uss_qualifier/suites/astm/utm/f3548_21.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,35 @@
# ASTM F3548-21 test suite
[`suites.astm.utm.f3548_21`](./f3548_21.yaml)

## [Resource inputs](../../README.md#resources)

- `test_env_version_providers`: `resources.versioning.VersionProvidersResource` (optional)
- `prod_env_version_providers`: `resources.versioning.VersionProvidersResource` (optional)
- `flight_planners`: `resources.flight_planning.FlightPlannersResource`
- `flight_planners_to_clear`: `resources.flight_planning.FlightPlannersResource`
- `dss`: `resources.astm.f3548.v21.DSSInstanceResource`
- `dss_instances`: `resources.astm.f3548.v21.DSSInstancesResource` (optional)
- `interuss_dss_instances`: `resources.astm.f3548.v21.DSSInstancesResource` (optional)
- `dss_datastore_cluster`: `resources.interuss.datastore.DatastoreDBClusterResource` (optional)
- `conflicting_flights`: `resources.flight_planning.FlightIntentsResource` (optional)
- `non_conflicting_flights`: `resources.flight_planning.FlightIntentsResource` (optional)
- `conflicting_flights_provider`: `resources.resource.ResourceProvidingResource[resources.flight_planning.FlightIntentsResource]`
- `priority_preemption_flights_provider`: `resources.resource.ResourceProvidingResource[resources.flight_planning.FlightIntentsResource]` (optional)
- `non_conflicting_flights_provider`: `resources.resource.ResourceProvidingResource[resources.flight_planning.FlightIntentsResource]`
- `invalid_flight_intents`: `resources.flight_planning.FlightIntentsResource`
- `nominal_planning_selector`: `resources.flight_planning.FlightPlannerCombinationSelectorResource` (optional)
- `priority_planning_selector`: `resources.flight_planning.FlightPlannerCombinationSelectorResource` (optional)
- `utm_auth`: `resources.communications.AuthAdapterResource` (optional)
- `second_utm_auth`: `resources.communications.AuthAdapterResource` (optional)
- `utm_client_identity`: `resources.communications.ClientIdentityResource`
- `mock_uss`: `resources.interuss.mock_uss.client.MockUSSResource` (optional)
- `id_generator`: `resources.interuss.id_generator.IDGeneratorResource` (optional)
- `id_generator_provider`: `resources.interuss.id_generator.IDGeneratorProviderResource` (optional)
- `planning_area_provider`: `resources.resource.ResourceProvidingResource[resources.planning_area.PlanningAreaResource]`
- `problematically_big_area`: `resources.VolumeResource`
- `system_identity`: `resources.versioning.SystemIdentityResource` (optional)
- `test_exclusions`: `resources.dev.TestExclusionsResource` (optional)

## [Actions](../../README.md#actions)

1. Scenario: [Get system versions](../../../scenarios/versioning/get_system_versions.md) ([`scenarios.versioning.GetSystemVersions`](../../../scenarios/versioning/get_system_versions.py))
Expand Down
10 changes: 10 additions & 0 deletions monitoring/uss_qualifier/suites/astm/utm/prod_probe.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,16 @@
# Minimal production probing test suite
[`suites.astm.utm.prod_probe`](./prod_probe.yaml)

## [Resource inputs](../../README.md#resources)

- `second_utm_auth`: `resources.communications.AuthAdapterResource` (optional)
- `dss_instances`: `resources.astm.f3548.v21.DSSInstancesResource` (optional)
- `dss_datastore_cluster`: `resources.interuss.datastore.DatastoreDBClusterResource` (optional)
- `id_generator`: `resources.interuss.IDGeneratorResource`
- `planning_area`: `resources.PlanningAreaResource`
- `test_exclusions`: `resources.dev.TestExclusionsResource` (optional)
- `utm_client_identity`: `resources.communications.ClientIdentityResource`

## [Actions](../../README.md#actions)

1. Action generator: [`action_generators.astm.f3548.ForEachDSS`](../../../action_generators/astm/f3548/for_each_dss.py)
Expand Down
10 changes: 10 additions & 0 deletions monitoring/uss_qualifier/suites/astm/utm/prod_probe_suite1.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,16 @@
# Minimal production probing for primary DSS instance test suite
Defined in [parent suite](prod_probe.md) [`suites.astm.utm.prod_probe`](./prod_probe.yaml)

## [Resource inputs](../../README.md#resources)

- `primary_dss_instance`: `resources.astm.f3548.v21.DSSInstanceResource`
- `second_utm_auth`: `resources.communications.AuthAdapterResource` (optional)
- `all_dss_instances`: `resources.astm.f3548.v21.DSSInstancesResource` (optional)
- `dss_datastore_cluster`: `resources.interuss.datastore.DatastoreDBClusterResource` (optional)
- `id_generator`: `resources.interuss.IDGeneratorResource`
- `planning_area`: `resources.PlanningAreaResource`
- `test_exclusions`: `resources.dev.TestExclusionsResource` (optional)

## [Actions](../../README.md#actions)

1. Scenario: [ASTM SCD DSS: Constraint Reference Synchronization](../../../scenarios/astm/utm/dss/synchronization/constraint_ref_synchronization.md) ([`scenarios.astm.utm.dss.synchronization.CRSynchronization`](../../../scenarios/astm/utm/dss/synchronization/constraint_ref_synchronization.py))
Expand Down
57 changes: 55 additions & 2 deletions monitoring/uss_qualifier/suites/definitions.py
Original file line number Diff line number Diff line change
Expand Up @@ -115,14 +115,33 @@ def get_action_type_name(self) -> str:
"""This string is a ResourceTypeName (which may include generic type arguments in brackets), but then may be suffixed with '?' (e.g., `resources.SomeGenericResource[resources.SubResource]?`). If the value ends in '?', that indicates the resource is optional and does not need to be provided."""


class ResourceInput(ImplicitDict):
resource_id: ResourceID
"""The ID of the resource as it will be made available to actions in the test suite."""

type: ResourceTypeNameSpecifyingOptional
"""The type of this resource, optionally suffixed with '?' to indicate it is optional."""

description: Optional[str]
"""Description of the purpose/usage of this resource."""


class TestSuiteDefinition(ImplicitDict):
"""Schema for the definition of a test suite, analogous to the Python TestScenario subclass for scenarios"""

name: str
"""Name of the test suite"""

resources: dict[ResourceID, ResourceTypeNameSpecifyingOptional]
"""Enumeration of the resources used by this test suite"""
description: Optional[str]
"""Description of the purpose/behavior of the test suite."""

resources: Optional[dict[ResourceID, ResourceTypeNameSpecifyingOptional]]
"""DEPRECATED; use resource_inputs.

Enumeration of the resources used by this test suite"""

resource_inputs: Optional[list[ResourceInput]]
"""Enumeration of the resources used by this test suite. May not be specified together with `resources`."""

local_resources: Optional[dict[ResourceID, ResourceDeclaration]]
Comment thread
the-glu marked this conversation as resolved.
"""Declarations of resources originating in this test suite, which may depend on `resources` passed into the test suite. If a resource is defined in both `resources` and `local_resources`, the resource in `local_resources` will be ignored (`resources` overrides `local_resources`)."""
Expand All @@ -133,6 +152,40 @@ class TestSuiteDefinition(ImplicitDict):
participant_verifiable_capabilities: Optional[list[ParticipantCapabilityDefinition]]
"""Definitions of capabilities verified by this test suite for individual participants."""

def __init__(self, previous_instance: dict | None = None, **kwargs):
supplied_fields = (previous_instance or {}).keys() | kwargs.keys()
if "resources" in supplied_fields and "resource_inputs" in supplied_fields:
raise ValueError(
"May not specify both resources and resource_inputs in the same TestSuiteDefinition"
Comment thread
the-glu marked this conversation as resolved.
)
if (
"resources" not in supplied_fields
and "resource_inputs" not in supplied_fields
):
raise ValueError(
"Must specify one of resources or resource_inputs in a TestSuiteDefinition"
)
super().__init__(previous_instance, **kwargs)
Comment thread
the-glu marked this conversation as resolved.

# Verify there are no duplicate keys
if self.resource_inputs:
keys = set()
for resource_input in self.resource_inputs:
if resource_input.resource_id in keys:
raise ValueError(
f"Only one resource_id of '{resource_input.resource_id}' may be specified in TestSuiteDefinition.resource_inputs"
)
keys.add(resource_input.resource_id)

def get_resource_inputs(self) -> list[ResourceInput]:
"""Return input resources in a common format, including legacy declarations."""
if self.resource_inputs is not None:
return self.resource_inputs
return [
ResourceInput(resource_id=resource_id, type=resource_type)
for resource_id, resource_type in (self.resources or {}).items()
]

@staticmethod
def load_from_declaration(
declaration: TestSuiteDeclaration,
Expand Down
Loading
Loading