Skip to content

Commit a136bbc

Browse files
[uss_qualifier/scenarios] Add DSS PoolInfo test scenario (#1416)
1 parent bcb4cd5 commit a136bbc

File tree

4 files changed

+106
-0
lines changed

4 files changed

+106
-0
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# InterUSS DSS hosting requirements
2+
3+
While not all competent authorities will require any or all of these requirements, when they are required, these requirements can provide certain benefits like enabling experimental validation of successful pooling when DSS instances are the InterUSS DSS implementation.
4+
5+
* <tt>ExposeAux</tt>: The DSS implementation under test must expose the InterUSS-defined `aux` interface implemented by the InterUSS DSS implementation corresponding to the range of versions allowed by the competent authoity and respond to queries correctly according to that interface.
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
from monitoring.uss_qualifier.scenarios.scenario import GenericTestScenario
2+
from monitoring.uss_qualifier.suites.suite import ExecutionContext
3+
4+
5+
class PoolInfo(GenericTestScenario):
6+
def __init__(
7+
self,
8+
):
9+
super().__init__()
10+
11+
def run(self, context: ExecutionContext):
12+
self.begin_test_scenario(context)
13+
self.end_test_scenario()
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
# DSS pool information test scenario
2+
3+
This test scenario obtains and validates information about any InterUSS ASTM F3548-21 DSS instances in a pool of interest.
4+
5+
## Resources
6+
7+
### dss_instances
8+
9+
A [`DSSInstancesResource`](../../../../resources/astm/f3548/v21/dss.py) containing all instances of interest within a single pool. Not all instances must be InterUSS implementations, but only instances which are sufficiently-recent InterUSS implementations are likely to produce useful information and validation.
10+
11+
The auth adapter for each DSS instance must support uss_qualifier's acquisition of access tokens with the `interuss.pool_status.read` scope.
12+
13+
## aux information test case
14+
15+
Information available via the InterUSS DSS implementation's aux interface is queried and noted and/or evaluated when obtained.
16+
17+
### Examine versions test step
18+
19+
Each DSS instance is queried for its version at `/aux/v1/version` and the versions are noted for the report.
20+
21+
#### ⚠️ Version obtained successfully check
22+
23+
If uss_qualifier cannot successfully obtain version information, the USS hosting the queried DSS instance does not comply with **[interuss.dss.hosting.ExposeAux](../../../../requirements/interuss/dss/hosting.md)**.
24+
25+
TODO: Implement
26+
27+
### Examine pool test step
28+
29+
Each DSS instance is queried for its understanding of the pool at `/aux/v1/pool`.
30+
31+
#### ⚠️ Pool information obtained successfully check
32+
33+
If uss_qualifier cannot successfully obtain pool information, the USS hosting the queried DSS instance does not comply with **[interuss.dss.hosting.ExposeAux](../../../../requirements/interuss/dss/hosting.md)**.
34+
35+
TODO: Implement
36+
37+
#### ⚠️ DAR ID matches check
38+
39+
If any two DSS instances who successfully reported their DAR ID in the pool information have differeing DAR IDs, those DSS instances are not part of the same pool and have therefore failed to comply with **[astm.f3548.v21.DSS0020](../../../../requirements/astm/f3548/v21.md)**.
40+
41+
TODO: Implement
42+
43+
### Examine DSS instances test step
44+
45+
Each DSS instance is queried for its understanding of the other instances in the pool at `/aux/v1/pool/dss_instances`.
46+
47+
#### ⚠️ DSS instances obtained successfully check
48+
49+
If uss_qualifier cannot successfully obtain the pool's DSS instance information from the queried DSS, the USS hosting the DSS instance does not comply with **[interuss.dss.hosting.ExposeAux](../../../../requirements/interuss/dss/hosting.md)**.
50+
51+
TODO: Implement
52+
53+
#### ⚠️ DSS instances have same understanding of other instances check
54+
55+
If any two DSS instances differ in what DSS instances they believe are part of the pool, then those two instances are not successfully reading a shared repository of pool information. In the InterUSS implementation, this means they have failed to comply with **[astm.f3548.v21.DSS0020](../../../../requirements/astm/f3548/v21.md)** because reading from a shared repository of information is what achieves DSS0020 compliance in InterUSS DSS implementations.
56+
57+
A difference in any element of the DSSInstances information (e.g., instance ID, public endpoint) may cause this check to fail, but uss_qualifier attempts to avoid false positives when a new heartbeat arrives in between instance polling.
58+
59+
TODO: Implement
60+
61+
### Examine CA certificates test step
62+
63+
Each DSS instance is queried for the CA certificates used to sign its node certificates (via `/aux/v1/configuration/ca_certs`) and also the CA certificates it accepts (via `/aux/v1/configuration/accepted_ca_certs`).
64+
65+
#### ⚠️ CA certs obtained successfully check
66+
67+
If uss_qualifier cannot successfully obtain CA certificate information, the USS hosting the queried DSS instance does not comply with **[interuss.dss.hosting.ExposeAux](../../../../requirements/interuss/dss/hosting.md)**.
68+
69+
TODO: Implement
70+
71+
#### ⚠️ DSS instance accepts all pool CA certs check
72+
73+
If a DSS instance does not accept any of the CA certificates used to sign the node certificates of any other DSS instance in the pool, the USS hosting that DSS instance will not comply with **[astm.f3548.v21.DSS0020](../../../../requirements/astm/f3548/v21.md)** because the InterUSS DSS implementation relies on every DSS instance accepting the certificates of every other DSS instance in the pool to comply with this requirement.
74+
75+
TODO: Implement
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
from monitoring.uss_qualifier.resources.astm.f3548.v21 import DSSInstancesResource
2+
from monitoring.uss_qualifier.scenarios.astm.dss.pool_info import (
3+
PoolInfo as CommonPoolInfo,
4+
)
5+
from monitoring.uss_qualifier.scenarios.scenario import TestScenario
6+
7+
8+
class PoolInfo(TestScenario, CommonPoolInfo):
9+
def __init__(
10+
self,
11+
dss_instances: DSSInstancesResource,
12+
):
13+
super().__init__()

0 commit comments

Comments
 (0)