Skip to content

Commit 4589468

Browse files
committed
[fix] Fixed batch writing historical data for metrics #666
Related to #666
1 parent 2494ee2 commit 4589468

File tree

3 files changed

+22
-2
lines changed

3 files changed

+22
-2
lines changed

openwisp_monitoring/monitoring/base/models.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -449,6 +449,7 @@ def write(
449449
database=database,
450450
retention_policy=retention_policy,
451451
current=current,
452+
metric=self,
452453
)
453454
# check can be disabled,
454455
# mostly for automated testing and debugging purposes
@@ -459,7 +460,6 @@ def write(
459460
"retention_policy": retention_policy,
460461
"send_alert": send_alert,
461462
}
462-
options["metric"] = self
463463

464464
# if alert_on_related_field then check threshold
465465
# on the related_field instead of field_name

openwisp_monitoring/monitoring/tasks.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
from .signals import post_metric_write
1111

1212

13-
def _metric_post_write(name, values, metric, check_threshold_kwargs, **kwargs):
13+
def _metric_post_write(name, values, metric, check_threshold_kwargs=None, **kwargs):
1414
if not metric or not check_threshold_kwargs:
1515
return
1616
try:

openwisp_monitoring/monitoring/tests/test_models.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,26 @@ def test_batch_metric_write_wrong_related_fields(self):
179179
'"reachable" not defined in metric configuration',
180180
)
181181

182+
def test_batch_write_historical_data(self):
183+
m = self._create_general_metric(name="load")
184+
self._create_alert_settings(
185+
metric=m, custom_operator=">", custom_threshold=90, custom_tolerance=0
186+
)
187+
with catch_signal(threshold_crossed) as handler:
188+
Metric.batch_write(
189+
[
190+
(
191+
m,
192+
{
193+
"value": 91,
194+
"current": False,
195+
"time": start_time - timedelta(minutes=5),
196+
},
197+
)
198+
]
199+
)
200+
handler.assert_not_called()
201+
182202
def test_tags(self):
183203
extra_tags = {"a": "a", "b": "b1"}
184204
metric = self._create_object_metric(extra_tags=extra_tags)

0 commit comments

Comments
 (0)