<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE project [
<!--

    Copyright (c) 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

-->

<!ENTITY common SYSTEM "file:./../config/common.xml">
<!ENTITY props SYSTEM "file:./../config/properties.xml">
<!ENTITY run SYSTEM "file:./../config/run.xml">
]>

<project name="sqetests" default="usage" basedir=".">
    &run;
    &common;
    &props;

    <property name="sqe-target-name" value="all"/>

<!-- ======== Targets by execution granularity ========== -->
    <target name="all">
        <antcall target="run-sqe-target">
            <param name="sqe-target-name" value="setup"/>
        </antcall>
        <antcall target="restart-server-instance-common"/>
        <antcall target="run-sqe-target">
            <param name="sqe-target-name" value="run-test"/>
        </antcall>
        <antcall target="run-sqe-target">
            <param name="sqe-target-name" value="unsetup"/>
        </antcall>
        <delete quiet="true">
            <fileset dir="." includes="**/RepRunConf.txt"/>
        </delete>
    </target>

    <target name="run-test">
        <antcall target="run-sqe-target">
            <param name="sqe-target-name" value="run-test"/>
        </antcall>
    </target>

    <target name="clean">
        <antcall target="run-sqe-target">
            <param name="sqe-target-name" value="clean"/>
        </antcall>
    </target>

    <target name="build">
        <antcall target="run-sqe-target">
            <param name="sqe-target-name" value="build"/>
        </antcall>
    </target>

    <target name="deploy">
        <antcall target="run-sqe-target">
            <param name="sqe-target-name" value="deploy"/>
        </antcall>
    </target>

    <target name="undeploy">
        <antcall target="run-sqe-target">
            <param name="sqe-target-name" value="undeploy"/>
        </antcall>
    </target>

    <target name="run">
        <antcall target="run-sqe-target">
            <param name="sqe-target-name" value="run"/>
        </antcall>
    </target>

    <target name="setup">
        <antcall target="run-sqe-target">
            <param name="sqe-target-name" value="setup"/>
        </antcall>
    </target>

    <target name="unsetup">
        <antcall target="run-sqe-target">
            <param name="sqe-target-name" value="unsetup"/>
        </antcall>
    </target>

    <target name="run-sqe-target">
    <antcall target="run-eesqe-target"/>
    <antcall target="run-pesqe-target"/>
    </target>

    <target name="run-eesqe-target" if="ee">
    <ant dir="corba" target="all"/>
        <ant dir="connector" target="all"/>
        <ant dir="ejb" target="all"/>
        <ant dir="web" target="all"/>
        <ant dir="jsfcomponents" target="all"/>
        <ant dir="management/mejb" target="all"/>
        <ant dir="webservices" target="all"/>
        <ant dir="security" target="all"/>
        <ant dir="admin-gui" target="all"/>
    <ant dir="admin" target="all"/>
    </target>

    <target name="run-pesqe-target" unless="ee">
        <antcall target="corba"/>
        <antcall target="connector"/>
        <antcall target="ejb"/>
        <antcall target="web"/>
        <antcall target="jsfcomponents"/>
        <antcall target="management"/>
        <antcall target="security"/>
        <antcall target="webservices"/>
        <antcall target="admin-gui"/>
        <antcall target="admin"/>
<!--
        <antcall target="transaction"/>
-->
    </target>

<!-- ======== Targets by technology ========== -->
    <target name="corba">
        <record name="corba.output" action="start"/>
        <ant dir="corba" target="${sqe-target-name}"/>
        <record name="corba.output" action="stop"/>
    </target>

    <target name="connector">
        <record name="connector.output" action="start"/>
        <ant dir="connector" target="${sqe-target-name}"/>
        <record name="connector.output" action="stop"/>
    </target>

    <target name="ejb">
        <record name="ejb.output" action="start"/>
        <ant dir="ejb" target="${sqe-target-name}"/>
        <record name="ejb.output" action="stop"/>
    </target>

    <!--
    <target name="jndi">
        <record name="jndi.output" action="start"/>
        <ant dir="jndi" target="${sqe-target-name}"/>
        <record name="jndi.output" action="stop"/>
    </target>
    -->

    <target name="web">
        <record name="web.output" action="start"/>
        <ant dir="web" target="${sqe-target-name}"/>
        <record name="web.output" action="stop"/>
    </target>

    <target name="jsfcomponents">
        <record name="jsfcomponents.output" action="start"/>
        <ant dir="jsfcomponents" target="${sqe-target-name}"/>
        <record name="jsfcomponents.output" action="stop"/>
    </target>

    <target name="management">
        <record name="management.output" action="start"/>
        <ant dir="management" target="${sqe-target-name}"/>
        <record name="management.output" action="stop"/>
    </target>

    <target name="security">
        <record name="security.output" action="start"/>
        <ant dir="security" target="${sqe-target-name}"/>
        <record name="security.output" action="stop"/>
    </target>

    <target name="transaction">
        <record name="transaction.output" action="start"/>
        <ant dir="transaction" target="${sqe-target-name}"/>
        <record name="transaction.output" action="stop"/>
    </target>

    <target name="webservices">
        <record name="webservices.output" action="start"/>
        <ant dir="webservices" target="${sqe-target-name}"/>
        <record name="webservices.output" action="stop"/>
    </target>

    <target name="admin-gui">
        <record name="admin-gui.output" action="start"/>
        <ant dir="admin-gui" target="${sqe-target-name}"/>
        <record name="admin-gui.output" action="stop"/>
    </target>

    <target name="admin">
        <record name="admin.output" action="start"/>
        <ant dir="admin" target="${sqe-target-name}"/>
        <record name="admin.output" action="stop"/>
    </target>

    <target name="usage">
        <echo> Usage:
        ======== Targets by execution granularity =========

        ant clean (Cleans all sqe tests)
        ant build (builds all ejb tests)
        ant setup (setup all required resources)
        ant deploy (deploy all test apps)
        ant run (Executes all tests)
        ant undeploy (undeploy all test apps)
        ant unsetup (remove all set resources)

        ======== Targets by technoloy =========

        ant corba (Executes all corba tests)
        ant connector (Executes all connector tests)
        ant ejb (Executes all jndi tests)
        ant security (Executes all security tests)
        ant transaction (Executes all transaction tests)
        ant web (Executes all web tests)
        ant webservices (Executes all webservices tests)
        ant all (Executes all sqetests)

        ===== Targets by technoloy and execution granularity ======
        Note: Run the command of the following type:

            % ant corba -Dsqe-target-name=clean

        to run the 'clean' target for 'corba' tests
        </echo>
    </target>
</project>
