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]>