<!--

    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

-->

<property name="target-to-run" value="sqetests"/>

<target name="runtest" depends="init-common">
    <record name="runtest.output" action="start" />
    <parallel>
<!--
        <antcall target="startAS"/>
-->
        <sequential>
            <waitfor maxwait="5" maxwaitunit="minute" checkevery="500">
                <or>
                    <http url="http://localhost:80"/>
                    <http url="http://localhost:1024"/>
                    <http url="http://${http.host}:${http.port}"/>
                </or>
            </waitfor>
            <antcall target="${target-to-run}"/>
            <antcall target="report"/>
            <antcall target="mail"/>
<!--
            <antcall target="stopAS"/>
-->
        </sequential>
    </parallel>
    <record name="runtest.output" action="stop" />
</target>

<!-- Setup and Restart the server instance-->
<target name="restart-server-instance-common">
    <antcall target="stopDomain"/>
    <sleep seconds="5" />
    <antcall target="startDomain"/>
</target>

<target name="startDomain" depends="startDomainUnix, startDomainWindows"/>

<target name="startDomainUnix" depends="init-common" if="isUnix">
    <echo message="Starting DAS"/>
    <exec executable="${ASADMIN}">
        <arg line="start-domain"/>
    </exec>
    <echo message="run.xml:doing wait for ${http.host}:${http.port}..."/>
    <waitfor timeoutproperty="unableToStart">
      <http url="http://${http.host}:${http.port}"/>
    </waitfor>
    <condition property="dumpStack">
        <and>
            <isset property="unableToStart"/>
            <available file="${env.JAVA_HOME}/bin/jps"/>
        </and>
    </condition>
    <echo message="run.xml:DONE doing wait for ${http.host}:${http.port}..."/>
    <antcall target="dumpThreadStack"/>
</target>

<target name="startDomainWindows" depends="init-common" if="isWindows">
    <echo message="Starting DAS"/>
    <exec executable="${ASADMIN}" spawn="true">
        <arg line="start-domain"/>
    </exec>
    <waitfor timeoutproperty="unableToStart">
      <http url="http://${http.host}:${http.port}"/>
    </waitfor>
    <condition property="dumpStack">
        <and>
            <isset property="unableToStart"/>
            <available file="${env.JAVA_HOME}/bin/jps"/>
        </and>
    </condition>
    <antcall target="dumpThreadStack"/>
</target>

<target name="dumpThreadStack" if="dumpStack">
    <exec executable="${env.JAVA_HOME}/bin/jps" output="pid.out.file">
       <arg value="-v"/>
    </exec>
    <loadfile srcfile="pid.out.file" property="pid.out">
        <filterchain>
            <linecontains>
              <contains value="ASMain"/>
              <contains value="${env.S1AS_HOME}"/>
            </linecontains>
            <tokenfilter>
                <replaceregex pattern="^(\d+) ASMain (.*)" replace="\1"/>
                <trim/>
                <ignoreblank/>
            </tokenfilter>
            <striplinebreaks/>
        </filterchain>
    </loadfile>
    <echo>Dumping the thread stack for Appserver instance with PID - "${pid.out}"</echo>
    <exec executable="${env.JAVA_HOME}/bin/jstack">
        <arg value="${pid.out}"/>
    </exec>
    <delete file="pid.out.file"/>
</target>

<target name="stopDomain" depends="init-common">
    <echo message="run.xml:stopping domain..."/>
    <exec executable="${ASADMIN}" failonerror="true">
        <arg line="stop-domain"/>
    </exec>
</target>

<target name="delete-domain-common" depends="init-common">
    <exec executable="${ASADMIN}">
        <arg line="delete-domain"/>
        <arg line="--domaindir ${admin.domain.dir}"/>
        <arg line="${admin.domain}"/>
    </exec>
</target>

<target name="create-domain-common" depends="init-common">
    <exec executable="${ASADMIN}">
        <arg line="create-domain"/>
        <arg line="--domaindir ${admin.domain.dir}"/>
        <arg line="--adminport ${admin.port}"/>
        <arg line="--instanceport ${http.port}"/>
        <arg line="--user ${admin.user}"/>
        <arg line="--passwordfile ${admin.password.file}"/>
        <arg line="--domainproperties orb.listener.port=${orb.port}" />
        <arg line="${admin.domain}"/>
    </exec>
</target>

<target name="cleanAS">
    <echo message="run.xml:deleting domain: ${admin.domain}..."/>
    <antcall target="delete-domain-common"/>
    <echo message="run.xml:creating domain: ${admin.domain}..."/>
    <antcall target="create-domain-common"/>
</target>

<target name="start-clean-server">
    <antcall target="stopDomain"/>
    <antcall target="cleanAS"/>
    <antcall target="startDomain"/>
</target>


<target name="restart-instance-common">
<echo message="Restarting remote server instance,until this gets fixed"/>
    <exec executable="${ASADMIN}" failonerror="false">
    <arg line="stop-instance"/>
    <arg line="${as.props}"/>
    <arg line="${appserver.instance.name}"/>
</exec>

<sleep seconds="30"/>
    <exec executable="${ASADMIN}" failonerror="false">
    <arg line="start-instance"/>
    <arg line="${as.props}"/>
    <arg line="${appserver.instance.name}"/>
</exec>

</target>

<macrodef name="run-test">
    <attribute name="classname"/>
    <attribute name="classpath"/>
    <element name="arguments" optional="yes"/>
    <sequential>
        <java classname="@{classname}" classpath="@{classpath}" fork="true">
            <jvmarg value="-Das.props=${as.props}"/>
            <jvmarg value="-Dadmin.user=${admin.user}"/>
            <jvmarg value="-Dadmin.port=${admin.port}"/>
            <jvmarg value="-Dhttp.port=${http.port}"/>
            <jvmarg value="-Dhttps.port=${https.port}"/>
            <jvmarg value="-Dhttp.host=${http.host}"/>
            <arguments/>
        </java>
    </sequential>
</macrodef>

