Skip to content

Commit badbdaa

Browse files
committed
[uss_qualifier/scenarios/utm] Fix op intents cleanup by determining intents extents in run rather than __init__
1 parent 6297295 commit badbdaa

File tree

3 files changed

+44
-36
lines changed

3 files changed

+44
-36
lines changed

.basedpyright/baseline.json

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19255,14 +19255,6 @@
1925519255
"lineCount": 1
1925619256
}
1925719257
},
19258-
{
19259-
"code": "reportOptionalMemberAccess",
19260-
"range": {
19261-
"startColumn": 35,
19262-
"endColumn": 53,
19263-
"lineCount": 1
19264-
}
19265-
},
1926619258
{
1926719259
"code": "reportArgumentType",
1926819260
"range": {

monitoring/uss_qualifier/scenarios/astm/utm/nominal_planning/conflict_equal_priority_not_permitted/conflict_equal_priority_not_permitted.py

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@
2121
from monitoring.uss_qualifier.resources.astm.f3548.v21 import DSSInstanceResource
2222
from monitoring.uss_qualifier.resources.astm.f3548.v21.dss import DSSInstance
2323
from monitoring.uss_qualifier.resources.flight_planning import FlightIntentsResource
24+
from monitoring.uss_qualifier.resources.flight_planning.flight_intent import (
25+
FlightIntentID,
26+
)
2427
from monitoring.uss_qualifier.resources.flight_planning.flight_intent_validation import (
2528
ExpectedFlightIntent,
2629
validate_flight_intent_templates,
@@ -69,6 +72,7 @@ class ConflictEqualPriorityNotPermitted(TestScenario):
6972
tested_uss: FlightPlannerClient
7073
control_uss: FlightPlannerClient
7174
dss: DSSInstance
75+
flight_intents_templates: dict[FlightIntentID, FlightInfoTemplate]
7276

7377
def __init__(
7478
self,
@@ -90,8 +94,13 @@ def __init__(
9094
)
9195

9296
self.dss = dss.get_instance(scopes)
97+
self.flight_intents_templates = (
98+
flight_intents.get_flight_intents() if flight_intents else {}
99+
)
93100

94-
expected_flight_intents = [
101+
@property
102+
def _expected_flight_intents(self) -> list[ExpectedFlightIntent]:
103+
return [
95104
ExpectedFlightIntent(
96105
"flight1_planned",
97106
"Flight 1",
@@ -159,25 +168,26 @@ def __init__(
159168
), # Note: this intent expected to produce Nonconforming state, but this is hard to verify without telemetry. UAS state is not actually off-nominal.
160169
]
161170

162-
templates = flight_intents.get_flight_intents()
171+
def resolve_flight(self, flight_template: FlightInfoTemplate) -> FlightInfo:
172+
return flight_template.resolve(self.time_context.evaluate_now())
173+
174+
def run(self, context: ExecutionContext):
163175
try:
164-
self._intents_extent = validate_flight_intent_templates(
165-
templates, expected_flight_intents
176+
intents_extents = validate_flight_intent_templates(
177+
self.flight_intents_templates, self._expected_flight_intents
166178
)
167179
except ValueError as e:
168180
raise ValueError(
169181
f"`{self.me()}` TestScenario requirements for flight_intents not met: {e}"
170182
)
171183

172-
for efi in expected_flight_intents:
184+
for efi in self._expected_flight_intents:
173185
setattr(
174-
self, efi.intent_id.replace("equal_prio_", ""), templates[efi.intent_id]
186+
self,
187+
efi.intent_id.replace("equal_prio_", ""),
188+
self.flight_intents_templates[efi.intent_id],
175189
)
176190

177-
def resolve_flight(self, flight_template: FlightInfoTemplate) -> FlightInfo:
178-
return flight_template.resolve(self.time_context.evaluate_now())
179-
180-
def run(self, context: ExecutionContext):
181191
self.begin_test_scenario(context)
182192

183193
self.record_note(
@@ -194,7 +204,7 @@ def run(self, context: ExecutionContext):
194204
validate_clear_area(
195205
self,
196206
self.dss,
197-
[self._intents_extent],
207+
[intents_extents],
198208
ignore_self=True,
199209
)
200210
self.end_test_step()

monitoring/uss_qualifier/scenarios/astm/utm/off_nominal_planning/down_uss.py

Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,14 @@
1818
PlanningActivityResult,
1919
)
2020
from monitoring.monitorlib.fetch import QueryError
21+
from monitoring.monitorlib.geotemporal import Volume4D
2122
from monitoring.monitorlib.testing import make_fake_url
2223
from monitoring.uss_qualifier.resources.astm.f3548.v21 import DSSInstanceResource
2324
from monitoring.uss_qualifier.resources.astm.f3548.v21.dss import DSSInstance
2425
from monitoring.uss_qualifier.resources.flight_planning import FlightIntentsResource
26+
from monitoring.uss_qualifier.resources.flight_planning.flight_intent import (
27+
FlightIntentID,
28+
)
2529
from monitoring.uss_qualifier.resources.flight_planning.flight_intent_validation import (
2630
ExpectedFlightIntent,
2731
validate_flight_intent_templates,
@@ -49,10 +53,12 @@ class DownUSS(TestScenario):
4953
flight1_planned: FlightInfoTemplate
5054

5155
uss_qualifier_sub: str
56+
intents_extents: Volume4D
5257

5358
tested_uss: FlightPlannerClient
5459
dss_resource: DSSInstanceResource
5560
dss: DSSInstance
61+
flight_intents_templates: dict[FlightIntentID, FlightInfoTemplate]
5662

5763
def __init__(
5864
self,
@@ -64,19 +70,7 @@ def __init__(
6470
self.dss_resource = dss
6571
self.tested_uss = tested_uss.client
6672
self.dss = dss.get_instance(self._dss_req_scopes)
67-
68-
templates = flight_intents.get_flight_intents()
69-
try:
70-
self._intents_extent = validate_flight_intent_templates(
71-
templates, self._expected_flight_intents
72-
)
73-
except ValueError as e:
74-
raise ValueError(
75-
f"`{self.me()}` TestScenario requirements for flight_intents not met: {e}"
76-
)
77-
78-
for efi in self._expected_flight_intents:
79-
setattr(self, efi.intent_id, templates[efi.intent_id])
73+
self.flight_intents_templates = flight_intents.get_flight_intents()
8074

8175
@property
8276
def _dss_req_scopes(self) -> dict[str, str]:
@@ -120,11 +114,23 @@ def run(self, context: ExecutionContext):
120114
self.end_test_scenario()
121115

122116
def _setup(self):
117+
try:
118+
self.intents_extents = validate_flight_intent_templates(
119+
self.flight_intents_templates, self._expected_flight_intents
120+
)
121+
except ValueError as e:
122+
raise ValueError(
123+
f"`{self.me()}` TestScenario requirements for flight_intents not met: {e}"
124+
)
125+
126+
for efi in self._expected_flight_intents:
127+
setattr(self, efi.intent_id, self.flight_intents_templates[efi.intent_id])
128+
123129
self.begin_test_step("Resolve USS ID of virtual USS")
124130
with self.check("Successful dummy query", [self.dss.participant_id]) as check:
125131
try:
126132
_, dummy_query = self.dss.find_op_intent(
127-
self._intents_extent.to_f3548v21()
133+
self.intents_extents.to_f3548v21()
128134
)
129135
self.record_query(dummy_query)
130136
except QueryError as e:
@@ -154,7 +160,7 @@ def _setup(self):
154160
validate_clear_area(
155161
self,
156162
self.dss,
157-
[self._intents_extent],
163+
[self.intents_extents],
158164
ignore_self=True,
159165
)
160166
self.end_test_step()
@@ -281,14 +287,14 @@ def _clear_op_intents(self):
281287
) as check:
282288
try:
283289
oi_refs, find_query = self.dss.find_op_intent(
284-
self._intents_extent.to_f3548v21()
290+
self.intents_extents.to_f3548v21()
285291
)
286292
self.record_query(find_query)
287293
except QueryError as e:
288294
self.record_queries(e.queries)
289295
find_query = e.queries[0]
290296
check.record_failed(
291-
summary=f"Failed to query operational intent references from DSS in {self._intents_extent} for cleanup",
297+
summary=f"Failed to query operational intent references from DSS in {self.intents_extents} for cleanup",
292298
details=f"DSS responded code {find_query.status_code}; {e}",
293299
query_timestamps=[find_query.request.timestamp],
294300
)

0 commit comments

Comments
 (0)