donaldp     2002/09/30 23:19:50

  Added:       src/test/org/apache/avalon/phoenix/components/application/test
                        ApplicationTestCase.java
                        MockApplicationContext.java assembly1.xml
                        assembly2.xml
  Log:
  Simple set of unit tests that make sure that the application started up with 
specified asssemblies.
  
  Revision  Changes    Path
  1.1                  
jakarta-avalon-phoenix/src/test/org/apache/avalon/phoenix/components/application/test/ApplicationTestCase.java
  
  Index: ApplicationTestCase.java
  ===================================================================
  /*
   * Copyright (C) The Apache Software Foundation. All rights reserved.
   *
   * This software is published under the terms of the Apache Software License
   * version 1.1, a copy of which has been included with this distribution in
   * the LICENSE.txt file.
   */
  package org.apache.avalon.phoenix.components.application.test;
  
  import java.io.File;
  import java.io.IOException;
  import java.io.InputStream;
  import java.util.HashMap;
  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.configuration.ConfigurationException;
  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.components.application.DefaultApplication;
  import org.apache.avalon.phoenix.interfaces.LogManager;
  import org.apache.avalon.phoenix.interfaces.ApplicationContext;
  import org.apache.avalon.phoenix.metadata.BlockListenerMetaData;
  import org.apache.avalon.phoenix.metadata.BlockMetaData;
  import org.apache.avalon.phoenix.metadata.SarMetaData;
  import org.apache.avalon.phoenix.test.AbstractContainerTestCase;
  import org.apache.excalibur.threadcontext.ThreadContext;
  import org.apache.excalibur.threadcontext.impl.DefaultThreadContextPolicy;
  
  /**
   *  An basic test case for the LogManager.
   *
   * @author <a href="mailto:peter at apache.org">Peter Donald</a>
   * @version $Revision: 1.1 $ $Date: 2002/10/01 06:19:50 $
   */
  public class ApplicationTestCase
      extends AbstractContainerTestCase
  {
      public ApplicationTestCase( final String name )
      {
          super( name );
      }
  
      public void testBasic()
          throws Exception
      {
          runApplicationTest( "assembly1.xml" );
      }
  
      public void testComplex()
          throws Exception
      {
          runApplicationTest( "assembly2.xml" );
      }
  
      private void runApplicationTest( final String config )
          throws Exception
      {
          final SarMetaData sarMetaData = assembleSar( config );
          runApplicationTest( sarMetaData );
      }
  
      private void runApplicationTest( final SarMetaData sarMetaData )
          throws Exception
      {
          final DefaultApplication application = new DefaultApplication();
          application.enableLogging( new ConsoleLogger() );
          final MockApplicationContext context =
              new MockApplicationContext( sarMetaData, new ConsoleLogger() );
          application.setApplicationContext( context );
          application.initialize();
          application.start();
          application.stop();
          application.dispose();
      }
  }
  
  
  
  1.1                  
jakarta-avalon-phoenix/src/test/org/apache/avalon/phoenix/components/application/test/MockApplicationContext.java
  
  Index: MockApplicationContext.java
  ===================================================================
  /*
   * Copyright (C) The Apache Software Foundation. All rights reserved.
   *
   * This software is published under the terms of the Apache Software License
   * version 1.1, a copy of which has been included with this distribution in
   * the LICENSE.txt file.
   */
  package org.apache.avalon.phoenix.components.application.test;
  
  import org.apache.avalon.phoenix.interfaces.ApplicationContext;
  import org.apache.avalon.phoenix.metadata.SarMetaData;
  import org.apache.avalon.framework.logger.Logger;
  import org.apache.avalon.framework.configuration.Configuration;
  import org.apache.avalon.framework.configuration.ConfigurationException;
  import org.apache.excalibur.threadcontext.ThreadContext;
  import org.apache.excalibur.threadcontext.impl.DefaultThreadContextPolicy;
  import java.util.HashMap;
  import java.io.InputStream;
  
  /**
   *
   * @author <a href="mailto:peter at apache.org">Peter Donald</a>
   * @version $Revision: 1.1 $ $Date: 2002/10/01 06:19:50 $
   */
  class MockApplicationContext
      implements ApplicationContext
  {
      private final ThreadContext m_threadContext = new ThreadContext( new 
DefaultThreadContextPolicy(), new HashMap() );
      private final SarMetaData m_sarMetaData;
      private final Logger m_logger;
  
      public MockApplicationContext( final SarMetaData sarMetaData,
                                     final Logger logger )
      {
          m_sarMetaData = sarMetaData;
          m_logger = logger;
      }
  
      public SarMetaData getMetaData()
      {
          return m_sarMetaData;
      }
  
      public ThreadContext getThreadContext()
      {
          return m_threadContext;
      }
  
      public void requestShutdown()
      {
          //ignore
      }
  
      public void exportObject( String name, Class[] interfaceClasses, Object object )
          throws Exception
      {
          //ignore
      }
  
      public void unexportObject( String name )
          throws Exception
      {
          //ignore
      }
  
      public ClassLoader getClassLoader()
      {
          return getClass().getClassLoader();
      }
  
      public InputStream getResourceAsStream( final String name )
      {
          return getClassLoader().getResourceAsStream( name );
      }
  
      public Configuration getConfiguration( String component )
          throws ConfigurationException
      {
          throw new ConfigurationException( "I can't do that dave!" );
      }
  
      public Logger getLogger( String name )
      {
          return m_logger;
      }
  }
  
  
  
  1.1                  
jakarta-avalon-phoenix/src/test/org/apache/avalon/phoenix/components/application/test/assembly1.xml
  
  Index: assembly1.xml
  ===================================================================
  <?xml version="1.0"?>
  <!DOCTYPE assembly PUBLIC "-//PHOENIX/Assembly DTD Version 1.0//EN"
                    "http://jakarta.apache.org/avalon/dtds/phoenix/assembly_1.0.dtd";>
  
  <assembly>
  
      <block class="org.apache.avalon.phoenix.test.data.Component1"
          name="c1">
          <provide name="c2"
              role="org.apache.avalon.phoenix.test.data.Service2"/>
      </block>
  
      <block class="org.apache.avalon.phoenix.test.data.Component2"
          name="c2">
          <proxy disable="true"/>
      </block>
  
  </assembly>
  
  
  1.1                  
jakarta-avalon-phoenix/src/test/org/apache/avalon/phoenix/components/application/test/assembly2.xml
  
  Index: assembly2.xml
  ===================================================================
  <?xml version="1.0"?>
  <!DOCTYPE assembly PUBLIC "-//PHOENIX/Assembly DTD Version 1.0//EN"
                    "http://jakarta.apache.org/avalon/dtds/phoenix/assembly_1.0.dtd";>
  
  <assembly>
  
      <block class="org.apache.avalon.phoenix.test.data.Component2"
          name="c2a"/>
  
      <block class="org.apache.avalon.phoenix.test.data.Component2"
          name="c2b"/>
  
      <block class="org.apache.avalon.phoenix.test.data.Component2"
          name="c2c"/>
  
      <block class="org.apache.avalon.phoenix.test.data.Component3"
          name="c3">
          <provide name="c2a"
              role="org.apache.avalon.phoenix.test.data.Service2[]"/>
          <provide name="c2b"
              role="org.apache.avalon.phoenix.test.data.Service2[]"/>
          <provide name="c2c"
              role="org.apache.avalon.phoenix.test.data.Service2[]"/>
      </block>
  
  </assembly>
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to