handle process id during removal

During one process we can write logs from different packages in
different times (e.g. check and update laster) and we would like
to store all logs belong to the same process
This commit is contained in:
2022-11-20 12:37:51 +02:00
parent 12f6bb0aaf
commit e22e57bf08
6 changed files with 71 additions and 43 deletions

View File

@ -1,23 +1,39 @@
from ahriman.core.database import SQLite
from ahriman.models.log_record_id import LogRecordId
from ahriman.models.package import Package
def test_logs_insert_delete(database: SQLite, package_ahriman: Package, package_python_schedule: Package) -> None:
def test_logs_insert_remove_process(database: SQLite, package_ahriman: Package,
package_python_schedule: Package) -> None:
"""
must clear all packages
must clear process specific package logs
"""
database.logs_insert(package_ahriman.base, 0.001, "message 1")
database.logs_insert(package_python_schedule.base, 0.002, "message 2")
database.logs_insert(LogRecordId(package_ahriman.base, 1), 0.001, "message 1")
database.logs_insert(LogRecordId(package_ahriman.base, 2), 0.001, "message 2")
database.logs_insert(LogRecordId(package_python_schedule.base, 1), 0.002, "message 3")
database.logs_delete(package_ahriman.base)
database.logs_remove(package_ahriman.base, 1)
assert database.logs_get(package_ahriman.base) == "message 1"
assert database.logs_get(package_python_schedule.base) == "message 3"
def test_logs_insert_remove_full(database: SQLite, package_ahriman: Package, package_python_schedule: Package) -> None:
"""
must clear full package logs
"""
database.logs_insert(LogRecordId(package_ahriman.base, 1), 0.001, "message 1")
database.logs_insert(LogRecordId(package_ahriman.base, 2), 0.001, "message 2")
database.logs_insert(LogRecordId(package_python_schedule.base, 1), 0.002, "message 3")
database.logs_remove(package_ahriman.base, None)
assert not database.logs_get(package_ahriman.base)
assert database.logs_get(package_python_schedule.base)
assert database.logs_get(package_python_schedule.base) == "message 3"
def test_logs_insert_get(database: SQLite, package_ahriman: Package) -> None:
"""
must insert and get package logs
"""
database.logs_insert(package_ahriman.base, 0.002, "message 2")
database.logs_insert(package_ahriman.base, 0.001, "message 1")
database.logs_insert(LogRecordId(package_ahriman.base, 1), 0.002, "message 2")
database.logs_insert(LogRecordId(package_ahriman.base, 1), 0.001, "message 1")
assert database.logs_get(package_ahriman.base) == "message 1\nmessage 2"

View File

@ -83,20 +83,22 @@ def test_remove(watcher: Watcher, package_ahriman: Package, mocker: MockerFixtur
must remove package base
"""
cache_mock = mocker.patch("ahriman.core.database.SQLite.package_remove")
logs_mock = mocker.patch("ahriman.core.status.watcher.Watcher.remove_logs")
watcher.known = {package_ahriman.base: (package_ahriman, BuildStatus())}
watcher.remove(package_ahriman.base)
assert not watcher.known
cache_mock.assert_called_once_with(package_ahriman.base)
logs_mock.assert_called_once_with(package_ahriman.base, None)
def test_remove_logs(watcher: Watcher, package_ahriman: Package, mocker: MockerFixture) -> None:
"""
must remove package logs
"""
logs_mock = mocker.patch("ahriman.core.database.SQLite.logs_delete")
watcher.remove_logs(package_ahriman.base)
logs_mock.assert_called_once_with(package_ahriman.base)
logs_mock = mocker.patch("ahriman.core.database.SQLite.logs_remove")
watcher.remove_logs(package_ahriman.base, 42)
logs_mock.assert_called_once_with(package_ahriman.base, 42)
def test_remove_unknown(watcher: Watcher, package_ahriman: Package, mocker: MockerFixture) -> None:
@ -148,15 +150,15 @@ def test_update_logs_new(watcher: Watcher, package_ahriman: Package, mocker: Moc
"""
must create package logs record for new package
"""
delete_mock = mocker.patch("ahriman.core.database.SQLite.logs_delete")
delete_mock = mocker.patch("ahriman.core.status.watcher.Watcher.remove_logs")
insert_mock = mocker.patch("ahriman.core.database.SQLite.logs_insert")
log_record_id = LogRecordId(package_ahriman.base, watcher._last_log_record_id.process_id)
assert watcher._last_log_record_id != log_record_id
watcher.update_logs(log_record_id, 42.01, "log record")
delete_mock.assert_called_once_with(package_ahriman.base)
insert_mock.assert_called_once_with(package_ahriman.base, 42.01, "log record")
delete_mock.assert_called_once_with(package_ahriman.base, log_record_id.process_id)
insert_mock.assert_called_once_with(log_record_id, 42.01, "log record")
assert watcher._last_log_record_id == log_record_id
@ -165,7 +167,7 @@ def test_update_logs_update(watcher: Watcher, package_ahriman: Package, mocker:
"""
must create package logs record for current package
"""
delete_mock = mocker.patch("ahriman.core.database.SQLite.logs_delete")
delete_mock = mocker.patch("ahriman.core.status.watcher.Watcher.remove_logs")
insert_mock = mocker.patch("ahriman.core.database.SQLite.logs_insert")
log_record_id = LogRecordId(package_ahriman.base, watcher._last_log_record_id.process_id)
@ -173,7 +175,7 @@ def test_update_logs_update(watcher: Watcher, package_ahriman: Package, mocker:
watcher.update_logs(log_record_id, 42.01, "log record")
delete_mock.assert_not_called()
insert_mock.assert_called_once_with(package_ahriman.base, 42.01, "log record")
insert_mock.assert_called_once_with(log_record_id, 42.01, "log record")
def test_update_self(watcher: Watcher) -> None: