功能:完善加氢站导航详情与缓存刷新
This commit is contained in:
@@ -2,6 +2,8 @@ import importlib.util
|
||||
import io
|
||||
import json
|
||||
from pathlib import Path
|
||||
import threading
|
||||
import time
|
||||
import unittest
|
||||
from unittest.mock import patch
|
||||
|
||||
@@ -49,6 +51,29 @@ class StationNavigationTest(unittest.TestCase):
|
||||
self.assertEqual(calls, ["load"])
|
||||
self.assertEqual(first, second)
|
||||
|
||||
def test_expired_directory_returns_stale_value_while_refreshing_in_background(self):
|
||||
started = threading.Event()
|
||||
release = threading.Event()
|
||||
|
||||
def loader():
|
||||
started.set()
|
||||
release.wait(1)
|
||||
return {"version": 2}
|
||||
|
||||
cache = {"station-directory": (time.time() - 121, {"version": 1})}
|
||||
with patch.object(server, "_cache", cache), \
|
||||
patch.object(server, "_cache_refreshing", set()), \
|
||||
patch.object(server, "_cache_load_locks", {}):
|
||||
result = server._cached("station-directory", 120, loader)
|
||||
self.assertEqual(result, {"version": 1})
|
||||
self.assertTrue(started.wait(1))
|
||||
release.set()
|
||||
for _ in range(100):
|
||||
if cache["station-directory"][1] == {"version": 2}:
|
||||
break
|
||||
time.sleep(0.01)
|
||||
self.assertEqual(cache["station-directory"][1], {"version": 2})
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
||||
Reference in New Issue
Block a user