You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@avalon.apache.org by do...@apache.org on 2002/09/28 06:05:27 UTC

cvs commit: jakarta-avalon-phoenix/src/test/org/apache/avalon/phoenix/components/logger/test config1.xml LogManagerTestCase.java

donaldp     2002/09/27 21:05:27

  Modified:    .        build.xml
               src/java/org/apache/avalon/phoenix/components/logger
                        DefaultLogManager.java
               src/test/org/apache/avalon/phoenix/components/logger/test
                        LogManagerTestCase.java
  Added:       src/test/org/apache/avalon/phoenix/components/logger/test
                        config1.xml
  Log:
  Add first set of unit tests for simple LogKit LogManager portion of LogManager
  
  Revision  Changes    Path
  1.168     +50 -0     jakarta-avalon-phoenix/build.xml
  
  Index: build.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-phoenix/build.xml,v
  retrieving revision 1.167
  retrieving revision 1.168
  diff -u -r1.167 -r1.168
  --- build.xml	15 Sep 2002 02:07:31 -0000	1.167
  +++ build.xml	28 Sep 2002 04:05:27 -0000	1.168
  @@ -37,12 +37,15 @@
       <property name="build.lib" value="${build.dir}/lib"/>
       <property name="build.src" value="${build.dir}/src"/>
       <property name="build.classes" value="${build.dir}/classes"/>
  +    <property name="build.tests" value="${build.dir}/tests"/>
  +    <property name="build.testclasses" value="${build.dir}/testclasses"/>
       <property name="build.reports" value="${build.dir}/reports"/>
       <property name="build.xdoclet" value="${build.dir}/xdoclet"/>
   
       <!-- Set the properties for source directories -->
       <property name="src.dir" value="src"/>
       <property name="java.dir" value="${src.dir}/java"/>
  +    <property name="test.dir" value="${src.dir}/test"/>
       <property name="compat.dir" value="${src.dir}/compat"/>
       <property name="conf.dir" value="${src.dir}/conf"/>
       <property name="script.dir" value="${src.dir}/script"/>
  @@ -82,6 +85,12 @@
           <pathelement path="${build.classes}" />
       </path>
   
  +    <path id="test.class.path">
  +        <pathelement location="${build.testclasses}"/>
  +        <pathelement location="${junit.jar}"/>
  +        <path refid="project.class.path"/>
  +    </path>
  +
       <!-- Main target -->
       <target name="main" depends="dist-lite"
           description="generates the Phoenix distribution without the javadocs"/>
  @@ -219,6 +228,47 @@
                   <include name="**/*.xdt" />
               </fileset>
           </copy>
  +
  +    </target>
  +
  +        <!-- Compiles the source code -->
  +    <target name="test" depends="compile" description="compiles and runs unit tests">
  +
  +        <mkdir dir="${build.testclasses}"/>
  +
  +        <javac srcdir="${test.dir}"
  +            destdir="${build.testclasses}"
  +            debug="${build.debug}"
  +            optimize="${build.optimize}"
  +            deprecation="${build.deprecation}">
  +            <classpath refid="test.class.path" />
  +            <src path="${test.dir}" />
  +        </javac>
  +
  +        <copy todir="${build.testclasses}">
  +            <fileset dir="${test.dir}">
  +                <exclude name="**/*.java" />
  +            </fileset>
  +        </copy>
  +
  +        <mkdir dir="${build.tests}"/>
  +
  +        <junit fork="true"
  +            haltonfailure="${junit.failonerror}"
  +            printsummary="yes"
  +            dir="${build.tests}">
  +            <classpath refid="test.class.path"/>
  +
  +            <formatter type="xml"/>    <!-- xml reports for junitreport -->
  +            <formatter type="plain" usefile="false"/>  <!-- text reports for humans     -->
  +
  +            <batchtest todir="${build.tests}">
  +                <fileset dir="${build.testclasses}">
  +                    <include name="**/test/*TestCase.class"/>
  +                    <exclude name="**/Abstract*"/>
  +                </fileset>
  +            </batchtest>
  +        </junit>
   
       </target>
   
  
  
  
  1.21      +4 -2      jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/components/logger/DefaultLogManager.java
  
  Index: DefaultLogManager.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/components/logger/DefaultLogManager.java,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- DefaultLogManager.java	21 Sep 2002 02:56:28 -0000	1.20
  +++ DefaultLogManager.java	28 Sep 2002 04:05:27 -0000	1.21
  @@ -48,8 +48,10 @@
                                      final ClassLoader classLoader )
           throws Exception
       {
  +        final String sarName = metaData.getName();
  +
           final DefaultContext context = new DefaultContext();
  -        context.put( BlockContext.APP_NAME, metaData.getName() );
  +        context.put( BlockContext.APP_NAME, sarName );
           context.put( BlockContext.APP_HOME_DIR, metaData.getHomeDirectory() );
           context.put( "classloader", classLoader );
   
  @@ -58,7 +60,7 @@
           if( getLogger().isDebugEnabled() )
           {
               final String message =
  -                REZ.getString( "logger-create", metaData.getName(), version );
  +                REZ.getString( "logger-create", sarName, version );
               getLogger().debug( message );
           }
           final LoggerManager loggerManager = createLoggerManager( version );
  
  
  
  1.2       +117 -2    jakarta-avalon-phoenix/src/test/org/apache/avalon/phoenix/components/logger/test/LogManagerTestCase.java
  
  Index: LogManagerTestCase.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-phoenix/src/test/org/apache/avalon/phoenix/components/logger/test/LogManagerTestCase.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- LogManagerTestCase.java	28 Sep 2002 02:44:03 -0000	1.1
  +++ LogManagerTestCase.java	28 Sep 2002 04:05:27 -0000	1.2
  @@ -7,7 +7,21 @@
    */
   package org.apache.avalon.phoenix.components.logger.test;
   
  +import java.io.File;
  +import java.io.IOException;
  +import java.io.InputStream;
   import junit.framework.TestCase;
  +import org.apache.avalon.excalibur.io.FileUtil;
  +import org.apache.avalon.framework.configuration.Configuration;
  +import org.apache.avalon.framework.configuration.DefaultConfigurationBuilder;
  +import org.apache.avalon.framework.container.ContainerUtil;
  +import org.apache.avalon.framework.logger.ConsoleLogger;
  +import org.apache.avalon.framework.logger.Logger;
  +import org.apache.avalon.phoenix.components.logger.DefaultLogManager;
  +import org.apache.avalon.phoenix.interfaces.LogManager;
  +import org.apache.avalon.phoenix.metadata.BlockListenerMetaData;
  +import org.apache.avalon.phoenix.metadata.BlockMetaData;
  +import org.apache.avalon.phoenix.metadata.SarMetaData;
   
   /**
    *  An basic test case for the LogManager.
  @@ -18,8 +32,109 @@
   public class LogManagerTestCase
       extends TestCase
   {
  -    public LogManagerTestCase( String name )
  +    public static final String DEFAULT_LOGFILE = "logs/default.log";
  +    public static final String BLOCK_LOGFILE = "logs/myBlock.log";
  +
  +    private File m_baseDirectory;
  +
  +    public LogManagerTestCase( final String name )
       {
           super( name );
  +    }
  +
  +    protected void setUp() throws Exception
  +    {
  +        m_baseDirectory = new File( "test" );
  +        m_baseDirectory.mkdirs();
  +    }
  +
  +    private SarMetaData createSarMetaData( final String subdir )
  +    {
  +        final BlockMetaData[] blocks = new BlockMetaData[ 0 ];
  +        final BlockListenerMetaData[] listeners = new BlockListenerMetaData[ 0 ];
  +        final File homeDirectory = new File( m_baseDirectory, subdir );
  +        return new SarMetaData( "test",
  +                                homeDirectory,
  +                                blocks,
  +                                listeners );
  +    }
  +
  +    private LogManager createLogManager()
  +    {
  +        final DefaultLogManager logManager = new DefaultLogManager();
  +        ContainerUtil.enableLogging( logManager, new ConsoleLogger() );
  +        return logManager;
  +    }
  +
  +    public void testBasic()
  +        throws Exception
  +    {
  +        final int index = 1;
  +        final Logger hierarchy = createHierarchy( index );
  +        runLoggerTest( hierarchy, DEFAULT_LOGFILE, index );
  +
  +        final Logger childLogger = hierarchy.getChildLogger( "myBlock" );
  +        runLoggerTest( childLogger, BLOCK_LOGFILE, index );
  +    }
  +
  +    private void runLoggerTest( final Logger logger,
  +                                final String logfile,
  +                                final int index )
  +    {
  +        final long before = getFileSize( index, logfile );
  +        logger.warn( "Danger Will Robinson, Danger!" );
  +        final long after = getFileSize( index, logfile );
  +
  +        assertFileGrew( logfile, before, after );
  +    }
  +
  +    private void assertFileGrew( final String logfile, long before, long after )
  +    {
  +        assertTrue( "Did " + logfile + " file grow?, Before: " + before + ", After: " + after,
  +                    before < after );
  +    }
  +
  +    private long getFileSize( final int index, final String filename )
  +    {
  +        final String baseDir = getBaseDir( index );
  +        final File base = new File( m_baseDirectory, baseDir );
  +        final File file = new File( base, filename );
  +        return file.length();
  +    }
  +
  +    private Logger createHierarchy( final int index )
  +        throws Exception
  +    {
  +        final Configuration logs = loadConfig( "config" + index + ".xml" );
  +        final LogManager logManager = createLogManager();
  +        final SarMetaData sarMetaData = createSarMetaData( getBaseDir( index ) );
  +
  +        cleanHomeDirectory( sarMetaData );
  +
  +        return logManager.createHierarchy( sarMetaData,
  +                                           logs,
  +                                           getClass().getClassLoader() );
  +    }
  +
  +    private String getBaseDir( final int index )
  +    {
  +        return "test" + index;
  +    }
  +
  +    private void cleanHomeDirectory( final SarMetaData sarMetaData )
  +        throws IOException
  +    {
  +        final File homeDirectory = sarMetaData.getHomeDirectory();
  +        FileUtil.deleteDirectory( homeDirectory );
  +        homeDirectory.mkdirs();
  +    }
  +
  +    private Configuration loadConfig( final String config )
  +        throws Exception
  +    {
  +        final DefaultConfigurationBuilder builder = new DefaultConfigurationBuilder();
  +        final InputStream resource =
  +            getClass().getResourceAsStream( config );
  +        return builder.build( resource );
       }
   }
  
  
  
  1.1                  jakarta-avalon-phoenix/src/test/org/apache/avalon/phoenix/components/logger/test/config1.xml
  
  Index: config1.xml
  ===================================================================
  <logs version="1.0">
      <category name="" target="default-target" priority="DEBUG"/>
      <category name="myBlock" target="myBlock-target" priority="DEBUG"/>
      <log-target name="default-target" location="/logs/default.log"/>
      <log-target name="myBlock-target" location="/logs/myBlock.log"/>
  </logs>
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>