root/trunk/test/java/org/jcoderz/commons/LoggableImplTest.java

Revision 1606, 11.8 kB (checked in by amandel, 2 years ago)

- use current PMD from public repository
- remove implied dependencies from explicit list
- ignore compiler classpath warning.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
Line 
1/*
2 * $Id$
3 *
4 * Copyright 2006, The jCoderZ.org Project. All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions are
8 * met:
9 *
10 *    * Redistributions of source code must retain the above copyright
11 *      notice, this list of conditions and the following disclaimer.
12 *    * Redistributions in binary form must reproduce the above
13 *      copyright notice, this list of conditions and the following
14 *      disclaimer in the documentation and/or other materials
15 *      provided with the distribution.
16 *    * Neither the name of the jCoderZ.org Project nor the names of
17 *      its contributors may be used to endorse or promote products
18 *      derived from this software without specific prior written
19 *      permission.
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS" AND
22 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
24 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS
25 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
28 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
29 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
30 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
31 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32 */
33package org.jcoderz.commons;
34
35
36import java.util.Set;
37import java.util.logging.Level;
38import junit.framework.TestCase;
39
40
41/**
42 * Test for LoggableImpl class.
43 *
44 * @author Andreas Mandel
45 */
46public class LoggableImplTest
47      extends TestCase
48{
49   private static final String TEST_INSTANCE_ID = "TEST_INSTANCE";
50   private static final String TEST_NODE = "TEST_NODE";
51   private static final long TEST_THREAD_ID = 12345L;
52   private static final String TEST_THREAD_NAME = "THIS_IS_A_TEST_THREAD_123";
53   private static final String TEST_THREAD_NAME_CUT = "HREAD_123";
54   private static final String TEST_DUMMY_PARAMETER_NAME
55         = "DUMMY";
56   private static final LogMessageInfo TEST_LOG_MESSAGE_INFO
57         = new TestLogMessageInfo();
58
59   /**
60    * Test for void LoggableImpl(LogMessageInfo, long, String, String).
61    */
62   public final void testLoggableImplLogMessageInfolongStringString ()
63   {
64      final LoggableImpl testObject = new LoggableImpl(null,
65            TEST_LOG_MESSAGE_INFO, TEST_THREAD_ID, TEST_THREAD_NAME,
66            TEST_INSTANCE_ID, TEST_NODE);
67
68      assertEquals("Instance id getter changes value.", TEST_INSTANCE_ID,
69            testObject.getInstanceId());
70      assertEquals("Instance id parameter changes value.", TEST_INSTANCE_ID,
71            testObject.getParameter(LoggableImpl.INSTANCE_ID_PARAMETER_NAME)
72                  .get(0));
73
74      assertEquals("Node id getter changes value.", TEST_NODE, testObject
75            .getNodeId());
76      assertEquals("Node id parameter changes value.", TEST_NODE, testObject
77            .getParameter(LoggableImpl.NODE_ID_PARAMETER_NAME).get(0));
78
79      assertEquals("Thread id getter changes value.", TEST_THREAD_ID,
80            testObject.getThreadId());
81      assertEquals("Thread name getter changes value.", TEST_THREAD_NAME,
82          testObject.getThreadName());
83      assertEquals("Thread id parameter changes value.", new Long(
84            TEST_THREAD_ID), testObject.getParameter(
85            LoggableImpl.THREAD_ID_PARAMETER_NAME).get(0));
86
87      assertEquals("Symbol of testclass changed.", "FOO_SYMBOL",
88            TEST_LOG_MESSAGE_INFO.getSymbol());
89
90      TEST_LOG_MESSAGE_INFO.formatMessage(null, null); // coverage
91      TEST_LOG_MESSAGE_INFO.getSolution();
92      TEST_LOG_MESSAGE_INFO.getBusinessImpact();
93   }
94
95   /** Tests LoggableImpl(LogMessageInfo, long, String, String, Throwable). */
96   public final void testLoggableImplLogMessageInfolongStringStringThrowable ()
97   {
98      final Exception testException = new Exception();
99      final LoggableImpl testObject = new LoggableImpl(null,
100            TEST_LOG_MESSAGE_INFO, TEST_THREAD_ID, TEST_THREAD_NAME,
101            TEST_INSTANCE_ID, TEST_NODE, testException);
102
103      assertEquals("Cause getter changes value.", testException,
104            testObject.getCause());
105   }
106
107   /** Tests initCause method. */
108   public final void testInitCause ()
109   {
110      final LoggableImpl testObject
111            = new LoggableImpl(null, TEST_LOG_MESSAGE_INFO, TEST_THREAD_ID,
112                TEST_THREAD_NAME, TEST_INSTANCE_ID, TEST_NODE);
113
114      testObject.initCause(null);
115      assertEquals("Cause getter changes value. (null)", null,
116            testObject.getCause());
117   }
118
119   /** Test the addParameter, getParameter and getParameterNames method. */
120   public final void testAddParameter ()
121   {
122      final LoggableImpl testObject
123            = new LoggableImpl(null, TEST_LOG_MESSAGE_INFO, TEST_THREAD_ID,
124                TEST_THREAD_NAME, TEST_INSTANCE_ID, TEST_NODE);
125
126      testObject.addParameter(TEST_DUMMY_PARAMETER_NAME, "value1");
127      testObject.addParameter(TEST_DUMMY_PARAMETER_NAME, "value2");
128      testObject.addParameter("FOO_NULL", null);
129      testObject.addParameter("FOO_NULL", "value2");
130
131      assertEquals("Parameter value not as expected 1st.", "value1",
132            testObject.getParameter(TEST_DUMMY_PARAMETER_NAME).get(0));
133      assertEquals("Parameter value not as expected 2nd.", "value2",
134            testObject.getParameter(TEST_DUMMY_PARAMETER_NAME).get(1));
135      assertEquals("Parameter value (null) not as expected 2st.", null,
136            testObject.getParameter("FOO_NULL").get(0));
137
138      final Set names = testObject.getParameterNames();
139
140      assertTrue("Parameter name not in list (" + TEST_DUMMY_PARAMETER_NAME
141            + ")", names.contains(TEST_DUMMY_PARAMETER_NAME));
142      assertTrue("Internal parameter name not in list ("
143            + LoggableImpl.EVENT_TIME_PARAMETER_NAME + ")",
144            names.contains(LoggableImpl.EVENT_TIME_PARAMETER_NAME));
145
146   }
147
148   /** Tests the getLogMessageInfo method. */
149   public final void testGetLogMessageInfo ()
150   {
151      final LoggableImpl testObject
152            = new LoggableImpl(null, TEST_LOG_MESSAGE_INFO, TEST_THREAD_ID,
153                TEST_THREAD_NAME, TEST_INSTANCE_ID, TEST_NODE);
154
155      assertEquals("Message info changed?", TEST_LOG_MESSAGE_INFO,
156            testObject.getLogMessageInfo());
157   }
158
159   /** Tests the get tracking number method. */
160   public final void testGetTrackingNumber ()
161   {
162      final LoggableImpl testObject1
163            = new LoggableImpl(null, TEST_LOG_MESSAGE_INFO, TEST_THREAD_ID,
164                TEST_THREAD_NAME, TEST_INSTANCE_ID, TEST_NODE);
165      final LoggableImpl testObject2
166            = new LoggableImpl(null, TEST_LOG_MESSAGE_INFO, TEST_THREAD_ID,
167                TEST_THREAD_NAME, TEST_INSTANCE_ID, TEST_NODE);
168
169      assertFalse("Tracking number should never be the same.",
170            testObject1.getTrackingNumber().equals(
171               testObject2.getTrackingNumber()));
172   }
173
174   /** Tests the GetTrackingNumberInheritance. */
175   public final void testGetTrackingNumberInheritance ()
176   {
177      final BaseException a = new BaseException(TEST_LOG_MESSAGE_INFO);
178      final Loggable b = new BaseException(TEST_LOG_MESSAGE_INFO, a);
179
180      assertEquals("Tracking number must be inherited from cause.",
181            a.getTrackingNumber(), b.getTrackingNumber());
182   }
183
184   /** Tests the get event time method. */
185   public final void testGetEventTime ()
186   {
187      final long before = System.currentTimeMillis();
188      final LoggableImpl testObject1
189            = new LoggableImpl(null, TEST_LOG_MESSAGE_INFO, TEST_THREAD_ID,
190                TEST_THREAD_NAME, TEST_INSTANCE_ID, TEST_NODE);
191      final long after = System.currentTimeMillis();
192
193      assertTrue("Timestamp must be after before mark.",
194            before <= testObject1.getEventTime());
195      assertTrue("Timestamp must be after after mark.",
196            testObject1.getEventTime() <= after);
197   }
198
199   /** Tests the get node id method. */
200   public final void testGetNodeId ()
201   {
202      final LoggableImpl testObject
203            = new LoggableImpl(null, TEST_LOG_MESSAGE_INFO, TEST_THREAD_ID,
204                TEST_THREAD_NAME, TEST_INSTANCE_ID, TEST_NODE);
205
206      assertEquals("Node id getter changes value.", TEST_NODE,
207            testObject.getNodeId());
208
209      final LoggableImpl testNullObject
210            = new LoggableImpl(null, TEST_LOG_MESSAGE_INFO, TEST_THREAD_ID,
211                TEST_THREAD_NAME, TEST_INSTANCE_ID, null);
212
213      assertEquals("Node id getter changes value (null).", null,
214            testNullObject.getNodeId());
215   }
216
217   /** Tests the get instance id method. */
218   public final void testGetInstanceId ()
219   {
220      final LoggableImpl testObject
221            = new LoggableImpl(null, TEST_LOG_MESSAGE_INFO, TEST_THREAD_ID,
222                TEST_THREAD_NAME, TEST_INSTANCE_ID, TEST_NODE);
223
224      assertEquals("Instance id getter changes value.", TEST_INSTANCE_ID,
225            testObject.getInstanceId());
226   }
227
228   /** Tests the get thread id method. */
229   public final void testGetThreadId ()
230   {
231      final LoggableImpl testObject
232            = new LoggableImpl(null, TEST_LOG_MESSAGE_INFO, TEST_THREAD_ID,
233                TEST_THREAD_NAME, TEST_INSTANCE_ID, TEST_NODE);
234
235      assertEquals("Thread id getter changes value.", TEST_THREAD_ID,
236            testObject.getThreadId());
237   }
238
239   /** Tests the get cause method. */
240   public final void testGetCause ()
241   {
242       final Exception testException
243       = new RuntimeException("Runtime", new ArgumentMalformedException("foo", "val", "This is wrong!"));
244      final LoggableImpl testObject
245            = new LoggableImpl(null, TEST_LOG_MESSAGE_INFO, TEST_THREAD_ID,
246                TEST_THREAD_NAME, TEST_INSTANCE_ID, TEST_NODE, testException);
247//      testException.initCause();
248      // testObject.initCause(testException);
249System.out.println("TEST: " + testObject.toDetailedString());
250      assertEquals("Cause getter changes value.", testException,
251            testObject.getCause());
252      assertEquals("Cause getter changes value. (parameter)", testException,
253            testObject.getParameter(LoggableImpl.CAUSE_PARAMETER_NAME)
254               .get(0));
255
256   }
257
258   /** Tests the log method. */
259   public final void testLog ()
260   {
261      final LoggableImpl testObject
262            = new LoggableImpl(null, TEST_LOG_MESSAGE_INFO, TEST_THREAD_ID,
263                TEST_THREAD_NAME, TEST_INSTANCE_ID, TEST_NODE);
264
265      testObject.log(); // should not throw a exception...
266   }
267
268   /** Tests the get message method. */
269   public final void testGetMessage ()
270   {
271      final LoggableImpl testObject
272            = new LoggableImpl(null, TEST_LOG_MESSAGE_INFO, TEST_THREAD_ID,
273                TEST_THREAD_NAME, TEST_INSTANCE_ID, TEST_NODE);
274
275      testObject.addParameter(TEST_DUMMY_PARAMETER_NAME, "value");
276
277      final String message = testObject.getMessage();
278      assertTrue("Message must contain dummy object '" + message + "'.",
279            message.indexOf("DUMMY:value") != -1);
280   }
281
282   /** Internal test class. */
283   private static final class TestLogMessageInfo
284         extends LogMessageInfoImpl
285         implements LogMessageInfo
286   {
287      static final int INT_VALUE = 4711;
288      static final long serialVersionUID = 1;
289      private TestLogMessageInfo ()
290      {
291         super("FOO_SYMBOL", INT_VALUE, Level.INFO,
292               "Test Pattern {0} {1,DATE} {1,TIME} DUMMY:{2} ",
293               "solution", BusinessImpact.MIDDLE, Category.SECURITY,
294               new String[]
295                  {
296                     LoggableImpl.THREAD_ID_PARAMETER_NAME,
297                     LoggableImpl.EVENT_TIME_PARAMETER_NAME,
298                     TEST_DUMMY_PARAMETER_NAME
299                  },
300                "Application Foo", "Foo", "Group Bar", "Bar"
301               );
302      }
303   }
304}
Note: See TracBrowser for help on using the browser.