Skip to content

Commit 2917e25

Browse files
committed
RDBC-698 TimeSeriesIncludesTest::shouldCacheEmptyTimeSeriesRanges
1 parent 7c7aded commit 2917e25

File tree

1 file changed

+95
-0
lines changed

1 file changed

+95
-0
lines changed
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
from datetime import datetime, timedelta
2+
3+
from ravendb.tests.test_base import TestBase, User
4+
5+
6+
class TestTimeSeriesIncludes(TestBase):
7+
def setUp(self):
8+
super(TestTimeSeriesIncludes, self).setUp()
9+
10+
def test_should_cache_empty_time_series_ranges(self):
11+
document_id = "users/gracjan"
12+
base_line = datetime(2023, 8, 20, 21, 30)
13+
14+
with self.store.open_session() as session:
15+
user = User(name="Gracjan")
16+
session.store(user, document_id)
17+
session.save_changes()
18+
19+
with self.store.open_session() as session:
20+
tsf = session.time_series_for(document_id, "Heartrate")
21+
for i in range(360):
22+
tsf.append_single(base_line + timedelta(seconds=i * 10), 6, "watches/fitbit")
23+
24+
session.save_changes()
25+
26+
with self.store.open_session() as session:
27+
user = session.load(
28+
document_id,
29+
User,
30+
lambda i: i.include_time_series(
31+
"Heartrate", base_line - timedelta(minutes=30), base_line - timedelta(minutes=10)
32+
),
33+
)
34+
35+
self.assertEqual(1, session.advanced.number_of_requests)
36+
37+
self.assertEqual("Gracjan", user.name)
38+
39+
# should not go to server
40+
41+
vals = session.time_series_for(document_id, "Heartrate").get(
42+
base_line - timedelta(minutes=30), base_line - timedelta(minutes=10)
43+
)
44+
self.assertEqual(1, session.advanced.number_of_requests)
45+
46+
self.assertEqual(0, len(vals))
47+
48+
cache = session.time_series_by_doc_id.get(document_id)
49+
ranges = cache.get("Heartrate")
50+
self.assertEqual(1, len(ranges))
51+
52+
self.assertEqual(0, len(ranges[0].entries))
53+
54+
self.assertEqual(base_line - timedelta(minutes=30), ranges[0].from_date)
55+
self.assertEqual(base_line - timedelta(minutes=10), ranges[0].to_date)
56+
57+
# should not go to server
58+
59+
vals = session.time_series_for(document_id, "Heartrate").get(
60+
base_line - timedelta(minutes=25), base_line - timedelta(minutes=15)
61+
)
62+
63+
self.assertEqual(1, session.advanced.number_of_requests)
64+
65+
self.assertEqual(0, len(vals))
66+
67+
session.advanced.evict(user)
68+
69+
user = session.load(
70+
document_id,
71+
User,
72+
lambda i: i.include_time_series(
73+
"BloodPressure", base_line + timedelta(minutes=10), base_line + timedelta(minutes=30)
74+
),
75+
)
76+
77+
self.assertEqual(2, session.advanced.number_of_requests)
78+
79+
# should not go to server
80+
81+
vals = session.time_series_for(document_id, "BloodPressure").get(
82+
base_line + timedelta(minutes=10), base_line + timedelta(minutes=30)
83+
)
84+
85+
self.assertEqual(2, session.advanced.number_of_requests)
86+
87+
self.assertEqual(0, len(vals))
88+
89+
cache = session.time_series_by_doc_id.get(document_id)
90+
ranges = cache.get("BloodPressure")
91+
self.assertEqual(1, len(ranges))
92+
self.assertEqual(0, len(ranges[0].entries))
93+
94+
self.assertEqual(base_line + timedelta(minutes=10), ranges[0].from_date)
95+
self.assertEqual(base_line + timedelta(minutes=30), ranges[0].to_date)

0 commit comments

Comments
 (0)