test: полный прогон POSTGRES example — changes, delete/recreate, new function
This commit is contained in:
@@ -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
|
||||
@@ -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()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user