mirror of
https://github.com/arcan1s/ahriman.git
synced 2025-07-29 13:49:57 +00:00
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:
@ -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"
|
||||
|
@ -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:
|
||||
|
Reference in New Issue
Block a user