LOG: /home/naeel/fission/scripts/../test-results/2026-05-03_19-27-29.log >>> Предварительная очистка тест-namespace-ов... pre_cleanup.sh: тест-namespace-ы не найдены, пропускаем. ╔══════════════════════════════════════╗ ║ fission-console — полный тест-сьют ║ ╚══════════════════════════════════════╝ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ЗАПУСК: test_auth.sh ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ======================================== test_auth.sh run=60c056c8 ======================================== >>> POST /auth: пустой токен → 400 PASS: POST /auth пустой token → 400 (HTTP 400) >>> POST /auth: токен < 6 символов → 401 PASS: POST /auth токен 2 символа → 401 (HTTP 401) PASS: POST /auth токен 5 символов → 401 (HTTP 401) >>> POST /auth: токен ≥6 символов → 200 PASS: POST /auth валидный токен → 200 (HTTP 200) PASS: POST /auth namespace=fission-... PASS: POST /auth ok=true >>> POST /auth: невалидный JSON → 400 PASS: POST /auth невалидный JSON → 400 >>> POST /auth: GET метод → 405 PASS: GET /auth → 405 >>> X-Auth-Token: отсутствует → 401 PASS: GET /functions без токена → 401 (HTTP 401) >>> X-Auth-Token: токен < 6 символов → 401 PASS: GET /functions токен 2 символа → 401 (HTTP 401) PASS: GET /functions токен 5 символов → 401 (HTTP 401) >>> X-Auth-Token: токен ≥6 символов → 200 PASS: GET /functions валидный X-Auth-Token → 200 (HTTP 200) >>> Authorization: Bearer → 200 PASS: GET /functions Authorization: Bearer → 200 (HTTP 200) >>> Namespace детерминирован (одинаковый токен → одинаковый NS) PASS: Namespace детерминирован: fission-test-eefba24734b47f9a ======================================== ИТОГ: PASS=14 FAIL=0 ========================================  ✓ test_auth.sh — PASSED ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ЗАПУСК: test_functions_crud.sh ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ======================================== test_functions_crud.sh run=4389efa7 ======================================== >>> CREATE: базовый nodejs → 201 PASS: CREATE nodejs → 201 (HTTP 201) PASS: CREATE: name в ответе PASS: CREATE: route непустой PASS: CREATE: package непустой >>> CREATE: дубликат → 409 PASS: CREATE дубликат → 409 (HTTP 409) >>> CREATE: без name → 400 PASS: CREATE без name → 400 (HTTP 400) >>> CREATE: без language → 400 PASS: CREATE без language → 400 (HTTP 400) >>> CREATE: без code → 400 PASS: CREATE без code → 400 (HTTP 400) >>> CREATE: невалидный язык → 400 PASS: CREATE язык=cobol → 400 (HTTP 400) >>> CREATE: валидация имени PASS: CREATE имя с заглавной → 400 (HTTP 400) PASS: CREATE имя с ведущим дефисом → 400 (HTTP 400) PASS: CREATE имя с завершающим дефисом → 400 (HTTP 400) PASS: CREATE имя с пробелом → 400 (HTTP 400) PASS: CREATE имя 58 символов → 400 (HTTP 400) PASS: CREATE имя 57 символов → 201 (HTTP 201) >>> CREATE: код > 1MB → 400 или 413 PASS: CREATE код > 1MB → отклонён (400) >>> LIST: GET /functions → 200, массив PASS: LIST GET /functions → 200 (HTTP 200) PASS: LIST: содержит ≥1 функцию (создали выше) >>> LIST: новый пользователь → пустой массив PASS: LIST новый пользователь → 200 (HTTP 200) PASS: LIST новый пользователь → [] >>> GET: /functions/{name} → 200 PASS: GET /functions/t-crud-fn-4389efa7 → 200 (HTTP 200) PASS: GET: name совпадает PASS: GET: environment непустой (console-nodejs-env) >>> GET: несуществующая функция → 404 PASS: GET несуществующая → 404 (HTTP 404) >>> DELETE: /functions/{name} → 200 PASS: DELETE crud-fn → 200 (HTTP 200) PASS: DELETE: deleted=true >>> DELETE: повторное удаление → 404 PASS: DELETE повторное → 404 (HTTP 404) >>> GET: после DELETE → 404 PASS: GET после DELETE → 404 (HTTP 404) >>> DELETE: несуществующая функция → 404 PASS: DELETE несуществующая → 404 (HTTP 404) ======================================== ИТОГ: PASS=29 FAIL=0 ========================================  ✓ test_functions_crud.sh — PASSED ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ЗАПУСК: test_ttl.sh ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ======================================== test_ttl.sh run=41287101 ======================================== >>> CREATE без TTL → expires_at отсутствует PASS: CREATE без TTL: expires_at отсутствует >>> CREATE с TTL=15m → expires_at присутствует PASS: CREATE TTL=15m: expires_at=2026-05-03T15:43:08Z PASS: expires_at формат RFC3339 >>> CREATE с TTL=1h → expires_at присутствует PASS: CREATE TTL=1h: expires_at=2026-05-03T16:28:09Z >>> CREATE с TTL=2d → expires_at присутствует PASS: CREATE TTL=2d: expires_at=2026-05-05T15:28:10Z >>> CREATE TTL невалидный → 400 (без создания объектов) PASS: TTL='99z' → 400 PASS: TTL='abc' → 400 PASS: TTL='0d' → 400 PASS: TTL='-1h' → 400 >>> LIST: функция с TTL видна в списке PASS: LIST: видно ≥3 функции (2 с TTL, 1 без) ======================================== ИТОГ: PASS=10 FAIL=0 ========================================  ✓ test_ttl.sh — PASSED ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ЗАПУСК: test_isolation.sh ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ======================================== test_isolation.sh run=e51b5b24 ======================================== >>> Alice создаёт функцию PASS: Alice CREATE t-alice-fn → 201 (HTTP 201) >>> Bob GET t-alice-fn → 404 PASS: Bob GET t-alice-fn → 404 (HTTP 404) >>> Bob DELETE t-alice-fn → 404 PASS: Bob DELETE t-alice-fn → 404 (HTTP 404) >>> Bob PUT t-alice-fn/code → 404 PASS: Bob PUT t-alice-fn/code → 404 (HTTP 404) >>> Bob INVOKE t-alice-fn → 404 PASS: Bob INVOKE t-alice-fn → 404 (HTTP 404) >>> Alice GET t-alice-fn → 200 (не повреждена) PASS: Alice GET t-alice-fn → 200 (HTTP 200) >>> LIST изоляция: Alice и Bob видят только свои функции FAIL: Alice LIST не содержит t-alice-fn (count=1) PASS: Alice LIST не содержит t-bob-fn FAIL: Bob LIST не содержит t-bob-fn PASS: Bob LIST не содержит t-alice-fn >>> Route изоляция: одинаковое имя → разные routes PASS: Route изоляция: /3a28b708954b/t-alice-fn ≠ /cd66c0880a7a/t-bob-fn ======================================== ИТОГ: PASS=9 FAIL=2 ========================================  ✗ test_isolation.sh — FAILED (exit 1) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ЗАПУСК: test_update.sh ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ======================================== test_update.sh run=e557f2e3 ======================================== >>> CREATE: версия v1 PASS: CREATE v1 → 201 (HTTP 201) Ждём прогрева... TRY=1 fn=t-upd-fn-e557f2e3 status=404 raw=404 page not found err= TRY=2 fn=t-upd-fn-e557f2e3 status=404 raw=404 page not found err= TRY=3 fn=t-upd-fn-e557f2e3 status=404 raw=404 page not found err= TRY=4 fn=t-upd-fn-e557f2e3 status=404 raw=404 page not found err= TRY=5 fn=t-upd-fn-e557f2e3 status=404 raw=404 page not found err= TRY=6 fn=t-upd-fn-e557f2e3 status=404 raw=404 page not found err= TRY=7 fn=t-upd-fn-e557f2e3 status=404 raw=404 page not found err= TRY=8 fn=t-upd-fn-e557f2e3 status=404 raw=404 page not found err= TRY=9 fn=t-upd-fn-e557f2e3 status=404 raw=404 page not found err= TRY=10 fn=t-upd-fn-e557f2e3 status=404 raw=404 page not found err= TRY=11 fn=t-upd-fn-e557f2e3 status=404 raw=404 page not found err= TRY=12 fn=t-upd-fn-e557f2e3 status=404 raw=404 page not found err= FAIL: Invoke v1 не стабилизировался >>> PUT /code: версия v2 PASS: PUT /code v2 → 200 (HTTP 200) PASS: PUT /code: updated=true PASS: PUT /code: новый package=t-upd-fn-e557f2e3-pkg-mopxfjxq Ждём пока executor подхватит новый код... TRY=1 fn=t-upd-fn-e557f2e3 status=404 raw=404 page not found err= TRY=2 fn=t-upd-fn-e557f2e3 status=404 raw=404 page not found err= TRY=3 fn=t-upd-fn-e557f2e3 status=404 raw=404 page not found err= TRY=4 fn=t-upd-fn-e557f2e3 status=404 raw=404 page not found err= TRY=5 fn=t-upd-fn-e557f2e3 status=404 raw=404 page not found err= TRY=6 fn=t-upd-fn-e557f2e3 status=404 raw=404 page not found err= TRY=7 fn=t-upd-fn-e557f2e3 status=404 raw=404 page not found err= TRY=8 fn=t-upd-fn-e557f2e3 status=404 raw=404 page not found err= TRY=9 fn=t-upd-fn-e557f2e3 status=404 raw=404 page not found err= TRY=10 fn=t-upd-fn-e557f2e3 status=404 raw=404 page not found err= TRY=11 fn=t-upd-fn-e557f2e3 status=404 raw=404 page not found err= TRY=12 fn=t-upd-fn-e557f2e3 status=404 raw=404 page not found err= TRY=13 fn=t-upd-fn-e557f2e3 status=404 raw=404 page not found err= TRY=14 fn=t-upd-fn-e557f2e3 status=404 raw=404 page not found err= TRY=15 fn=t-upd-fn-e557f2e3 status=404 raw=404 page not found err= FAIL: Invoke после update не вернул version-two >>> PUT /code: пустой код → 400 PASS: PUT /code пустой код → 400 (HTTP 400) PASS: PUT /code пробельный код → 400 (HTTP 400) >>> PUT /code: несуществующая функция → 404 PASS: PUT /code несуществующая → 404 (HTTP 404) >>> PUT /code: версия v3 (цепочка) TRY=1 fn=t-upd-fn-e557f2e3 status=404 raw=404 page not found err= TRY=2 fn=t-upd-fn-e557f2e3 status=404 raw=404 page not found err= TRY=3 fn=t-upd-fn-e557f2e3 status=404 raw=404 page not found err= TRY=4 fn=t-upd-fn-e557f2e3 status=404 raw=404 page not found err= TRY=5 fn=t-upd-fn-e557f2e3 status=404 raw=404 page not found err= TRY=6 fn=t-upd-fn-e557f2e3 status=404 raw=404 page not found err= TRY=7 fn=t-upd-fn-e557f2e3 status=404 raw=404 page not found err= TRY=8 fn=t-upd-fn-e557f2e3 status=404 raw=404 page not found err= TRY=9 fn=t-upd-fn-e557f2e3 status=404 raw=404 page not found err= TRY=10 fn=t-upd-fn-e557f2e3 status=404 raw=404 page not found err= TRY=11 fn=t-upd-fn-e557f2e3 status=404 raw=404 page not found err= TRY=12 fn=t-upd-fn-e557f2e3 status=404 raw=404 page not found err= TRY=13 fn=t-upd-fn-e557f2e3 status=404 raw=404 page not found err= TRY=14 fn=t-upd-fn-e557f2e3 status=404 raw=404 page not found err= TRY=15 fn=t-upd-fn-e557f2e3 status=404 raw=404 page not found err= FAIL: Invoke после v3 update не стабилизировался ======================================== ИТОГ: PASS=7 FAIL=3 ========================================  ✗ test_update.sh — FAILED (exit 1) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ЗАПУСК: test_invoke.sh ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ======================================== test_invoke.sh run=b9f17c9f ======================================== >>> INVOKE несуществующей функции → 404 PASS: INVOKE несуществующей → 404 (HTTP 404) >>> NodeJS: create + invoke PASS: NodeJS CREATE → 201 (HTTP 201) TRY=1 fn=t-node-fn-b9f17c9f status=404 raw=404 page not found err= TRY=2 fn=t-node-fn-b9f17c9f status=404 raw=404 page not found err= TRY=3 fn=t-node-fn-b9f17c9f status=404 raw=404 page not found err= TRY=4 fn=t-node-fn-b9f17c9f status=404 raw=404 page not found err= TRY=5 fn=t-node-fn-b9f17c9f status=404 raw=404 page not found err= TRY=6 fn=t-node-fn-b9f17c9f status=404 raw=404 page not found err= TRY=7 fn=t-node-fn-b9f17c9f status=404 raw=404 page not found err= TRY=8 fn=t-node-fn-b9f17c9f status=404 raw=404 page not found err= TRY=9 fn=t-node-fn-b9f17c9f status=404 raw=404 page not found err= TRY=10 fn=t-node-fn-b9f17c9f status=404 raw=404 page not found err= TRY=11 fn=t-node-fn-b9f17c9f status=404 raw=404 page not found err= TRY=12 fn=t-node-fn-b9f17c9f status=404 raw=404 page not found err= FAIL: NodeJS invoke не стабилизировался за 60s FAIL: NodeJS второй invoke → status=404 >>> Python: create + invoke PASS: Python CREATE → 201 (HTTP 201) TRY=1 fn=t-py-fn-b9f17c9f status=404 raw=404 page not found err= TRY=2 fn=t-py-fn-b9f17c9f status=404 raw=404 page not found err= TRY=3 fn=t-py-fn-b9f17c9f status=404 raw=404 page not found err= TRY=4 fn=t-py-fn-b9f17c9f status=404 raw=404 page not found err= TRY=5 fn=t-py-fn-b9f17c9f status=404 raw=404 page not found err= TRY=6 fn=t-py-fn-b9f17c9f status=404 raw=404 page not found err= TRY=7 fn=t-py-fn-b9f17c9f status=404 raw=404 page not found err= TRY=8 fn=t-py-fn-b9f17c9f status=404 raw=404 page not found err= TRY=9 fn=t-py-fn-b9f17c9f status=404 raw=404 page not found err= TRY=10 fn=t-py-fn-b9f17c9f status=404 raw=404 page not found err= TRY=11 fn=t-py-fn-b9f17c9f status=404 raw=404 page not found err= TRY=12 fn=t-py-fn-b9f17c9f status=404 raw=404 page not found err= TRY=13 fn=t-py-fn-b9f17c9f status=404 raw=404 page not found err= TRY=14 fn=t-py-fn-b9f17c9f status=404 raw=404 page not found err= TRY=15 fn=t-py-fn-b9f17c9f status=404 raw=404 page not found err= FAIL: Python invoke не стабилизировался за 75s >>> Invoke response fields FAIL: invoke.status = 404 PASS: invoke.latency_ms = 1 ms PASS: invoke.response_raw непустой ======================================== ИТОГ: PASS=5 FAIL=4 ========================================  ✗ test_invoke.sh — FAILED (exit 1) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ЗАПУСК: test_linters.sh ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ === NODEJS === [PASS] N01 | nodejs | exp=ok got=True | ✅ Синтаксис корректен. [PASS] N02 | nodejs | exp=ok got=True | ✅ Синтаксис корректен. [PASS] N03 | nodejs | exp=fail got=False | :1 module.exports = function(ctx) { const x = @@@; }; [PASS] N04 | nodejs | exp=fail got=False | :1 module.exports = function(ctx) { SyntaxError: Unexpected [PASS] N05 | nodejs | exp=fail got=False | :1 const x = {a: 1,, b: 2}; ^ SyntaxError: Unexpected token ',' at wrapSa [PASS] N06 | nodejs | exp=fail got=False | :1 function foo( { return 1; } ^ SyntaxError: Unexpected number at === PYTHON === [PASS] P01 | python | exp=ok got=True | ✅ Синтаксис корректен. [PASS] P02 | python | exp=ok got=True | ✅ Синтаксис корректен. [PASS] P03 | python | exp=fail got=False | Sorry: IndentationError: expected an indented block after function definition on line 1 (fission-lin [PASS] P04 | python | exp=fail got=False | File "", line 2 x = @@@ ^ SyntaxError: invalid syntax [PASS] P05 | python | exp=fail got=False | File "", line 1 def main(data) ^ SyntaxError: expected ':' [PASS] P06 | python | exp=fail got=False | File "", line 2 def main( ^ SyntaxError: '(' was never closed === RUBY === [PASS] R01 | ruby | exp=ok got=True | ✅ Синтаксис корректен. [PASS] R02 | ruby | exp=ok got=True | ✅ Синтаксис корректен. [PASS] R03 | ruby | exp=fail got=False | ruby: :2: syntax error, unexpected {, expecting ')' (SyntaxError) { status: 200 } ^ [PASS] R04 | ruby | exp=fail got=False | ruby: :2: syntax error, unexpected local variable or method, expecting '}' (SyntaxError) { s [PASS] R05 | ruby | exp=fail got=False | ruby: :3: syntax error, unexpected `end', expecting ')' (SyntaxError) === PHP === [PASS] H01 | php | exp=ok got=True | ✅ Синтаксис корректен. [PASS] H02 | php | exp=ok got=True | ✅ Синтаксис корректен. [PASS] H03 | php | exp=fail got=False | PHP Parse error: syntax error, unexpected token "return" in on line 4 Errors parsing [PASS] H04 | php | exp=fail got=False | PHP Parse error: syntax error, unexpected token ";" in on line 2 Errors parsing [PASS] H05 | php | exp=fail got=False | PHP Parse error: syntax error, unexpected token "{", expecting variable in on line 2 Errors === GO === [PASS] G01 | go | exp=ok got=True | ✅ Синтаксис корректен. [PASS] G02 | go | exp=ok got=True | ✅ Синтаксис корректен. [PASS] G03 | go | exp=fail got=False | code.go:2:15: expected ')', found '{' (and 3 more errors) [PASS] G04 | go | exp=fail got=False | code.go:4:1: missing import path (and 1 more errors) [PASS] G05 | go | exp=fail got=False | code.go:3:10: expected operand, found 'ILLEGAL' (and 6 more errors) === ГРАНИЧНЫЕ === [PASS] E01 | nodejs | exp=fail got=False | Код пустой. [PASS] E02 | python | exp=fail got=False | File "", line 1 asd @@@ ^ SyntaxError: invalid syntax [PASS] E03 | ruby | exp=fail got=False | ruby: :1: syntax error, unexpected ';', expecting ')' (SyntaxError) def foo(;;; end ^ [PASS] E04 | php | exp=fail got=False | PHP Parse error: syntax error, unexpected end of file in on line 1 Errors parsing ======================== PASS=31 FAIL=0 ========================  ✓ test_linters.sh — PASSED ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ЗАПУСК: test_stress.sh ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ======================================== test_stress.sh run=d08a7e02 users=8 invoke_parallel=8 ======================================== >>> [1/3] 8 пользователей создают функции параллельно... PASS: Параллельный CREATE: все 8 пользователей → 201 >>> [2/3] Изоляция: каждый видит только свою функцию PASS: Изоляция: все 8 пользователей видят только свои функции >>> [3/3] 8 параллельных invoke для livetest@test.local Ждём прогрева 8 функций... прогрев функции 1/8: попытка 1/12... прогрев функции 1/8: попытка 2/12... прогрев функции 1/8: попытка 3/12... прогрев функции 1/8: попытка 4/12... прогрев функции 1/8: попытка 5/12... прогрев функции 1/8: попытка 6/12... прогрев функции 1/8: попытка 7/12... прогрев функции 1/8: попытка 8/12... прогрев функции 1/8: попытка 9/12... прогрев функции 1/8: попытка 10/12... прогрев функции 1/8: попытка 11/12... прогрев функции 1/8: попытка 12/12... функция 1/8 — готова прогрев функции 2/8: попытка 1/12... прогрев функции 2/8: попытка 2/12... прогрев функции 2/8: попытка 3/12... прогрев функции 2/8: попытка 4/12... прогрев функции 2/8: попытка 5/12... прогрев функции 2/8: попытка 6/12... прогрев функции 2/8: попытка 7/12... прогрев функции 2/8: попытка 8/12... прогрев функции 2/8: попытка 9/12... прогрев функции 2/8: попытка 10/12... прогрев функции 2/8: попытка 11/12... прогрев функции 2/8: попытка 12/12... функция 2/8 — готова прогрев функции 3/8: попытка 1/12... прогрев функции 3/8: попытка 2/12... прогрев функции 3/8: попытка 3/12... прогрев функции 3/8: попытка 4/12... прогрев функции 3/8: попытка 5/12... прогрев функции 3/8: попытка 6/12... прогрев функции 3/8: попытка 7/12... прогрев функции 3/8: попытка 8/12... прогрев функции 3/8: попытка 9/12... прогрев функции 3/8: попытка 10/12... прогрев функции 3/8: попытка 11/12... прогрев функции 3/8: попытка 12/12... функция 3/8 — готова прогрев функции 4/8: попытка 1/12... прогрев функции 4/8: попытка 2/12... прогрев функции 4/8: попытка 3/12... прогрев функции 4/8: попытка 4/12... прогрев функции 4/8: попытка 5/12... прогрев функции 4/8: попытка 6/12... прогрев функции 4/8: попытка 7/12... прогрев функции 4/8: попытка 8/12... прогрев функции 4/8: попытка 9/12... прогрев функции 4/8: попытка 10/12... прогрев функции 4/8: попытка 11/12... прогрев функции 4/8: попытка 12/12... функция 4/8 — готова прогрев функции 5/8: попытка 1/12... прогрев функции 5/8: попытка 2/12... прогрев функции 5/8: попытка 3/12... прогрев функции 5/8: попытка 4/12... прогрев функции 5/8: попытка 5/12... прогрев функции 5/8: попытка 6/12... прогрев функции 5/8: попытка 7/12... прогрев функции 5/8: попытка 8/12... прогрев функции 5/8: попытка 9/12... прогрев функции 5/8: попытка 10/12... прогрев функции 5/8: попытка 11/12... прогрев функции 5/8: попытка 12/12... функция 5/8 — готова прогрев функции 6/8: попытка 1/12... прогрев функции 6/8: попытка 2/12... прогрев функции 6/8: попытка 3/12... прогрев функции 6/8: попытка 4/12... прогрев функции 6/8: попытка 5/12... прогрев функции 6/8: попытка 6/12... прогрев функции 6/8: попытка 7/12... прогрев функции 6/8: попытка 8/12... прогрев функции 6/8: попытка 9/12... прогрев функции 6/8: попытка 10/12... прогрев функции 6/8: попытка 11/12... прогрев функции 6/8: попытка 12/12... функция 6/8 — готова прогрев функции 7/8: попытка 1/12... прогрев функции 7/8: попытка 2/12... прогрев функции 7/8: попытка 3/12... прогрев функции 7/8: попытка 4/12... прогрев функции 7/8: попытка 5/12... прогрев функции 7/8: попытка 6/12... прогрев функции 7/8: попытка 7/12... прогрев функции 7/8: попытка 8/12... прогрев функции 7/8: попытка 9/12... прогрев функции 7/8: попытка 10/12... прогрев функции 7/8: попытка 11/12... прогрев функции 7/8: попытка 12/12... функция 7/8 — готова прогрев функции 8/8: попытка 1/12... прогрев функции 8/8: попытка 2/12... прогрев функции 8/8: попытка 3/12... прогрев функции 8/8: попытка 4/12... прогрев функции 8/8: попытка 5/12... прогрев функции 8/8: попытка 6/12... прогрев функции 8/8: попытка 7/12... прогрев функции 8/8: попытка 8/12... прогрев функции 8/8: попытка 9/12... прогрев функции 8/8: попытка 10/12... прогрев функции 8/8: попытка 11/12... прогрев функции 8/8: попытка 12/12... функция 8/8 — готова FAIL: Параллельный INVOKE (livetest): 8/8 упали ======================================== ИТОГ: PASS=2 FAIL=1 ========================================  ✗ test_stress.sh — FAILED (exit 1) ╔══════════════════════════════════════╗ ║ Скриптов: PASS=4 FAIL=4 1224s ║ ╚══════════════════════════════════════╝ Упавшие скрипты: ✗ test_isolation.sh ✗ test_update.sh ✗ test_invoke.sh ✗ test_stress.sh