mirror of
https://github.com/arcan1s/ahriman.git
synced 2025-04-24 07:17:17 +00:00
generate process identifier for child proocesses
This commit is contained in:
parent
631e572d60
commit
d986db8926
@ -19,12 +19,14 @@
|
||||
#
|
||||
import atexit
|
||||
import logging
|
||||
import uuid
|
||||
|
||||
from typing import Self
|
||||
|
||||
from ahriman.core.configuration import Configuration
|
||||
from ahriman.core.status import Client
|
||||
from ahriman.models.log_record import LogRecord
|
||||
from ahriman.models.log_record_id import LogRecordId
|
||||
from ahriman.models.repository_id import RepositoryId
|
||||
|
||||
|
||||
@ -80,6 +82,7 @@ class HttpLogHandler(logging.Handler):
|
||||
handler = cls(repository_id, configuration, report=report, suppress_errors=suppress_errors)
|
||||
root.addHandler(handler)
|
||||
|
||||
LogRecordId.DEFAULT_PROCESS_ID = str(uuid.uuid4()) # assign default process identifier for log records
|
||||
atexit.register(handler.rotate)
|
||||
|
||||
return handler
|
||||
|
@ -19,7 +19,8 @@
|
||||
#
|
||||
import uuid
|
||||
|
||||
from dataclasses import dataclass, field
|
||||
from dataclasses import dataclass
|
||||
from typing import ClassVar
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
@ -28,6 +29,7 @@ class LogRecordId:
|
||||
log record process identifier
|
||||
|
||||
Attributes:
|
||||
DEFAULT_PROCESS_ID(str): (class attribute) default process identifier
|
||||
package_base(str): package base for which log record belongs
|
||||
version(str): package version for which log record belongs
|
||||
process_id(str, optional): unique process identifier
|
||||
@ -35,7 +37,13 @@ class LogRecordId:
|
||||
|
||||
package_base: str
|
||||
version: str
|
||||
process_id: str = ""
|
||||
|
||||
# this is not mistake, this value is kind of global identifier, which is generated
|
||||
# upon the process start
|
||||
process_id: str = field(default=str(uuid.uuid4()))
|
||||
DEFAULT_PROCESS_ID: ClassVar[str] = str(uuid.uuid4())
|
||||
|
||||
def __post_init__(self) -> None:
|
||||
"""
|
||||
assign process identifier from default if not set
|
||||
"""
|
||||
if not self.process_id:
|
||||
object.__setattr__(self, "process_id", self.DEFAULT_PROCESS_ID)
|
||||
|
@ -603,7 +603,7 @@ def test_package_logs_add(web_client: WebClient, log_record: logging.LogRecord,
|
||||
payload = {
|
||||
"created": log_record.created,
|
||||
"message": log_record.getMessage(),
|
||||
"process_id": LogRecordId.process_id,
|
||||
"process_id": LogRecordId.DEFAULT_PROCESS_ID,
|
||||
"version": package_ahriman.version,
|
||||
}
|
||||
record = LogRecord(LogRecordId(package_ahriman.base, package_ahriman.version),
|
||||
@ -650,7 +650,7 @@ def test_package_logs_get(web_client: WebClient, package_ahriman: Package, mocke
|
||||
"created": 42.0,
|
||||
"message": "log",
|
||||
"version": package_ahriman.version,
|
||||
"process_id": LogRecordId.process_id,
|
||||
"process_id": LogRecordId.DEFAULT_PROCESS_ID,
|
||||
}
|
||||
response_obj = requests.Response()
|
||||
response_obj._content = json.dumps([message]).encode("utf8")
|
||||
|
@ -0,0 +1,9 @@
|
||||
from ahriman.models.log_record_id import LogRecordId
|
||||
|
||||
|
||||
def test_init() -> None:
|
||||
"""
|
||||
must correctly assign proces identifier if not set
|
||||
"""
|
||||
assert LogRecordId("1", "2").process_id == LogRecordId.DEFAULT_PROCESS_ID
|
||||
assert LogRecordId("1", "2", "3").process_id == "3"
|
@ -50,13 +50,13 @@ async def test_get(client: TestClient, package_ahriman: Package) -> None:
|
||||
"created": 42.0,
|
||||
"message": "message 1",
|
||||
"version": "42",
|
||||
"process_id": LogRecordId.process_id,
|
||||
"process_id": LogRecordId.DEFAULT_PROCESS_ID,
|
||||
},
|
||||
{
|
||||
"created": 43.0,
|
||||
"message": "message 2",
|
||||
"version": "42",
|
||||
"process_id": LogRecordId.process_id,
|
||||
"process_id": LogRecordId.DEFAULT_PROCESS_ID,
|
||||
},
|
||||
]
|
||||
|
||||
@ -81,7 +81,9 @@ async def test_get_with_pagination(client: TestClient, package_ahriman: Package)
|
||||
|
||||
logs = await response.json()
|
||||
assert not response_schema.validate(logs)
|
||||
assert logs == [{"created": 42.0, "message": "message 1", "version": "42", "process_id": LogRecordId.process_id}]
|
||||
assert logs == [
|
||||
{"created": 42.0, "message": "message 1", "version": "42", "process_id": LogRecordId.DEFAULT_PROCESS_ID},
|
||||
]
|
||||
|
||||
|
||||
async def test_get_bad_request(client: TestClient, package_ahriman: Package) -> None:
|
||||
|
Loading…
Reference in New Issue
Block a user