View Javadoc
1   package org.codehaus.plexus.logging;
2   
3   /*
4    * Copyright 2001-2006 Codehaus Foundation.
5    *
6    * Licensed under the Apache License, Version 2.0 (the "License");
7    * you may not use this file except in compliance with the License.
8    * You may obtain a copy of the License at
9    *
10   *      http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing, software
13   * distributed under the License is distributed on an "AS IS" BASIS,
14   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15   * See the License for the specific language governing permissions and
16   * limitations under the License.
17   */
18  
19  import org.codehaus.plexus.PlexusTestCase;
20  
21  /**
22   * Abtract base class for testing implementations of the {@link LoggerManager}
23   * and {@link Logger} interfaces.
24   *
25   * @author Mark H. Wilkinson
26   * @author <a href="mailto:trygvis@inamo.no">Trygve Laugst&oslash;l</a>
27   * @version $Revision$
28   */
29  public abstract class AbstractLoggerManagerTest extends PlexusTestCase {
30      protected abstract LoggerManager createLoggerManager() throws Exception;
31  
32      public void testSetThreshold() throws Exception {
33          LoggerManager manager;
34          Logger logger1, logger2;
35  
36          manager = createLoggerManager();
37  
38          manager.setThreshold(Logger.LEVEL_FATAL);
39          logger1 = manager.getLoggerForComponent("role1", "roleHint1");
40          assertEquals(Logger.LEVEL_FATAL, logger1.getThreshold());
41  
42          manager.setThreshold(Logger.LEVEL_DEBUG);
43          logger2 = manager.getLoggerForComponent("role2", "roleHint2");
44          assertEquals(Logger.LEVEL_FATAL, logger1.getThreshold());
45          assertEquals(Logger.LEVEL_DEBUG, logger2.getThreshold());
46      }
47  
48      /**
49       * There is only one logger instance pr component even if looked up more that once.
50       * @throws Exception in case of an error.
51       */
52      public void testActiveLoggerCount() throws Exception {
53          LoggerManager manager;
54          Logger b, c1_1, c1_2, c2;
55  
56          manager = getManager(Logger.LEVEL_FATAL);
57          assertEquals(0, manager.getActiveLoggerCount());
58  
59          b = manager.getLoggerForComponent("b");
60          assertNotNull(b);
61          assertEquals(1, manager.getActiveLoggerCount());
62  
63          c1_1 = manager.getLoggerForComponent("c", "1");
64          c1_2 = manager.getLoggerForComponent("c", "1");
65          assertNotNull(c1_1);
66          assertNotNull(c1_2);
67          assertSame(c1_1, c1_2);
68          assertEquals(2, manager.getActiveLoggerCount());
69  
70          c2 = manager.getLoggerForComponent("c", "2");
71          assertNotNull(c2);
72          assertEquals(3, manager.getActiveLoggerCount());
73  
74          manager.returnComponentLogger("c", "1");
75          assertEquals(2, manager.getActiveLoggerCount());
76  
77          manager.returnComponentLogger("c", "2");
78          manager.returnComponentLogger("c", "2");
79          manager.returnComponentLogger("c", "1");
80          assertEquals(1, manager.getActiveLoggerCount());
81  
82          manager.returnComponentLogger("b");
83          assertEquals(0, manager.getActiveLoggerCount());
84      }
85  
86      public void testDebugLevelConfiguration() throws Exception {
87          LoggerManager manager = getManager(Logger.LEVEL_DEBUG);
88  
89          Logger logger = extractLogger(manager);
90  
91          checkDebugLevel(logger);
92  
93          logger = extractLogger(manager);
94  
95          checkDebugLevel(logger);
96      }
97  
98      public void testInfoLevelConfiguration() throws Exception {
99          LoggerManager manager = getManager(Logger.LEVEL_INFO);
100 
101         Logger logger = extractLogger(manager);
102 
103         checkInfoLevel(logger);
104 
105         logger = extractLogger(manager);
106 
107         checkInfoLevel(logger);
108     }
109 
110     public void testWarnLevelConfiguration() throws Exception {
111         LoggerManager manager = getManager(Logger.LEVEL_WARN);
112 
113         Logger logger = extractLogger(manager);
114 
115         checkWarnLevel(logger);
116 
117         logger = extractLogger(manager);
118 
119         checkWarnLevel(logger);
120     }
121 
122     public void testErrorLevelConfiguration() throws Exception {
123         LoggerManager manager = getManager(Logger.LEVEL_ERROR);
124 
125         Logger logger = extractLogger(manager);
126 
127         checkErrorLevel(logger);
128 
129         logger = extractLogger(manager);
130 
131         checkErrorLevel(logger);
132     }
133 
134     public void testFatalLevelConfiguration() throws Exception {
135         LoggerManager manager = getManager(Logger.LEVEL_FATAL);
136 
137         Logger logger = extractLogger(manager);
138 
139         checkFatalLevel(logger);
140 
141         logger = extractLogger(manager);
142 
143         checkFatalLevel(logger);
144     }
145 
146     private LoggerManager getManager(int threshold) throws Exception {
147         LoggerManager manager = createLoggerManager();
148 
149         manager.setThreshold(threshold);
150 
151         assertNotNull(manager);
152 
153         return manager;
154     }
155     /*
156         private Logger extractRootLogger( LoggerManager manager )
157         {
158             Logger logger = manager.getRootLogger();
159 
160             assertNotNull( logger );
161 
162             return logger;
163         }
164     */
165     private Logger extractLogger(LoggerManager manager) {
166         Logger logger = manager.getLoggerForComponent("foo");
167 
168         assertNotNull(logger);
169         assertEquals("foo", logger.getName());
170 
171         return logger;
172     }
173 
174     private void checkDebugLevel(Logger logger) {
175         assertTrue("debug enabled", logger.isDebugEnabled());
176         assertTrue("info enabled", logger.isInfoEnabled());
177         assertTrue("warn enabled", logger.isWarnEnabled());
178         assertTrue("error enabled", logger.isErrorEnabled());
179         assertTrue("fatal enabled", logger.isFatalErrorEnabled());
180     }
181 
182     private void checkInfoLevel(Logger logger) {
183         assertFalse("debug disabled", logger.isDebugEnabled());
184         assertTrue("info enabled", logger.isInfoEnabled());
185         assertTrue("warn enabled", logger.isWarnEnabled());
186         assertTrue("error enabled", logger.isErrorEnabled());
187         assertTrue("fatal enabled", logger.isFatalErrorEnabled());
188     }
189 
190     private void checkWarnLevel(Logger logger) {
191         assertFalse("debug disabled", logger.isDebugEnabled());
192         assertFalse("info disabled", logger.isInfoEnabled());
193         assertTrue("warn enabled", logger.isWarnEnabled());
194         assertTrue("error enabled", logger.isErrorEnabled());
195         assertTrue("fatal enabled", logger.isFatalErrorEnabled());
196     }
197 
198     private void checkErrorLevel(Logger logger) {
199         assertFalse("debug disabled", logger.isDebugEnabled());
200         assertFalse("info disabled", logger.isInfoEnabled());
201         assertFalse("warn disabled", logger.isWarnEnabled());
202         assertTrue("error enabled", logger.isErrorEnabled());
203         assertTrue("fatal enabled", logger.isFatalErrorEnabled());
204     }
205 
206     private void checkFatalLevel(Logger logger) {
207         assertFalse("debug disabled", logger.isDebugEnabled());
208         assertFalse("info disabled", logger.isInfoEnabled());
209         assertFalse("warn disabled", logger.isWarnEnabled());
210         assertFalse("error disabled", logger.isErrorEnabled());
211         assertTrue("fatal enabled", logger.isFatalErrorEnabled());
212     }
213 }