<?xml version="1.0"?>
<!DOCTYPE project [
        <!ENTITY properties SYSTEM "xmls/properties.xml">
        <!ENTITY paths  SYSTEM "xmls/path_refs.xml">
        <!ENTITY taskdefs SYSTEM "xmls/taskdefs.xml">
        <!ENTITY taskdefs_post_compile SYSTEM "xmls/taskdefs_post_compile.xml">
        <!ENTITY targets SYSTEM "xmls/targets.xml">
]>

<project default="printEnv" basedir=".">
<!-- =================================================================== -->
<description>
   Test Files Build file for Axis

Notes:
   This is a build file for use with the Jakarta Ant build tool.

Prerequisites:

   jakarta-ant from http://jakarta.apache.org

Optional components:
   SOAP Attachment support enablement:
     activation.jar from http://java.sun.com/products/javabeans/glasgow/jaf.html
     mailapi.jar    from http://java.sun.com/products/javamail/
   Security support enablement:
     xmlsec.jar from fresh build of CVS from http://xml.apache.org/security/
     Other support jars from http://cvs.apache.org/viewcvs.cgi/xml-security/libs/

Build Instructions:
   To build, run

     ant "target"

   on the directory where this file is located with the target you want.

Most useful targets:

 - compile  : compiles the tests and WSDL files

Author:
  Matt Seibert mseibert@us.ibm.com

Copyright:
  Copyright (c) 2002-2003 Apache Software Foundation.
</description>
<!-- ==================================================================== -->

      &properties;
      &paths;
      &taskdefs;
      &taskdefs_post_compile;
      &targets;

  <!-- Give user a chance to override without editing this file
       (and without typing -D each time it compiles it) -->
  <property file="test.properties"/>
  <property file="${user.home}/test.properties"/>

