blob: b176a3b3fd137c1c8fa438cfb95a667122dc26dd [file] [log] [blame]
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
Copyright (c) 2017, 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
-->
<!-- configuration -->
<property environment="env"/>
<property file="${env.APS_HOME}/config.properties"/>
<property file="${env.APS_HOME}/../bootstrap/bootstrap.properties"/>
<property name="inst" value="${env.S1AS_HOME}"/>
<property name="java.home" value="${env.JAVA_HOME}"/>
<property name="s1as.home" value="${env.S1AS_HOME}"/>
<property name="testsRoot" value="${env.APS_HOME}/devtests/jms"/>
<property name="passwordFile" value="${testsRoot}/password.txt"/>
<property name="mqPasswordFile" value="${testsRoot}/mqpassword.txt"/>
<property name="testDomain" value="jmstest-domain"/>
<property name="testServer" value="jmstest-server"/>
<property name="testCluster" value="jmstest-cluster"/>
<property name="testClusterServer1" value="jmstest-cluster-server1"/>
<property name="testClusterServer2" value="jmstest-cluster-server2"/>
<property name="deploy.clusterinstance1.httpport" value="2001"/>
<property name="deploy.clusterinstance2.httpport" value="2002"/>
<property name="deploy.serverinstance.httpport" value="2000"/>
<property name="deploy.clusterinstance1.orbport" value="2201"/>
<property name="deploy.clusterinstance2.orbport" value="2202"/>
<property name="deploy.serverinstance.orbport" value="2200"/>
<property name="testDomain.dir" value="${s1as.home}/domains/${testDomain}"/>
<property name="node.dir" value="localhost-${testDomain}"/>
<property name="testServer.dir" value="${s1as.home}/nodes/${node.dir}/${testServer}"/>
<property name="testClusterServer1.dir" value="${s1as.home}/nodes/${node.dir}/${testClusterServer1}"/>
<property name="start.process.delay.mins" value="1"/>
<target name="setOSProps" depends="setUnixProps, setWindowsProps"/>
<target name="detectOS">
<condition property="isWindows">
<os family="windows" />
</condition>
</target>
<target name="setUnixProps" if="isWindows" depends="detectOS">
<property name="IMQCMD" value="${env.S1AS_HOME}/../mq/bin/imqcmd.exe"/>
</target>
<target name="setWindowsProps" unless="isWindows" depends="detectOS">
<property name="IMQCMD" value="${env.S1AS_HOME}/../mq/bin/imqcmd"/>
</target>
<target name="setupCluster" depends="init-common">
<echo message="Running... asadmin create-cluster"/>
<exec executable="${ASADMIN}" failonerror="true">
<arg line="--port ${admin.port} --user ${admin.user} --passwordfile ${passwordFile} create-cluster ${testCluster}"/>
</exec>
<exec executable="${ASADMIN}" failonerror="true">
<arg line="--port ${admin.port} --user ${admin.user} --passwordfile ${passwordFile} create-local-instance --cluster ${testCluster} --systemproperties HTTP_LISTENER_PORT=${deploy.clusterinstance1.httpport}:HTTP_SSL_LISTENER_PORT=2101:IIOP_LISTENER_PORT=${deploy.clusterinstance1.orbport}:IIOP_SSL_LISTENER_PORT=2301:IIOP_SSL_MUTUALAUTH_PORT=2401:JMX_SYSTEM_CONNECTOR_PORT=2501:JMS_PROVIDER_PORT=2601:ASADMIN_LISTENER_PORT=2701 ${testClusterServer1}"/>
</exec>
<exec executable="${ASADMIN}" failonerror="true">
<arg line="--port ${admin.port} --user ${admin.user} --passwordfile ${passwordFile} set configs.config.${testCluster}-config.jms-service.type=${jmsServiceType}"/>
</exec>
<exec executable="${ASADMIN}" failonerror="true">
<arg line="--port ${admin.port} --user ${admin.user} --passwordfile ${passwordFile} set configs.config.${testCluster}-config.jms-service.start-args=&quot;-vmargs -Xmx256m&quot;"/>
</exec>
<exec executable="${ASADMIN}" failonerror="true">
<arg line="--port ${admin.port} --user ${admin.user} --passwordfile ${passwordFile} create-local-instance --cluster ${testCluster} --systemproperties HTTP_LISTENER_PORT=${deploy.clusterinstance2.httpport}:HTTP_SSL_LISTENER_PORT=2102:IIOP_LISTENER_PORT=${deploy.clusterinstance2.orbport}:IIOP_SSL_LISTENER_PORT=2302:IIOP_SSL_MUTUALAUTH_PORT=2402:JMX_SYSTEM_CONNECTOR_PORT=2502:JMS_PROVIDER_PORT=2602:ASADMIN_LISTENER_PORT=2702 ${testClusterServer2}"/>
</exec>
<echo message="Running... asadmin start-cluster"/>
<antcall target="startCluster"/>
<exec executable="${ASADMIN}">
<arg line="--port ${admin.port} --user ${admin.user} --passwordfile ${passwordFile} list-instances"/>
</exec>
<echo message="Wait 3 minutes for jms service ready"/>
<sleep seconds="180"/>
<!--<antcall target="pingClusterJMS"/>-->
</target>
<target name="pingClusterJMS">
<exec executable="${ASADMIN}" failonerror="true">
<arg line="--port ${admin.port} --user ${admin.user} --passwordfile ${passwordFile} jms-ping --target ${testCluster}"/>
</exec>
</target>
<target name="startCluster">
<echo message="Running... asadmin start-cluster"/>
<antcall target="start-process">
<param name="line" value="--port ${admin.port} --user ${admin.user} --passwordfile ${passwordFile} start-instance ${testClusterServer1}"/>
</antcall>
<waitfor timeoutproperty="unableToStart">
<http url="http://localhost:${deploy.clusterinstance1.httpport}"/>
</waitfor>
<antcall target="start-process">
<param name="line" value="--port ${admin.port} --user ${admin.user} --passwordfile ${passwordFile} start-instance ${testClusterServer2}"/>
</antcall>
<waitfor timeoutproperty="unableToStart">
<http url="http://localhost:${deploy.clusterinstance2.httpport}"/>
</waitfor>
</target>
<target name="stopCluster">
<echo message="Running... asadmin stop-cluster"/>
<exec executable="${ASADMIN}" failonerror="true">
<arg line="--port ${admin.port} --user ${admin.user} --passwordfile ${passwordFile} stop-cluster ${testCluster}"/>
</exec>
</target>
<target name="deleteCluster">
<!-- stop-cluster does not work so use stop-instance to make sure
instance is stopped before deleting it -->
<echo message="Running... asadmin stop-instance"/>
<exec executable="${ASADMIN}">
<arg line="--port ${admin.port} --user ${admin.user} --passwordfile ${passwordFile} stop-local-instance ${testClusterServer2}"/>
</exec>
<exec executable="${ASADMIN}">
<arg line="--port ${admin.port} --user ${admin.user} --passwordfile ${passwordFile} stop-local-instance ${testClusterServer1}"/>
</exec>
<echo message="Running... asadmin delete-instance"/>
<exec executable="${ASADMIN}">
<arg line="--port ${admin.port} --user ${admin.user} --passwordfile ${passwordFile} delete-local-instance ${testClusterServer2}"/>
</exec>
<exec executable="${ASADMIN}">
<arg line="--port ${admin.port} --user ${admin.user} --passwordfile ${passwordFile} delete-local-instance ${testClusterServer1}"/>
</exec>
<echo message="Running... asadmin delete-cluster"/>
<exec executable="${ASADMIN}">
<arg line="--port ${admin.port} --user ${admin.user} --passwordfile ${passwordFile} delete-cluster ${testCluster}"/>
</exec>
</target>
<target name="deploy-common-cluster" depends="init-common">
<echo message="Deploying to Cluster..."/>
<property name="deployed.app" value="${assemble.dir}/${appname}App.ear"/>
<exec executable="${ASADMIN}" failonerror="true">
<arg line="--port ${admin.port} --user ${admin.user} --passwordfile ${passwordFile} deploy --force --target ${testCluster} ${deployed.app}"/>
</exec>
<echo message="Deployment on target cluster ${testCluster} successful"/>
</target>
<target name="undeploy-common-cluster" depends="init-common">
<echo message="Undeploying from Cluster..."/>
<property name="deployedapp.name" value="${appname}App"/>
<property name="extra-params" value=""/>
<exec executable="${ASADMIN}" failonerror="true">
<arg line="--port ${admin.port} --user ${admin.user} --passwordfile ${passwordFile} undeploy --target ${testCluster} ${deployedapp.name}"/>
</exec>
</target>
<!--
On Windows, ant hangs when it runs an asadmin command that starts a process.
To work around that, this task distinguishes between Windows and non-Windows
systems and uses a custom ant task for Windows.
Any test that needs to start a process should NOT use ${ASADMIN} directly
but should call this start-process target instead. Pass the command line
to be run as <param name="line" value="..."/>.
-->
<target name="start-process" depends="init-common">
<!--
Set a property to the target to invoke, depending on the platform type.
-->
<condition property="start-target" value="start-process-windows">
<isset property="isWindows"/>
</condition>
<condition property="start-target" value="start-process-non-windows">
<not>
<isset property="start-target"/>
</not>
</condition>
<!--
Invoke the target just chosen.
-->
<antcall target="${start-target}"/>
</target>
<!--
The following task works around the Windows/Ant problem that causes
the ant script to hang when it runs an asadmin command that starts
a new process.
-->
<target name="start-process-windows" depends="init-common">
<taskdef name="spawn"
classname="SpawnTask"
classpath="${env.APS_HOME}/lib"/>
<echo>Executing asadmin command: ${line}</echo>
<spawn executable="${ASADMIN}" failifexecutionfails="false">
<arg line="${line}"/>
</spawn>
<echo message=" ...Waiting for process(es) to be up ...(sleeping for ${start.process.delay.mins} minutes) " />
<sleep minutes="${start.process.delay.mins}"/>
<echo message=" Process(es) now assumed to be started."/>
</target>
<!--
For non-Windows systems, ant works fine when invoking asadmin to start a
process, so do it that way for those systems.
-->
<target name="start-process-non-windows" depends="init-common">
<exec executable="${ASADMIN}" failonerror="true">
<arg line="${line}"/>
</exec>
</target>