|
20 | 20 | import json |
21 | 21 | from pytest_mock import MockerFixture |
22 | 22 | from xpk.core.testing.commands_tester import CommandsTester |
23 | | -from xpk.core.workload import get_jobsets_list_gcp_link, get_workload_list |
| 23 | +from xpk.core.workload import _parse_workload_item, get_jobsets_list_gcp_link, get_workload_list |
24 | 24 |
|
25 | 25 |
|
26 | 26 | from dataclasses import dataclass |
@@ -61,8 +61,10 @@ def _create_mock_workload_json(data: _MockWorkloadData): |
61 | 61 | 'ownerReferences': [{'name': data.jobset_name}], |
62 | 62 | }, |
63 | 63 | 'spec': { |
64 | | - 'priorityClassName': data.priority, |
65 | | - 'podSets': [{'count': data.needed}], |
| 64 | + 'podSets': [{ |
| 65 | + 'count': data.needed, |
| 66 | + 'template': {'spec': {'priorityClassName': data.priority}}, |
| 67 | + }] |
66 | 68 | }, |
67 | 69 | 'status': { |
68 | 70 | 'admission': {'podSetAssignments': [{'count': data.running}]}, |
@@ -286,3 +288,40 @@ def test_get_workload_list_filters( |
286 | 288 | parsed_table = _parse_workload_table(return_value) |
287 | 289 | actual_job_names = [row['Jobset Name'] for row in parsed_table] |
288 | 290 | assert actual_job_names == expected_job_names |
| 291 | + |
| 292 | + |
| 293 | +def test_parse_workload_item_priority_from_workload_spec(): |
| 294 | + |
| 295 | + item = { |
| 296 | + 'metadata': {'creationTimestamp': '2024-01-01T00:00:00Z'}, |
| 297 | + 'spec': { |
| 298 | + 'priorityClassName': 'workload-high', |
| 299 | + 'podSets': [ |
| 300 | + {'template': {'spec': {'priorityClassName': 'pod-high'}}} |
| 301 | + ], |
| 302 | + }, |
| 303 | + } |
| 304 | + row = _parse_workload_item(item) |
| 305 | + assert row.priority == 'workload-high' |
| 306 | + |
| 307 | + |
| 308 | +def test_parse_workload_item_priority_from_pod_set_fallback(): |
| 309 | + |
| 310 | + item = { |
| 311 | + 'metadata': {'creationTimestamp': '2024-01-01T00:00:00Z'}, |
| 312 | + 'spec': { |
| 313 | + 'podSets': [{'template': {'spec': {'priorityClassName': 'pod-low'}}}] |
| 314 | + }, |
| 315 | + } |
| 316 | + row = _parse_workload_item(item) |
| 317 | + assert row.priority == 'pod-low' |
| 318 | + |
| 319 | + |
| 320 | +def test_parse_workload_item_priority_not_found(): |
| 321 | + |
| 322 | + item = { |
| 323 | + 'metadata': {'creationTimestamp': '2024-01-01T00:00:00Z'}, |
| 324 | + 'spec': {'podSets': [{'template': {'spec': {}}}]}, |
| 325 | + } |
| 326 | + row = _parse_workload_item(item) |
| 327 | + assert row.priority is None |
0 commit comments