Merge branch 'more-debug-messages' into 'master'

Ajout de messages de debug

See merge request Neutrinet/matrix-alertbot!16
This commit is contained in:
HgO 2024-11-03 13:37:57 +00:00
commit 313795d050
5 changed files with 97 additions and 19 deletions

View file

@ -4,6 +4,14 @@ import logging
import re
from diskcache import Cache
from nio import (
AccountDataEvent,
EphemeralEvent,
Event,
PresenceEvent,
Response,
ToDeviceEvent,
)
from nio.client import AsyncClient
from nio.events import (
InviteMemberEvent,
@ -525,3 +533,38 @@ class Callbacks:
raise SendRetryError(
f"{response_event.status_code} - {response_event.message}"
)
async def debug_room_event(self, room: MatrixRoom, event: Event):
logger.debug(
f"Bot {self.matrix_client.user_id} | Room ID {room.room_id} | {type(event).__name__} | Event ID {event.event_id} | Received room event: {event.source}"
)
async def debug_presence(self, event: PresenceEvent):
logger.debug(
f"Bot {self.matrix_client.user_id} | User ID {event.user_id} | Received presence event: {event.presence}"
)
async def debug_ephemeral(self, room: MatrixRoom, event: EphemeralEvent):
logger.debug(
f"Bot {self.matrix_client.user_id} | Room ID {room.room_id} | {type(event).__name__} | Received ephemeral event: {event}"
)
async def debug_account_data(self, event: AccountDataEvent):
logger.debug(
f"Bot {self.matrix_client.user_id} | {type(event).__name__} | Received account data event: {event}"
)
async def debug_room_account_data(self, room: MatrixRoom, event: AccountDataEvent):
logger.debug(
f"Bot {self.matrix_client.user_id} | Room ID {room.room_id} | {type(event).__name__} | Received room account data event: {event}"
)
async def debug_to_device(self, event: ToDeviceEvent):
logger.debug(
f"Bot {self.matrix_client.user_id} | {type(event).__name__} | Sender {event.sender} | Received to device event: {event.source}"
)
async def debug_response(self, response: Response):
logger.debug(
f"Bot {self.matrix_client.user_id} | {type(response).__name__} | Received response: {response}"
)

View file

@ -10,7 +10,16 @@ from typing import Dict, List, Optional, Tuple
from aiohttp import ClientConnectionError, ServerDisconnectedError
from diskcache import Cache
from nio import RoomPreset, RoomVisibility
from nio import (
AccountDataEvent,
EphemeralEvent,
Event,
PresenceEvent,
Response,
RoomPreset,
RoomVisibility,
ToDeviceEvent,
)
from nio.client import AsyncClient, AsyncClientConfig
from nio.events import (
InviteMemberEvent,
@ -179,6 +188,21 @@ class MatrixClientPool:
matrix_client.add_to_device_callback(
callbacks.key_verification_end, (KeyVerificationMac,)
)
matrix_client.add_event_callback(callbacks.debug_room_event, (Event,))
matrix_client.add_presence_callback(callbacks.debug_presence, (PresenceEvent,))
matrix_client.add_ephemeral_callback(
callbacks.debug_ephemeral, (EphemeralEvent,)
)
matrix_client.add_global_account_data_callback(
callbacks.debug_account_data, (AccountDataEvent,)
)
matrix_client.add_room_account_data_callback(
callbacks.debug_room_account_data, (AccountDataEvent,)
)
matrix_client.add_to_device_callback(
callbacks.debug_to_device, (ToDeviceEvent,)
)
matrix_client.add_response_callback(callbacks.debug_response, (Response,))
return matrix_client

View file

@ -118,24 +118,27 @@ async def create_alerts(request: web_request.Request) -> web.Response:
body=f"An error occured with Alertmanager when handling alert with fingerprint {alert.fingerprint}.",
)
except (SendRetryError, LocalProtocolError, ClientError) as e:
logger.error(
f"Unable to send alert {alert.fingerprint} to Matrix room {room_id}: {e}"
logger.exception(
f"Unable to send alert {alert.fingerprint} to Matrix room {room_id}",
exc_info=e,
)
return web.Response(
status=500,
body=f"An error occured when sending alert with fingerprint '{alert.fingerprint}' to Matrix room.",
)
except MatrixClientError as e:
logger.error(
f"Unable to send alert {alert.fingerprint} to Matrix room {room_id}: {e}"
logger.exception(
f"Unable to send alert {alert.fingerprint} to Matrix room {room_id}",
exc_info=e,
)
return web.Response(
status=500,
body=f"An error occured when sending alert with fingerprint '{alert.fingerprint}' to Matrix room.",
)
except Exception as e:
logger.error(
f"Unable to send alert {alert.fingerprint} to Matrix room {room_id}: {e}"
logger.exception(
f"Unable to send alert {alert.fingerprint} to Matrix room {room_id}",
exc_info=e,
)
return web.Response(
status=500,
@ -201,6 +204,9 @@ async def create_alert(
event = await send_text_to_room(
matrix_client_pool.matrix_client, room_id, plaintext, html, notice=False
)
logger.info(
f"Sent alert {alert.fingerprint} to room {room_id} with event ID {event.event_id}"
)
else:
raise MatrixClientError("No matrix client available")

View file

@ -304,8 +304,8 @@ class MatrixClientPoolTestCase(unittest.IsolatedAsyncioTestCase):
self.fake_account_config_1.homeserver_url, matrix_client_1.homeserver
)
self.assertEqual(self.fake_config.store_dir, matrix_client_1.store_path)
self.assertEqual(6, len(matrix_client_1.event_callbacks))
self.assertEqual(4, len(matrix_client_1.to_device_callbacks))
self.assertEqual(7, len(matrix_client_1.event_callbacks))
self.assertEqual(5, len(matrix_client_1.to_device_callbacks))
fake_async_client_config.assert_has_calls(
[
@ -348,8 +348,8 @@ class MatrixClientPoolTestCase(unittest.IsolatedAsyncioTestCase):
self.fake_account_config_1.homeserver_url, matrix_client_1.homeserver
)
self.assertEqual(self.fake_config.store_dir, matrix_client_1.store_path)
self.assertEqual(6, len(matrix_client_1.event_callbacks))
self.assertEqual(4, len(matrix_client_1.to_device_callbacks))
self.assertEqual(7, len(matrix_client_1.event_callbacks))
self.assertEqual(5, len(matrix_client_1.to_device_callbacks))
self.assertEqual(5, matrix_client_1.config.max_limit_exceeded)
self.assertEqual(3, matrix_client_1.config.max_timeouts)
self.assertTrue(matrix_client_1.config.store_sync_tokens)

View file

@ -159,7 +159,8 @@ class WebhookApplicationTestCase(aiohttp.test_utils.AioHTTPTestCase):
"some description2",
notice=False,
),
]
],
any_order=True,
)
self.fake_cache.set.assert_called_once_with(
fake_send_text_to_room.return_value.event_id,
@ -209,7 +210,8 @@ class WebhookApplicationTestCase(aiohttp.test_utils.AioHTTPTestCase):
"some description2",
notice=False,
),
]
],
any_order=True,
)
self.fake_cache.set.assert_called_once_with(
fake_send_text_to_room.return_value.event_id,
@ -450,8 +452,9 @@ class WebhookApplicationTestCase(aiohttp.test_utils.AioHTTPTestCase):
self.fake_cache.set.assert_not_called()
self.fake_cache.delete.assert_called_once_with("fingerprint1")
fake_logger.error.assert_called_once_with(
"Unable to send alert fingerprint1 to Matrix room !abcdefg:example.com: Local protocol error"
fake_logger.exception.assert_called_once_with(
"Unable to send alert fingerprint1 to Matrix room !abcdefg:example.com",
exc_info=fake_send_text_to_room.side_effect,
)
@patch.object(matrix_alertbot.webhook, "logger", autospec=True)
@ -480,8 +483,9 @@ class WebhookApplicationTestCase(aiohttp.test_utils.AioHTTPTestCase):
)
fake_create_alert.assert_called_once()
fake_logger.error.assert_called_once_with(
"Unable to send alert fingerprint1 to Matrix room !abcdefg:example.com: Matrix client error"
fake_logger.exception.assert_called_once_with(
"Unable to send alert fingerprint1 to Matrix room !abcdefg:example.com",
exc_info=fake_create_alert.side_effect,
)
@patch.object(matrix_alertbot.webhook, "logger", autospec=True)
@ -512,8 +516,9 @@ class WebhookApplicationTestCase(aiohttp.test_utils.AioHTTPTestCase):
self.fake_cache.set.assert_not_called()
self.fake_cache.delete.assert_called_once_with("fingerprint1")
fake_logger.error.assert_called_once_with(
"Unable to send alert fingerprint1 to Matrix room !abcdefg:example.com: Exception"
fake_logger.exception.assert_called_once_with(
"Unable to send alert fingerprint1 to Matrix room !abcdefg:example.com",
exc_info=fake_send_text_to_room.side_effect,
)
async def test_create_alert_update_silence(self) -> None: