Skip to content

Commit

Permalink
add random jitter to check run interval #2040
Browse files Browse the repository at this point in the history
  • Loading branch information
wh1te909 committed Feb 27, 2025
1 parent e00fef2 commit 7c5f0df
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 3 deletions.
5 changes: 4 additions & 1 deletion api/tacticalrmm/agents/models.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import asyncio
import logging
import random
import re
from collections import Counter
from contextlib import suppress
Expand Down Expand Up @@ -584,7 +585,9 @@ def check_run_interval(self) -> int:
# don't allow check runs less than 15s
interval = 15 if check.run_interval < 15 else check.run_interval

return interval
return interval + random.randint(
*getattr(settings, "CHECK_INTERVAL_JITTER", (1, 60))
)

def run_script(
self,
Expand Down
8 changes: 6 additions & 2 deletions api/tacticalrmm/apiv3/tests/tests.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
from unittest.mock import patch

from django.utils import timezone as djangotime
from model_bakery import baker

Expand All @@ -12,7 +14,8 @@ def setUp(self):
self.setup_coresettings()
self.agent = baker.make_recipe("agents.agent")

def test_get_checks(self):
@patch("agents.models.random.randint", return_value=0)
def test_get_checks(self, mock_randint):
agent = baker.make_recipe("agents.agent")
url = f"/api/v3/{agent.agent_id}/checkrunner/"

Expand Down Expand Up @@ -67,7 +70,8 @@ def test_get_checks(self):

self.check_not_authenticated("get", url)

def test_checkrunner_interval(self):
@patch("agents.models.random.randint", return_value=0)
def test_checkrunner_interval(self, mock_randint):
url = f"/api/v3/{self.agent.agent_id}/checkinterval/"
r = self.client.get(url, format="json")
self.assertEqual(r.status_code, 200)
Expand Down

0 comments on commit 7c5f0df

Please sign in to comment.