www.ironjacamar.orgCommunity Documentation
Table of Contents
Testing an Enterprise Information System can be a complex task, as their installation can quite complex and specific to a certain platform architecture.
As Java developers, and resource adapter developers in particularly, we are interested in a setup that will allow us to test the resource adapter against the EIS with as little difficulty as possible.
Having access to a component that easy integrates into our testing environment, and acts as the EIS in question is of benefit.
The IronJacamar EIS test server provides a framework for emulating an Enterprise Information System such that no installation is needed.
The EIS test server contains the following interface
/*
* IronJacamar, a Java EE Connector Architecture implementation
* Copyright 2012, Red Hat Inc, and individual contributors
* as indicated by the @author tags. See the copyright.txt file in the
* distribution for a full listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.jboss.jca.test.eis;
import java.io.InputStream;
import java.io.OutputStream;
/**
* This interface represents a session between a resource adapter
* and an Enterprise Information System
*
* Once the <code>handle</code> method returns the socket where
* the communication takes place is closed
*
* @author <a href="mailto:jesper.pedersen@ironjacamar.org">Jesper Pedersen</a>
*/
public interface Handler
{
/**
* Handle an interaction with a client
* @param is The input stream
* @param os The output stream
*/
public void handle(InputStream is, OutputStream os);
}
which represents a session between the resource adapter and the EIS.
The java.io.InputStream
is the incoming communication coming from the resource adapter, and
the java.io.OutputStream
is the EIS' response to the request.
Once the method returns the socket between the resource adapter and the EIS is closed.
This means that the implementation of the Handler
interface will represent the binary
protocol between the resource adapter and the EIS. To the resource adapter it will look as it is
communicating with the real Enterprise Information System installation.
The Apache Ant tasks for starting and stopping the EIS test server are defined as the following
<taskdef name="start" classname="org.jboss.jca.test.eis.ant.Start" classpathref="main.lib.path.id"/> <taskdef name="stop" classname="org.jboss.jca.test.eis.ant.Stop" classpathref="main.lib.path.id"/>
where main.lib.path.id
contains the ironjacamar-test-eis.jar
file.
The start
task is used, like
<start host="localhost" port="1400" handler="org.jboss.jca.test.eis.EchoHandler"> <classpath> <pathelement location="${build.eis.dir}/test"/> </classpath> </start>
which starts the EIS test server on localhost
using port 1400
with an
implementation of the Handler
interface of org.jboss.jca.test.eis.EchoHandler
and a classpath of ${build.eis.dir}/test
.
The stop
task is used, like
<stop host="localhost" port="1400"/>
which stops the EIS test server on localhost
using port 1400
.
Between the start
and stop
tasks the resource adapters unit tests
can be executed.
The Apache Maven mojos for starting and stopping the EIS test server are defined as the following
<build> <plugins> <plugin> <groupId>org.jboss.ironjacamar</groupId> <artifactId>ironjacamar-test-eis</artifactId> <!-- The version of the plugin you want to use --> <version>1.2.0.Final</version> <executions> <execution> <goals> <goal>start</goal> </goals> </execution> </executions> <configuration> <host>localhost</host> <port>1400</port> <handler>org.jboss.jca.test.eis.EchoHandler</handler> <classpath> <param>target/test-classes</param> </classpath> </configuration> </plugin> <plugin> <groupId>org.jboss.ironjacamar</groupId> <artifactId>ironjacamar-test-eis</artifactId> <!-- The version of the plugin you want to use --> <version>1.2.0.Final</version> <executions> <execution> <goals> <goal>stop</goal> </goals> </execution> </executions> <configuration> <host>localhost</host> <port>1400</port> </configuration> </plugin> </plugins> </build>
The start
mojo will run in the process-test-classes
phase, and the
stop
mojo will run in the test
phase.