blob: 4d3f2b1c4fd3b17360f212d9fc11eea21aff7146 [file] [log] [blame]
<!--
Copyright (c) 2018, 2020 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,
or the Eclipse Distribution License v. 1.0 which is available at
http://www.eclipse.org/org/documents/edl-v10.php.
SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
-->
<!--
Contributors:
tware - initial API and implementation
-->
<!-- This ant project includes the following tasks:
- weblogic-install : recreates server and adds jars
- weblogic-setup : creates connection pool
- weblogic-reset : removes connection pool
- weblogic-start : starts server
- weblogic-stop : stops server
- weblogic-deploy : deploys ear
- weblogic-undeploy : undeploys ear
It requires some configuration of the weblogic.properties, it should be run through build.xml, not directly.
Also weblogic may require using the JRockit JVM, which can be setup through the setEnv.sh.
You may need to copy the /resouces/weblogic/jaxp.properties file to your JRockit JVM jre/lib directory to allow the ant junit task to work correctly,
(this may cause issues with weblogic starting, so you may need to do this after you start your server).
To connect to the weblogic admin console use http://${weblogic.host}:7001/console, this may be useful for debugging deployment failures.
Sometimes if a test or deployment fails, you server gets screwed up and you need to re-install your domain (ant server.install).
-->
<!--
* Ant naming conventions:
* - regardless of the actual OS platform,'/' is the directory separator
* (Ant will convert as appropriate).
* - multi-word properties use periods '.'
* - properties ending in .jar define jarfile names only (no path)
* - properties ending in .lib are fully qualified jars (path and filename)
* - properties ending in .dir are directory paths
* - properties ending in .path are path refid names (classpath fragments)
* - multi-word targets use hyphens '-'
* - targets beginning with test- are reserved for high level test targets,
* and are used in test results parsing
* - targets typically use the form <action>-<object>-<type> (ie. package-bundle-zip)
* - multi-word macros use underscores '_'
* - multi-word macro attributes are concatenated
* e.g. 'runpathref'
* - multi-word tasks (taskdef) names are concatenated
* e.g. 'validateconnection'
* - OS environment variables are in ALLCAPS and have 'env' as a prefix
* e.g. ${env.XXX}.
* - Ant properties are lower case.
-->
<project name="Eclipse Persistence Services JPA WLS Testing" basedir=".">
<property name="env" environment="env" value="env"/>
<!-- Allows a user to overide certain user specific properties. -->
<property file="${user.home}/weblogic.properties"/>
<property file="./test.properties"/>
<property file="./weblogic.properties"/>
<property name="temp.dir" value="temp"/>
<property name="wls.oracle.home" location="${weblogic.installdir}/.."/>
<property name="eclipselink.lib" value="../../${eclipselink.jar}"/>
<path id="eclipselink.lib.extras">
<fileset dir="${jpatest.basedir}/../../plugins/">
<include name="*jpa.modelgen_*"/>
<include name="*nosql_*"/>
<exclude name="*.source_*"/>
</fileset>
</path>
<property name="eclipselink.lib.jpa" location="../../jpa/plugins/jakarta.persistence_2.2.2.jar"/>
<property name="jdbc.driver.lib" value="${jdbc.driver.jar}"/>
<property name="jdbc2.driver.lib" value="${jdbc2.driver.jar}"/>
<property name="jdbc3.driver.lib" value="${jdbc3.driver.jar}"/>
<condition property="suffix" value="cmd" else="sh">
<os family="windows"/>
</condition>
<condition property="is.exalogic" value="true" else="false">
<contains string="${server.version}" substring="exalogic"/>
</condition>
<property name="wls.derbyFlag" value="true"/>
<condition property="wls.debugFlag" value="true" else="false">
<isset property="wls.debug.port"/>
</condition>
<path id="wls.path">
<pathelement location="${weblogic.home}/lib/weblogic.jar"/>
<pathelement location="${weblogic.installdir}/modules/features/wlst.wls.classpath.jar"/>
</path>
<target name="-wls-wlst-init" description="Initialize 'wslt' macro for WebLogic.">
<macrodef name="wlst">
<attribute name="script"/>
<element name="customize" optional="true" implicit="true"/>
<sequential>
<java classname="weblogic.WLST" fork="yes">
<arg line="@{script}"/>
<classpath>
<path refid="wls.path"/>
</classpath>
<sysproperty key="target.server" value="${target.server}"/>
<sysproperty key="weblogic.host" value="${weblogic.host}"/>
<sysproperty key="weblogic.port" value="${weblogic.port}"/>
<sysproperty key="server.user" value="${server.user}"/>
<sysproperty key="server.pwd" value="${server.pwd}"/>
<sysproperty key="weblogic.domain" value="${weblogic.domain}"/>
<sysproperty key="weblogic.installdir" value="${weblogic.installdir}"/>
<customize/>
</java>
</sequential>
</macrodef>
</target>
<target name="-wls-deploy-init" description="Initialize 'wslt' macro for WebLogic.">
<taskdef name="wldeploy" classname="weblogic.ant.taskdefs.management.WLDeploy">
<classpath>
<pathelement location="${weblogic.home}/lib/weblogic.jar"/>
</classpath>
</taskdef>
</target>
<target name="-backup-init">
<condition property="do.backup">
<not>
<available file="${wls.oracle.home}/oracle_common/modules/oracle.toplink-bak"/>
</not>
</condition>
</target>
<target name="-do-backup" description="Backup default TopLink installation." depends="-backup-init" if="do.backup">
<copy todir="${wls.oracle.home}/oracle_common/modules/oracle.toplink-bak">
<fileset dir="${server.module.toplink}"/>
</copy>
<move file="${wls.oracle.home}/oracle_common/modules/jakarta.persistence.jar" tofile="${wls.oracle.home}/oracle_common/modules/jakarta.persistence.jar.bak"/>
</target>
<!-- This creates the server domain. -->
<target name="weblogic-install" depends="-do-backup, -wls-wlst-init">
<delete dir="${weblogic.domain}"/>
<mkdir dir="${weblogic.domain}"/>
<delete>
<fileset dir="." includes="std*.log"/>
</delete>
<copy file="${eclipselink.lib}" todir="${server.module.toplink}" overwrite="true" verbose="true" flatten="true"/>
<copy file="${eclipselink.lib.jpa}" tofile="${wls.oracle.home}/oracle_common/modules/jakarta.persistence.jar" overwrite="true" verbose="true"/>
<copy todir="${server.module.toplink}" overwrite="true" verbose="true">
<path refid="eclipselink.lib.extras"/>
<mapper type="regexp" from="^(.+?)_[0-9]+.*\.jar$" to="\1.jar"/>
</copy>
<wlst script="${jpatest.basedir}/resource/weblogic/wls_install.py"/>
<copy todir="${weblogic.domain}/lib" flatten="true" failonerror="false">
<path>
<pathelement path="${junit.lib}"/>
<pathelement path="${jdbc.driver.lib}"/>
<pathelement path="${jdbc2.driver.lib}"/>
<pathelement path="${jdbc3.driver.lib}"/>
</path>
</copy>
<antcall target="weblogic-start"/>
</target>
<!-- This creates datasource and deploy to the server. -->
<target name="weblogic-setup" depends="-wls-wlst-init">
<wlst script="${jpatest.basedir}/resource/weblogic/wls_setup.py">
<sysproperty key="is.exalogic" value="${is.exalogic}"/>
<sysproperty key="wls.ds.jta.name" value="EclipseLinkDS"/>
<sysproperty key="wls.ds2.jta.name" value="EclipseLinkDS2"/>
<sysproperty key="wls.ds3.jta.name" value="EclipseLinkDS3"/>
<sysproperty key="wls.ds.nonjta.name" value="ELNonJTADS"/>
<sysproperty key="wls.ds2.nonjta.name" value="ELNonJTADS2"/>
<sysproperty key="wls.ds3.nonjta.name" value="ELNonJTADS3"/>
<sysproperty key="wls.ds.session.name" value="${SESSION_DS_NAME}"/>
<sysproperty key="jdbc.driver.jar" value="${jdbc.driver.jar}"/>
<sysproperty key="db.driver" value="${db.driver}"/>
<sysproperty key="db.url" value="${db.url}"/>
<sysproperty key="db.user" value="${db.user}"/>
<sysproperty key="db.pwd" value="${db.pwd}"/>
<sysproperty key="db.platform" value="${db.platform}"/>
<sysproperty key="jdbc2.driver.jar" value="${jdbc2.driver.jar}"/>
<sysproperty key="db2.driver" value="${db2.driver}"/>
<sysproperty key="db2.url" value="${db2.url}"/>
<sysproperty key="db2.user" value="${db2.user}"/>
<sysproperty key="db2.pwd" value="${db2.pwd}"/>
<sysproperty key="db2.platform" value="${db2.platform}"/>
<sysproperty key="jdbc3.driver.jar" value="${jdbc3.driver.jar}"/>
<sysproperty key="db3.driver" value="${db3.driver}"/>
<sysproperty key="db3.url" value="${db3.url}"/>
<sysproperty key="db3.user" value="${db3.user}"/>
<sysproperty key="db3.pwd" value="${db3.pwd}"/>
<sysproperty key="db3.platform" value="${db3.platform}"/>
</wlst>
</target>
<!-- Remove all datasources created by target <weblogic-setup>
Note: WLS server must be running.-->
<target name="weblogic-reset" depends="-wls-wlst-init">
<wlst script="${jpatest.basedir}/resource/weblogic/wls_reset.py">
<sysproperty key="wls.ds.jta.name" value="EclipseLinkDS"/>
<sysproperty key="wls.ds2.jta.name" value="EclipseLinkDS2"/>
<sysproperty key="wls.ds3.jta.name" value="EclipseLinkDS3"/>
<sysproperty key="wls.ds.nonjta.name" value="ELNonJTADS"/>
<sysproperty key="wls.ds2.nonjta.name" value="ELNonJTADS2"/>
<sysproperty key="wls.ds3.nonjta.name" value="ELNonJTADS3"/>
</wlst>
<delete file="${server.module.toplink}" failonerror="false"/>
<move file="${wls.oracle.home}/oracle_common/modules/oracle.toplink-bak" tofile="${server.module.toplink}" failonerror="false" verbose="true" overwrite="true"/>
<move file="${wls.oracle.home}/oracle_common/modules/jakarta.persistence.jar.bak" tofile="${wls.oracle.home}/oracle_common/modules/jakarta.persistence.jar" failonerror="false" verbose="true" overwrite="true"/>
</target>
<target name="weblogic-start" description="Start the server.">
<property name="additional.server.args" value=""/>
<property name="additional.server.jvmOpts" value=""/>
<property name="el.jvmOpts" value="-Declipselink.logging.level=${logging.level} -Dejb.lookup=${ejb.lookup}/stderr.log -Dis.JTA=${is.JTA}"/>
<property name="w.jvmOpts" value="-Dweblogic.Stdout=${basedir}/stdout.log -Dweblogic.Stderr=${basedir}/stderr.log -Djava.awt.headless=true"/>
<echo>Starting Weblogic Server...</echo>
<exec executable="${weblogic.domain}/bin/startWebLogic.${suffix}" spawn="true" dir="${basedir}">
<env key="JAVA_HOME" value="${test.junit.jvm}"/>
<env key="JAVA_OPTIONS" value="${additional.server.jvmOpts} ${el.jvmOpts} ${w.jvmOpts}"/>
<env key="DERBY_FLAG" value="${wls.derbyFlag}"/>
<env key="debugFlag" value="${wls.debugFlag}"/>
<env key="DEBUG_PORT" value="${wls.debug.port}"/>
<arg line="${additional.server.args}"/>
</exec>
<waitfor maxwait="3" maxwaitunit="minute" timeoutproperty="weblogic.not.running">
<and>
<socket server="${weblogic.host}" port="${weblogic.port}"/>
</and>
</waitfor>
<fail if="weblogic.not.running" message="WebLogic did not start within given time"/>
<echo>WebLogic is running at http://${weblogic.host}:${weblogic.port}</echo>
</target>
<target name="weblogic-stop" description="Stop the server.">
<exec executable="${weblogic.domain}/bin/stopWebLogic.${suffix}" dir="${basedir}">
<env key="JAVA_HOME" value="${test.junit.jvm}"/>
<env key="DERBY_FLAG" value="${wls.derbyFlag}"/>
</exec>
</target>
<target name="weblogic-deploy" description="Deploy the application ear to the server." depends="-wls-deploy-init">
<wldeploy action="deploy" adminurl="${server.url}" targets="${target.server}"
name="${application.name}" source="${ear.name}" failonerror="false"
user="${server.user}" password="${server.pwd}" />
</target>
<target name="weblogic-undeploy" description="Undeploy the application ear from the server." depends="-wls-deploy-init">
<wldeploy action="undeploy" adminurl="${server.url}" targets="${target.server}"
name="${application.name}" failonerror="true"
user="${server.user}" password="${server.pwd}" />
</target>
<!-- Set EclipseLink JPA as DefaultJPAProvider for wls. -->
<target name="weblogic-domain-setup">
<antcall target="pass-weblogic-and-database-info" inheritRefs="true"/>
<java classname="weblogic.WLST" fork="yes">
<arg line="${jpatest.basedir}/${temp.dir}/wls_domain_setup.py"/>
<classpath>
<path refid="wls.path"/>
</classpath>
</java>
</target>
<!-- Set back openjpa as DefaultJPAProvider for wls server. -->
<target name="weblogic-domain-reset">
<java classname="weblogic.WLST" fork="yes">
<arg line="${jpatest.basedir}/${temp.dir}/wls_domain_reset.py"/>
<classpath>
<path refid="wls.path"/>
</classpath>
</java>
</target>
<!-- Create three datasources aginst Oracle, DB2 and MySQL for running composite test models. -->
<target name="weblogic-composite-setup">
<antcall target="pass-weblogic-and-database-info" inheritRefs="true"/>
<java classname="weblogic.WLST" fork="yes">
<arg line="${jpatest.basedir}/${temp.dir}/wls_composite_setup.py"/>
<classpath>
<path refid="wls.path"/>
</classpath>
</java>
</target>
<!-- Remove three datasources created for running composite test models. -->
<target name="weblogic-composite-reset">
<java classname="weblogic.WLST" fork="yes">
<arg line="${jpatest.basedir}/${temp.dir}/wls_composite_reset.py"/>
<classpath>
<path refid="wls.path"/>
</classpath>
</java>
</target>
<target name="pass-weblogic-and-database-info">
<copy todir="${jpatest.basedir}/${temp.dir}" overwrite="true">
<fileset dir="${jpatest.basedir}/resource/weblogic" includes="*.py"/>
</copy>
<replace dir="${jpatest.basedir}/${temp.dir}">
<include name="**/*.py"/>
<replacefilter token="@WL_HOME@" value="${weblogic.installdir}"/>
<replacefilter token="@WL_HOST@" value="${weblogic.host}"/>
<replacefilter token="@WL_PORT@" value="${weblogic.port}"/>
<replacefilter token="@WL_USR@" value="${server.user}"/>
<replacefilter token="@WL_PWD@" value="${server.pwd}"/>
<replacefilter token="@WL_DOMAIN@" value="${weblogic.domain}"/>
<replacefilter token="@DOMAIN_NAME@" value="${domain.name}"/>
<replacefilter token="@TARGET_SERVER@" value="${target.server}"/>
<replacefilter token="@DBDRV@" value="${db.driver}"/>
<replacefilter token="@DBURL@" value="${db.url}"/>
<replacefilter token="@DBUSR@" value="${db.user}"/>
<replacefilter token="@DBPWD@" value="${db.pwd}"/>
<replacefilter token="@DB2DRV@" value="${db2.driver}"/>
<replacefilter token="@DB2URL@" value="${db2.url}"/>
<replacefilter token="@DB2USR@" value="${db2.user}"/>
<replacefilter token="@DB2PWD@" value="${db2.pwd}"/>
<replacefilter token="@DB3DRV@" value="${db3.driver}"/>
<replacefilter token="@DB3URL@" value="${db3.url}"/>
<replacefilter token="@DB3USR@" value="${db3.user}"/>
<replacefilter token="@DB3PWD@" value="${db3.pwd}"/>
</replace>
</target>
<!-- This replaces URL in JAX-RS testcases -->
<target name="weblogic-jaxrsconfig">
<property name="jaxrs-url" value="${weblogic.host}:${weblogic.port}"/>
<replace file="${jpatest.basedir}/${src.dir}/org/eclipse/persistence/testing/tests/jpa/jaxrs/DefaultJAXBContextTestCases.java" token='@host:port@' value="${jaxrs-url}"/>
<replace file="${jpatest.basedir}/${src.dir}/org/eclipse/persistence/testing/tests/jpa/jaxrs/ContextResolverTestCases.java" token='@host:port@' value="${jaxrs-url}"/>
<replace file="${jpatest.basedir}/${src.dir}/org/eclipse/persistence/testing/tests/jpa/jaxrs/MessageBodyReaderWriterTestCases.java" token='@host:port@' value="${jaxrs-url}"/>
<replace file="${jpatest.basedir}/resource/eclipselink-jaxrs-model/server/persistence.xml" token='@server-platform@' value="${server.platform}"/>
</target>
</project>