Skip to content

Testy: -n auto wg RAM-u przez plugin pytest-xdist-memory - #970

Draft
mpasternak wants to merge 2 commits into
playwright-workers-ramfrom
xdist-memory-plugin
Draft

mpasternak wants to merge 2 commits into
playwright-workers-ramfrom
xdist-memory-plugin

Conversation

@mpasternak

Copy link
Copy Markdown
Member

Draft, czeka na wydanie pytest-xdist-memory 0.1.0 na PyPI. Do tego czasu uv.lock nie zna pakietu i CI będzie czerwone. Po wydaniu: uv lock, commit uv.lock, zdjęcie draftu.

Bazuje na #969. Po jego scaleniu przestawić bazę na dev.

Co

bin/xdist_workers.py (osobny pomiar przez make xdist-measure + liczenie -n w Makefile) zastępuje plugin pytest-xdist-memory:

  • każdy przebieg make tests-* poza CI mierzy szczyt pamięci workera razem z poddrzewem procesów (Chromium, Daphne) i kontenerem PG. Kontener jest wskazywany po porcie z DJANGO_BPP_DB_PORT, bo nazwy testcontainers mają losowy sufiks, a równoległe worktree mają podobne;
  • szczyty trafiają do .pytest-xdist-memory.json (gitignored), osobno dla każdego wyrażenia -m;
  • -n auto bierze tyle workerów, ile mieści się w aktualnie wolnym RAM-ie. Profil nie wymaga już osobnego pomiaru i się nie starzeje.

Makefile:

  • XDIST_N / PLAYWRIGHT_WORKERS poza CI = auto + XDIST_MEMORY (--xdist-memory; dla Playwrighta --xdist-memory-performance-cores i 1900 MB na workera przed pierwszym pomiarem). CI bez zmian;
  • strażnik systemd-run MemoryMax przeniesiony do bin/memory_guard.sh. Bez niego (macOS) włącza się watchdog pluginu;
  • usunięte targety xdist-measure / xdist-calc (-playwright).

Weryfikacja (thinkpad14s, lokalnie z pluginem z checkoutu)

Polecenia jak z Makefile'a, na próbkach:

  • -m "not playwright" (test_models + test_admin): 1384 passed; -n auto z wartości domyślnych → 3 workery; zmierzone: worker 457 MB, PG 159 MB na workera → następne -n auto = 4;
  • -m playwright (integration_tests + test_playwright/test_admin): 150 passed; worker 1560 MB, PG 971 MB na workera (przy 1 workerze cały kontener przypada na niego, więc wartość jest ostrożna).
  • CI=1 make -n … → bez pluginu i bez guarda, jak dotąd.

🤖 Generated with Claude Code

mpasternak and others added 2 commits November 6, 2026 21:01
bin/xdist_workers.py (osobny pomiar `make xdist-measure` + liczenie -n
w Makefile) zastępuje plugin pytest-xdist-memory: każdy przebieg
`make tests-*` poza CI mierzy szczyt pamięci workera (poddrzewo procesów:
Chromium, Daphne; kontener PG po porcie z DJANGO_BPP_DB_PORT), zapisuje
go w .pytest-xdist-memory.json osobno dla każdego `-m`, a `-n auto`
bierze tyle workerów, ile mieści się w wolnym RAM-ie.

- XDIST_N / PLAYWRIGHT_WORKERS poza CI = auto + XDIST_MEMORY
  (`--xdist-memory`, dla Playwrighta limit do rdzeni wydajnościowych
  i domyślnie 1900 MB/worker przed pierwszym pomiarem);
- strażnik systemd-run przeniesiony do bin/memory_guard.sh; bez niego
  (macOS) włączany jest watchdog pluginu;
- usunięte targety xdist-measure/xdist-calc(-playwright).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant