<!--

    Copyright (c) 2002, 2018 Oracle and/or its affiliates. All rights reserved.

    This program and the accompanying materials are made available under the
    terms of the Eclipse Public License v. 2.0, which is available at
    http://www.eclipse.org/legal/epl-2.0.

    This Source Code may also be made available under the following Secondary
    Licenses when the conditions for such availability set forth in the
    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
    version 2 with the GNU Classpath Exception, which is available at
    https://www.gnu.org/software/classpath/license.html.

    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0

-->

<!DOCTYPE project [
  <!ENTITY common SYSTEM "../../../../config/common.xml">
  <!ENTITY testcommon SYSTEM "../../../../config/properties.xml">
  <!ENTITY testproperties SYSTEM "./build.properties">
]>

<project name="connector1.5 TEST" default="all" basedir=".">
<property name="j2ee.home" value="../../.."/>
<property name="client.class" value="client/Client"/>

  <!-- include common.xml and testcommon.xml -->
  &common;
  &testcommon;
  &testproperties;

  <target name="all" depends="init-common, build, setup, runtest, unset"/>
  <target name="run-dp-test" depends="init-common, build, setup-dp, deploy-dp, runtest, unset-dp, undeploy-dp"/>
  <target name="build" depends="init-common">
  <ant dir="ra" target="all"/>
  <ant dir="app" target="all"/>
  </target>

  <target name="setup">
    <ant dir="app" inheritAll="false" target="setupJdbc"/>
    <ant dir="." inheritAll="false" target="deploy"/>
  </target>

  <target name="setup-dp">
    <ant dir="app" inheritAll="false" target="setupJdbc"/>
  </target>

  <target name="deploy">
    <ant dir="ra" inheritAll="false" target="deploy"/>
    <ant dir="ra" inheritAll="false" target="testAddAdmin"/>
    <ant dir="app" inheritAll="false" target="deploy-ear"/>
    <ant dir="." inheritAll="false" target="restart"/>
  </target>

  <target name="deploy-dp">
    <ant dir="ra" inheritAll="false" target="testAddAdmin"/>
    <ant dir="app" inheritAll="false" target="deploy-ear"/>
    <ant dir="." inheritAll="false" target="restart"/>
  </target>


    <target name="runtest" depends="init-common">
<!--
        <ant  dir="app" inheritAll="false" target="runtest"/>
-->

        <java classname="client.WebTest">
          <arg value="${http.host}"/>
          <arg value="${http.port}"/>
          <arg value="${contextroot}"/>
          <classpath>
           <pathelement location="${env.APS_HOME}/lib/reporter.jar"/>
           <pathelement location="app"/>
         </classpath>
        </java>

    </target>

<!--
    <target name="runtest" depends="init-common">
        <antcall target="runwebclient-common">
            <param name="testsuite.id" value="connector1.5 (ear based)"/>
            </antcall>
    </target>
-->

<!--
  <target name="runtest" depends="init-common">
    <antcall target="runclient-common">
        <param name="appname" value="annotation-connector16-mixed-mode" />
    </antcall>
  </target>
-->

  <target name="unset">
    <ant dir="app" inheritAll="false" target="unsetJdbc"/>
    <ant dir="." inheritAll="false" target="undeploy"/>
    <ant dir="." inheritAll="false" target="restart"/>
  </target>

  <target name="unset-dp">
    <ant dir="app" inheritAll="false" target="unsetJdbc"/>
    <ant dir="." inheritAll="false" target="restart"/>
  </target>

  <target name="undeploy">
    <ant dir="app" inheritAll="false" target="undeploy"/>
    <ant dir="ra" inheritAll="false" target="testDelAdmin"/>
    <ant dir="ra" inheritAll="false" target="undeploy"/>
  </target>

  <target name="undeploy-dp">
    <ant dir="app" inheritAll="false" target="undeploy"/>
    <ant dir="ra" inheritAll="false" target="testDelAdmin"/>
  </target>

  <target name="restart" depends="init-common">
    <echo message="Not required to restart"/>
  </target>

  <target name="clean">
    <ant dir="ra" inheritAll="false" target="clean"/>
    <ant dir="app" inheritAll="false" target="clean"/>
  </target>

</project>
