@@ -166,4 +166,81 @@ void saltsLogErrorAtInterval(VertxTestContext testContext) {
166166
167167 testContext .completeNow ();
168168 }
169+
170+ @ Test
171+ void shutdownOnKeysetKeyFailedTooLong (VertxTestContext testContext ) {
172+ ListAppender <ILoggingEvent > logWatcher = new ListAppender <>();
173+ logWatcher .start ();
174+ ((Logger ) LoggerFactory .getLogger (OperatorShutdownHandler .class )).addAppender (logWatcher );
175+
176+ this .operatorShutdownHandler .handleKeysetKeyRefreshResponse (false );
177+ Assertions .assertTrue (logWatcher .list .get (0 ).getFormattedMessage ().contains ("keyset keys sync failing" ));
178+ Assertions .assertTrue (logWatcher .list .get (1 ).getFormattedMessage ().contains ("keyset keys sync started failing" ));
179+
180+ when (clock .instant ()).thenAnswer (i -> Instant .now ().plus (7 , ChronoUnit .DAYS ).plusSeconds (60 ));
181+ try {
182+ this .operatorShutdownHandler .handleKeysetKeyRefreshResponse (false );
183+ } catch (RuntimeException e ) {
184+ verify (shutdownService ).Shutdown (1 );
185+ Assertions .assertTrue (logWatcher .list .stream ().anyMatch (log ->
186+ log .getFormattedMessage ().contains ("keyset keys have been failing to sync for too long" )));
187+ testContext .completeNow ();
188+ }
189+ }
190+
191+ @ Test
192+ void keysetKeyRecoverOnSuccess (VertxTestContext testContext ) {
193+ ListAppender <ILoggingEvent > logWatcher = new ListAppender <>();
194+ logWatcher .start ();
195+ ((Logger ) LoggerFactory .getLogger (OperatorShutdownHandler .class )).addAppender (logWatcher );
196+
197+ this .operatorShutdownHandler .handleKeysetKeyRefreshResponse (false );
198+ when (clock .instant ()).thenAnswer (i -> Instant .now ().plus (3 , ChronoUnit .DAYS ));
199+ this .operatorShutdownHandler .handleKeysetKeyRefreshResponse (true );
200+
201+ Assertions .assertTrue (logWatcher .list .stream ().anyMatch (log ->
202+ log .getFormattedMessage ().contains ("keyset keys sync recovered" )));
203+
204+ when (clock .instant ()).thenAnswer (i -> Instant .now ().plus (7 , ChronoUnit .DAYS ));
205+ assertDoesNotThrow (() -> {
206+ this .operatorShutdownHandler .handleKeysetKeyRefreshResponse (false );
207+ });
208+ verify (shutdownService , never ()).Shutdown (anyInt ());
209+ testContext .completeNow ();
210+ }
211+
212+ @ Test
213+ void keysetKeyLogErrorAtInterval (VertxTestContext testContext ) {
214+ ListAppender <ILoggingEvent > logWatcher = new ListAppender <>();
215+ logWatcher .start ();
216+ ((Logger ) LoggerFactory .getLogger (OperatorShutdownHandler .class )).addAppender (logWatcher );
217+
218+ this .operatorShutdownHandler .handleKeysetKeyRefreshResponse (false );
219+ long errorLogCount1 = logWatcher .list .stream ().filter (log ->
220+ log .getFormattedMessage ().contains ("keyset keys sync failing" )).count ();
221+
222+ when (clock .instant ()).thenAnswer (i -> Instant .now ().plus (9 , ChronoUnit .MINUTES ));
223+ this .operatorShutdownHandler .handleKeysetKeyRefreshResponse (false );
224+ long errorLogCount2 = logWatcher .list .stream ().filter (log ->
225+ log .getFormattedMessage ().contains ("keyset keys sync failing" )).count ();
226+ Assertions .assertEquals (errorLogCount1 , errorLogCount2 );
227+
228+ when (clock .instant ()).thenAnswer (i -> Instant .now ().plus (11 , ChronoUnit .MINUTES ));
229+ this .operatorShutdownHandler .handleKeysetKeyRefreshResponse (false );
230+ long errorLogCount3 = logWatcher .list .stream ().filter (log ->
231+ log .getFormattedMessage ().contains ("keyset keys sync failing" )).count ();
232+ Assertions .assertTrue (errorLogCount3 > errorLogCount2 );
233+
234+ testContext .completeNow ();
235+ }
236+
237+ @ Test
238+ void keysetKeyNoShutdownWhenAlwaysSuccessful (VertxTestContext testContext ) {
239+ this .operatorShutdownHandler .handleKeysetKeyRefreshResponse (true );
240+ this .operatorShutdownHandler .handleKeysetKeyRefreshResponse (true );
241+ this .operatorShutdownHandler .handleKeysetKeyRefreshResponse (true );
242+
243+ verify (shutdownService , never ()).Shutdown (anyInt ());
244+ testContext .completeNow ();
245+ }
169246}
0 commit comments