1 package ch.qos.logback.core.rolling;
2
3
4 import static org.junit.Assert.assertEquals;
5 import static org.junit.Assert.assertFalse;
6 import static org.junit.Assert.assertNull;
7 import static org.junit.Assert.assertTrue;
8
9 import org.junit.After;
10 import org.junit.Before;
11 import org.junit.Test;
12
13 import ch.qos.logback.core.AppenderBase;
14 import ch.qos.logback.core.Context;
15 import ch.qos.logback.core.ContextBase;
16 import ch.qos.logback.core.appender.AbstractAppenderTest;
17 import ch.qos.logback.core.layout.DummyLayout;
18 import ch.qos.logback.core.status.Status;
19 import ch.qos.logback.core.status.StatusManager;
20
21 public class RollingFileAppenderTest extends AbstractAppenderTest<Object> {
22
23 RollingFileAppender<Object> rfa = new RollingFileAppender<Object>();
24 Context context = new ContextBase();
25
26 TimeBasedRollingPolicy<Object> tbrp = new TimeBasedRollingPolicy<Object>();
27
28 @Before
29 public void setUp() throws Exception {
30 rfa.setLayout(new DummyLayout<Object>());
31 rfa.setName("test");
32 rfa.setRollingPolicy(tbrp);
33
34 tbrp.setContext(context);
35 tbrp.setParent(rfa);
36 }
37
38 @After
39 public void tearDown() throws Exception {
40 }
41
42
43 @Override
44 protected AppenderBase<Object> getAppender() {
45 return rfa;
46 }
47
48 @Override
49 protected AppenderBase<Object> getConfiguredAppender() {
50 rfa.setContext(context);
51
52 tbrp.setFileNamePattern("toto-%d.log");
53 tbrp.start();
54
55 rfa.start();
56 return rfa;
57 }
58
59
60 @Test
61 public void testPrudentModeLogicalImplications() {
62 tbrp.setFileNamePattern("toto-%d.log");
63 tbrp.start();
64
65 rfa.setContext(context);
66
67 rfa.setFile("some non null value");
68 rfa.setAppend(false);
69 rfa.setImmediateFlush(false);
70 rfa.setBufferedIO(true);
71 rfa.setPrudent(true);
72 rfa.start();
73
74 assertTrue(rfa.getImmediateFlush());
75 assertTrue(rfa.isAppend());
76 assertFalse(rfa.isBufferedIO());
77 assertNull(rfa.rawFileProperty());
78 assertTrue(rfa.isStarted());
79 }
80
81
82 @Test
83 public void testPrudentModeLogicalImplicationsOnCompression() {
84 tbrp.setFileNamePattern("toto-%d.log.zip");
85 tbrp.start();
86
87 rfa.setContext(context);
88 rfa.setAppend(false);
89 rfa.setImmediateFlush(false);
90 rfa.setBufferedIO(true);
91 rfa.setPrudent(true);
92 rfa.start();
93
94 StatusManager sm = context.getStatusManager();
95 assertFalse(rfa.isStarted());
96 assertEquals(Status.ERROR, sm.getLevel());
97 }
98
99
100 }