@@ -70,6 +70,30 @@ public void eventsAreNotExecutedConcurrentlyForSameResource() throws Interrupted
7070 "Start time of event 2 is after end time of event 1" );
7171 }
7272
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+
7397 @ Test
7498 public void retriesEventsWithErrors () {
7599 doAnswer (this ::exceptionInExecution )
0 commit comments