blob: 294d430448c72cb1325bb90b30ff396b7977e87c [file] [log] [blame]
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE project [
<!--
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
-->
<!ENTITY commonBuild SYSTEM "./../../config/common.xml">
]>
<project name="miscellaneousTestForJSR88" default="usage" basedir=".">
&commonBuild;
<property name="appClientName" value="appclienttest"/>
<property name="appClientJarFile" value="${build}/${appClientName}.jar"/>
<property name="appClientModuleName" value="testAppClient"/>
<property name="webServicesWorkaroundCheckWarFile" value="exampleFromJ2EETutorial/cb/provided-wars/jaxrpc-coffee-distributor.war"/>
<path id="jsr88.exec.classpath">
<path refid="gfv3.classpath"/>
<pathelement location="${env.APS_HOME}/devtests/deployment/util/build"/>
<pathelement location="${inst}/jdk/lib/tools.jar"/>
</path>
<target name="prepare" depends="init">
<mkdir dir="${build}"/>
</target>
<target name="compile" depends="prepare">
<javac srcdir="."
destdir="${build}"
includes="*.java"
debug="on"
failonerror="true">
<classpath>
<path refid="gfv3.classpath"/>
<path refid="test.compile.classpath"/>
<pathelement location="../../util/build"/> <!-- need this to find the JSR88Deployer -->
</classpath>
</javac>
</target>
<!--
Run all the tests.
-->
<target name="run" depends="compile,assemble">
<antcall target="runTestProgressObjectImpl"/>
<antcall target="runGetModulesTest"/>
<antcall target="runOpenJarWorkaroundTest"/>
</target>
<!--
The test for the ProgressObjectImpl class is a very simple Java class with
a few methods. No archives or deployments or undeployments are needed.
The test run should throw no exceptions if the code functions correctly.
-->
<target name="runTestProgressObjectImpl">
<antcall target="declare-test">
<param name="description" value="jsr88/misc - Test ProgressObjectImpl class (for correct management of listener list to avoid concurrent update errors)"/>
</antcall>
<javaWithResult classname="TestProgressObjectImpl"
fork="true"
failonerror="false"
output="${build}/TestProgressObjectImpl.log"
dir="${build}"
resultProperty="result"
>
<classpath>
<path refid="jsr88.exec.classpath"/>
<pathelement path="${build}"/>
</classpath>
</javaWithResult>
<antcall target="processResult">
<param name="result" value="${result}"/>
<param name="log" value="${build}/TestProgressObjectImpl.log"/>
</antcall>
</target>
<target name="assemble" depends="compile">
<antcall target="buildAppClientJar"/>
</target>
<target name="buildAppClientJar">
<!--
Create the application-client.xml file.
-->
<jar
destfile="${appClientJarFile}">
<fileset dir="${basedir}" includes="**/application-client.xml **/sun-application-client.xml"/>
</jar>
</target>
<!--
To test the ability to get information about the modules through JSR88, first deploy an app client
(which exposed a bug), then use JSR88 to retrieve information about app client components, then undeploy
the app client.
-->
<target name="runGetModulesTest" depends="assemble">
<antcall target="declare-test">
<param name="description" value="jsr88/misc - Test ApplicationsConfigMBean class (for correct handling of app client object-type and enabled)"/>
</antcall>
<!--
Deploy an app client so we can test the bug fix.
-->
<antcall target="common.deploy.asadmin">
<param name="arg.list" value="--name ${appClientModuleName} ${appClientJarFile}"/>
</antcall>
<javaWithResult
fork="true"
failonerror="false"
jvm="${JAVA}"
classname="SimpleJSR88Client"
resultproperty="result"
>
<sysproperty key="jsr88client.user" value="${admin.user}"/>
<sysproperty key="jsr88client.password" value="${admin.password}"/>
<sysproperty key="jsr88client.host" value="${admin.host}"/>
<sysproperty key="jsr88client.port" value="${admin.port}"/>
<sysproperty key="com.sun.aas.installRoot" value="${inst}"/>
<classpath>
<pathelement location="${inst}/lib/j2ee.jar"/>
<pathelement location="${build}"/>
<path refid="jsr88.exec.classpath"/>
</classpath>
<!--
The first command line argument to SimpleJSR88Client is the function to be performed.
-->
<arg line="getAvailableAppClientModules"/>
</javaWithResult>
<!--
Undeploy the app client that we just deployed.
-->
<antcall target="common.undeploy.asadmin">
<param name="arg.list" value="${appClientModuleName}"/>
</antcall>
<antcall target="processResult">
<param name="result" value="${result}"/>
<param name="log" value="${build}/GetModulesTest.log"/>
</antcall>
</target>
<!--
This test checks on a workaround that avoids a bug in J2SE that opens a jar file but never closes it.
This happens during web services compilation during deployment (in some cases) and the open jar file
prevents the app server from completely undeploying the app. A later attempt to deploy the app
again fails because of the open jar file. The administrator must shut down and restart the app
server to clear the open jar and permit the later deployment to succeed.
Deployment has worked around this problem, and this test makes sure the workaround continues to work.
-->
<target name="runOpenJarWorkaroundTest" depends="init">
<antcall target="declare-test">
<param name="description" value="jsr88/misc - Test workaround of J2SE bug that leaves a jar file open during deployment"/>
</antcall>
<!--
Run the test program that deploys, undeploys, and deploys again.
-->
<javaWithResult
fork="true"
failonerror="false"
output="${build}/TestOpenJarFileWorkaround.log"
jvm="${JAVA}"
classname="TestOpenJarFileWorkaround"
resultproperty="result"
>
<sysproperty key="jsr88client.user" value="${admin.user}"/>
<sysproperty key="jsr88client.password" value="${admin.password}"/>
<sysproperty key="jsr88client.host" value="${admin.host}"/>
<sysproperty key="jsr88client.port" value="${admin.port}"/>
<sysproperty key="com.sun.aas.installRoot" value="${inst}"/>
<classpath>
<pathelement location="${inst}/lib/j2ee.jar"/>
<pathelement location="${build}"/>
<pathelement location="../../util/build"/> <!-- need this to find the JSR88Deployer -->
<path refid="jsr88.exec.classpath"/>
</classpath>
<!--
The command line arguments are host, port, user, password, and the war to deploy.
-->
<arg line="${admin.host} ${admin.port} ${admin.user} ${admin.password} ${webServicesWorkaroundCheckWarFile}"/>
</javaWithResult>
<antcall target="processResult">
<param name="result" value="${result}"/>
<param name="log" value="${build}/TestOpenJarFileWorkaround.log"/>
</antcall>
</target>
<target name="private-all">
<antcall target="run"/>
</target>
<target name="clobber" depends="clean">
<delete dir="${build}"/>
</target>
<target name="usage">
<antcall target="all"/>
</target>
</project>