@@ -144,4 +144,41 @@ void afterAMinuteLetOneThrough() {
144144 assertThat (logs .getEvents ()).hasSize (9 );
145145 assertThat (logs .getEvents ().get (8 ).getMessage ()).isEqualTo ("oh no!" );
146146 }
147+
148+ @ Test
149+ void allowOnlyOneLogPerMinuteAfterSuppression () {
150+ TestClock clock = TestClock .create ();
151+ ThrottlingLogger logger = new ThrottlingLogger (realLogger , clock );
152+
153+ logger .log (Level .WARNING , "oh no!" );
154+ logger .log (Level .WARNING , "oh no!" );
155+ logger .log (Level .WARNING , "oh no!" );
156+ logger .log (Level .WARNING , "oh no!" );
157+ logger .log (Level .WARNING , "oh no!" );
158+
159+ logger .log (Level .WARNING , "oh no I should trigger suppression!" );
160+ logger .log (Level .WARNING , "oh no I should be suppressed!" );
161+
162+ assertThat (logs .getEvents ()).hasSize (7 );
163+
164+ clock .advance (Duration .ofMillis (12_001 ));
165+ logger .log (Level .WARNING , "suppression 1" );
166+ clock .advance (Duration .ofMillis (12_001 ));
167+ logger .log (Level .WARNING , "suppression 2" );
168+ clock .advance (Duration .ofMillis (12_001 ));
169+ logger .log (Level .WARNING , "suppression 3" );
170+ clock .advance (Duration .ofMillis (12_001 ));
171+ logger .log (Level .WARNING , "suppression 4" );
172+ clock .advance (Duration .ofMillis (12_001 ));
173+ logger .log (Level .WARNING , "allowed 1" );
174+
175+ logs .assertDoesNotContain ("suppression 1" );
176+ logs .assertDoesNotContain ("suppression 2" );
177+ logs .assertDoesNotContain ("suppression 3" );
178+ logs .assertDoesNotContain ("suppression 4" );
179+ logs .assertContains ("allowed 1" );
180+
181+ assertThat (logs .getEvents ()).hasSize (8 );
182+ assertThat (logs .getEvents ().get (7 ).getMessage ()).isEqualTo ("allowed 1" );
183+ }
147184}
0 commit comments