whitlock 2002/10/18 07:20:05 Modified: java/doc run.htm Log: Added unit test description Revision Changes Path 1.2 +70 -2 xml-axis-wsif/java/doc/run.htm Index: run.htm =================================================================== RCS file: /home/cvs/xml-axis-wsif/java/doc/run.htm,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- run.htm 14 Oct 2002 16:47:53 -0000 1.1 +++ run.htm 18 Oct 2002 14:20:05 -0000 1.2 @@ -13,9 +13,77 @@ <h2>Tests</h2> <p> -TBW: general information about tests, junit and how to run them +WSIF has a number of unit tests found in the tests directory. These use Junit (currently Junit 3.7). +WSIF unit tests are loosely themed and test function in multiple providers. For instance +jms.JmsTest tests jms:address, jms:property and jms:propertyValue tags across the SoapJms, +AxisJms and NativeJms providers. You can either run a specific unit test or run all of them by +running util.WSIFTestRunner. wsif.test.properties has +wsif.test.components=ejb=on,jms=on,remotewsdl=on,jndi=on,fix=on,async=on +which allows you to switch off areas across all unit tests. So because I rarely change the EJB provider, +I run with ejb=off so when I run WSIFTestRunner none of the EJB tests get run. This can be dangerous +and it is generally better to run all the unit tests. Individual unit tests can call +TestUtilities.areWeTesting("ejb") for instance. There are various listeners needed to run the unit +tests (JMS2HTTPBridge, JMSAsyncListener, NativeJMSRequestListener) and unit tests automatically start +and stop the listeners that they need. All the tests need to find WSDL and other files on the +local filesystem. This is done by looking for the WSIF src, samples and tests directories under +the directory specified by the wsif.path property in wsif.test.properties. So I have wsif.path=c:\\wsif. +The setup required to run the unit tests is based on the various providers being used. +</p> +<p> +For Soap and Axis over Http, find all files called DeploymentDescriptor.xml in the samples and tests +directories and deploy them to your favourite web server. The web server must be running on your +localhost using port 8080. In the future localhost:8080 should be a property loaded from +wsif.test.propeerties. The level of soap or axis used on your +server does not have to be the same as the level used by WSIF. I use soap 2.2 on tomcat so I issue +java org.apache.soap.server.ServiceManagerClient http://localhost:8080/soap/servlet/rpcrouter deploy "samples\services\addressbook\DeploymentDescriptor.xml" +</p> +<p> +There is no setup to do to run tests under the Java provider. +</p> +<p> +To run tests using the EJB provider, ... todo ??? +</p> +<p> +There are three providers that are enabled for Jms : Soap, Axis and NativeJms. Asynchronous support is +currently only supported over Jms, so to test out async you need Jms. Obviously you need a Jms +implementation. WSIF uses JNDI to lookup Jms queues and queue connnection factories. Topics are +not supported at the moment. The batch files samples\wsifjmssetup.bat and samples\wsifjmstidy.bat create +and delete the JNDI definitions for the Jms queues and queue connection factory needed to run the samples +and some of the unit tests. I use IBM MQSeries as my Jms implementation so the batch files +samples\wsifmqsetup.bat and samples\wsifmqtidy.bat create and delete the MQSeries queues needed to +run the samples and some of the unit tests. The batch files tests\wsiftestjmssetup.bat and tests\wsiftestmqsetup.bat create the +JNDI definitions and the MQSeries queues needed to run the unit tests. No code in WSIF or in the unit +tests is MQ-specific, except for these mq batch files and WSIFJMSFinderForMq. The unit tests also +assume the local queue manager is being used. The unit tests also assume that the JNDI database is on +the filesystem in \JNDI-Directory. +</p> +<p> +WSIF provides a JMS2HTTPBridge which takes soap messages from a Jms queue, routes them to a url and sends +the response message back to a replyTo queue. The JMS2HTTPBridge is intended as a test tool only. +So unit tests that test SoapJms and AxisJms start the JMS2HTTPBridge automatically. NativeJms requests +are served by the NativeJMSRequestListener which implements the backend service for our unit tests. +</p> +<p> +Specifying remotewsdl=on in wsif.test.components will enable the tests in the wsdl package to be run. These +tests test out loading wsdl from a url, from a jar file and test out imports. So you need +wsdl\ClassLoaderTest.jar on your classpath, and http://localhost:8080/wsdl/AddressBook.wsdl needs +to be available. +</p> +<p> +The intention is for all unit tests to be run by WSIFTestRunner so everyone runs them all automatically. +Unfortunately there are a few tests which cannot be run in this way (or rather I could not make them +run automatically). An example of this is the translated.messages tests, because these need to set the +locale, and I could not reset the locale multiple times in the same test. +</p> +<p> +The intention is for everyone to make sure that all the unit tests are kept working all the time, so +no regressions find their way in. If you add in new code (or even fixes) into WSIF, please add in new +unit tests, or extend existing tests to cover the new code you've added. Otherwise tomorrow someone +may unknowingly break your code. If you add in new unit tests please add them to WSIFTestRunner so +that everyone will automatically run them as well. I guess when you make a change that requires a +service to be redeployed or a queue definition to be added or changed, please notify everyone on +axis-dev so that everyone can update their setup. </p> - <h2>Samples</h2> <p>