Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 124679 Details for
Bug 262740
Need to add Cache Coordination tests using JMS and RMI for WebLogic
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
[patch]
updated patch for cachecoordination test implementation
cachecoordination_weblogic_feb4.patch (text/plain), 53.43 KB, created by
Praba Vijayaratnam
on 2009-02-04 09:46:23 EST
(
hide
)
Description:
updated patch for cachecoordination test implementation
Filename:
MIME Type:
Creator:
Praba Vijayaratnam
Created:
2009-02-04 09:46:23 EST
Size:
53.43 KB
patch
obsolete
>Index: build.xml >=================================================================== >--- build.xml (revision 3389) >+++ build.xml (working copy) >@@ -988,6 +988,7 @@ > target="${javac.version}" > deprecation="${javac.deprecation}" > failonerror="true" >+ excludes="org/eclipse/persistence/testing/models/jpa/sessionbean/JPASessionCustomizer_*.java" > includes="${MODEL_DIR}/**/*.java"> > <classpath refid="compile.server.path"/> > </javac> >@@ -1405,5 +1406,11 @@ > <param name="eclipselink.jpa.test.dir" value="./../../foundation/eclipselink.extension.oracle.test"/> > </antcall> > </target> >- >+ <!-- *********** CacheCoordination Test Targets --> >+ <target name="server-start-cachecoordination" depends="detect-os,config-trunk, config-flat"> >+ <ant antfile="${eclipselink.jpa.test}/cachecoordination_${server.name}.xml" target="${server.name}-start-cachecoordination" inheritRefs="true"/> >+ </target> >+ <target name="server-run-test-cachecoordination" depends="detect-os,config-trunk, config-flat"> >+ <ant antfile="${eclipselink.jpa.test}/cachecoordination.xml" target="${server.name}-run-test-cachecoordination" inheritRefs="true"/> >+ </target> > </project> >Index: cachecoordination.xml >=================================================================== >--- cachecoordination.xml (revision 0) >+++ cachecoordination.xml (revision 0) >@@ -0,0 +1,224 @@ >+<!--/******************************************************************************* >+* This program and the accompanying materials are made available under the >+* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 >+* which accompanies this distribution. >+* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html >+* and the Eclipse Distribution License is available at >+* http://www.eclipse.org/org/documents/edl-v10.php. >+* >+* Ant naming conventions: >+* - regardless of the actual OS platform,'/' is the directory separator >+* (Ant will convert as appropriate). >+* - multi-word properties use periods '.' >+* - multi-word targets use hyphens '-' >+* - multi-word macros use underscores '_' >+* - multi-word macro attributes are concatinated >+* e.g. 'runpathref' >+* - multi-word tasks (taskdef) names are concatinated >+* e.g. 'validateconnection' >+* - OS environment variables are in ALLCAPS and have 'env' as a prefix >+* e.g. ${env.XXX}. >+* - Ant properties are lower case. >+* >+* Contributors: >+* pvijayaratnam - cache coordination test implementation >+#******************************************************************************/--> >+ >+<project name="Eclipse Persistence Services JPA WLS CacheCoordination Testing" basedir="."> >+ >+ <property name="env" environment="env" value="env"/> >+ <!-- Allows a user to overide certain user specific properties. --> >+ <property name="eclipselink.jpa.test" value="."/> >+ <property file="${eclipselink.jpa.test}/build.properties"/> >+ <property file="${user.home}/${server.name}.properties"/> >+ <property file="test.properties"/> >+ <property file="./${server.name}.properties"/> >+ >+<!-- *********** CacheCoordination Test Targets --> >+ <target name="weblogic-run-test-cachecoordination"> >+ <property file="${eclipselink.jpa.test}/${server.name}.properties"/> >+ <antcall target="build-deploy-cachecoordination-wls"/> >+ <antcall target="runclient-cachecoordination-wls"/> >+ <ant antfile="${eclipselink.jpa.test}/build.xml" target="generate-report" inheritRefs="true"/> >+ <antcall target="server-undeploy-cachecoordination-server2" inheritRefs="true"> >+ <param name="application.name" value="eclipselink-sessionbean-model-server2"/> >+ </antcall> >+ <antcall target="server-undeploy-cachecoordination-server1" inheritRefs="true"> >+ <param name="application.name" value="eclipselink-sessionbean-model-server1"/> >+ </antcall> >+ <ant antfile="${eclipselink.jpa.test}/cachecoordination_${server.name}.xml" target="${server.name}-stop-cachecoordination" inheritRefs="true"/> >+ <delete includeEmptyDirs="true" failonerror="false"> >+ <fileset dir="${weblogic.domain}/servers/${rcm.wls.server3.name}/tmp"/> >+ <fileset dir="${weblogic.domain}/servers/${rcm.wls.server2.name}/tmp"/> >+ <fileset dir="${weblogic.domain}/servers/${rcm.wls.server1.name}/tmp"/> >+ </delete> >+ </target> >+ <target name="build-deploy-cachecoordination-wls"> >+ <sequential> >+ <antcall target="config-persistence-xml"/> >+ <antcall target="cachecoordination-build-and-deploy-server1" inheritRefs="true"> >+ <param name="PERSISTENCE_UNIT_NAME" value="sessionbean"/> >+ <param name="MODEL_DIR" value="org/eclipse/persistence/testing/models/jpa/sessionbean"/> >+ <param name="MODEL_DIR2" value="org/eclipse/persistence/testing/models/jpa/fieldaccess/advanced"/> >+ <param name="MODEL_NAME" value="eclipselink-sessionbean-model"/> >+ <param name="TEST_DIR" value="org/eclipse/persistence/testing/tests/jpa/sessionbean"/> >+ <param name="TEST_NAME" value="eclipselink-sessionbean-model"/> >+ <param name="EAR_NAME" value="eclipselink-sessionbean-model-server1"/> >+ <param name="TEST_SUITE" value="org.eclipse.persistence.testing.tests.jpa.sessionbean.SessionBeanTestsRCM"/> >+ <param name="eclipselink.jpa.test.dir" value="."/> >+ </antcall> >+ <antcall target="cachecoordination-build-and-deploy-server2" inheritRefs="true"> >+ <param name="PERSISTENCE_UNIT_NAME" value="sessionbean"/> >+ <param name="MODEL_DIR" value="org/eclipse/persistence/testing/models/jpa/sessionbean"/> >+ <param name="MODEL_DIR2" value="org/eclipse/persistence/testing/models/jpa/fieldaccess/advanced"/> >+ <param name="MODEL_NAME" value="eclipselink-sessionbean-model"/> >+ <param name="TEST_DIR" value="org/eclipse/persistence/testing/tests/jpa/sessionbean"/> >+ <param name="TEST_NAME" value="eclipselink-sessionbean-model"/> >+ <param name="EAR_NAME" value="eclipselink-sessionbean-model-server2"/> >+ <param name="TEST_SUITE" value="org.eclipse.persistence.testing.tests.jpa.sessionbean.SessionBeanTestsRCM"/> >+ <param name="eclipselink.jpa.test.dir" value="."/> >+ </antcall> >+ <copy overwrite="true" file="${eclipselink.jpa.test}/${resource.dir}/server/persistence_original.xml" tofile="${eclipselink.jpa.test}/${resource.dir}/server/persistence.xml"/> >+ <delete file="${eclipselink.jpa.test}/${resource.dir}/server/persistence_original.xml"/> >+ </sequential> >+ </target> >+ <target name="runclient-cachecoordination-wls"> >+ <antcall target="server-run-test-cachecoordination" inheritRefs="true"> >+ <param name="PERSISTENCE_UNIT_NAME" value="sessionbean"/> >+ <param name="MODEL_DIR" value="org/eclipse/persistence/testing/models/jpa/sessionbean"/> >+ <param name="MODEL_DIR2" value="org/eclipse/persistence/testing/models/jpa/fieldaccess/advanced"/> >+ <param name="MODEL_NAME" value="eclipselink-sessionbean-model"/> >+ <param name="TEST_DIR" value="org/eclipse/persistence/testing/tests/jpa/sessionbean"/> >+ <param name="TEST_NAME" value="eclipselink-sessionbean-model"/> >+ <param name="EAR_NAME" value="eclipselink-sessionbean-model-server2"/> >+ <param name="TEST_SUITE" value="org.eclipse.persistence.testing.tests.jpa.sessionbean.SessionBeanTestsRCM"/> >+ <param name="eclipselink.jpa.test.dir" value="."/> >+ </antcall> >+ </target> >+ >+ <target name="set-app-name-cachecoordination"> >+ <property name="APP_NAME" value="${MODEL_NAME}"/> >+ <property name="DS_NAME" value="jdbc/EclipseLinkDS"/> >+ </target> >+ >+ <condition property="is.jms"> >+ <contains string="${cachecoordination.protocol}" substring="jms"/> >+ </condition> >+ >+ <condition property="is.rmi"> >+ <contains string="${cachecoordination.protocol}" substring="rmi"/> >+ </condition> >+ >+ <!-- Build and deploy to Server1 --> >+ <target name="config-persistence-xml"> >+ <copy overwrite="true" file="${eclipselink.jpa.test}/${resource.dir}/server/persistence.xml" tofile="${eclipselink.jpa.test}/${resource.dir}/server/persistence_original.xml" /> >+ <copy overwrite="true" file="${eclipselink.jpa.test}/${resource.dir}/server/persistence_cachecoordination.xml" tofile="${eclipselink.jpa.test}/${resource.dir}/server/persistence.xml"/> >+ <replace file="${eclipselink.jpa.test}/${resource.dir}/server/persistence.xml" token='%%data-source-name%%' value="jdbc/EclipseLinkDS"/> >+ <replace file="${eclipselink.jpa.test}/${resource.dir}/server/persistence.xml" token='%%topic-host-url%%' value="${rcm.wls.jms.topichost.url}"/> >+ <replace file="${eclipselink.jpa.test}/${resource.dir}/server/persistence.xml" token='%%topic-name%%' value="${rcm.wls.jms.topicname}"/> >+ <replace file="${eclipselink.jpa.test}/${resource.dir}/server/persistence.xml" token='%%topic-connection-factory%%' value="${rcm.wls.jms.topic.connectionfactory.name}"/> >+ <replace file="${eclipselink.jpa.test}/${resource.dir}/server/persistence.xml" token='%%server-user%%' value="${server.user}"/> >+ <replace file="${eclipselink.jpa.test}/${resource.dir}/server/persistence.xml" token='%%server-pwd%%' value="${server.pwd}"/> >+ </target> >+ >+ <target name="session-customizer-jms" if="is.jms"> >+ <copy overwrite="true" file="${eclipselink.jpa.test}/${src.dir}/org/eclipse/persistence/testing/models/jpa/sessionbean/JPASessionCustomizer_jms.java" tofile="${eclipselink.jpa.test}/${src.dir}/org/eclipse/persistence/testing/models/jpa/sessionbean/JPASessionCustomizer.java"/> >+ </target> >+ >+ <target name="session-customizer-rmi" if="is.rmi"> >+ <copy overwrite="true" file="${eclipselink.jpa.test}/${src.dir}/org/eclipse/persistence/testing/models/jpa/sessionbean/JPASessionCustomizer_rmi.java" tofile="${eclipselink.jpa.test}/${src.dir}/org/eclipse/persistence/testing/models/jpa/sessionbean/JPASessionCustomizer.java"/> >+ <replace file="${eclipselink.jpa.test}/${src.dir}/org/eclipse/persistence/testing/models/jpa/sessionbean/JPASessionCustomizer.java" token='%%current-server-url%%' value="${current.server.url}"/> >+ </target> >+ >+ <target name="cachecoordination-build-and-deploy-server1" depends="set-app-name-cachecoordination"> >+ <antcall target="session-customizer-jms" inheritRefs="true"/> >+ <antcall target="session-customizer-rmi" inheritRefs="true"> >+ <param name="current.server.url" value="rcm.wls.server1.url"/> >+ </antcall> >+ <ant antfile="${eclipselink.jpa.test}/build.xml" target="server-build" inheritRefs="true"/> >+ <delete file="${eclipselink.jpa.test}/${src.dir}/org/eclipse/persistence/testing/models/jpa/sessionbean/JPASessionCustomizer.java"/> >+ <antcall target="server-deploy-cachecoordination-server1" inheritRefs="true"> >+ <param name="ear.name" value="${EAR_NAME}.ear"/> >+ <param name="application.name" value="${EAR_NAME}"/> >+ </antcall> >+ </target> >+ <target name="cachecoordination-build-and-deploy-server2" depends="set-app-name-cachecoordination"> >+ <antcall target="session-customizer-jms" inheritRefs="true"/> >+ <antcall target="session-customizer-rmi" inheritRefs="true"> >+ <param name="current.server.url" value="rcm.wls.server2.url"/> >+ </antcall> >+ <ant antfile="${eclipselink.jpa.test}/build.xml" target="server-build" inheritRefs="true"/> >+ <delete file="${eclipselink.jpa.test}/${src.dir}/org/eclipse/persistence/testing/models/jpa/sessionbean/JPASessionCustomizer.java"/> >+ <antcall target="server-deploy-cachecoordination-server2" inheritRefs="true"> >+ <param name="ear.name" value="${EAR_NAME}.ear"/> >+ <param name="application.name" value="${EAR_NAME}"/> >+ </antcall> >+ </target> >+ >+ <target name="server-deploy-cachecoordination-server1"> >+ <ant antfile="${eclipselink.jpa.test}/cachecoordination_${server.name}.xml" target="${server.name}-deploy" inheritRefs="true"> >+ <property name="ear.name" value="${ear.name}"/> >+ <property name="application.name" value="${application.name}"/> >+ <property name="target.server" value="${rcm.wls.server1.name}"/> >+ </ant> >+ </target> >+ >+ <target name="server-deploy-cachecoordination-server2"> >+ <ant antfile="${eclipselink.jpa.test}/cachecoordination_${server.name}.xml" target="${server.name}-deploy" inheritRefs="true"> >+ <property name="ear.name" value="${ear.name}"/> >+ <property name="application.name" value="${application.name}"/> >+ <property name="target.server" value="${rcm.wls.server2.name}"/> >+ </ant> >+ </target> >+ <target name="server-undeploy-cachecoordination-server1"> >+ <ant antfile="${eclipselink.jpa.test}/cachecoordination_${server.name}.xml" target="${server.name}-undeploy" inheritRefs="true"> >+ <property name="application.name" value="${application.name}"/> >+ <property name="target.server" value="${rcm.wls.server1.name}"/> >+ </ant> >+ </target> >+ <target name="server-undeploy-cachecoordination-server2"> >+ <ant antfile="${eclipselink.jpa.test}/cachecoordination_${server.name}.xml" target="${server.name}-undeploy" inheritRefs="true"> >+ <property name="application.name" value="${application.name}"/> >+ <property name="target.server" value="${rcm.wls.server2.name}"/> >+ </ant> >+ </target> >+ >+ <target name="server-run-test-cachecoordination" depends="config-compile-path"> >+ <property file="${eclipselink.jpa.test}/${server.name}.properties"/> >+ <path id="run.path"> >+ <pathelement path="${eclipselink.jpa.test}/${build.dir}/${TEST_NAME}_client.jar"/> >+ <pathelement path="${eclipselink.jpa.test}/${build.dir}/${MODEL_NAME}_ejb.jar"/> >+ <fileset dir="${server.lib}" includes="${server.depend}"/> >+ <path refid="compile.server.path"/> >+ </path> >+ <echo>Running "** ${cachecoordination.protocol} **" Cache Coordination tests: ${EAR_NAME} on ${server.name}</echo> >+ <mkdir dir="${eclipselink.jpa.test}/${report.dir}"/> >+ <junit printsummary="yes" haltonfailure="yes" failureproperty="junit.failed" fork="yes" showoutput="true" maxmemory="256m" dir="${run.dir}"> >+ <sysproperty key="server.platform" value="${server.platform}"/> >+ <sysproperty key="server.user" value="${server.user}"/> >+ <sysproperty key="server.password" value="${server.pwd}"/> >+ <sysproperty key="server.url" value="${rcm.wls.server2.url}${MODEL_NAME}"/> >+ <sysproperty key="server.testrunner" value="${server.testrunner}"/> >+ <sysproperty key="server.run" value="TRUE"/> >+ <classpath refid="run.path"/> >+ <formatter type="xml"/> >+ <test name="${TEST_SUITE}" haltonfailure="no" outfile="${report.dir}/${TEST_SUITE}-test-results"/> >+ </junit> >+ </target> >+ >+ <target name="config-compile-path"> >+ <path id="compile.path"> >+ <pathelement path="${eclipselink.jpa}/${classes.dir}"/> >+ <fileset >+ dir="${eclipselink.core.lib.dir}" >+ includes="${eclipselink.core.depend}"/> >+ <pathelement path="${eclipselink.jar.name}"/> >+ <pathelement path="${junit.lib}"/> >+ </path> >+ <path id="compile.server.path"> >+ <path refid="compile.path"/> >+ <pathelement path="${jdbc.driver.jar}"/> >+ </path> >+ </target> >+ >+</project> >Index: cachecoordination_weblogic.xml >=================================================================== >--- cachecoordination_weblogic.xml (revision 0) >+++ cachecoordination_weblogic.xml (revision 0) >@@ -0,0 +1,212 @@ >+<!--/******************************************************************************* >+* This program and the accompanying materials are made available under the >+* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 >+* which accompanies this distribution. >+* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html >+* and the Eclipse Distribution License is available at >+* http://www.eclipse.org/org/documents/edl-v10.php. >+* >+* Ant naming conventions: >+* - regardless of the actual OS platform,'/' is the directory separator >+* (Ant will convert as appropriate). >+* - multi-word properties use periods '.' >+* - multi-word targets use hyphens '-' >+* - multi-word macros use underscores '_' >+* - multi-word macro attributes are concatinated >+* e.g. 'runpathref' >+* - multi-word tasks (taskdef) names are concatinated >+* e.g. 'validateconnection' >+* - OS environment variables are in ALLCAPS and have 'env' as a prefix >+* e.g. ${env.XXX}. >+* - Ant properties are lower case. >+* >+* Contributors: >+* pvijayaratnam - cache coordination test implementation >+#******************************************************************************/--> >+ >+<!-- This ant project includes the following tasks: >+ .... >+--> >+ >+<project name="Eclipse Persistence Services JPA WLS CacheCoordination 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"/> >+ >+ <!-- WebLogic ant tasks --> >+ <taskdef name="wlserver" classname="weblogic.ant.taskdefs.management.WLServer"> >+ <classpath> >+ <pathelement location="${weblogic.home}/lib/weblogic.jar"/> >+ </classpath> >+ </taskdef> >+ <taskdef name="wlconfig" classname="weblogic.ant.taskdefs.management.WLConfig"> >+ <classpath> >+ <pathelement location="${weblogic.home}/lib/weblogic.jar"/> >+ </classpath> >+ </taskdef> >+ <taskdef name="wldeploy" classname="weblogic.ant.taskdefs.management.WLDeploy"> >+ <classpath> >+ <pathelement location="${weblogic.home}/lib/weblogic.jar"/> >+ </classpath> >+ </taskdef> >+ >+ <!-- Stop all servers. --> >+ <target name="weblogic-stop-cachecoordination" depends="weblogic-stop-server3,weblogic-stop-server2,weblogic-stop-server1"/> >+ <!-- Stop the managed server1 --> >+ <target name="weblogic-stop-server1"> >+ <wlserver fork="true" failonerror="false" weblogichome="${weblogic.home}" >+ dir="${weblogic.domain}" host="${weblogic.host}" domainname="${domain.name}" servername="${rcm.wls.server1.name}" port="${rcm.wls.server1.port}" >+ username="${server.user}" password="${server.pwd}" action="shutdown"> >+ </wlserver> >+ </target> >+ <!-- Stop the managed server2 --> >+ <target name="weblogic-stop-server2"> >+ <wlserver fork="true" failonerror="false" weblogichome="${weblogic.home}" >+ dir="${weblogic.domain}" host="${weblogic.host}" domainname="${domain.name}" servername="${rcm.wls.server2.name}" port="${rcm.wls.server2.port}" >+ username="${server.user}" password="${server.pwd}" action="shutdown"> >+ </wlserver> >+ </target> >+ <!-- Stop the admin server --> >+ <target name="weblogic-stop-server3"> >+ <wlserver fork="true" failonerror="false" weblogichome="${weblogic.home}" >+ dir="${weblogic.domain}" host="${weblogic.host}" domainname="${domain.name}" servername="${rcm.wls.server3.name}" port="${rcm.wls.server3.port}" >+ username="${server.user}" password="${server.pwd}" action="shutdown"> >+ </wlserver> >+ </target> >+ >+ <!-- >+ Deploy the application ear to the server. >+ Note: WLS server must be running. >+ --> >+ <target name="weblogic-deploy"> >+ <wldeploy action="deploy" >+ name="${application.name}" source="build/${ear.name}" >+ user="${server.user}" password="${server.pwd}" >+ adminurl="${server.url}" targets="${target.server}" >+ failonerror="false"> >+ </wldeploy> >+ </target> >+ >+ <!-- >+ Undeploy the application ear to the server. >+ Note: WLS server must be running. >+ --> >+ <target name="weblogic-undeploy"> >+ <wldeploy action="undeploy" name="${application.name}" >+ user="${server.user}" password="${server.pwd}" >+ adminurl="${server.url}" targets="${target.server}" >+ failonerror="false"> >+ </wldeploy> >+ </target> >+ >+ <!-- initialize WL props for target 'run-cachecoordination-wls' --> >+ <target name="init-wls"> >+ <property name="weblogic.domain" value="${weblogic.domain}"/> >+ <property name="POLICY_OPTION" value="trackchanges"/> >+ <path id="build.wls.path"> >+ <pathelement path="${weblogic.home}/lib/weblogic.jar"/> >+ <pathelement path="${weblogic.domain}/lib/${eclipselink.jar.name}"/> >+ <pathelement path="${junit.lib}"/> >+ <!--pathelement path="${eclipselink.jpa.test}/weblogic.properties"/--> >+ </path> >+ <property name="SERVER_NAME" value="${rcm.wls.server1.name}"/> >+ <property name="SERVER_VERSION" value="${weblogic.version}"/> >+ <property name="is.wls" value="true"/> >+ </target> >+ >+ <!-- Main target to run RCM-enabled Sessionbean tests. >+ ** This target starts all servers on preconfigured domain and DataSource. >+ --> >+ <target name="weblogic-start-cachecoordination" depends="init-wls"> >+ <delete file="${weblogic.domain}/edit.lok"/> >+ <delete file="${rcm.wls.server1.name}.log"/> >+ <delete file="${rcm.wls.server2.name}.log"/> >+ <delete file="${rcm.wls.server3.name}.log"/> >+ <parallel> >+ <echo message="*** starting WebLogic Server1 (also act as AdminServer)"/> >+ <java classname="weblogic.Server" >+ fork="true" >+ failonerror="true"> >+ <jvmarg value="-server"/> >+ <jvmarg value="-Xms512m"/> >+ <jvmarg value="-Xmx960m"/> >+ <jvmarg value="-XX:MaxPermSize=256m"/> >+ <env key="PATH" value="${env.JAVA_HOME}/bin:${env.PATH}"/> >+ <sysproperty key="eclipselink.changePolicy" value="${POLICY_OPTION}"/> >+ <sysproperty key="weblogic.Name" value="${rcm.wls.server1.name}"/> >+ <sysproperty key="bea.home" value="${bea.root.dir}"/> >+ <sysproperty key="weblogic.management.username" value="${server.user}"/> >+ <sysproperty key="weblogic.management.password" value="${server.pwd}"/> >+ <sysproperty key="java.security.police" value='"${weblogic.home}/lib/weblogic.policy"'/> >+ <sysproperty key="weblogic.RootDirectory" value="${weblogic.domain}"/> >+ <sysproperty key="weblogic.Stdout" value="${rcm.wls.server1.name}.log"/> >+ <sysproperty key="weblogic.Stderr" value="${rcm.wls.server1.name}.err"/> >+ <classpath refid="build.wls.path"/> >+ </java> >+ <sequential> >+ <waitfor> >+ <socket server="${rcm.wls.server1.httphost}" port="${rcm.wls.server1.port}"/> >+ </waitfor> >+ <parallel> >+ <echo message="*** starting managed server: Server2 "/> >+ <java classname="weblogic.Server" >+ fork="true" >+ failonerror="true"> >+ <jvmarg value="-server"/> >+ <jvmarg value="-Xms512m"/> >+ <jvmarg value="-Xmx960m"/> >+ <jvmarg value="-XX:MaxPermSize=256m"/> >+ <env key="PATH" value="${env.JAVA_HOME}/bin:${env.PATH}"/> >+ <sysproperty key="eclipselink.changePolicy" value="${POLICY_OPTION}"/> >+ <sysproperty key="weblogic.Name" value="${rcm.wls.server2.name}"/> >+ <sysproperty key="bea.home" value="${bea.root.dir}"/> >+ <sysproperty key="weblogic.management.server" value="${rcm.wls.server1.httphost}:${rcm.wls.server1.port}"/> >+ <sysproperty key="weblogic.management.username" value="${server.user}"/> >+ <sysproperty key="weblogic.management.password" value="${server.pwd}"/> >+ <sysproperty key="java.security.police" value='"${weblogic.home}/lib/weblogic.policy"'/> >+ <sysproperty key="weblogic.RootDirectory" value="${weblogic.domain}"/> >+ <sysproperty key="weblogic.Stdout" value="${rcm.wls.server2.name}.log"/> >+ <sysproperty key="weblogic.Stderr" value="${rcm.wls.server2.name}.err"/> >+ <classpath refid="build.wls.path"/> >+ </java> >+ <echo message="*** starting managed server: Server3 "/> >+ <java classname="weblogic.Server" >+ fork="true" >+ failonerror="true"> >+ <jvmarg value="-server"/> >+ <jvmarg value="-Xms512m"/> >+ <jvmarg value="-Xmx960m"/> >+ <jvmarg value="-XX:MaxPermSize=256m"/> >+ <env key="PATH" value="${env.JAVA_HOME}/bin:${env.PATH}"/> >+ <sysproperty key="eclipselink.changePolicy" value="${POLICY_OPTION}"/> >+ <sysproperty key="weblogic.Name" value="${rcm.wls.server3.name}"/> >+ <sysproperty key="bea.home" value="${bea.root.dir}"/> >+ <sysproperty key="weblogic.management.server" value="${rcm.wls.server1.httphost}:${rcm.wls.server1.port}"/> >+ <sysproperty key="weblogic.management.username" value="${server.user}"/> >+ <sysproperty key="weblogic.management.password" value="${server.pwd}"/> >+ <sysproperty key="java.security.police" value='"${weblogic.home}/lib/weblogic.policy"'/> >+ <sysproperty key="weblogic.RootDirectory" value="${weblogic.domain}"/> >+ <sysproperty key="weblogic.Stdout" value="${rcm.wls.server3.name}.log"/> >+ <sysproperty key="weblogic.Stderr" value="${rcm.wls.server3.name}.err"/> >+ <classpath refid="build.wls.path"/> >+ </java> >+ <sequential> >+ <waitfor> >+ <and> >+ <socket server="${rcm.wls.server2.httphost}" port="${rcm.wls.server2.port}"/> >+ <socket server="${rcm.wls.server3.httphost}" port="${rcm.wls.server3.port}"/> >+ </and> >+ </waitfor> >+ <sleep seconds="60"/> >+ </sequential> >+ </parallel> >+ </sequential> >+ </parallel> >+ </target> >+ >+ >+ >+</project> >Index: resource/server/persistence_cachecoordination.xml >=================================================================== >--- resource/server/persistence_cachecoordination.xml (revision 0) >+++ resource/server/persistence_cachecoordination.xml (revision 0) >@@ -0,0 +1,22 @@ >+<?xml version="1.0" encoding="windows-1252" ?> >+<persistence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >+ xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" >+ version="1.0" xmlns="http://java.sun.com/xml/ns/persistence"> >+ <persistence-unit name="%%default%%"> >+ <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> >+ <jta-data-source>%%data-source-name%%</jta-data-source> >+ <class>org.eclipse.persistence.testing.models.jpa.fieldaccess.advanced.Employee</class> >+ <class>org.eclipse.persistence.testing.models.jpa.fieldaccess.advanced.Address</class> >+ <properties> >+ <property name="eclipselink.session.customizer" value="org.eclipse.persistence.testing.models.jpa.sessionbean.JPASessionCustomizer"/> >+ <property name="eclipselink.target-server" value="WebLogic"/> >+ <property name="eclipselink.validate-existence" value="true"/> >+ <property name="eclipselink.logging.level" value="FINEST"/> >+ <property name="rcm.wls.jms.topichost.url" value="%%topic-host-url%%"/> >+ <property name="rcm.wls.jms.topicname" value="%%topic-name%%"/> >+ <property name="rcm.wls.jms.topic.connectionfactory.name" value="%%topic-connection-factory%%"/> >+ <property name="server.user" value="%%server-user%%"/> >+ <property name="server.pwd" value="%%server-pwd%%"/> >+ </properties> >+ </persistence-unit> >+</persistence> >Index: src/org/eclipse/persistence/testing/models/jpa/fieldaccess/advanced/Employee.java >=================================================================== >--- src/org/eclipse/persistence/testing/models/jpa/fieldaccess/advanced/Employee.java (revision 3389) >+++ src/org/eclipse/persistence/testing/models/jpa/fieldaccess/advanced/Employee.java (working copy) >@@ -29,8 +29,8 @@ > import org.eclipse.persistence.annotations.TypeConverter; > import org.eclipse.persistence.annotations.OptimisticLocking; > >-import static org.eclipse.persistence.annotations.CacheCoordinationType.INVALIDATE_CHANGED_OBJECTS; >-import static org.eclipse.persistence.annotations.CacheType.SOFT_WEAK; >+import static org.eclipse.persistence.annotations.CacheCoordinationType.SEND_NEW_OBJECTS_WITH_CHANGES;//INVALIDATE_CHANGED_OBJECTS; >+import static org.eclipse.persistence.annotations.CacheType.FULL;//SOFT_WEAK; > import static javax.persistence.CascadeType.*; > import static javax.persistence.FetchType.*; > import static javax.persistence.GenerationType.*; >@@ -107,12 +107,12 @@ > objectType=Long.class > ) > @Cache( >- type=SOFT_WEAK, >+ type=FULL, > shared=true, > expiry=100000, > alwaysRefresh=false, // some test dependencies for this to be false. > disableHits=true, // Employee customizer should set it back to false. >- coordinationType=INVALIDATE_CHANGED_OBJECTS >+ coordinationType=SEND_NEW_OBJECTS_WITH_CHANGES > ) > @Customizer(org.eclipse.persistence.testing.models.jpa.fieldaccess.advanced.EmployeeCustomizer.class) > public class Employee implements Serializable, Cloneable { >Index: src/org/eclipse/persistence/testing/models/jpa/sessionbean/EmployeeService.java >=================================================================== >--- src/org/eclipse/persistence/testing/models/jpa/sessionbean/EmployeeService.java (revision 3389) >+++ src/org/eclipse/persistence/testing/models/jpa/sessionbean/EmployeeService.java (working copy) >@@ -24,9 +24,11 @@ > > Employee findById(int id); > >+ List findByFirstName(String fname); > Employee fetchById(int id); > > void update(Employee employee); > > int insert(Employee employee); >+ void delete(Employee employee); > } >Index: src/org/eclipse/persistence/testing/models/jpa/sessionbean/EmployeeServiceBean.java >=================================================================== >--- src/org/eclipse/persistence/testing/models/jpa/sessionbean/EmployeeServiceBean.java (revision 3389) >+++ src/org/eclipse/persistence/testing/models/jpa/sessionbean/EmployeeServiceBean.java (working copy) >@@ -43,6 +43,12 @@ > return employee; > } > >+ public List findByFirstName(String fname) { >+ //NamedQuery("findAllFieldAccessEmployeesByFirstName") >+ Query query = entityManager.createQuery("SELECT e FROM Employee e where e.firstName = :fname").setParameter("fname", fname); >+ query.setHint("eclipselink.cache-usage", "CheckCacheOnly"); >+ return query.getResultList(); >+ } > public Employee fetchById(int id) { > Employee employee = entityManager.find(Employee.class, new Integer(id)); > employee.getAddress(); >@@ -63,4 +69,8 @@ > return employee.getId(); > } > >+ public void delete(Employee employee) { >+ Employee emp = entityManager.find(Employee.class, employee.getId()); >+ entityManager.remove(emp); >+ } > } >Index: src/org/eclipse/persistence/testing/models/jpa/sessionbean/JPASessionCustomizer_jms.java >=================================================================== >--- src/org/eclipse/persistence/testing/models/jpa/sessionbean/JPASessionCustomizer_jms.java (revision 0) >+++ src/org/eclipse/persistence/testing/models/jpa/sessionbean/JPASessionCustomizer_jms.java (revision 0) >@@ -0,0 +1,80 @@ >+/******************************************************************************* >+ * Copyright (c) 1998, 2008 Oracle. All rights reserved. >+ * This program and the accompanying materials are made available under the >+ * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 >+ * which accompanies this distribution. >+ * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html >+ * and the Eclipse Distribution License is available at >+ * http://www.eclipse.org/org/documents/edl-v10.php. >+ * >+ * Contributors: >+* pvijayaratnam - cache coordination test implementation >+ ******************************************************************************/ >+package org.eclipse.persistence.testing.models.jpa.sessionbean; >+ >+import org.eclipse.persistence.config.SessionCustomizer; >+import org.eclipse.persistence.sessions.Session; >+import org.eclipse.persistence.sessions.DatabaseSession; >+import org.eclipse.persistence.internal.sessions.DatabaseSessionImpl; >+ >+import org.eclipse.persistence.sessions.coordination.RemoteCommandManager; >+import org.eclipse.persistence.sessions.coordination.TransportManager; >+import org.eclipse.persistence.sessions.coordination.jms.JMSTopicTransportManager; >+ >+import java.io.*; >+import java.util.*; >+ >+public class JPASessionCustomizer implements SessionCustomizer { >+ >+ >+ public void customize(Session session) { >+ >+ RemoteCommandManager rcm = new RemoteCommandManager((DatabaseSessionImpl)session); >+ JMSTopicTransportManager tm = new JMSTopicTransportManager(rcm); >+ >+ //loading properities using FileInputStream >+ Properties properties = new Properties(); >+ try{ >+ FileInputStream fis = new FileInputStream("weblogic.properties"); >+ properties.load(fis); >+ } >+ catch(Exception notFoundException){ >+ throw new Error("Properties not found.", notFoundException); >+ } >+ >+ tm.setTopicHostUrl(properties.getProperty("rcm.wls.jms.topichost.url")); >+ tm.setTopicName(properties.getProperty("rcm.wls.jms.topicname")); >+ tm.setTopicConnectionFactoryName(properties.getProperty("rcm.wls.jms.topic.connectionfactory.name")); >+ tm.setUserName(properties.getProperty("server.user")); >+ tm.setPassword(properties.getProperty("server.pwd")); >+ >+ //loading properities using getResource >+ /* >+ this.getClass().getResource("weblogic.properties"); >+ tm.setTopicHostUrl(System.getProperty("rcm.wls.jms.topichost.url")); >+ tm.setTopicName(System.getProperty("rcm.wls.jms.topicname")); >+ tm.setTopicConnectionFactoryName(System.getProperty("rcm.wls.jms.topic.connectionfactory.name")); >+ tm.setUserName(System.getProperty("server.user")); >+ tm.setPassword(System.getProperty("server.pwd")); >+ */ >+ rcm.setTransportManager(tm); >+ rcm.setShouldPropagateAsynchronously(false); >+ rcm.getTransportManager().setNamingServiceType(TransportManager.JNDI_NAMING_SERVICE); >+ >+ rcm.getTransportManager().setInitialContextFactoryName("weblogic.jndi.WLInitialContextFactory"); >+ rcm.getTransportManager().setShouldRemoveConnectionOnError(true); >+ rcm.setServerPlatform(((org.eclipse.persistence.sessions.DatabaseSession)session).getServerPlatform()); >+ ((DatabaseSessionImpl)session).setCommandManager(rcm); >+ ((DatabaseSessionImpl)session).setShouldPropagateChanges(true); >+ rcm.initialize(); >+ >+ // Sleep to allow RCM to startup and find each session. >+ try { >+ Thread.sleep(2000); >+ } catch (Exception ignore) { >+ } >+ >+ } >+ >+ >+} >\ No newline at end of file >Index: src/org/eclipse/persistence/testing/models/jpa/sessionbean/JPASessionCustomizer_rmi.java >=================================================================== >--- src/org/eclipse/persistence/testing/models/jpa/sessionbean/JPASessionCustomizer_rmi.java (revision 0) >+++ src/org/eclipse/persistence/testing/models/jpa/sessionbean/JPASessionCustomizer_rmi.java (revision 0) >@@ -0,0 +1,80 @@ >+/******************************************************************************* >+ * Copyright (c) 1998, 2008 Oracle. All rights reserved. >+ * This program and the accompanying materials are made available under the >+ * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 >+ * which accompanies this distribution. >+ * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html >+ * and the Eclipse Distribution License is available at >+ * http://www.eclipse.org/org/documents/edl-v10.php. >+ * >+ * Contributors: >+* pvijayaratnam - cache coordination test implementation >+ ******************************************************************************/ >+package org.eclipse.persistence.testing.models.jpa.sessionbean; >+ >+import org.eclipse.persistence.config.SessionCustomizer; >+import org.eclipse.persistence.sessions.Session; >+import org.eclipse.persistence.sessions.DatabaseSession; >+import org.eclipse.persistence.internal.sessions.DatabaseSessionImpl; >+ >+import org.eclipse.persistence.sessions.coordination.RemoteCommandManager; >+import org.eclipse.persistence.sessions.coordination.TransportManager; >+ >+import java.io.*; >+import java.util.*; >+ >+public class JPASessionCustomizer implements SessionCustomizer { >+ >+ public void customize(Session session) { >+ >+ RemoteCommandManager rcm = new RemoteCommandManager((DatabaseSessionImpl)session); >+ >+ ((DatabaseSessionImpl)session).setShouldPropagateChanges(true); >+ ((DatabaseSessionImpl)session).setCommandManager(rcm); >+ rcm.setShouldPropagateAsynchronously(false); >+ >+ //loading properities using FileInputStream >+ Properties properties = new Properties(); >+ try{ >+ FileInputStream fis = new FileInputStream("weblogic.properties"); >+ properties.load(fis); >+ } >+ catch(Exception notFoundException){ >+ throw new Error("Properties not found.", notFoundException); >+ } >+ >+ ((DatabaseSessionImpl)session).getCommandManager().getDiscoveryManager().setAnnouncementDelay(Integer.parseInt(properties.getProperty("announcement.delay").trim())); >+ ((DatabaseSessionImpl)session).getCommandManager().getDiscoveryManager().setMulticastGroupAddress(properties.getProperty("rcm.multicastgroup")); >+ ((DatabaseSessionImpl)session).getCommandManager().getDiscoveryManager().setMulticastPort(Integer.parseInt(properties.getProperty("rcm.multicastport").trim())); >+ ((DatabaseSessionImpl)session).getCommandManager().getDiscoveryManager().setPacketTimeToLive(Integer.parseInt(properties.getProperty("rcm.packet.timetolive").trim())); >+ >+ rcm.setUrl(properties.getProperty("%%current-server-url%%")); >+ rcm.getTransportManager().setUserName(properties.getProperty("server.user")); >+ rcm.getTransportManager().setPassword(properties.getProperty("server.pwd")); >+ >+ //loading properities using getResource >+/* this.getClass().getResource("weblogic.properties"); >+ ((DatabaseSessionImpl)session).getCommandManager().getDiscoveryManager().setAnnouncementDelay(Integer.parseInt(System.getProperty("announcement.delay").trim())); >+ ((DatabaseSessionImpl)session).getCommandManager().getDiscoveryManager().setMulticastGroupAddress(System.getProperty("rcm.multicastgroup")); >+ ((DatabaseSessionImpl)session).getCommandManager().getDiscoveryManager().setMulticastPort(Integer.parseInt(System.getProperty("rcm.multicastport").trim())); >+ ((DatabaseSessionImpl)session).getCommandManager().getDiscoveryManager().setPacketTimeToLive(Integer.parseInt(System.getProperty("rcm.packet.timetolive").trim())); >+ >+ rcm.setUrl(System.getProperty("rcm.wls.server1.url")); >+ rcm.getTransportManager().setUserName(System.getProperty("server.user")); >+ rcm.getTransportManager().setPassword(System.getProperty("server.pwd")); >+*/ >+ rcm.getTransportManager().setNamingServiceType(TransportManager.JNDI_NAMING_SERVICE); >+ rcm.getTransportManager().setInitialContextFactoryName("weblogic.jndi.WLInitialContextFactory"); >+ rcm.getTransportManager().setShouldRemoveConnectionOnError(true); >+ rcm.setServerPlatform(((org.eclipse.persistence.sessions.DatabaseSession)session).getServerPlatform()); >+ rcm.initialize(); >+ >+ // Sleep to allow RCM to startup and find each session. >+ try { >+ Thread.sleep(2000); >+ } catch (Exception ignore) { >+ } >+ >+ } >+ >+} >\ No newline at end of file >Index: src/org/eclipse/persistence/testing/tests/jpa/sessionbean/SessionBeanTestsRCM.java >=================================================================== >--- src/org/eclipse/persistence/testing/tests/jpa/sessionbean/SessionBeanTestsRCM.java (revision 0) >+++ src/org/eclipse/persistence/testing/tests/jpa/sessionbean/SessionBeanTestsRCM.java (revision 0) >@@ -0,0 +1,288 @@ >+/******************************************************************************* >+ * Copyright (c) 1998, 2008 Oracle. All rights reserved. >+ * This program and the accompanying materials are made available under the >+ * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 >+ * which accompanies this distribution. >+ * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html >+ * and the Eclipse Distribution License is available at >+ * http://www.eclipse.org/org/documents/edl-v10.php. >+ * >+ * Contributors: >+* pvijayaratnam - cache coordination test implementation >+ ******************************************************************************/ >+ package org.eclipse.persistence.testing.tests.jpa.sessionbean; >+ >+import java.util.Iterator; >+import java.util.List; >+import java.util.Properties; >+import javax.naming.Context; >+import javax.naming.InitialContext; >+import javax.naming.NameNotFoundException; >+import javax.rmi.PortableRemoteObject; >+ >+import junit.framework.*; >+ >+import org.eclipse.persistence.exceptions.ValidationException; >+import org.eclipse.persistence.testing.framework.junit.JUnitTestCase; >+import org.eclipse.persistence.testing.models.jpa.fieldaccess.advanced.Department; >+import org.eclipse.persistence.testing.models.jpa.fieldaccess.advanced.Employee; >+import org.eclipse.persistence.testing.models.jpa.fieldaccess.advanced.Address; >+import org.eclipse.persistence.testing.models.jpa.fieldaccess.advanced.AdvancedTableCreator; >+import org.eclipse.persistence.testing.models.jpa.sessionbean.EmployeeService; >+ >+import org.eclipse.persistence.expressions.Expression; >+import org.eclipse.persistence.expressions.ExpressionBuilder; >+import org.eclipse.persistence.queries.ReadObjectQuery; >+ >+import java.util.*; >+import java.io.*; >+ >+/** >+ * EJB 3 SessionBean tests. >+ * Testing using EclipseLink JPA in a JEE EJB 3 SessionBean environment. >+ * These tests can only be run with a server. >+ */ >+public class SessionBeanTestsRCM extends JUnitTestCase { >+ protected EmployeeService service; >+ private String wlsUserName; >+ private String wlsPassword; >+ private String server1Url; >+ private String server2Url; >+ private String server3Url; >+ int empId = 0; >+ private Employee employeeCached = null; >+ >+ public SessionBeanTestsRCM() { >+ super(); >+ } >+ >+ public SessionBeanTestsRCM(String name) { >+ super(name); >+ } >+ >+ public SessionBeanTestsRCM(String name, boolean shouldRunTestOnServer) { >+ super(name); >+ >+ this.getClass().getResource("weblogic.properties"); >+ wlsUserName = System.getProperty("server.user"); >+ wlsPassword = System.getProperty("server.pwd"); >+ server1Url = System.getProperty("rcm.wls.server1.url"); >+ server2Url = System.getProperty("rcm.wls.server2.url"); >+ server3Url = System.getProperty("rcm.wls.server3.url"); >+ } >+ >+ public static Test suite() { >+ >+ >+ TestSuite suite = new TestSuite("SessionBeanTestsRCM"); >+ >+ suite.addTest(new SessionBeanTestsRCM("testSetupRcmOnServer2", true)); >+ suite.addTest(new SessionBeanTestsRCM("testSetupForDeleteOnServer2", true)); >+ >+ suite.addTest(new SessionBeanTestsRCM("testSetupRcmOnServer1", true)); >+ suite.addTest(new SessionBeanTestsRCM("testPerformDeleteOnServer1", true)); >+ >+ //suite.addTest(new SessionBeanTestsRCM("testReadFromServer2AfterUpdateNonJPQL", true)); >+ suite.addTest(new SessionBeanTestsRCM("testConfirmUpdateOnServer2", true)); >+ suite.addTest(new SessionBeanTestsRCM("testConfirmDeleteOnServer2", true)); >+ return suite; >+ } >+ >+ /** >+ * The setup is done as a test, both to record its failure, and to alow execution in the server2. >+ */ >+ public void testSetupRcmOnServer2() throws Exception { >+ new AdvancedTableCreator().replaceTables(JUnitTestCase.getServerSession("sessionbean")); >+ } >+ >+ public EmployeeService getEmployeeService(String url) throws Exception { >+ if (service == null) { >+ Properties properties = new Properties(); >+ if (url != null) { >+ properties.put("java.naming.provider.url", url); >+ } >+ Context context = new InitialContext(properties); >+ >+ try { >+ service = (EmployeeService) PortableRemoteObject.narrow(context.lookup("java:comp/env/ejb/EmployeeService"), EmployeeService.class); >+ } catch (NameNotFoundException notFoundException) { >+ try { >+ service = (EmployeeService) PortableRemoteObject.narrow(context.lookup("ejb/EmployeeService"), EmployeeService.class); >+ } catch (NameNotFoundException notFoundException2) { >+ try { >+ // WLS likes this one. >+ service = (EmployeeService) PortableRemoteObject.narrow(context.lookup("EmployeeService#org.eclipse.persistence.testing.models.jpa.sessionbean.EmployeeService"), EmployeeService.class); >+ } catch (NameNotFoundException notFoundException3) { >+ try { >+ //jboss likes this one >+ service = (EmployeeService) PortableRemoteObject.narrow(context.lookup("EmployeeService/remote"), EmployeeService.class); >+ } catch (NameNotFoundException notFoundException4) { >+ throw new Error("All lookups failed.", notFoundException); >+ } >+ } >+ } >+ } >+ } >+ return service; >+ } >+ >+ >+ /* CacheCoordination Delete Test Setup on Server2: >+ * This test insert an employee record, which will be deleted later using Server1 >+ */ >+ public void testSetupForDeleteOnServer2() throws Exception { >+ /* Create an Employee record using Server2 */ >+ Employee employee = new Employee(); >+ employee.setFirstName("Jane2"); >+ employee.setLastName("Doe2"); >+ employee.setAddress(new Address()); >+ employee.getAddress().setCity("Ottawa2"); >+ Employee manager = new Employee(); >+ manager.setFirstName("John2"); >+ manager.setLastName("Done2"); >+ employee.setManager(manager); >+ >+ int empID = getEmployeeService(server2Url).insert(employee); >+ >+ try{ >+ employee = getEmployeeService(server2Url).findById(empID); >+ if(employee == null){ >+ >+ fail("Server2 CacheCoordination Setup Failure: New employee added from Server2 is not found in cache or DB."); >+ } >+ } catch(Exception e){ >+ throw new Error("Following Emp ID not found: " + empID); >+ } >+ } >+ >+ /** >+ * CacheCoordination Update Test setup on Server1: >+ * This test insert an employee record, which is then updated using Server1. Later on, this update will be verified on Server2. >+ * The setup is done as a test, both to record its failure, and to alow execution in the server1. >+ */ >+ public void testSetupRcmOnServer1() throws Exception { >+ >+ /* Create an Employee record in Server1 */ >+ Employee employee = new Employee(); >+ employee.setFirstName("Jane1"); >+ employee.setLastName("Doe1"); >+ employee.setAddress(new Address()); >+ employee.getAddress().setCity("Ottawa1"); >+ Employee manager = new Employee(); >+ manager.setFirstName("John1"); >+ manager.setLastName("Done1"); >+ employee.setManager(manager); >+ >+ empId = getEmployeeService(server1Url).insert(employee); >+ >+ /* read Employee from cache and/or DB */ >+ Employee jane1 = (Employee) getEmployeeService(server1Url).findById(empId); >+ /* update employee on Server1 */ >+ jane1.setLastName("LastNameUpdatedOnServer1"); >+ jane1.getAddress().setCity("newCity"); >+ getEmployeeService(server1Url).update(jane1); >+ >+ if (!jane1.getLastName().equals("LastNameUpdatedOnServer1")) { >+ fail("UpdateTest Setup on Server1 failed"); >+ } >+ >+ } >+ >+ /** >+ * CacheCoordination Test setup for Delete on Server1: >+ * Find employee created on Server2, then delete it using Server1. >+ */ >+ public void testPerformDeleteOnServer1() throws Exception { >+ >+ List result = getEmployeeService(server1Url).findByFirstName("Jane2"); >+ int count = 0; >+ for(Iterator i = result.iterator(); i.hasNext();){ >+ employeeCached = (Employee) i.next(); >+ } >+ >+ if(employeeCached == null){ >+ >+ fail("Perform Delete Test failed: New employee was not found in distributed cache to delete"); >+ } >+ >+ getEmployeeService(server1Url).delete(employeeCached); >+ } >+ >+ >+ /* CacheCoordination Test - Verify that Object Update done on Server1 is sync with Server2 thru cache: >+ * This test uses JPQL to read object on Server2. >+ */ >+ public void testConfirmUpdateOnServer2() throws Exception { >+ >+ >+ /* verify updates are in sync: read Employee from using Server2 URL */ >+ >+ List result = getEmployeeService(server2Url).findByFirstName("Jane1"); >+ int count = 0; >+ for(Iterator i = result.iterator(); i.hasNext();){ >+ employeeCached = (Employee) i.next(); >+ } >+ if(employeeCached == null){ >+ >+ fail("Object Update Test verification failed: New employee was not found in distributed cache"); >+ } >+ if (!employeeCached.getLastName().equals("LastNameUpdatedOnServer1")) { >+ fail("Object Update Test verification failed: Changes from server1 is not seen by server2 from distributed cache"); >+ } >+ >+ >+ } >+ >+ >+ >+ /* CacheCoordination Test - Verify that Object Delete done on Server1 is sync with Server2 thru cache: >+ * This test uses JPQL to read object on Server2. >+ */ >+ public void testConfirmDeleteOnServer2() throws Exception { >+ >+ /* verify deletes are in sync: read Employee from using Server2 URL */ >+ >+ List result = getEmployeeService(server2Url).findByFirstName("Jane2"); >+ int count = 0; >+ for(Iterator i = result.iterator(); i.hasNext();){ >+ employeeCached = (Employee) i.next(); >+ } >+ if(!( employeeCached == null)){ >+ >+ fail("Object Delete Test verification failed: employee was not removed from cache as expected" ); >+ } >+ >+ } >+ >+ /* CacheCoordination Test - Verify changes are on cache and read onto Server2: >+ * >+ */ >+/* >+ public void testReadFromServer2AfterUpdateNonJPQL() throws Exception { >+ >+ >+ // read Employee from using Server2 URL >+ ExpressionBuilder employees = new ExpressionBuilder(); >+ Expression expression = employees.get("firstName").equal("Jane1"); >+ ReadObjectQuery query = new ReadObjectQuery(Employee.class, expression); >+ >+ // verify updates are in sync >+ >+ query.checkCacheOnly(); >+ //empID = getEmpID(); >+ Employee employeeCached = (Employee) (this.getServerSession("sessionbean")).executeQuery(query); >+ >+ if(employeeCached == null){ >+ >+ fail("Object_Exist_Test: New employee was not added to distributed cache: (SERVER2_URL) "+ (this.getServerSession("sessionbean")).getName() ); >+ } >+ if (!employeeCached.getLastName().equals("LastNameUpdatedOnServer1")) { >+ fail("Object_Update_Test: Changes from server1 is not seen by server2 from distributed cache"); >+ } >+ >+ >+ } >+*/ >+ >+} >+ >Index: weblogic.properties >=================================================================== >--- weblogic.properties (revision 3389) >+++ weblogic.properties (working copy) >@@ -19,3 +19,39 @@ > junit.lib=../../../extension.lib.external/junit.jar > eclipselink.jar.name=../../eclipselink.jar > jdbc.driver.jar=../../../extension.oracle.lib.external/ojdbc5_11.jar >+ >+# CacheCoordination Weblogic properties >+domain.name=mydomain >+weblogic.version=10.3 >+ >+#rcm.wls.adminserver.httphost=${weblogic.host} >+rcm.wls.server1.httphost=${weblogic.host} >+rcm.wls.server2.httphost=${weblogic.host} >+rcm.wls.server3.httphost=${weblogic.host} >+#rcm.wls.adminserver.name=server1 >+rcm.wls.server1.name=server1 >+rcm.wls.server2.name=server2 >+rcm.wls.server3.name=server3 >+#rcm.wls.adminserver.port=${weblogic.port} >+rcm.wls.server1.port=7001 >+rcm.wls.server2.port=7021 >+rcm.wls.server3.port=7031 >+ >+rcm.wls.server1.url=t3://${rcm.wls.server1.httphost}:${rcm.wls.server1.port}/ >+rcm.wls.server2.url=t3://${rcm.wls.server2.httphost}:${rcm.wls.server2.port}/ >+rcm.wls.server3.url=t3://${rcm.wls.server3.httphost}:${rcm.wls.server3.port}/ >+ >+# test config using protocol: valid values are jms or rmi >+cachecoordination.protocol=jms >+ >+# RMI properties >+announcement.delay=1000 >+rcm.multicastgroup=239.192.0.0 >+rcm.multicastport=3121 >+rcm.packet.timetolive=2 >+ >+# JMS properties >+#rcm.wls.jms.topichost.url=t3://${rcm.wls.server1.httphost}:${rcm.wls.server1.port} >+rcm.wls.jms.topichost.url=t3://localhost:7001 >+rcm.wls.jms.topicname=jms/EclipseLinkTopic >+rcm.wls.jms.topic.connectionfactory.name=jms/EclipseLinkTopicConnectionFactory >\ No newline at end of file
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 262740
:
124136
|
124679
|
124791
|
125134