|
7 | 7 | from rest_framework.test import APITestCase |
8 | 8 |
|
9 | 9 | from accounts.models import Account |
10 | | -from baby_serverlist.models import BabyServer |
| 10 | +from baby_serverlist.models import LIVE_HEARTBEAT_GRACE_SECONDS, BabyServer |
11 | 11 | from commons.cache import ( |
| 12 | + BABY_SERVER_HEARTBEAT_TTL_SECONDS, |
12 | 13 | get_baby_server_heartbeat, |
13 | 14 | get_baby_server_status, |
14 | 15 | set_baby_server_heartbeat, |
@@ -154,7 +155,9 @@ def test_list_owned_baby_servers_live_flag(self) -> None: |
154 | 155 | response = self.client.get(reverse("baby_serverlist:list-owned")) |
155 | 156 | self.assertTrue(response.json()[0]["live"]) |
156 | 157 |
|
157 | | - stale_time = datetime.now(tz=UTC) - timedelta(seconds=13) |
| 158 | + stale_time = datetime.now(tz=UTC) - timedelta( |
| 159 | + seconds=BABY_SERVER_HEARTBEAT_TTL_SECONDS + LIVE_HEARTBEAT_GRACE_SECONDS + 1 |
| 160 | + ) |
158 | 161 | set_baby_server_heartbeat(str(baby_server.id), stale_time.isoformat()) |
159 | 162 |
|
160 | 163 | response = self.client.get(reverse("baby_serverlist:list-owned")) |
@@ -184,3 +187,20 @@ def test_list_baby_servers_ignores_non_whitelisted(self) -> None: |
184 | 187 |
|
185 | 188 | self.assertEqual(response.status_code, status.HTTP_200_OK) |
186 | 189 | self.assertEqual(response.json(), {"servers": []}) |
| 190 | + |
| 191 | + def test_baby_server_is_live_respects_heartbeat_ttl(self) -> None: |
| 192 | + baby_server = BabyServer.objects.create(owner=self.user) |
| 193 | + |
| 194 | + fresh_time = datetime.now(tz=UTC) - timedelta( |
| 195 | + seconds=BABY_SERVER_HEARTBEAT_TTL_SECONDS + LIVE_HEARTBEAT_GRACE_SECONDS - 1 |
| 196 | + ) |
| 197 | + set_baby_server_heartbeat(str(baby_server.id), fresh_time.isoformat()) |
| 198 | + self.assertTrue(baby_server.is_live()) |
| 199 | + |
| 200 | + stale_time = datetime.now(tz=UTC) - timedelta( |
| 201 | + seconds=BABY_SERVER_HEARTBEAT_TTL_SECONDS + LIVE_HEARTBEAT_GRACE_SECONDS + 1 |
| 202 | + ) |
| 203 | + set_baby_server_heartbeat(str(baby_server.id), stale_time.isoformat()) |
| 204 | + stored = get_baby_server_heartbeat(str(baby_server.id)) |
| 205 | + self.assertEqual(stored, stale_time.isoformat()) |
| 206 | + self.assertFalse(baby_server.is_live()) |
0 commit comments