test: полный прогон POSTGRES example — changes, delete/recreate, new function

This commit is contained in:
Naeel
2026-03-19 18:45:18 +03:00
parent 8a8b815492
commit d87981713d
22 changed files with 959 additions and 53 deletions
@@ -36,6 +36,7 @@ exports.info = async (event) => {
node_version: process.version,
pg_version: versionRes.rows[0].v,
table_rows: parseInt(countRes.rows[0].cnt, 10),
code_version: 'v2-agent-test',
};
} finally {
await client.end();
@@ -0,0 +1,38 @@
# 2026-03-19
# pg_stats.py — тестовая функция (Test 7): возвращает агрегированную статистику
# по таблице terraform_demo_table: кол-во строк, дата первой и последней записи.
# Создаётся и удаляется в рамках тестового прогона.
#
# Entrypoint: pg_stats.get_stats
import os
import psycopg2
import json
_CODE_VERSION = "v1-test7"
def get_stats(event):
conn = psycopg2.connect(
host=os.environ["PGHOST"],
port=int(os.environ.get("PGPORT", "5432")),
dbname=os.environ["PGDATABASE"],
user=os.environ["PGUSER"],
password=os.environ["PGPASSWORD"],
sslmode=os.environ.get("PGSSLMODE", "require"),
)
try:
with conn.cursor() as cur:
cur.execute(
"SELECT COUNT(*) AS cnt, MIN(created_at) AS first, MAX(created_at) AS last "
"FROM terraform_demo_table"
)
row = cur.fetchone()
return {
"version": _CODE_VERSION,
"total_rows": row[0],
"first_row_at": str(row[1]) if row[1] else None,
"last_row_at": str(row[2]) if row[2] else None,
}
finally:
conn.close()
@@ -0,0 +1 @@
psycopg2-binary==2.9.9
+5 -2
View File
@@ -1,13 +1,16 @@
# 2026-03-19
# 2026-03-19 — добавлен version и hostname в ответ list_rows для тестирования обновления кода
# table_rw.py — чтение и запись строк в terraform_demo_table.
# Два entrypoint в одном файле: list_rows (JSON API) и add_row (HTML-страница + POST-обработчик).
# ENV: PGHOST, PGPORT, PGDATABASE, PGUSER, PGPASSWORD, PGSSLMODE
import os
import json
import socket
import psycopg2
import psycopg2.extras
_CODE_VERSION = "v2-with-hostname"
def _connect():
return psycopg2.connect(
@@ -29,7 +32,7 @@ def list_rows(event):
"SELECT id, title, created_at::text FROM terraform_demo_table ORDER BY created_at DESC"
)
rows = [dict(r) for r in cur.fetchall()]
return {"rows": rows, "count": len(rows)}
return {"rows": rows, "count": len(rows), "version": _CODE_VERSION, "host": socket.gethostname()}
finally:
conn.close()