Skip to content

Commit c406760

Browse files
committed
writing tests much fun
1 parent b12febd commit c406760

File tree

2 files changed

+56
-2
lines changed

2 files changed

+56
-2
lines changed

sentry_sdk/monitor.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@ class Monitor(object):
2020
name = "sentry.monitor"
2121

2222
def __init__(self, transport, interval=10):
23-
# type: (sentry_sdk.transport.Transport, int) -> None
23+
# type: (sentry_sdk.transport.Transport, float) -> None
2424
self.transport = transport # type: sentry_sdk.transport.Transport
25-
self.interval = interval # type: int
25+
self.interval = interval # type: float
2626

2727
self._healthy = True
2828
self._downsample_factor = 1 # type: int

tests/test_monitor.py

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
import pytest
2+
from time import sleep
3+
4+
from sentry_sdk import Hub
5+
from sentry_sdk.transport import Transport
6+
7+
8+
class HealthyTestTransport(Transport):
9+
def _send_event(self, event):
10+
pass
11+
12+
def _send_envelope(self, envelope):
13+
pass
14+
15+
def is_worker_full(self):
16+
return False
17+
18+
class UnhealthyTestTransport(HealthyTestTransport):
19+
def is_worker_full(self):
20+
return True
21+
22+
23+
def test_no_monitor_if_disabled(sentry_init):
24+
sentry_init(transport=HealthyTestTransport())
25+
assert Hub.current.client.monitor is None
26+
27+
28+
def test_monitor_if_enabled(sentry_init):
29+
sentry_init(transport=HealthyTestTransport(), _experiments={"enable_backpressure_handling": True})
30+
31+
monitor = Hub.current.client.monitor
32+
assert monitor is not None
33+
assert monitor._thread is None
34+
35+
assert monitor.is_healthy() is True
36+
assert monitor.downsample_factor() == 1
37+
assert monitor._thread is not None
38+
assert monitor._thread.name == "sentry.monitor"
39+
40+
41+
def test_monitor_unhealthy(sentry_init, monkeypatch):
42+
sentry_init(transport=UnhealthyTestTransport(), _experiments={"enable_backpressure_handling": True})
43+
44+
client = Hub.current.client
45+
transport = client.transport
46+
monitor = client.monitor
47+
monitor.interval = 0.1
48+
49+
assert monitor.is_healthy() is True
50+
sleep(0.1) # wait for monitor to run
51+
assert monitor.is_healthy() is False
52+
assert monitor.downsample_factor() == 2
53+
sleep(0.1) # wait for monitor to run
54+
assert monitor.downsample_factor() == 4

0 commit comments

Comments
 (0)