@@ -91,7 +91,7 @@ def test_multiaggregation(
91
91
key ,
92
92
{
93
93
"start" : 1000 ,
94
- "end" : 11000 , # 1000 + 10000 timeout
94
+ "end" : 1000 , # timestamp of last event
95
95
"count" : 1 ,
96
96
"sum" : 1 ,
97
97
"mean" : 1.0 ,
@@ -112,7 +112,7 @@ def test_multiaggregation(
112
112
key ,
113
113
{
114
114
"start" : 1000 ,
115
- "end" : 15000 , # 5000 + 10000 timeout
115
+ "end" : 5000 , # timestamp of last event
116
116
"count" : 2 ,
117
117
"sum" : 5 ,
118
118
"mean" : 2.5 ,
@@ -132,7 +132,7 @@ def test_multiaggregation(
132
132
key ,
133
133
{
134
134
"start" : 1000 ,
135
- "end" : 15000 ,
135
+ "end" : 5000 , # timestamp of last event
136
136
"count" : 2 ,
137
137
"sum" : 5 ,
138
138
"mean" : 2.5 ,
@@ -147,7 +147,7 @@ def test_multiaggregation(
147
147
key ,
148
148
{
149
149
"start" : 26000 ,
150
- "end" : 36000 , # 26000 + 10000 timeout
150
+ "end" : 26000 , # timestamp of last event
151
151
"count" : 1 ,
152
152
"sum" : 2 ,
153
153
"mean" : 2.0 ,
@@ -182,7 +182,7 @@ def test_sessionwindow_count(
182
182
assert len (updated ) == 1
183
183
assert updated [0 ][1 ]["value" ] == 2
184
184
assert updated [0 ][1 ]["start" ] == 1000
185
- assert updated [0 ][1 ]["end" ] == 15000 # 5000 + 10000
185
+ assert updated [0 ][1 ]["end" ] == 5000 # timestamp of last event
186
186
assert not expired
187
187
188
188
@pytest .mark .parametrize ("expiration" , ("key" , "partition" ))
@@ -207,7 +207,7 @@ def test_sessionwindow_sum(
207
207
assert len (updated ) == 1
208
208
assert updated [0 ][1 ]["value" ] == 5
209
209
assert updated [0 ][1 ]["start" ] == 1000
210
- assert updated [0 ][1 ]["end" ] == 15000
210
+ assert updated [0 ][1 ]["end" ] == 5000 # timestamp of last event
211
211
assert not expired
212
212
213
213
@pytest .mark .parametrize ("expiration" , ("key" , "partition" ))
@@ -232,7 +232,7 @@ def test_sessionwindow_mean(
232
232
assert len (updated ) == 1
233
233
assert updated [0 ][1 ]["value" ] == 3.0
234
234
assert updated [0 ][1 ]["start" ] == 1000
235
- assert updated [0 ][1 ]["end" ] == 15000
235
+ assert updated [0 ][1 ]["end" ] == 5000 # timestamp of last event
236
236
assert not expired
237
237
238
238
@pytest .mark .parametrize ("expiration" , ("key" , "partition" ))
@@ -260,7 +260,7 @@ def test_sessionwindow_reduce(
260
260
assert len (updated ) == 1
261
261
assert updated [0 ][1 ]["value" ] == [2 , 3 ]
262
262
assert updated [0 ][1 ]["start" ] == 1000
263
- assert updated [0 ][1 ]["end" ] == 15000
263
+ assert updated [0 ][1 ]["end" ] == 5000 # timestamp of last event
264
264
assert not expired
265
265
266
266
@pytest .mark .parametrize ("expiration" , ("key" , "partition" ))
@@ -285,7 +285,7 @@ def test_sessionwindow_max(
285
285
assert len (updated ) == 1
286
286
assert updated [0 ][1 ]["value" ] == 5
287
287
assert updated [0 ][1 ]["start" ] == 1000
288
- assert updated [0 ][1 ]["end" ] == 15000
288
+ assert updated [0 ][1 ]["end" ] == 5000 # timestamp of last event
289
289
assert not expired
290
290
291
291
@pytest .mark .parametrize ("expiration" , ("key" , "partition" ))
@@ -310,7 +310,7 @@ def test_sessionwindow_min(
310
310
assert len (updated ) == 1
311
311
assert updated [0 ][1 ]["value" ] == 2
312
312
assert updated [0 ][1 ]["start" ] == 1000
313
- assert updated [0 ][1 ]["end" ] == 15000
313
+ assert updated [0 ][1 ]["end" ] == 5000 # timestamp of last event
314
314
assert not expired
315
315
316
316
@pytest .mark .parametrize ("expiration" , ("key" , "partition" ))
@@ -336,7 +336,7 @@ def test_sessionwindow_collect(
336
336
window , value = 4 , key = key , transaction = tx , timestamp_ms = 25000
337
337
)
338
338
assert not updated
339
- assert expired == [(key , {"start" : 1000 , "end" : 18000 , "value" : [1 , 2 , 3 ]})]
339
+ assert expired == [(key , {"start" : 1000 , "end" : 8000 , "value" : [1 , 2 , 3 ]})]
340
340
341
341
@pytest .mark .parametrize (
342
342
"timeout, grace, name" ,
@@ -391,7 +391,7 @@ def test_session_window_process_timeout_behavior(
391
391
assert len (updated ) == 1
392
392
assert updated [0 ][1 ]["value" ] == 1
393
393
assert updated [0 ][1 ]["start" ] == 1000
394
- assert updated [0 ][1 ]["end" ] == 6000 # 1000 + 5000
394
+ assert updated [0 ][1 ]["end" ] == 1000 # timestamp of last event
395
395
assert not expired
396
396
397
397
# Add to session 1 (within timeout)
@@ -401,7 +401,7 @@ def test_session_window_process_timeout_behavior(
401
401
assert len (updated ) == 1
402
402
assert updated [0 ][1 ]["value" ] == 3
403
403
assert updated [0 ][1 ]["start" ] == 1000
404
- assert updated [0 ][1 ]["end" ] == 9000 # 4000 + 5000
404
+ assert updated [0 ][1 ]["end" ] == 4000 # timestamp of last event
405
405
assert not expired
406
406
407
407
# Start session 2 (outside timeout) - should expire session 1
@@ -411,12 +411,12 @@ def test_session_window_process_timeout_behavior(
411
411
assert len (updated ) == 1
412
412
assert updated [0 ][1 ]["value" ] == 5
413
413
assert updated [0 ][1 ]["start" ] == 15000
414
- assert updated [0 ][1 ]["end" ] == 20000 # 15000 + 5000
414
+ assert updated [0 ][1 ]["end" ] == 15000 # timestamp of last event
415
415
416
416
assert len (expired ) == 1
417
417
assert expired [0 ][1 ]["value" ] == 3
418
418
assert expired [0 ][1 ]["start" ] == 1000
419
- assert expired [0 ][1 ]["end" ] == 9000
419
+ assert expired [0 ][1 ]["end" ] == 4000 # timestamp of last event
420
420
421
421
def test_session_window_grace_period (
422
422
self , session_window_definition_factory , state_manager
@@ -670,7 +670,7 @@ def test_session_window_merge_sessions(
670
670
)
671
671
assert len (updated ) == 1
672
672
assert updated [0 ][1 ]["start" ] == 1000
673
- assert updated [0 ][1 ]["end" ] == 11000 # 1000 + 10000
673
+ assert updated [0 ][1 ]["end" ] == 1000 # timestamp of last event
674
674
assert updated [0 ][1 ]["value" ] == 1
675
675
assert not expired
676
676
@@ -683,12 +683,12 @@ def test_session_window_merge_sessions(
683
683
# First session should now be expired
684
684
assert len (expired ) == 1
685
685
assert expired [0 ][1 ]["start" ] == 1000
686
- assert expired [0 ][1 ]["end" ] == 11000
686
+ assert expired [0 ][1 ]["end" ] == 1000 # timestamp of last event
687
687
assert expired [0 ][1 ]["value" ] == 1
688
688
689
689
assert len (updated ) == 1
690
690
assert updated [0 ][1 ]["start" ] == 20000
691
- assert updated [0 ][1 ]["end" ] == 30000 # 20000 + 10000
691
+ assert updated [0 ][1 ]["end" ] == 20000 # timestamp of last event
692
692
assert updated [0 ][1 ]["value" ] == 10
693
693
694
694
# Add another event to the second session
@@ -697,7 +697,7 @@ def test_session_window_merge_sessions(
697
697
)
698
698
assert len (updated ) == 1
699
699
assert updated [0 ][1 ]["start" ] == 20000
700
- assert updated [0 ][1 ]["end" ] == 35000 # 25000 + 10000
700
+ assert updated [0 ][1 ]["end" ] == 25000 # timestamp of last event
701
701
assert updated [0 ][1 ]["value" ] == 15 # 10 + 5
702
702
assert not expired
703
703
@@ -710,13 +710,13 @@ def test_session_window_merge_sessions(
710
710
# Second session should be expired
711
711
assert len (expired ) == 1
712
712
assert expired [0 ][1 ]["start" ] == 20000
713
- assert expired [0 ][1 ]["end" ] == 35000
713
+ assert expired [0 ][1 ]["end" ] == 25000 # timestamp of last event
714
714
assert expired [0 ][1 ]["value" ] == 15
715
715
716
716
# Third session starts
717
717
assert len (updated ) == 1
718
718
assert updated [0 ][1 ]["start" ] == 50000
719
- assert updated [0 ][1 ]["end" ] == 60000 # 50000 + 10000
719
+ assert updated [0 ][1 ]["end" ] == 50000 # timestamp of last event
720
720
assert updated [0 ][1 ]["value" ] == 100
721
721
722
722
def test_session_window_bridging_event_scenario (
@@ -755,7 +755,7 @@ def test_session_window_bridging_event_scenario(
755
755
)
756
756
assert len (updated ) == 1
757
757
assert updated [0 ][1 ]["start" ] == 1000
758
- assert updated [0 ][1 ]["end" ] == 11000 # 1000 + 10000
758
+ assert updated [0 ][1 ]["end" ] == 1000 # timestamp of last event
759
759
assert updated [0 ][1 ]["value" ] == 5
760
760
assert not expired
761
761
@@ -770,7 +770,7 @@ def test_session_window_bridging_event_scenario(
770
770
# Event at 12000 is before 13000, so it should extend Session A
771
771
assert len (updated ) == 1
772
772
assert updated [0 ][1 ]["start" ] == 1000 # Session A extended
773
- assert updated [0 ][1 ]["end" ] == 22000 # 12000 + 10000
773
+ assert updated [0 ][1 ]["end" ] == 12000 # timestamp of last event
774
774
assert updated [0 ][1 ]["value" ] == 15 # 5 + 10
775
775
assert not expired
776
776
@@ -781,7 +781,7 @@ def test_session_window_bridging_event_scenario(
781
781
# This should extend the already extended Session A further
782
782
assert len (updated ) == 1
783
783
assert updated [0 ][1 ]["start" ] == 1000 # Still Session A
784
- assert updated [0 ][1 ]["end" ] == 25000 # 15000 + 10000
784
+ assert updated [0 ][1 ]["end" ] == 15000 # timestamp of last event
785
785
assert updated [0 ][1 ]["value" ] == 35 # 5 + 10 + 20
786
786
assert not expired
787
787
@@ -791,7 +791,7 @@ def test_session_window_bridging_event_scenario(
791
791
)
792
792
assert len (expired ) == 1
793
793
assert expired [0 ][1 ]["start" ] == 1000
794
- assert expired [0 ][1 ]["end" ] == 25000
794
+ assert expired [0 ][1 ]["end" ] == 15000 # timestamp of last event
795
795
assert expired [0 ][1 ]["value" ] == 35 # All events combined
796
796
797
797
assert len (updated ) == 1
@@ -828,7 +828,7 @@ def test_session_window_string_key_extension(
828
828
)
829
829
assert len (updated ) == 1
830
830
assert updated [0 ][1 ]["start" ] == 1000
831
- assert updated [0 ][1 ]["end" ] == 11000 # 1000 + 10000
831
+ assert updated [0 ][1 ]["end" ] == 1000 # timestamp of last event
832
832
assert updated [0 ][1 ]["value" ] == 100
833
833
assert not expired
834
834
@@ -839,7 +839,7 @@ def test_session_window_string_key_extension(
839
839
)
840
840
assert len (updated ) == 1
841
841
assert updated [0 ][1 ]["start" ] == 1000 # Session extended, same start
842
- assert updated [0 ][1 ]["end" ] == 15000 # 5000 + 10000 (new end time)
842
+ assert updated [0 ][1 ]["end" ] == 5000 # timestamp of last event
843
843
assert updated [0 ][1 ]["value" ] == 300 # 100 + 200
844
844
assert not expired
845
845
@@ -849,7 +849,7 @@ def test_session_window_string_key_extension(
849
849
)
850
850
assert len (updated ) == 1
851
851
assert updated [0 ][1 ]["start" ] == 1000 # Session extended again
852
- assert updated [0 ][1 ]["end" ] == 18000 # 8000 + 10000
852
+ assert updated [0 ][1 ]["end" ] == 8000 # timestamp of last event
853
853
assert updated [0 ][1 ]["value" ] == 350 # 100 + 200 + 50
854
854
assert not expired
855
855
@@ -861,7 +861,7 @@ def test_session_window_string_key_extension(
861
861
assert len (updated ) == 1
862
862
assert updated [0 ][0 ] == key2 # Different key
863
863
assert updated [0 ][1 ]["start" ] == 9000
864
- assert updated [0 ][1 ]["end" ] == 19000 # 9000 + 10000
864
+ assert updated [0 ][1 ]["end" ] == 9000 # timestamp of last event
865
865
assert updated [0 ][1 ]["value" ] == 75
866
866
assert not expired
867
867
@@ -874,12 +874,12 @@ def test_session_window_string_key_extension(
874
874
assert len (expired ) == 1
875
875
assert expired [0 ][0 ] == key
876
876
assert expired [0 ][1 ]["start" ] == 1000
877
- assert expired [0 ][1 ]["end" ] == 18000
877
+ assert expired [0 ][1 ]["end" ] == 8000 # timestamp of last event
878
878
assert expired [0 ][1 ]["value" ] == 350
879
879
880
880
# Should have started a new session for the first key
881
881
assert len (updated ) == 1
882
882
assert updated [0 ][0 ] == key
883
883
assert updated [0 ][1 ]["start" ] == 30000
884
- assert updated [0 ][1 ]["end" ] == 40000
884
+ assert updated [0 ][1 ]["end" ] == 30000 # timestamp of last event
885
885
assert updated [0 ][1 ]["value" ] == 25
0 commit comments