Files
fission-console/test-results/2026-05-03_15-47-34.log

385 lines
16 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
LOG: /home/naeel/terra/fission/scripts/../test-results/2026-05-03_15-47-34.log
>>> Предварительная очистка тест-namespace-ов...
pre_cleanup.sh: тест-namespace-ы не найдены, пропускаем.
╔══════════════════════════════════════╗
║ fission-console — полный тест-сьют ║
╚══════════════════════════════════════╝
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ЗАПУСК: test_auth.sh
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
========================================
test_auth.sh run=ec11c644
========================================
>>> 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-b9441cd4ddb76388
========================================
ИТОГ: PASS=14 FAIL=0
========================================
 ✓ test_auth.sh — PASSED
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ЗАПУСК: test_functions_crud.sh
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
========================================
test_functions_crud.sh run=470cbd90
========================================
>>> 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 → отклонён (000)
>>> 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/crud-fn-470cbd90 → 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=053caa8e
========================================
>>> CREATE без TTL → expires_at отсутствует
PASS: CREATE без TTL: expires_at отсутствует
>>> CREATE с TTL=15m → expires_at присутствует
PASS: CREATE TTL=15m: expires_at=2026-05-03T13:03:42Z
PASS: expires_at формат RFC3339
>>> CREATE с TTL=1h → expires_at присутствует
PASS: CREATE TTL=1h: expires_at=2026-05-03T13:48:45Z
>>> CREATE с TTL=2d → expires_at присутствует
PASS: CREATE TTL=2d: expires_at=2026-05-05T12:48:48Z
>>> 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=2f150449
========================================
>>> Alice создаёт функцию
PASS: Alice CREATE alice-fn → 201 (HTTP 201)
>>> Bob GET alice-fn → 404
PASS: Bob GET alice-fn → 404 (HTTP 404)
>>> Bob DELETE alice-fn → 404
PASS: Bob DELETE alice-fn → 404 (HTTP 404)
>>> Bob PUT alice-fn/code → 404
PASS: Bob PUT alice-fn/code → 404 (HTTP 404)
>>> Bob INVOKE alice-fn → 404
PASS: Bob INVOKE alice-fn → 404 (HTTP 404)
>>> Alice GET alice-fn → 200 (не повреждена)
PASS: Alice GET alice-fn → 200 (HTTP 200)
>>> LIST изоляция: Alice и Bob видят только свои функции
PASS: Alice LIST содержит alice-fn
PASS: Alice LIST не содержит bob-fn
PASS: Bob LIST содержит bob-fn
PASS: Bob LIST не содержит alice-fn
>>> Route изоляция: одинаковое имя → разные routes
PASS: Route изоляция: /1fb06339c2b5/alice-fn ≠ /9073d18c6d33/bob-fn
========================================
ИТОГ: PASS=11 FAIL=0
========================================
 ✓ test_isolation.sh — PASSED
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ЗАПУСК: test_update.sh
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
========================================
test_update.sh run=0fcd0348
========================================
>>> CREATE: версия v1
PASS: CREATE v1 → 201 (HTTP 201)
Ждём прогрева...
TRY=1 fn=upd-fn-0fcd0348 status=200 raw=version-one err=
PASS: Invoke v1 → version-one
>>> PUT /code: версия v2
PASS: PUT /code v2 → 200 (HTTP 200)
PASS: PUT /code: updated=true
PASS: PUT /code: новый package=upd-fn-0fcd0348-pkg-moprpbdk
Ждём пока executor подхватит новый код...
TRY=1 fn=upd-fn-0fcd0348 status=200 raw=version-two err=
PASS: 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=upd-fn-0fcd0348 status=200 raw=version-three err=
PASS: Invoke после v3 update → version-three
========================================
ИТОГ: PASS=10 FAIL=0
========================================
 ✓ test_update.sh — PASSED
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ЗАПУСК: test_invoke.sh
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
========================================
test_invoke.sh run=f70fc571
========================================
>>> INVOKE несуществующей функции → 404
PASS: INVOKE несуществующей → 404 (HTTP 404)
>>> NodeJS: create + invoke
PASS: NodeJS CREATE → 201 (HTTP 201)
TRY=1 fn=node-fn-f70fc571 status=200 raw=node-invoke-ok err=
PASS: NodeJS invoke → 200, тело содержит node-invoke-ok
PASS: NodeJS второй invoke → 200 (warm)
>>> Python: create + invoke
PASS: Python CREATE → 201 (HTTP 201)
TRY=1 fn=py-fn-f70fc571 status=200 raw=py-invoke-ok err=
PASS: Python invoke → 200, тело содержит py-invoke-ok
>>> Invoke response fields
PASS: invoke.status = 200
PASS: invoke.latency_ms = 9 ms
PASS: invoke.response_raw непустой
========================================
ИТОГ: PASS=9 FAIL=0
========================================
 ✓ test_invoke.sh — PASSED
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ЗАПУСК: 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 | <code>:1
module.exports = function(ctx) { const x = @@@; };
[PASS] N04 | nodejs | exp=fail got=False | <code>:1
module.exports = function(ctx) {
SyntaxError: Unexpected
[PASS] N05 | nodejs | exp=fail got=False | <code>:1
const x = {a: 1,, b: 2};
^
SyntaxError: Unexpected token ','
at wrapSa
[PASS] N06 | nodejs | exp=fail got=False | <code>: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 "<code>", line 2
x = @@@
^
SyntaxError: invalid syntax
[PASS] P05 | python | exp=fail got=False | File "<code>", line 1
def main(data)
^
SyntaxError: expected ':'
[PASS] P06 | python | exp=fail got=False | File "<code>", 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: <code>:2: syntax error, unexpected {, expecting ')' (SyntaxError)
{ status: 200 }
^
[PASS] R04 | ruby | exp=fail got=False | ruby: <code>:2: syntax error, unexpected local variable or method, expecting '}' (SyntaxError)
{ s
[PASS] R05 | ruby | exp=fail got=False | ruby: <code>: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 <code> on line 4
Errors parsing <code>
[PASS] H04 | php | exp=fail got=False | PHP Parse error: syntax error, unexpected token ";" in <code> on line 2
Errors parsing <code>
[PASS] H05 | php | exp=fail got=False | PHP Parse error: syntax error, unexpected token "{", expecting variable in <code> 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 "<code>", line 1
asd @@@
^
SyntaxError: invalid syntax
[PASS] E03 | ruby | exp=fail got=False | ruby: <code>: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 <code> on line 1
Errors parsing <code>
========================
PASS=31 FAIL=0
========================
 ✓ test_linters.sh — PASSED
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ЗАПУСК: test_stress.sh
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
========================================
test_stress.sh run=dc4bc594 users=8 invoke_parallel=8
========================================
>>> [1/3] 8 пользователей создают функции параллельно...
PASS: Параллельный CREATE: все 8 пользователей → 201
>>> [2/3] Изоляция: каждый видит только свою функцию
PASS: Изоляция: все 8 пользователей видят только свои функции
>>> [3/3] 8 параллельных invoke для livetest@test.local
Ждём прогрева 8 функций...
PASS: Параллельный INVOKE (livetest): 7/8 OK
========================================
ИТОГ: PASS=3 FAIL=0
========================================