| <!-- |
| |
| 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> |