<!-- =========================================================================== -->
  <target name="compile" depends="printEnv,copy">
    <!-- Compile the code -->
    <antcall target="compileJunit"/>
    <antcall target="compileFunctional"/>
  </target>

  <target name="compileJunit" depends="printEnv,copy">
    <!-- Compile the code -->
    <foreach target="component-compile" fork="${foreach.fork}" inheritAll="${ant.inheritAll}" inheritRefs="${ant.inheritRefs}">
        <param name="file">
             <fileset dir="${axis.home}" >
               <patternset>
                 <include name="test/**/build.xml"/>
                 <exclude name="test/wsdl/**/build.xml" />
                 <exclude name="test/functional/build.xml"/>
                 <!-- TODO: these tests are not working because they rely on a 3rd party service that is no longer available -->
                 <exclude name="test/client/build.xml"/>
               </patternset>
             </fileset>
        </param>
     </foreach>
  </target>

  <target name="compileFunctional" depends="printEnv,copy">
    <!-- Compile the code -->
    <foreach target="component-compile" fork="${foreach.fork}" inheritAll="${ant.inheritAll}" inheritRefs="${ant.inheritRefs}">
        <param name="file">
             <fileset dir="${axis.home}" >
               <patternset>
                 <include name="test/wsdl/**/build.xml" />
                 <include name="test/rpc/**/build.xml" />
                 <include name="test/functional/build.xml"/>
                 <exclude name="test/wsdl/attachments/**/build.xml" unless="attachments.present"/>
                 <exclude name="test/wsdl/interop3/**/build.xml" />
		 <exclude name="test/wsdl/adaptive/**/build.xml" />
                 <!-- TODO: AXIS-2865 -->
                 <exclude name="test/wsdl/liberty/build.xml"/>
               </patternset>
             </fileset>
        </param>
     </foreach>
  </target>

  <!-- =================================================================== -->
  <!-- Compiles the JUnit testcases -->
  <!-- =================================================================== -->

  <!-- =================================================================== -->
  <!-- Runs the JUnit package testcases -->
  <!-- =================================================================== -->
  <target name="junit" if="junit.present">
    <available file="${axis.home}/junit-exclude-tests.txt" property="junit-exclude-tests.present"/>
    <junit printsummary="yes" haltonfailure="${test.functional.fail}" fork="yes">
      <jvmarg value="-Xbootclasspath:${sun.boot.class.path}"/>
      <classpath refid="classpath" />
      <formatter type="xml" />
      <batchtest todir="${test.functional.reportdir}">
        <fileset dir="${build.dir}/classes">
          <!-- Convention: each package that's being tested
                has its own test class collecting all the tests -->
          <include name="**/PackageTests.class" />
          <excludesfile name="${axis.home}/junit-exclude-tests.txt" if="junit-exclude-tests.present"/> 
          <!-- <include name="**/test/*TestSuite.class"/> -->
        </fileset>
      </batchtest>
    </junit>
  </target>

  <!-- =================================================================== -->
  <!-- Functional tests, no server (for testing under debugger)            -->
  <!-- =================================================================== -->
  <target name="functional-tests-noserver">
    <ant inheritAll="${ant.inheritAll}" inheritRefs="${ant.inheritRefs}" dir="${axis.home}/test" antfile="build_functional_tests.xml" target="junit-functional-noserver">
      <property name="test.functional.usefile" value="${test.functional.usefile}"/>
    </ant>
  </target>

  <!-- =================================================================== -->
  <!-- Cleans everything                                                   -->
  <!-- =================================================================== -->
  <target name="clean">
    <delete dir="${build.dir}/test"/>
  </target>

  <target name="copy"/>

  <!-- =================================================================== -->
  <!-- Prepares the JUnit functional test -->
  <!-- =================================================================== -->
  <target name="junit-functional-prepare" if="junit.present">
          <path id="deploy.xml.files">
                <fileset dir="${build.dir}/work">
                  <include name="**/deploy.wsdd"/>
                  <exclude name="mssoapinterop/interop*/deploy.wsdd"/>
                </fileset>
          </path>

          <path id="undeploy.xml.files">
                <fileset dir="${build.dir}/work">
                  <include name="**/undeploy.wsdd"/>
                  <exclude name="mssoapinterop/interop*/undeploy.wsdd"/>
                </fileset>
          </path>
          <property name="deploy.xml.property" refid="deploy.xml.files"/>
          <property name="undeploy.xml.property" refid="undeploy.xml.files"/>
  </target>

  <!-- =================================================================== -->
  <!-- Runs the JUnit functional test -->
  <!-- =================================================================== -->
  <target name="junit-functional" if="junit.present" depends="junit-functional-prepare">
    <mkdir dir="${test.functional.reportdir}" />

    <java classname="org.apache.axis.client.AdminClient" fork="yes">
      <classpath refid="classpath" />
      <arg line="${deploy.xml.property}"/>
    </java>

    <available file="${axis.home}/junit-exclude-tests.txt" property="junit-exclude-tests.present"/>
    <!-- now, run the actual test -->
    <junit dir="${axis.home}" printsummary="yes" haltonfailure="${test.functional.fail}" fork="yes">
      <!-- See if this helps with Gump test failures -->
      <sysproperty key="build.clonevm" value="true"/>

      <!-- Pass the parser settings -->
      <jvmarg value="-Djavax.xml.parsers.DocumentBuilderFactory=${javax.xml.parsers.DocumentBuilderFactory}"/>
      <jvmarg value="-Djavax.xml.parsers.SAXParserFactory=${javax.xml.parsers.SAXParserFactory}"/>
      <jvmarg value="-Xbootclasspath:${sun.boot.class.path}"/>
      <jvmarg value="-Djikes.class.path=${jikes.class.path}"/>

      <!-- Pass through the proxy parameters -->
      <jvmarg value="-Dhttp.proxyHost=${http.proxyHost}"/>
      <jvmarg value="-Dhttp.proxyPort=${http.proxyPort}"/>
      <jvmarg value="-Dhttp.nonProxyHosts=${http.nonProxyHosts}"/>
      <jvmarg value="-Dhttp.proxyUser=${http.proxyUser}"/>
      <jvmarg value="-Dhttp.proxyPassword=${http.proxyPassword}"/>
      <!-- Pass the port for SimpleAxisServer -->
      <jvmarg value="-Dtest.functional.SimpleAxisPort=${test.functional.SimpleAxisPort}"/>
      <jvmarg value="-Dtest.functional.ServicePort=${test.functional.ServicePort}"/>
      <classpath refid="classpath" />
      <formatter type="xml" usefile="${test.functional.usefile}"/>
      <batchtest todir="${test.functional.reportdir}">
        <fileset dir="${build.dest}">
          <!-- Convention: each package that's being tested
                has its own test class collecting all the tests -->
              <include name="**/FunctionalTests.class" />
              <include name="**/*TestCase.class" />
              <exclude name="**/Interop3TestCase.class"/>
              <exclude name="**/DataServiceTestCase.class"/>
              <exclude name="**/WhiteMesaSoap12TestSvcTestCase.class"/>
              <exclude name="**/test/wsdl/attachments/**/*.class" unless="attachments.present" />
	      <exclude name="**/test/wsdl/adaptive/**/*.class"/>
          <excludesfile name="${axis.home}/junit-exclude-tests.txt" if="junit-exclude-tests.present"/> 
        </fileset>
      </batchtest>
    </junit>

    <java classname="org.apache.axis.client.AdminClient" fork="yes">
      <classpath refid="classpath" />
      <arg line="${undeploy.xml.property}"/>
    </java>
  </target>

  <target name="junit-functional-secure" if="junit.present" depends="junit-functional-prepare,start-signature-signing-and-verification">
    <available file="${axis.home}/junit-exclude-tests.txt" property="junit-exclude-tests.present"/>
    <!-- now, run the actual test -->
    <junit dir="${axis.home}" printsummary="yes" haltonfailure="${test.functional.fail}" fork="yes">
      <classpath refid="classpath" />
      <formatter type="xml" usefile="${test.functional.usefile}"/>
      <batchtest todir="${test.functional.reportdir}">
        <fileset dir="${build.dest}">
          <!-- Convention: each package that's being tested
                has its own test class collecting all the tests -->
              <include name="**/TestBidBuySample.class" />
              <exclude name="**/Interop3TestCase.class"/>
              <excludesfile name="${axis.home}/junit-exclude-tests.txt" if="junit-exclude-tests.present"/> 
        </fileset>
      </batchtest>
    </junit>
  </target>

  <!-- =================================================================== -->
  <!-- Run functional tests                                                -->
  <!-- =================================================================== -->
  <target name="functional-tests" depends="printEnv,transport-layer" if="junit.present" >
    <!-- This uses a custom Ant task.  See test/functional/ant/RunAxisFunctionalTests.java -->
    <!-- This pattern taken from Cactus, http://jakarta.apache.org/commons/cactus -->

    <runaxisfunctionaltests
      url="http://localhost:8088"
      tcpServerTarget="start-functional-test-tcp-server"
      httpServerTarget="start-functional-test-http-server"
      testTarget="junit-functional"
      httpStopTarget="stop-functional-test-http-server" />

    <!-- now run security test -->
    <antcall target="functional-tests-secure"/>

  </target>

  <!-- =================================================================== -->
  <!-- Run secure functional tests ONLY                                    -->
  <!-- =================================================================== -->
  <target name="functional-tests-secure" if="security.present">

    <runaxisfunctionaltests
      url="http://localhost:8088"
      tcpServerTarget="start-functional-test-tcp-server"
      httpServerTarget="start-functional-test-http-server-secure"
      testTarget="junit-functional-secure"
      httpStopTarget="stop-functional-test-http-server-secure" />

  </target>

