add timestamp to log records

This commit is contained in:
Evgenii Alekseev 2022-11-21 17:59:06 +02:00
parent 718ff8dd50
commit 88535c2827
3 changed files with 21 additions and 20 deletions

View File

@ -21,6 +21,7 @@ from sqlite3 import Connection
from typing import List, Optional from typing import List, Optional
from ahriman.core.database.operations import Operations from ahriman.core.database.operations import Operations
from ahriman.core.util import pretty_datetime
from ahriman.models.log_record_id import LogRecordId from ahriman.models.log_record_id import LogRecordId
@ -41,10 +42,10 @@ class LogsOperations(Operations):
""" """
def run(connection: Connection) -> List[str]: def run(connection: Connection) -> List[str]:
return [ return [
row["record"] f"""[{pretty_datetime(row["created"])}] {row["record"]}"""
for row in connection.execute( for row in connection.execute(
""" """
select record from logs where package_base = :package_base select created, record from logs where package_base = :package_base
order by created asc order by created asc
""", """,
{"package_base": package_base}) {"package_base": package_base})

View File

@ -8,32 +8,32 @@ def test_logs_insert_remove_process(database: SQLite, package_ahriman: Package,
""" """
must clear process specific package logs must clear process specific package logs
""" """
database.logs_insert(LogRecordId(package_ahriman.base, 1), 0.001, "message 1") database.logs_insert(LogRecordId(package_ahriman.base, 1), 42.0, "message 1")
database.logs_insert(LogRecordId(package_ahriman.base, 2), 0.001, "message 2") database.logs_insert(LogRecordId(package_ahriman.base, 2), 43.0, "message 2")
database.logs_insert(LogRecordId(package_python_schedule.base, 1), 0.002, "message 3") database.logs_insert(LogRecordId(package_python_schedule.base, 1), 42.0, "message 3")
database.logs_remove(package_ahriman.base, 1) database.logs_remove(package_ahriman.base, 1)
assert database.logs_get(package_ahriman.base) == "message 1" assert database.logs_get(package_ahriman.base) == "[1970-01-01 00:00:42] message 1"
assert database.logs_get(package_python_schedule.base) == "message 3" assert database.logs_get(package_python_schedule.base) == "[1970-01-01 00:00:42] message 3"
def test_logs_insert_remove_full(database: SQLite, package_ahriman: Package, package_python_schedule: Package) -> None: def test_logs_insert_remove_full(database: SQLite, package_ahriman: Package, package_python_schedule: Package) -> None:
""" """
must clear full package logs must clear full package logs
""" """
database.logs_insert(LogRecordId(package_ahriman.base, 1), 0.001, "message 1") database.logs_insert(LogRecordId(package_ahriman.base, 1), 42.0, "message 1")
database.logs_insert(LogRecordId(package_ahriman.base, 2), 0.001, "message 2") database.logs_insert(LogRecordId(package_ahriman.base, 2), 43.0, "message 2")
database.logs_insert(LogRecordId(package_python_schedule.base, 1), 0.002, "message 3") database.logs_insert(LogRecordId(package_python_schedule.base, 1), 42.0, "message 3")
database.logs_remove(package_ahriman.base, None) database.logs_remove(package_ahriman.base, None)
assert not database.logs_get(package_ahriman.base) assert not database.logs_get(package_ahriman.base)
assert database.logs_get(package_python_schedule.base) == "message 3" assert database.logs_get(package_python_schedule.base) == "[1970-01-01 00:00:42] message 3"
def test_logs_insert_get(database: SQLite, package_ahriman: Package) -> None: def test_logs_insert_get(database: SQLite, package_ahriman: Package) -> None:
""" """
must insert and get package logs must insert and get package logs
""" """
database.logs_insert(LogRecordId(package_ahriman.base, 1), 0.002, "message 2") database.logs_insert(LogRecordId(package_ahriman.base, 1), 43.0, "message 2")
database.logs_insert(LogRecordId(package_ahriman.base, 1), 0.001, "message 1") database.logs_insert(LogRecordId(package_ahriman.base, 1), 42.0, "message 1")
assert database.logs_get(package_ahriman.base) == "message 1\nmessage 2" assert database.logs_get(package_ahriman.base) == "[1970-01-01 00:00:42] message 1\n[1970-01-01 00:00:43] message 2"

View File

@ -30,9 +30,9 @@ async def test_delete(client: TestClient, package_ahriman: Package, package_pyth
json={"status": BuildStatusEnum.Success.value, "package": package_python_schedule.view()}) json={"status": BuildStatusEnum.Success.value, "package": package_python_schedule.view()})
await client.post(f"/api/v1/packages/{package_ahriman.base}/logs", await client.post(f"/api/v1/packages/{package_ahriman.base}/logs",
json={"created": 0.001, "message": "message", "process_id": 42}) json={"created": 42.0, "message": "message", "process_id": 42})
await client.post(f"/api/v1/packages/{package_python_schedule.base}/logs", await client.post(f"/api/v1/packages/{package_python_schedule.base}/logs",
json={"created": 0.001, "message": "message", "process_id": 42}) json={"created": 42.0, "message": "message", "process_id": 42})
response = await client.delete(f"/api/v1/packages/{package_ahriman.base}/logs") response = await client.delete(f"/api/v1/packages/{package_ahriman.base}/logs")
assert response.status == 204 assert response.status == 204
@ -53,13 +53,13 @@ async def test_get(client: TestClient, package_ahriman: Package) -> None:
await client.post(f"/api/v1/packages/{package_ahriman.base}", await client.post(f"/api/v1/packages/{package_ahriman.base}",
json={"status": BuildStatusEnum.Success.value, "package": package_ahriman.view()}) json={"status": BuildStatusEnum.Success.value, "package": package_ahriman.view()})
await client.post(f"/api/v1/packages/{package_ahriman.base}/logs", await client.post(f"/api/v1/packages/{package_ahriman.base}/logs",
json={"created": 0.001, "message": "message", "process_id": 42}) json={"created": 42.0, "message": "message", "process_id": 42})
response = await client.get(f"/api/v1/packages/{package_ahriman.base}/logs") response = await client.get(f"/api/v1/packages/{package_ahriman.base}/logs")
assert response.status == 200 assert response.status == 200
logs = await response.json() logs = await response.json()
assert logs["logs"] == "message" assert logs["logs"] == "[1970-01-01 00:00:42] message"
async def test_get_not_foud(client: TestClient, package_ahriman: Package) -> None: async def test_get_not_foud(client: TestClient, package_ahriman: Package) -> None:
@ -78,12 +78,12 @@ async def test_post(client: TestClient, package_ahriman: Package) -> None:
json={"status": BuildStatusEnum.Success.value, "package": package_ahriman.view()}) json={"status": BuildStatusEnum.Success.value, "package": package_ahriman.view()})
post_response = await client.post(f"/api/v1/packages/{package_ahriman.base}/logs", post_response = await client.post(f"/api/v1/packages/{package_ahriman.base}/logs",
json={"created": 0.001, "message": "message", "process_id": 42}) json={"created": 42.0, "message": "message", "process_id": 42})
assert post_response.status == 204 assert post_response.status == 204
response = await client.get(f"/api/v1/packages/{package_ahriman.base}/logs") response = await client.get(f"/api/v1/packages/{package_ahriman.base}/logs")
logs = await response.json() logs = await response.json()
assert logs["logs"] == "message" assert logs["logs"] == "[1970-01-01 00:00:42] message"
async def test_post_exception(client: TestClient, package_ahriman: Package) -> None: async def test_post_exception(client: TestClient, package_ahriman: Package) -> None: