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
20 changes: 9 additions & 11 deletions .github/workflows/teszt-darabok.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,22 +33,20 @@ jobs:
# foglalná a runnert, és eldugítaná a teljes Actions-sort (2026-07-19-en
# 19 beragadt futás állította le a release-automatikát).
#
# 2026-08-13: 20 percről 40-re emelve. A készlet azóta jelentősen nőtt:
# az Ubuntu-futás ~12–13 perc, a Windows ~1,6-szorosa — az a 20 percbe
# SZÁMÍTÁSSAL futott bele, és a rendszer levágta (két mért futás:
# 20:04 és 20:06). Ez nem elméleti kockázat: a Windows-ág aznap három
# valódi, Windows-specifikus hibát fogott meg (Path.home() a
# USERPROFILE-t olvassa; a rendszermappa-védelem POSIX-utakra épült;
# a time.monotonic() ~15 ms-os felbontása) — ha az ág levágódik, az
# ilyenek átcsúsznak. A korlát célja a BERAGADT futás elvágása marad,
# nem az egészségesé.
timeout-minutes: 40
# 2026-08-13: 20 percről 40-re emelve. #4667: a windows 1/4 job
# 40 percnél megszakadt, így a sikeres teljes futásidő nem ismert.
# A `scripts/teszt_idok.json` aktuális felosztása 30,1–30,2 percet jelez
# tesztfutásra; a job időkorlátja a telepítést is beleszámítja. A
# windows-láb ezért 60 percet kap, ami 20 percet ad a megfigyelt
# megszakítási határ fölé. Az Ubuntu 40 perce és a négyes mátrix marad.
timeout-minutes: ${{ inputs.os == 'windows-latest' && 60 || 40 }}
strategy:
fail-fast: false
matrix:
# #1127: a készletet NÉGY futtatóra osztjuk platformonként. A
# kiosztás mért futásidők szerint megy (`scripts/teszt_idok.json`),
# ezért a négy darab egyenlő — mérve 732/732/732/732 mp, arány 1,00×.
# a becsült tesztidők darabonként 30,1–30,2 percet adnak. Ez nem
# tartalmazza a job telepítési idejét.
#
# ⚠️ Ez NEM a gépen belüli párhuzamosítás. Azt 2026-08-19-én
# kipróbáltuk (#1030/#1031), és CPU-éhezésben a főágat pirosra vitte
Expand Down
1 change: 1 addition & 0 deletions changelog.d/4667.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
- A windowsos tesztdarabok 60 perces időkorlátot kapnak a megszakítások elkerülésére (#4667).
7 changes: 4 additions & 3 deletions scripts/run_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -1490,9 +1490,10 @@ def _mert_idok() -> dict[str, float]:
"""A commitolt futásidő-térkép; hiányában üres (minden egység medián).

⚠️ **#3117: a tábla a SOROS futás WINDOWS-idejeit tartalmazza**, és ez
szándékos — ott van a 40 perces job-korláthoz legközelebb a leghosszabb
darab. A #2848 sorosra állítása után a régi, PÁRHUZAMOS időkkel töltött
tábla elcsúszott, és a **lefedettsége** is hiányos volt: 271 bejegyzés
szándékos — ott van a 60 perces windowsos job-korláthoz legközelebb a
leghosszabb darab. A #2848 sorosra állítása után a régi, PÁRHUZAMOS
időkkel töltött tábla elcsúszott, és a **lefedettsége** is hiányos volt:
271 bejegyzés
659 egységre (41%), a többi mediánt kapott.

Mérve (main `4e2c6dd6`, 2026-09-15), a tényleges windows-terhelés:
Expand Down
5 changes: 3 additions & 2 deletions tests/test_darabolas_egyensuly_3297.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,9 @@
import run_tests # noqa: E402

#: A windows-job határideje percben (`teszt-darabok.yml`, `timeout-minutes`).
#: 2026-10-04: a folyamatban 40 perc áll; a 30 a korábbi értéket tükrözte.
HATARIDO_PERC = 40
#: #4667: a 40 perces job a telepítéssel együtt megszakadt; az új Windows-
#: határidő 60 perc, az Ubuntu változatlanul 40 perc.
HATARIDO_PERC = 60

#: A leghosszabb darab ennél nem lehet nagyobb.
#:
Expand Down
21 changes: 21 additions & 0 deletions tests/test_windows_darab_hatarido_4667.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
"""A windowsos tesztdarab kapjon elég időt, az ubuntu-mátrix maradjon érintetlen (#4667)."""

from __future__ import annotations

import re
from pathlib import Path

_ROOT = Path(__file__).resolve().parents[1]
_WORKFLOW = _ROOT / ".github" / "workflows" / "teszt-darabok.yml"


def test_a_windows_hatarido_60_perc_az_ubuntu_40_marad() -> None:
"""A Windows kapjon 20 perc többletet, a közös négydarabos mátrix maradjon."""
forras = _WORKFLOW.read_text(encoding="utf-8")
talalat = re.search(r"(?m)^\s*timeout-minutes:\s*(.+?)\s*$", forras)
matrix = re.search(r"(?m)^\s*shard:\s*\[([^]]+)\]\s*$", forras)

assert talalat is not None, "hiányzik a teszt-job időkorlátja"
assert talalat.group(1) == "${{ inputs.os == 'windows-latest' && 60 || 40 }}"
assert matrix is not None, "hiányzik a darabmátrix"
assert [int(elem.strip()) for elem in matrix.group(1).split(",")] == [1, 2, 3, 4]
Loading