<!-- =================================================================== -->
  <!-- Run simple tests                                                -->
  <!-- =================================================================== -->
  <target name="simple-tests" depends="setenv" if="junit.present" >
    <runaxisfunctionaltests
      url="http://localhost:8088"
      tcpServerTarget="start-functional-test-tcp-server"
      httpServerTarget="start-functional-test-http-server"
      testTarget="printEnv"
      httpStopTarget="stop-functional-test-http-server" />
  </target>

  <!-- =================================================================== -->
  <!--   This simply echos the component files, for sanity checks -->
  <!-- =================================================================== -->
  <target name="echoTest" >
    <foreach target="echo-file" fork="${foreach.fork}" inheritAll="${ant.inheritAll}" inheritRefs="${ant.inheritRefs}">
        <param name="file">
             <fileset dir="${axis.home}" >
                <patternset>
                 <include name="test/**/build.xml"/>
                 <exclude name="test/wsdl/interop3/**/build.xml" />
                </patternset>
             </fileset>
        </param>
     </foreach>
  </target>

  <!-- =================================================================== -->
  <!--    This runs each test component, instantiating the server each time -->
  <!-- =================================================================== -->
  <target name="componentTest" >
    <foreach target="batch-component-run" fork="${foreach.fork}" inheritAll="${ant.inheritAll}" inheritRefs="${ant.inheritRefs}">
        <param name="file">
             <fileset dir="${axis.home}" >
                <patternset>
                 <include name="test/**/build.xml"/>
                 <exclude name="test/wsdl/interop3/**/build.xml" />
                </patternset>
             </fileset>
        </param>
     </foreach>
  </target>

  <!-- =================================================================== -->
  <!--    This runs all the tests, but only execs the server ONCE -->
  <!-- =================================================================== -->
  <target name="batchTest" depends="transport-layer">
    <runaxisfunctionaltests
      url="http://localhost:${test.functional.TCPListenerPort}"
      tcpServerTarget="start-functional-test-tcp-server"
      httpServerTarget="start-functional-test-http-server"
      testTarget="batch-junit-functional"
      httpStopTarget="stop-functional-test-http-server" />

    <ant inheritAll="${ant.inheritAll}" inheritRefs="${ant.inheritRefs}" dir="${axis.home}/test/functional" antfile="build.xml" target="run"/>
   </target>

   <target name="batch-junit-functional" depends="start-signature-signing-and-verification">
    <foreach target="batch-component-test" fork="${foreach.fork}" inheritAll="${ant.inheritAll}" inheritRefs="${ant.inheritRefs}">
        <param name="file">
             <fileset dir="${axis.home}" >
                <patternset>
                 <include name="test/**/build.xml"/>
                 <exclude name="test/wsdl/interop/build.xml" />
                 <exclude name="test/wsdl/interop3/**/build.xml" />
                </patternset>
             </fileset>
        </param>
     </foreach>
    </target>

    <!-- generate a report from all the tests. 
        requires Xalan or other XSLT engine in ant\lib-->
    <target name="create-test-report" description="create the test report" >
      <mkdir dir="${test.reports.dir}"/>
      <junitreport todir="${test.functional.reportdir}">
        <fileset dir="${test.functional.reportdir}">
          <include name="TEST-*.xml"/>
        </fileset>
        <report format="frames" todir="${test.reports.dir}"  styledir="xmls"/>
      </junitreport>
    </target>

</project>
