package alma.acs.logging; import java.util.logging.Handler; import java.util.logging.Level; import java.util.logging.Logger; import junit.framework.TestCase; import alma.acs.logging.domainspecific.AntennaContextLogger; import alma.acs.logging.domainspecific.ArrayContextLogger; import alma.acs.logging.domainspecific.DeveloperLogger; import alma.acs.logging.domainspecific.OperatorLogger; import alma.acs.logging.domainspecific.ScienceLogger; import alma.acs.logging.formatters.ConsoleLogFormatter; import alma.acs.testsupport.TestLogger; import alma.log_audience.OPERATOR; public class AcsLoggerTest extends TestCase { private AcsLogger acsLogger; protected void setUp() throws Exception { System.out.println("\n------------ " + getName() + " --------------"); acsLogger = LocalOnlyAcsLogger.getInstance(AcsLoggerTest.class.getName(), Level.ALL); } public void testSimpleLog() { acsLogger.finer("a really simple log"); acsLogger.info("and quite informative"); } public void testAudienceLog() { acsLogger.logToAudience(Level.WARNING, "Log with audience", OPERATOR.value); acsLogger.logToAudience(Level.WARNING, "Log exception with audience", new Exception( "My dummy exception"), OPERATOR.value); } public void testAntennaContextLog() { AntennaContextLogger antennaLogger = new AntennaContextLogger(acsLogger); antennaLogger.log(Level.WARNING, "Log with audience, array and antenna", OPERATOR.value, "Array01", "Antenna01"); antennaLogger.log(Level.WARNING, "Log with array and antenna", "Array01", "Antenna01"); antennaLogger.log(Level.WARNING, "Log exception with audience, array and antenna", new Exception("My dummy exception"), OPERATOR.value, "Array01", "Antenna01"); antennaLogger.log(Level.WARNING, "Log exception with array and antenna", new Exception("My dummy exception"), "Array01", "Antenna01"); } public void testArrayContextLog() { ArrayContextLogger arrayLogger = new ArrayContextLogger(acsLogger); arrayLogger.log(Level.WARNING, "Log with audience and array", OPERATOR.value, "Array01"); arrayLogger.log(Level.WARNING, "Log with array", "Array01"); arrayLogger.log(Level.WARNING, "Log exception with audience and array", new Exception("My dummy exception"), OPERATOR.value, "Array01"); arrayLogger.log(Level.WARNING, "Log exception with array", new Exception("My dummy exception"), "Array01"); } public void testWrapJdkLogger() { assertSame("Expected reuse of AcsLogger", acsLogger, AcsLogger.fromJdkLogger(acsLogger, null)); Logger jdkLogger = TestLogger.getLogger("myJdkLogger"); Handler[] handlers = jdkLogger.getHandlers(); assertEquals(1, handlers.length); handlers[0].setFormatter(new ConsoleLogFormatter()); // to get an ISO timestamp on stdout, for TAT/sed filtering. AcsLogger wrapper = AcsLogger.fromJdkLogger(jdkLogger, null); assertEquals("myJdkLoggerwrapper", wrapper.getName()); wrapper.info("A message logged by the AcsLogger that wraps the jdkLogger"); } public void testAbuseLevelOff() throws Exception { try { acsLogger.log(Level.OFF, "Bad log with Level.OFF"); fail("Logging with level OFF should throw an exception, see COMP-1928"); } catch (IllegalArgumentException ex) { // good } try { acsLogger.log(AcsLogLevel.OFF, "Bad log with AcsLogLevel.OFF"); fail("Logging with level OFF should throw an exception, see COMP-1928"); } catch (IllegalArgumentException ex) { // good } } /*Added by request of COMP-3130*/ public void testAudienceLoggers(){ DeveloperLogger.info("Testing DeveloperLogger class", acsLogger); (new DeveloperLogger(acsLogger)).fine("Testing DeveloperLogger object"); (new OperatorLogger(acsLogger)).warning("Testing OperatorLogger object"); OperatorLogger.info("Testing OperatorLogger class", acsLogger); ScienceLogger.info("Testing ScienceLogger class", acsLogger); } public void testLoggerStatistics() { // Logs not counted acsLogger.log(AcsLogLevel.TRACE, "Message TRACE"); acsLogger.log(AcsLogLevel.DELOUSE, "Message DELOUSE"); acsLogger.log(AcsLogLevel.DEBUG, "Message DEBUG"); acsLogger.log(AcsLogLevel.INFO, "Message INFO"); acsLogger.log(AcsLogLevel.NOTICE, "Message NOTICE"); acsLogger.log(AcsLogLevel.WARNING, "Message WARNING"); acsLogger.log(AcsLogLevel.ERROR, "Message ERROR"); acsLogger.log(AcsLogLevel.CRITICAL, "Message CRITICAL"); acsLogger.log(AcsLogLevel.ALERT, "Message ALERT"); acsLogger.log(AcsLogLevel.EMERGENCY, "Message EMERGENCY"); // Configure statistics acsLogger.stats.configureStatistics("AcsLoggerTest", false, 4, 1); // Logs counted (10 messages) acsLogger.log(AcsLogLevel.TRACE, "Message TRACE"); acsLogger.log(AcsLogLevel.DELOUSE, "Message DELOUSE"); acsLogger.log(AcsLogLevel.DEBUG, "Message DEBUG"); acsLogger.log(AcsLogLevel.INFO, "Message INFO"); acsLogger.log(AcsLogLevel.NOTICE, "Message NOTICE"); acsLogger.log(AcsLogLevel.WARNING, "Message WARNING"); acsLogger.log(AcsLogLevel.ERROR, "Message ERROR"); acsLogger.log(AcsLogLevel.CRITICAL, "Message CRITICAL"); acsLogger.log(AcsLogLevel.ALERT, "Message ALERT"); acsLogger.log(AcsLogLevel.EMERGENCY, "Message EMERGENCY"); // This will force the statistics to be printed try { Thread.sleep(4000); //1000 milliseconds is one second. } catch (Exception e) { System.out.println(e); } acsLogger.log(AcsLogLevel.TRACE, "Message TRACE 2"); // This will force the statistics to be printed (again) try { Thread.sleep(4000); //1000 milliseconds is one second. } catch (Exception e) { System.out.println(e); } acsLogger.log(AcsLogLevel.TRACE, "Message TRACE 3"); acsLogger.log(AcsLogLevel.TRACE, "Message TRACE 4"); acsLogger.log(AcsLogLevel.TRACE, "Message TRACE 5"); acsLogger.log(AcsLogLevel.TRACE, "Message TRACE 6"); // Close logger module, that will force statistics to be printed acsLogger.closeLogger(); } }