<!--

    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>

