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      // prudent mode will force "file" property to be null
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 }