112 lines
3.1 KiB
Python
112 lines
3.1 KiB
Python
from __future__ import annotations
|
|
|
|
from pathlib import Path
|
|
import sys
|
|
import unittest
|
|
|
|
sys.path.append(str(Path(__file__).resolve().parent))
|
|
|
|
from scheduler import DUT, REF, Scheduler
|
|
from test_bundle import Test
|
|
|
|
|
|
def _test_config() -> dict[str, dict[str, str | None]]:
|
|
return {
|
|
"Station 1": {
|
|
"test_point": "T1D",
|
|
"sta": "STA5",
|
|
}
|
|
}
|
|
|
|
|
|
def _make_test(test_id: str, device: str, minutes: int) -> Test:
|
|
return Test(
|
|
test_id=test_id,
|
|
device=device,
|
|
test_type="P2P",
|
|
rotation=None,
|
|
rx_tx=None,
|
|
has_coe_pair=False,
|
|
coe_pairing=[],
|
|
config=_test_config(),
|
|
throttled=False,
|
|
estimated_minutes=minutes,
|
|
)
|
|
|
|
|
|
class SchedulerDualDeviceWeekendStartTests(unittest.TestCase):
|
|
def _first_window_devices(self, entries, start_date: str) -> set[str]:
|
|
return {
|
|
entry.device
|
|
for entry in entries
|
|
if entry.scheduled_date == start_date and entry.shift_index == 3
|
|
}
|
|
|
|
def test_weekend_start_window_stays_single_device_when_disabled(self) -> None:
|
|
start_date = "2026-07-10" # Friday
|
|
tests = [
|
|
_make_test("P2PRXAX001", DUT, 900),
|
|
_make_test("P2PRXAX001", REF, 300),
|
|
]
|
|
|
|
scheduler = Scheduler(
|
|
tests=tests,
|
|
top_priority_tests=set(),
|
|
start_date=start_date,
|
|
holiday_dates=set(),
|
|
dual_device_weekend_start_enabled=False,
|
|
)
|
|
|
|
err = scheduler.compile_schedule()
|
|
self.assertIsNone(err)
|
|
entries = scheduler.get_schedule()
|
|
|
|
self.assertEqual(self._first_window_devices(entries, start_date), {DUT})
|
|
|
|
def test_weekend_start_window_runs_both_devices_when_enabled(self) -> None:
|
|
start_date = "2026-07-10" # Friday
|
|
tests = [
|
|
_make_test("P2PRXAX001", DUT, 900),
|
|
_make_test("P2PRXAX001", REF, 300),
|
|
]
|
|
|
|
scheduler = Scheduler(
|
|
tests=tests,
|
|
top_priority_tests=set(),
|
|
start_date=start_date,
|
|
holiday_dates=set(),
|
|
dual_device_weekend_start_enabled=True,
|
|
)
|
|
|
|
err = scheduler.compile_schedule()
|
|
self.assertIsNone(err)
|
|
entries = scheduler.get_schedule()
|
|
|
|
self.assertEqual(self._first_window_devices(entries, start_date), {DUT, REF})
|
|
|
|
def test_holiday_adjusted_weekend_start_runs_both_devices(self) -> None:
|
|
start_date = "2026-07-09" # Thursday with Friday as holiday => weekend-start window
|
|
holidays = {"2026-07-10"}
|
|
tests = [
|
|
_make_test("P2PRXAX001", DUT, 700),
|
|
_make_test("P2PRXAX001", REF, 400),
|
|
]
|
|
|
|
scheduler = Scheduler(
|
|
tests=tests,
|
|
top_priority_tests=set(),
|
|
start_date=start_date,
|
|
holiday_dates=holidays,
|
|
dual_device_weekend_start_enabled=True,
|
|
)
|
|
|
|
err = scheduler.compile_schedule()
|
|
self.assertIsNone(err)
|
|
entries = scheduler.get_schedule()
|
|
|
|
self.assertEqual(self._first_window_devices(entries, start_date), {DUT, REF})
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|