1
2
3
4
5
6
7
8
9
10 package ch.qos.logback.classic.turbo;
11
12 import static org.junit.Assert.*;
13
14 import org.junit.Test;
15
16 import ch.qos.logback.core.spi.FilterReply;
17
18
19 public class DuplicateMessageFilterTest {
20
21
22 @Test
23 public void smoke() {
24 DuplicateMessageFilter dmf = new DuplicateMessageFilter();
25 dmf.setAllowedRepetitions(0);
26 dmf.start();
27 assertEquals(FilterReply.NEUTRAL, dmf.decide(null, null, null, "x", null, null));
28 assertEquals(FilterReply.NEUTRAL, dmf.decide(null, null, null, "y", null, null));
29 assertEquals(FilterReply.DENY, dmf.decide(null, null, null, "x", null, null));
30 assertEquals(FilterReply.DENY, dmf.decide(null, null, null, "y", null, null));
31 }
32
33 @Test
34 public void memoryLoss() {
35 DuplicateMessageFilter dmf = new DuplicateMessageFilter();
36 dmf.setAllowedRepetitions(1);
37 dmf.setCacheSize(1);
38 dmf.start();
39 assertEquals(FilterReply.NEUTRAL, dmf.decide(null, null, null, "a", null, null));
40 assertEquals(FilterReply.NEUTRAL, dmf.decide(null, null, null, "b", null, null));
41 assertEquals(FilterReply.NEUTRAL, dmf.decide(null, null, null, "a", null, null));
42 }
43
44
45 @Test
46 public void many() {
47 DuplicateMessageFilter dmf = new DuplicateMessageFilter();
48 dmf.setAllowedRepetitions(0);
49 int cacheSize = 10;
50 int margin = 2;
51 dmf.setCacheSize(cacheSize);
52 dmf.start();
53 for(int i = 0; i < cacheSize+margin; i++) {
54 assertEquals(FilterReply.NEUTRAL, dmf.decide(null, null, null, "a"+i, null, null));
55 }
56 for(int i = cacheSize-1; i >= margin; i--) {
57 assertEquals(FilterReply.DENY, dmf.decide(null, null, null, "a"+i, null, null));
58 }
59 for(int i = margin-1; i >= 0; i--) {
60 assertEquals(FilterReply.NEUTRAL, dmf.decide(null, null, null, "a"+i, null, null));
61 }
62 }
63 }