@@ -70,6 +70,30 @@ public void eventsAreNotExecutedConcurrentlyForSameResource() throws Interrupted
70
70
"Start time of event 2 is after end time of event 1" );
71
71
}
72
72
73
+ @ Test
74
+ public void onlyLastEventIsScheduledIfMoreReceivedDuringAndExecution () {
75
+ normalDispatcherExecution ();
76
+ CustomResource resource1 = sampleResource ();
77
+ CustomResource resource2 = sampleResource ();
78
+ resource2 .getMetadata ().setResourceVersion ("2" );
79
+ CustomResource resource3 = sampleResource ();
80
+ resource3 .getMetadata ().setResourceVersion ("3" );
81
+
82
+ eventScheduler .eventReceived (Watcher .Action .MODIFIED , resource1 );
83
+ eventScheduler .eventReceived (Watcher .Action .MODIFIED , resource2 );
84
+ eventScheduler .eventReceived (Watcher .Action .MODIFIED , resource3 );
85
+
86
+ waitTimeForExecution (3 );
87
+ log .info ("Event processing details 1.: {}. 2: {}" , eventProcessingList .get (0 ), eventProcessingList .get (1 ));
88
+ assertThat (eventProcessingList ).hasSize (2 )
89
+ .matches (list -> eventProcessingList .get (0 ).getCustomResource ().getMetadata ().getResourceVersion ().equals ("1" ) &&
90
+ eventProcessingList .get (1 ).getCustomResource ().getMetadata ().getResourceVersion ().equals ("3" ),
91
+ "Events processed in correct order" )
92
+ .matches (list ->
93
+ eventProcessingList .get (0 ).getEndTime ().isBefore (eventProcessingList .get (1 ).startTime ),
94
+ "Start time of event 2 is after end time of event 1" );
95
+ }
96
+
73
97
@ Test
74
98
public void retriesEventsWithErrors () {
75
99
doAnswer (this ::exceptionInExecution )
0 commit comments