View | Details | Raw Unified | Return to bug 262740 | Differences between
and this patch

Collapse All | Expand All

(-)build.xml (-1 / +7 lines)
Lines 1405-1409 Link Here
1405
            <param name="eclipselink.jpa.test.dir" value="./../../foundation/eclipselink.extension.oracle.test"/>
1405
            <param name="eclipselink.jpa.test.dir" value="./../../foundation/eclipselink.extension.oracle.test"/>
1406
        </antcall>
1406
        </antcall>
1407
    </target>
1407
    </target>
1408
1408
    <!-- *********** CacheCoordination Test Targets -->
1409
    <target name="server-start-cachecoordination" depends="detect-os,config-trunk, config-flat">
1410
      <ant antfile="${eclipselink.jpa.test}/cachecoordination.xml" target="${server.name}-start-cachecoordination" inheritRefs="true"/>
1411
    </target>
1412
    <target name="server-run-test-cachecoordination" depends="detect-os,config-trunk, config-flat">
1413
      <ant antfile="${eclipselink.jpa.test}/cachecoordination.xml" target="${server.name}-run-test-cachecoordination" inheritRefs="true"/>
1414
    </target>
1409
</project>
1415
</project>
(-)cachecoordination.xml (+176 lines)
Line 0 Link Here
1
<project name="Eclipse Persistence Services JPA WLS CacheCoordination Testing" basedir=".">
2
3
    <property name="env" environment="env" value="env"/>
4
    <!-- Allows a user to overide certain user specific properties. -->
5
    <property name="eclipselink.jpa.test" value="."/>
6
    <property file="${eclipselink.jpa.test}/build.properties"/>
7
    <property file="${user.home}/weblogic.properties"/>
8
        <property file="test.properties"/>
9
10
<!-- *********** CacheCoordination Test Targets -->
11
    <target name="weblogic-start-cachecoordination">
12
      <ant antfile="${eclipselink.jpa.test}/cachecoordination_${server.name}.xml" target="${server.name}-start-cachecoordination" inheritRefs="true"/>
13
    </target>
14
    <target name="weblogic-run-test-cachecoordination">       
15
       <antcall target="build-deploy-cachecoordination-wls"/>
16
       <antcall target="runclient-cachecoordination-wls"/>
17
       	<!--antcall target="generate-report" inheritRefs="true"/-->
18
		<ant antfile="${eclipselink.jpa.test}/build.xml" target="generate-report" inheritRefs="true"/>
19
	<antcall target="server-undeploy-cachecoordination-server2" inheritRefs="true">
20
            <param name="application.name" value="eclipselink-sessionbean-model-server2"/>
21
        </antcall>	
22
	<antcall target="server-undeploy-cachecoordination-server1" inheritRefs="true">
23
            <param name="application.name" value="eclipselink-sessionbean-model-server1"/>
24
        </antcall>	
25
	<ant antfile="${eclipselink.jpa.test}/cachecoordination_${server.name}.xml" target="${server.name}-stop-cachecoordination" inheritRefs="true"/>	
26
	<delete includeEmptyDirs="true" failonerror="false">
27
            <fileset dir="${weblogic.domain}/servers/server2/tmp"/>
28
            <fileset dir="${weblogic.domain}/servers/server1/tmp"/>
29
	    <fileset dir="${weblogic.domain}/servers/myserver/tmp"/>
30
	</delete> 	
31
    </target>
32
    <target name="build-deploy-cachecoordination-wls">
33
       <sequential>
34
        <antcall target="cachecoordination-build-and-deploy-server1" inheritRefs="true">
35
            <param name="PERSISTENCE_UNIT_NAME" value="sessionbean"/>
36
            <param name="MODEL_DIR" value="org/eclipse/persistence/testing/models/jpa/sessionbean"/>
37
            <param name="MODEL_DIR2" value="org/eclipse/persistence/testing/models/jpa/fieldaccess/advanced"/>
38
            <param name="MODEL_NAME" value="eclipselink-sessionbean-model"/>
39
            <param name="TEST_DIR" value="org/eclipse/persistence/testing/tests/jpa/sessionbean"/>
40
            <param name="TEST_NAME" value="eclipselink-sessionbean-model"/>
41
            <param name="EAR_NAME" value="eclipselink-sessionbean-model-server1"/>
42
            <param name="TEST_SUITE" value="org.eclipse.persistence.testing.tests.jpa.sessionbean.SessionBeanTestsRCM"/>
43
            <param name="eclipselink.jpa.test.dir" value="."/>
44
        </antcall>
45
	<antcall target="cachecoordination-build-and-deploy-server2" inheritRefs="true">
46
            <param name="PERSISTENCE_UNIT_NAME" value="sessionbean"/>
47
            <param name="MODEL_DIR" value="org/eclipse/persistence/testing/models/jpa/sessionbean"/>
48
            <param name="MODEL_DIR2" value="org/eclipse/persistence/testing/models/jpa/fieldaccess/advanced"/>
49
            <param name="MODEL_NAME" value="eclipselink-sessionbean-model"/>
50
            <param name="TEST_DIR" value="org/eclipse/persistence/testing/tests/jpa/sessionbean"/>
51
            <param name="TEST_NAME" value="eclipselink-sessionbean-model"/>
52
            <param name="EAR_NAME" value="eclipselink-sessionbean-model-server2"/>
53
            <param name="TEST_SUITE" value="org.eclipse.persistence.testing.tests.jpa.sessionbean.SessionBeanTestsRCM"/>
54
            <param name="eclipselink.jpa.test.dir" value="."/>
55
        </antcall>	
56
	</sequential>
57
    </target>
58
      <target name="runclient-cachecoordination-wls">
59
       	<antcall target="server-run-test-cachecoordination" inheritRefs="true">
60
            <param name="PERSISTENCE_UNIT_NAME" value="sessionbean"/>
61
            <param name="MODEL_DIR" value="org/eclipse/persistence/testing/models/jpa/sessionbean"/>
62
            <param name="MODEL_DIR2" value="org/eclipse/persistence/testing/models/jpa/fieldaccess/advanced"/>
63
            <param name="MODEL_NAME" value="eclipselink-sessionbean-model"/>
64
            <param name="TEST_DIR" value="org/eclipse/persistence/testing/tests/jpa/sessionbean"/>
65
            <param name="TEST_NAME" value="eclipselink-sessionbean-model"/>
66
            <param name="EAR_NAME" value="eclipselink-sessionbean-model-server2"/>
67
            <param name="TEST_SUITE" value="org.eclipse.persistence.testing.tests.jpa.sessionbean.SessionBeanTestsRCM"/>
68
            <param name="eclipselink.jpa.test.dir" value="."/>
69
        </antcall>
70
    </target>
71
    
72
    <target name="set-app-name-cachecoordination">
73
        <property name="APP_NAME" value="${MODEL_NAME}"/>
74
        <property name="DS_NAME" value="jdbc/EclipseLinkDS"/>
75
    </target>
76
        <!-- Build and deploy to Server1 -->
77
    <target name="cachecoordination-build-and-deploy-server1" depends="set-app-name-cachecoordination">
78
	    <copy overwrite="true" file="${eclipselink.jpa.test}/persistence.xml" tofile="${eclipselink.jpa.test}/${resource.dir}/server/persistence.xml"/>
79
        <copy overwrite="true" file="${eclipselink.jpa.test}/JPASessionCustomizer_${cachecoordination.protocol}_server1.java" 
80
          tofile="${eclipselink.jpa.test}/${src.dir}/org/eclipse/persistence/testing/models/jpa/sessionbean/JPASessionCustomizer.java" />
81
	<ant antfile="${eclipselink.jpa.test}/build.xml" target="server-build" inheritRefs="true"/>
82
        <antcall target="server-deploy-cachecoordination-server1" inheritRefs="true">
83
            <param name="ear.name" value="${EAR_NAME}.ear"/>
84
            <param name="application.name" value="${EAR_NAME}"/>
85
        </antcall>	
86
    </target>
87
    <target name="cachecoordination-build-and-deploy-server2" depends="set-app-name-cachecoordination">
88
        <copy overwrite="true" file="${eclipselink.jpa.test}/JPASessionCustomizer_${cachecoordination.protocol}_server2.java" 
89
          tofile="${eclipselink.jpa.test}/${src.dir}/org/eclipse/persistence/testing/models/jpa/sessionbean/JPASessionCustomizer.java" />
90
	<ant antfile="${eclipselink.jpa.test}/build.xml" target="server-build" inheritRefs="true"/>
91
        <antcall target="server-deploy-cachecoordination-server2" inheritRefs="true">
92
            <param name="ear.name" value="${EAR_NAME}.ear"/>
93
            <param name="application.name" value="${EAR_NAME}"/>
94
        </antcall>
95
    </target>    
96
97
    <target name="server-deploy-cachecoordination-server1">
98
        <ant antfile="${eclipselink.jpa.test}/cachecoordination_${server.name}.xml" target="${server.name}-deploy" inheritRefs="true">
99
            <property name="ear.name" value="${ear.name}"/>
100
            <property name="application.name" value="${application.name}"/>
101
	    <property name="target.server" value="server1"/>
102
        </ant>
103
    </target>
104
105
    <target name="server-deploy-cachecoordination-server2">
106
        <ant antfile="${eclipselink.jpa.test}/cachecoordination_${server.name}.xml" target="${server.name}-deploy" inheritRefs="true">
107
            <property name="ear.name" value="${ear.name}"/>
108
            <property name="application.name" value="${application.name}"/>
109
	    <property name="target.server" value="server2"/>
110
        </ant>
111
    </target>    
112
    <target name="server-undeploy-cachecoordination-server1">
113
        <ant antfile="${eclipselink.jpa.test}/cachecoordination_${server.name}.xml" target="${server.name}-undeploy" inheritRefs="true">
114
            <property name="application.name" value="${application.name}"/>
115
	    <property name="target.server" value="server1"/>
116
        </ant>
117
    </target>
118
    <target name="server-undeploy-cachecoordination-server2">
119
        <ant antfile="${eclipselink.jpa.test}/cachecoordination_${server.name}.xml" target="${server.name}-undeploy" inheritRefs="true">
120
            <property name="application.name" value="${application.name}"/>
121
	    <property name="target.server" value="server2"/>
122
        </ant>
123
    </target>
124
125
    <target name="server-run-test-cachecoordination" depends="config-compile-path">
126
        <property file="${eclipselink.jpa.test}/cachecoordination.properties"/>
127
        <property file="${user.home}/${server.name}.properties"/>
128
        <property file="${eclipselink.jpa.test}/${server.name}.properties"/>
129
        <path id="run.path">
130
            <pathelement path="${eclipselink.jpa.test}/${build.dir}/${TEST_NAME}_client.jar"/>
131
            <pathelement path="${eclipselink.jpa.test}/${build.dir}/${MODEL_NAME}_ejb.jar"/>
132
            <fileset dir="${server.lib}" includes="${server.depend}"/>
133
            <path refid="compile.server.path"/>
134
        </path>
135
        <echo>Running test ${EAR_NAME} on ${server.name}</echo>
136
        <mkdir dir="${eclipselink.jpa.test}/${report.dir}"/>
137
        <junit printsummary="yes" haltonfailure="yes" failureproperty="junit.failed" fork="yes" showoutput="true" maxmemory="256m" dir="${run.dir}">
138
            <sysproperty key="server.platform" value="${server.platform}"/>
139
            <sysproperty key="server.user" value="${server.user}"/>
140
            <sysproperty key="server.password" value="${server.pwd}"/>
141
            <sysproperty key="server.url" value="${server2.url}${MODEL_NAME}"/>
142
            <sysproperty key="server.testrunner" value="${server.testrunner}"/>
143
            <sysproperty key="server.run" value="TRUE"/>
144
            <classpath refid="run.path"/>
145
            <formatter type="xml"/>
146
            <test name="${TEST_SUITE}" haltonfailure="no" outfile="${report.dir}/${TEST_SUITE}-test-results"/>
147
        </junit>
148
    </target>
149
    
150
    <target name="config-compile-path">
151
        <path id="compile.path">
152
            <pathelement path="${eclipselink.core.dir}/${classes.dir}"/>
153
            <pathelement path="${eclipselink.jpa}/${classes.dir}"/>
154
            <pathelement path="${eclipselink.core.test.dir}/${classes.dir}"/>
155
            <pathelement path="${eclipselink.core.test.dir}/${eclipselink.tests.jar}"/>
156
            <fileset dir="${eclipselink.jpa}/../${plugins.dir}"
157
                includes="${eclipselink.jpa.depend}"/>
158
            <fileset
159
                dir="${eclipselink.core.lib.dir}"
160
                includes="${eclipselink.core.depend}"/>
161
            <pathelement path="${eclipselink.moxy.dir}/${classes.dir}"/>
162
            <fileset
163
                dir="${eclipselink.moxy.lib.dir}"
164
                includes="${eclipselink.moxy.depend}"/>
165
            <pathelement path="${eclipselink.jar.name}"/>
166
            <pathelement path="${junit.lib}"/>
167
            <pathelement path="${eclipselink.plugins}/${antlr}"/>
168
            <pathelement path="${eclipselink.plugins}/${asm}"/>
169
        </path>
170
        <path id="compile.server.path">
171
            <path refid="compile.path"/>
172
            <pathelement path="${jdbc.driver.jar}"/>
173
        </path>
174
    </target>
175
176
</project>
(-)cachecoordination_weblogic.xml (+212 lines)
Line 0 Link Here
1
<!--/*******************************************************************************
2
* This program and the accompanying materials are made available under the 
3
* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 
4
* which accompanies this distribution. 
5
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
6
* and the Eclipse Distribution License is available at 
7
* http://www.eclipse.org/org/documents/edl-v10.php.
8
*
9
*   Ant naming conventions:
10
*   - regardless of the actual OS platform,'/' is the directory separator
11
*     (Ant will convert as appropriate).
12
*   - multi-word properties use periods '.'
13
*   - multi-word targets use hyphens '-' 
14
*   - multi-word macros use underscores '_'
15
*   - multi-word macro attributes are concatinated
16
*     e.g. 'runpathref'  
17
*   - multi-word tasks (taskdef) names are concatinated
18
*     e.g. 'validateconnection'
19
*   - OS environment variables are in ALLCAPS and have 'env' as a prefix
20
*     e.g. ${env.XXX}.
21
*   - Ant properties are lower case.
22
*
23
* Contributors:
24
*     pvijayar
25
#******************************************************************************/-->
26
27
<!-- This ant project includes the following tasks:
28
        ....
29
-->
30
31
<project name="Eclipse Persistence Services JPA WLS CacheCoordination Testing" basedir=".">
32
33
    <property name="env" environment="env" value="env"/>
34
    <!-- Allows a user to overide certain user specific properties. -->
35
    <property file="${user.home}/weblogic.properties"/>
36
    <property file="test.properties"/>
37
38
    <!-- WebLogic ant tasks -->
39
    <taskdef name="wlserver" classname="weblogic.ant.taskdefs.management.WLServer">
40
        <classpath>
41
            <pathelement location="${weblogic.home}/lib/weblogic.jar"/>
42
        </classpath>
43
    </taskdef>
44
    <taskdef name="wlconfig" classname="weblogic.ant.taskdefs.management.WLConfig">
45
        <classpath>
46
            <pathelement location="${weblogic.home}/lib/weblogic.jar"/>
47
        </classpath>
48
    </taskdef>
49
    <taskdef name="wldeploy" classname="weblogic.ant.taskdefs.management.WLDeploy">
50
        <classpath>
51
            <pathelement location="${weblogic.home}/lib/weblogic.jar"/>
52
        </classpath>
53
    </taskdef>
54
55
    <!-- Stop all servers. -->
56
    <target name="weblogic-stop-cachecoordination" depends="weblogic-stop-server3,weblogic-stop-server2,weblogic-stop-server1"/>
57
    <!-- Stop the managed server1 -->
58
    <target name="weblogic-stop-server1">
59
        <wlserver fork="true" failonerror="false" weblogichome="${weblogic.home}"
60
            dir="${weblogic.domain}" host="${weblogic.host}" domainname="mydomain" servername="server1" port="${cachecoordination.wls.server1.port}"
61
            username="${server.user}" password="${server.pwd}" action="shutdown">
62
        </wlserver>
63
    </target>
64
    <!-- Stop the managed server2 -->
65
    <target name="weblogic-stop-server2">
66
        <wlserver fork="true" failonerror="false" weblogichome="${weblogic.home}"
67
            dir="${weblogic.domain}" host="${weblogic.host}" domainname="mydomain" servername="server2" port="${cachecoordination.wls.server2.port}"
68
            username="${server.user}" password="${server.pwd}" action="shutdown">
69
        </wlserver>
70
    </target>
71
    <!-- Stop the admin server -->
72
    <target name="weblogic-stop-server3">
73
        <wlserver fork="true" failonerror="false" weblogichome="${weblogic.home}"
74
            dir="${weblogic.domain}" host="${weblogic.host}" domainname="mydomain" servername="server3" port="${cachecoordination.wls.server3.port}"
75
            username="${server.user}" password="${server.pwd}" action="shutdown">
76
        </wlserver>
77
    </target>
78
    
79
    <!--
80
        Deploy the application ear to the server.
81
        Note: WLS server must be running.
82
    -->
83
    <target name="weblogic-deploy">
84
        <wldeploy action="deploy"
85
            name="${application.name}" source="build/${ear.name}"
86
            user="${server.user}" password="${server.pwd}"
87
            adminurl="${server.url}" targets="${target.server}"
88
            failonerror="false">
89
        </wldeploy>
90
    </target>
91
92
    <!--
93
        Undeploy the application ear to the server.
94
        Note: WLS server must be running.
95
    -->
96
    <target name="weblogic-undeploy">
97
        <wldeploy action="undeploy" name="${application.name}"
98
            user="${server.user}" password="${server.pwd}"
99
            adminurl="${server.url}" targets="${target.server}"
100
            failonerror="false">
101
        </wldeploy>
102
    </target>
103
    
104
    <!-- initialize WL props for target 'run-cachecoordination-wls' -->
105
    <target name="init-wls">
106
		<property name="weblogic.domain" value="${weblogic.domain}"/>
107
		<property name="POLICY_OPTION" value="trackchanges"/>
108
		<path id="build.wls.path">
109
                 <pathelement path="${weblogic.home}/lib/weblogic.jar"/>
110
		         <pathelement path="${weblogic.home}/lib/wlclient.jar"/>
111
                 <pathelement path="${weblogic.domain}/lib/${eclipselink.jar.name}"/>
112
                 <pathelement path="${eclipselink.jpa.depend}"/>
113
		         <pathelement path="${junit.lib}"/>
114
		</path>
115
		<property name="SERVER_NAME" value="server1"/>
116
		<property name="SERVER_VERSION" value="10.3"/>
117
		<property name="is.wls" value="true"/>
118
    </target>
119
120
    <!-- Main target to run RCM-enabled Sessionbean tests.
121
         ** This target starts all servers on preconfigured domain and DataSource.
122
	 -->
123
    <target name="weblogic-start-cachecoordination" depends="init-wls">
124
        <delete file="${weblogic.domain}/edit.lok"/>
125
        <delete file="${cachecoordination.wls.server1.name}.log"/>
126
        <delete file="${cachecoordination.wls.server2.name}.log"/>
127
	<delete file="${cachecoordination.wls.server3.name}.log"/>
128
		<parallel>
129
			<echo message="*** starting WebLogic Server1 (also act as AdminServer)"/>
130
			<java classname="weblogic.Server" 
131
				fork="true"
132
				failonerror="true">
133
				<jvmarg value="-server"/>
134
						<jvmarg value="-Xms512m"/>
135
						<jvmarg value="-Xmx960m"/>
136
						<jvmarg value="-XX:MaxPermSize=256m"/>
137
				<env key="PATH" value="${env.JAVA_HOME}/bin:${env.PATH}"/>
138
				<sysproperty key="eclipselink.changePolicy" value="${POLICY_OPTION}"/>
139
				<sysproperty key="weblogic.Name" value="${weblogic.Name}"/>
140
				<sysproperty key="bea.home" value="${bea.root.dir}"/>
141
				<sysproperty key="weblogic.management.username" value="${server.user}"/>
142
				<sysproperty key="weblogic.management.password" value="${server.pwd}"/>
143
				<sysproperty key="java.security.police" value='"${weblogic.home}/lib/weblogic.policy"'/>
144
				<sysproperty key="weblogic.RootDirectory" value="${weblogic.domain}"/>
145
				<sysproperty key="weblogic.Stdout" value="${cachecoordination.wls.server1.name}.log"/>
146
				<sysproperty key="weblogic.Stderr" value="${cachecoordination.wls.server1.name}.err"/>
147
				<classpath refid="build.wls.path"/>
148
			</java>
149
			<sequential>
150
				<waitfor>
151
					<socket server="${cachecoordination.wls.server1.httphost}" port="${cachecoordination.wls.server1.port}"/>
152
				</waitfor>				
153
				<parallel>
154
				        <echo message="*** starting managed server: Server2 "/>
155
					<java classname="weblogic.Server" 
156
						fork="true"
157
						failonerror="true">
158
						<jvmarg value="-server"/>
159
						<jvmarg value="-Xms512m"/>
160
						<jvmarg value="-Xmx960m"/>
161
						<jvmarg value="-XX:MaxPermSize=256m"/>
162
						<env key="PATH" value="${env.JAVA_HOME}/bin:${env.PATH}"/>
163
						<sysproperty key="eclipselink.changePolicy" value="${POLICY_OPTION}"/>
164
						<sysproperty key="weblogic.Name" value="${cachecoordination.wls.server2.name}"/>
165
						<sysproperty key="bea.home" value="${bea.root.dir}"/>
166
						<sysproperty key="weblogic.management.server" value="${cachecoordination.wls.server1.httphost}:${cachecoordination.wls.server1.port}"/>
167
						<sysproperty key="weblogic.management.username" value="${server.user}"/>
168
						<sysproperty key="weblogic.management.password" value="${server.pwd}"/>
169
						<sysproperty key="java.security.police" value='"${weblogic.home}/lib/weblogic.policy"'/>
170
						<sysproperty key="weblogic.RootDirectory" value="${weblogic.domain}"/>
171
						<sysproperty key="weblogic.Stdout" value="${cachecoordination.wls.server2.name}.log"/>
172
						<sysproperty key="weblogic.Stderr" value="${cachecoordination.wls.server2.name}.err"/>
173
						<classpath refid="build.wls.path"/>
174
					</java>
175
					<echo message="*** starting managed server: Server3 "/>
176
					<java classname="weblogic.Server" 
177
						fork="true"
178
						failonerror="true">
179
						<jvmarg value="-server"/>
180
						<jvmarg value="-Xms512m"/>
181
						<jvmarg value="-Xmx960m"/>
182
						<jvmarg value="-XX:MaxPermSize=256m"/>
183
						<env key="PATH" value="${env.JAVA_HOME}/bin:${env.PATH}"/>
184
						<sysproperty key="eclipselink.changePolicy" value="${POLICY_OPTION}"/>
185
						<sysproperty key="weblogic.Name" value="${cachecoordination.wls.server3.name}"/>
186
						<sysproperty key="bea.home" value="${bea.root.dir}"/>
187
						<sysproperty key="weblogic.management.server" value="${cachecoordination.wls.server1.httphost}:${cachecoordination.wls.server1.port}"/>
188
						<sysproperty key="weblogic.management.username" value="${server.user}"/>
189
						<sysproperty key="weblogic.management.password" value="${server.pwd}"/>
190
						<sysproperty key="java.security.police" value='"${weblogic.home}/lib/weblogic.policy"'/>
191
						<sysproperty key="weblogic.RootDirectory" value="${weblogic.domain}"/>
192
						<sysproperty key="weblogic.Stdout" value="${cachecoordination.wls.server3.name}.log"/>
193
						<sysproperty key="weblogic.Stderr" value="${cachecoordination.wls.server3.name}.err"/>
194
						<classpath refid="build.wls.path"/>
195
					</java>
196
					<sequential>
197
						<waitfor>
198
							<and>
199
								<socket server="${cachecoordination.wls.server2.httphost}" port="${cachecoordination.wls.server2.port}"/>
200
								<socket server="${cachecoordination.wls.server3.httphost}" port="${cachecoordination.wls.server3.port}"/>
201
							</and>
202
						</waitfor>
203
						<sleep seconds="60"/>
204
					</sequential>
205
				</parallel>
206
			</sequential>
207
		</parallel>  
208
	</target>
209
210
211
212
</project>
(-)JPASessionCustomizer_jms_server1.java (+56 lines)
Line 0 Link Here
1
package org.eclipse.persistence.testing.models.jpa.sessionbean;
2
3
import org.eclipse.persistence.config.SessionCustomizer;
4
import org.eclipse.persistence.sessions.Session;
5
import org.eclipse.persistence.sessions.DatabaseSession;
6
import org.eclipse.persistence.internal.sessions.DatabaseSessionImpl;
7
8
import org.eclipse.persistence.sessions.coordination.RemoteCommandManager;
9
import org.eclipse.persistence.sessions.coordination.TransportManager;
10
import org.eclipse.persistence.sessions.coordination.jms.JMSTopicTransportManager;
11
12
import java.io.*;
13
import java.util.*;
14
15
public class JPASessionCustomizer implements SessionCustomizer {
16
	    private String serverHost="localhost";   //server1 host name, which is also adminserver
17
        private String serverPort="7001";    //adminServer port
18
        private String wlsUserName="weblogic";
19
        private String wlsPassword="weblogic";
20
21
    public void customize(Session session) {
22
23
	    RemoteCommandManager rcm = new RemoteCommandManager((DatabaseSessionImpl)session);
24
        JMSTopicTransportManager tm = new JMSTopicTransportManager(rcm);
25
		      
26
	    tm.setTopicHostUrl("t3://" + serverHost + ":" + serverPort);	  
27
	    tm.setTopicName("jms/TopLinkTopic");
28
	    tm.setTopicConnectionFactoryName("jms/TopLinkTopicConnectionFactory");
29
        tm.setUserName(wlsUserName);
30
	    tm.setPassword(wlsPassword);
31
32
	    rcm.setTransportManager(tm);
33
	    ((DatabaseSessionImpl)session).setName("Session1");
34
	    System.out.println("====the session name is " + session.getName());
35
	    
36
	    rcm.setShouldPropagateAsynchronously(false);
37
38
	    rcm.getTransportManager().setNamingServiceType(TransportManager.JNDI_NAMING_SERVICE);
39
            
40
        rcm.getTransportManager().setInitialContextFactoryName("weblogic.jndi.WLInitialContextFactory");
41
	    rcm.getTransportManager().setShouldRemoveConnectionOnError(true);
42
        rcm.setServerPlatform(((org.eclipse.persistence.sessions.DatabaseSession)session).getServerPlatform());
43
	    ((DatabaseSessionImpl)session).setCommandManager(rcm);
44
	    ((DatabaseSessionImpl)session).setShouldPropagateChanges(true);
45
            rcm.initialize();
46
47
			// Sleep to allow RCM to startup and find each session.
48
            try {
49
                  Thread.sleep(2000);
50
            } catch (Exception ignore) {
51
            }
52
53
        }
54
55
56
}
(-)JPASessionCustomizer_jms_server2.java (+56 lines)
Line 0 Link Here
1
package org.eclipse.persistence.testing.models.jpa.sessionbean;
2
3
import org.eclipse.persistence.config.SessionCustomizer;
4
import org.eclipse.persistence.sessions.Session;
5
import org.eclipse.persistence.sessions.DatabaseSession;
6
import org.eclipse.persistence.internal.sessions.DatabaseSessionImpl;
7
8
import org.eclipse.persistence.sessions.coordination.RemoteCommandManager;
9
import org.eclipse.persistence.sessions.coordination.TransportManager;
10
import org.eclipse.persistence.sessions.coordination.jms.JMSTopicTransportManager;
11
12
import java.io.*;
13
import java.util.*;
14
15
public class JPASessionCustomizer implements SessionCustomizer {
16
	    private String serverHost="localhost";   //server2 host name
17
        private String serverPort="7001";    //adminServer port
18
        private String wlsUserName="weblogic";
19
        private String wlsPassword="weblogic";
20
21
    public void customize(Session session) {
22
23
	    RemoteCommandManager rcm = new RemoteCommandManager((DatabaseSessionImpl)session);
24
        JMSTopicTransportManager tm = new JMSTopicTransportManager(rcm);
25
		      
26
	    tm.setTopicHostUrl("t3://" + serverHost + ":" + serverPort);	  
27
	    tm.setTopicName("jms/TopLinkTopic");
28
	    tm.setTopicConnectionFactoryName("jms/TopLinkTopicConnectionFactory");
29
        tm.setUserName(wlsUserName);
30
	    tm.setPassword(wlsPassword);
31
32
	    rcm.setTransportManager(tm);
33
	    ((DatabaseSessionImpl)session).setName("Session2");
34
	    System.out.println("====the session name is " + session.getName());
35
	    
36
	    rcm.setShouldPropagateAsynchronously(false);
37
38
	    rcm.getTransportManager().setNamingServiceType(TransportManager.JNDI_NAMING_SERVICE);
39
            
40
        rcm.getTransportManager().setInitialContextFactoryName("weblogic.jndi.WLInitialContextFactory");
41
	    rcm.getTransportManager().setShouldRemoveConnectionOnError(true);
42
        rcm.setServerPlatform(((org.eclipse.persistence.sessions.DatabaseSession)session).getServerPlatform());
43
	    ((DatabaseSessionImpl)session).setCommandManager(rcm);
44
	    ((DatabaseSessionImpl)session).setShouldPropagateChanges(true);
45
            rcm.initialize();
46
47
			// Sleep to allow RCM to startup and find each session.
48
            try {
49
                  Thread.sleep(2000);
50
            } catch (Exception ignore) {
51
            }
52
53
        }
54
55
56
}
(-)JPASessionCustomizer_jms_server3.java (+58 lines)
Line 0 Link Here
1
package org.eclipse.persistence.testing.models.jpa.sessionbean;
2
3
import org.eclipse.persistence.config.SessionCustomizer;
4
import org.eclipse.persistence.sessions.Session;
5
import org.eclipse.persistence.sessions.DatabaseSession;
6
import org.eclipse.persistence.internal.sessions.DatabaseSessionImpl;
7
8
import org.eclipse.persistence.sessions.coordination.RemoteCommandManager;
9
import org.eclipse.persistence.sessions.coordination.TransportManager;
10
import org.eclipse.persistence.sessions.coordination.jms.JMSTopicTransportManager;
11
import java.io.*;
12
import java.util.*;
13
14
public class JPASessionCustomizer implements SessionCustomizer {
15
	    private String serverHost="localhost";   //server3 host name
16
        private String serverPort="7001";    //adminServer port
17
        private String wlsUserName="weblogic";
18
        private String wlsPassword="weblogic";
19
20
    public void customize(Session session) {
21
22
23
24
	    RemoteCommandManager rcm = new RemoteCommandManager((DatabaseSessionImpl)session);
25
            JMSTopicTransportManager tm = new JMSTopicTransportManager(rcm);
26
		      
27
	    tm.setTopicHostUrl("t3://" + serverHost + ":" + serverPort);	  
28
	    tm.setTopicName("jms/TopLinkTopic");
29
	    tm.setTopicConnectionFactoryName("jms/TopLinkTopicConnectionFactory");
30
            tm.setUserName(wlsUserName);
31
	    tm.setPassword(wlsPassword);
32
33
	    rcm.setTransportManager(tm);
34
	    ((DatabaseSessionImpl)session).setName("Session3");
35
	    System.out.println("====the session name is " + session.getName());
36
	    
37
	    rcm.setShouldPropagateAsynchronously(false);
38
39
	    rcm.getTransportManager().setNamingServiceType(TransportManager.JNDI_NAMING_SERVICE);
40
            
41
42
            rcm.getTransportManager().setInitialContextFactoryName("weblogic.jndi.WLInitialContextFactory");
43
	    rcm.getTransportManager().setShouldRemoveConnectionOnError(true);
44
            rcm.setServerPlatform(((org.eclipse.persistence.sessions.DatabaseSession)session).getServerPlatform());
45
	    ((DatabaseSessionImpl)session).setCommandManager(rcm);
46
	    ((DatabaseSessionImpl)session).setShouldPropagateChanges(true);
47
            rcm.initialize();
48
49
			// Sleep to allow RCM to startup and find each session.
50
            try {
51
                  Thread.sleep(2000);
52
            } catch (Exception ignore) {
53
            }
54
55
        }
56
57
58
}
(-)JPASessionCustomizer_rmi_server1.java (+61 lines)
Line 0 Link Here
1
package org.eclipse.persistence.testing.models.jpa.sessionbean;
2
3
import org.eclipse.persistence.config.SessionCustomizer;
4
import org.eclipse.persistence.sessions.Session;
5
import org.eclipse.persistence.sessions.DatabaseSession;
6
import org.eclipse.persistence.internal.sessions.DatabaseSessionImpl;
7
8
import org.eclipse.persistence.sessions.coordination.RemoteCommandManager;
9
import org.eclipse.persistence.sessions.coordination.TransportManager;
10
11
import java.io.*;
12
import java.util.*;
13
14
public class JPASessionCustomizer implements SessionCustomizer {
15
	private String serverHost="localhost";   //server1 (also adminserver)
16
        private String serverPort="7001";
17
        private String wlsUserName="weblogic";
18
        private String wlsPassword="weblogic";
19
20
    public void customize(Session session) {
21
22
	    RemoteCommandManager rcm = new RemoteCommandManager((DatabaseSessionImpl)session);
23
            
24
	    ((DatabaseSessionImpl)session).setName("Session1");
25
	    System.out.println("====the session name is " + session.getName());
26
27
            ((DatabaseSessionImpl)session).setShouldPropagateChanges(true);
28
            ((DatabaseSessionImpl)session).setCommandManager(rcm);
29
	    rcm.setShouldPropagateAsynchronously(false);
30
31
	    //discovery
32
	    //rcm.getDiscoveryManager().setAnnouncementDelay(0);
33
	   ((DatabaseSessionImpl)session).getCommandManager().getDiscoveryManager().setAnnouncementDelay(1000);
34
            ((DatabaseSessionImpl)session).getCommandManager().getDiscoveryManager().setMulticastGroupAddress("239.192.0.0");
35
            ((DatabaseSessionImpl)session).getCommandManager().getDiscoveryManager().setMulticastPort(3121);
36
           ((DatabaseSessionImpl)session).getCommandManager().getDiscoveryManager().setPacketTimeToLive(2);
37
38
            //jndi-naming-service
39
	    rcm.getTransportManager().setNamingServiceType(TransportManager.JNDI_NAMING_SERVICE);
40
41
42
	    rcm.setUrl("t3://" + serverHost + ":" + serverPort);
43
44
            rcm.getTransportManager().setUserName(wlsUserName);
45
	    rcm.getTransportManager().setPassword(wlsPassword);
46
47
48
            rcm.getTransportManager().setInitialContextFactoryName("weblogic.jndi.WLInitialContextFactory");
49
	    rcm.getTransportManager().setShouldRemoveConnectionOnError(true);
50
            rcm.setServerPlatform(((org.eclipse.persistence.sessions.DatabaseSession)session).getServerPlatform());
51
            rcm.initialize();
52
53
			// Sleep to allow RCM to startup and find each session.
54
            try {
55
                  Thread.sleep(2000);
56
            } catch (Exception ignore) {
57
            }
58
59
        }
60
61
}
(-)JPASessionCustomizer_rmi_server2.java (+61 lines)
Line 0 Link Here
1
package org.eclipse.persistence.testing.models.jpa.sessionbean;
2
3
import org.eclipse.persistence.config.SessionCustomizer;
4
import org.eclipse.persistence.sessions.Session;
5
import org.eclipse.persistence.sessions.DatabaseSession;
6
import org.eclipse.persistence.internal.sessions.DatabaseSessionImpl;
7
8
import org.eclipse.persistence.sessions.coordination.RemoteCommandManager;
9
import org.eclipse.persistence.sessions.coordination.TransportManager;
10
11
import java.io.*;
12
import java.util.*;
13
14
public class JPASessionCustomizer implements SessionCustomizer {
15
	private String serverHost="localhost";   //server1 (also adminserver)
16
        private String serverPort="7021";
17
        private String wlsUserName="weblogic";
18
        private String wlsPassword="weblogic";
19
20
    public void customize(Session session) {
21
22
	    RemoteCommandManager rcm = new RemoteCommandManager((DatabaseSessionImpl)session);
23
            
24
	    ((DatabaseSessionImpl)session).setName("Session2");
25
	    System.out.println("====the session name is " + session.getName());
26
27
            ((DatabaseSessionImpl)session).setShouldPropagateChanges(true);
28
            ((DatabaseSessionImpl)session).setCommandManager(rcm);
29
	    rcm.setShouldPropagateAsynchronously(false);
30
31
	    //discovery
32
	    //rcm.getDiscoveryManager().setAnnouncementDelay(0);
33
	   ((DatabaseSessionImpl)session).getCommandManager().getDiscoveryManager().setAnnouncementDelay(1000);
34
            ((DatabaseSessionImpl)session).getCommandManager().getDiscoveryManager().setMulticastGroupAddress("239.192.0.0");
35
            ((DatabaseSessionImpl)session).getCommandManager().getDiscoveryManager().setMulticastPort(3121);
36
           ((DatabaseSessionImpl)session).getCommandManager().getDiscoveryManager().setPacketTimeToLive(2);
37
38
            //jndi-naming-service
39
	    rcm.getTransportManager().setNamingServiceType(TransportManager.JNDI_NAMING_SERVICE);
40
41
42
	    rcm.setUrl("t3://" + serverHost + ":" + serverPort);
43
44
            rcm.getTransportManager().setUserName(wlsUserName);
45
	    rcm.getTransportManager().setPassword(wlsPassword);
46
47
48
            rcm.getTransportManager().setInitialContextFactoryName("weblogic.jndi.WLInitialContextFactory");
49
	    rcm.getTransportManager().setShouldRemoveConnectionOnError(true);
50
            rcm.setServerPlatform(((org.eclipse.persistence.sessions.DatabaseSession)session).getServerPlatform());
51
            rcm.initialize();
52
53
			// Sleep to allow RCM to startup and find each session.
54
            try {
55
                  Thread.sleep(2000);
56
            } catch (Exception ignore) {
57
            }
58
59
        }
60
61
}
(-)JPASessionCustomizer_rmi_server3.java (+61 lines)
Line 0 Link Here
1
package org.eclipse.persistence.testing.models.jpa.sessionbean;
2
3
import org.eclipse.persistence.config.SessionCustomizer;
4
import org.eclipse.persistence.sessions.Session;
5
import org.eclipse.persistence.sessions.DatabaseSession;
6
import org.eclipse.persistence.internal.sessions.DatabaseSessionImpl;
7
8
import org.eclipse.persistence.sessions.coordination.RemoteCommandManager;
9
import org.eclipse.persistence.sessions.coordination.TransportManager;
10
11
import java.io.*;
12
import java.util.*;
13
14
public class JPASessionCustomizer implements SessionCustomizer {
15
	private String serverHost="localhost";   //server1 (also adminserver)
16
        private String serverPort="7031";
17
        private String wlsUserName="weblogic";
18
        private String wlsPassword="weblogic";
19
20
    public void customize(Session session) {
21
22
	    RemoteCommandManager rcm = new RemoteCommandManager((DatabaseSessionImpl)session);
23
            
24
	    ((DatabaseSessionImpl)session).setName("Session3");
25
	    System.out.println("====the session name is " + session.getName());
26
27
            ((DatabaseSessionImpl)session).setShouldPropagateChanges(true);
28
            ((DatabaseSessionImpl)session).setCommandManager(rcm);
29
	    rcm.setShouldPropagateAsynchronously(false);
30
31
	    //discovery
32
	    //rcm.getDiscoveryManager().setAnnouncementDelay(0);
33
	   ((DatabaseSessionImpl)session).getCommandManager().getDiscoveryManager().setAnnouncementDelay(1000);
34
            ((DatabaseSessionImpl)session).getCommandManager().getDiscoveryManager().setMulticastGroupAddress("239.192.0.0");
35
            ((DatabaseSessionImpl)session).getCommandManager().getDiscoveryManager().setMulticastPort(3121);
36
           ((DatabaseSessionImpl)session).getCommandManager().getDiscoveryManager().setPacketTimeToLive(2);
37
38
            //jndi-naming-service
39
	    rcm.getTransportManager().setNamingServiceType(TransportManager.JNDI_NAMING_SERVICE);
40
41
42
	    rcm.setUrl("t3://" + serverHost + ":" + serverPort);
43
44
            rcm.getTransportManager().setUserName(wlsUserName);
45
	    rcm.getTransportManager().setPassword(wlsPassword);
46
47
48
            rcm.getTransportManager().setInitialContextFactoryName("weblogic.jndi.WLInitialContextFactory");
49
	    rcm.getTransportManager().setShouldRemoveConnectionOnError(true);
50
            rcm.setServerPlatform(((org.eclipse.persistence.sessions.DatabaseSession)session).getServerPlatform());
51
            rcm.initialize();
52
53
			// Sleep to allow RCM to startup and find each session.
54
            try {
55
                  Thread.sleep(2000);
56
            } catch (Exception ignore) {
57
            }
58
59
        }
60
61
}
(-)persistence.xml (+14 lines)
Line 0 Link Here
1
<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence persistence_1_0.xsd" version="1.0">
2
    <persistence-unit name="%%default%%">
3
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
4
        <jta-data-source>%%data-source-name%%</jta-data-source>
5
	<class>org.eclipse.persistence.testing.models.jpa.fieldaccess.advanced.Employee</class>
6
	<class>org.eclipse.persistence.testing.models.jpa.fieldaccess.advanced.Address</class>
7
        <properties>
8
	  <property name="eclipselink.session.customizer" value="org.eclipse.persistence.testing.models.jpa.sessionbean.JPASessionCustomizer"/>
9
            <property name="eclipselink.target-server" value="%%server-platform%%"/>
10
            <property name="eclipselink.validate-existence" value="true"/>
11
            <!--property name="eclipselink.logging.level" value="FINEST"/-->
12
        </properties>
13
    </persistence-unit>
14
</persistence>
(-)src/org/eclipse/persistence/testing/models/jpa/fieldaccess/advanced/Employee.java (-4 / +4 lines)
Lines 29-36 Link Here
29
import org.eclipse.persistence.annotations.TypeConverter;
29
import org.eclipse.persistence.annotations.TypeConverter;
30
import org.eclipse.persistence.annotations.OptimisticLocking;
30
import org.eclipse.persistence.annotations.OptimisticLocking;
31
31
32
import static org.eclipse.persistence.annotations.CacheCoordinationType.INVALIDATE_CHANGED_OBJECTS;
32
import static org.eclipse.persistence.annotations.CacheCoordinationType.SEND_NEW_OBJECTS_WITH_CHANGES;//INVALIDATE_CHANGED_OBJECTS;
33
import static org.eclipse.persistence.annotations.CacheType.SOFT_WEAK;
33
import static org.eclipse.persistence.annotations.CacheType.FULL;//SOFT_WEAK;
34
import static javax.persistence.CascadeType.*;
34
import static javax.persistence.CascadeType.*;
35
import static javax.persistence.FetchType.*;
35
import static javax.persistence.FetchType.*;
36
import static javax.persistence.GenerationType.*;
36
import static javax.persistence.GenerationType.*;
Lines 107-118 Link Here
107
    objectType=Long.class
107
    objectType=Long.class
108
)
108
)
109
@Cache(
109
@Cache(
110
    type=SOFT_WEAK,
110
    type=FULL,
111
    shared=true,
111
    shared=true,
112
    expiry=100000,
112
    expiry=100000,
113
    alwaysRefresh=false, // some test dependencies for this to be false.
113
    alwaysRefresh=false, // some test dependencies for this to be false.
114
    disableHits=true, // Employee customizer should set it back to false.
114
    disableHits=true, // Employee customizer should set it back to false.
115
    coordinationType=INVALIDATE_CHANGED_OBJECTS
115
    coordinationType=SEND_NEW_OBJECTS_WITH_CHANGES
116
)
116
)
117
@Customizer(org.eclipse.persistence.testing.models.jpa.fieldaccess.advanced.EmployeeCustomizer.class)
117
@Customizer(org.eclipse.persistence.testing.models.jpa.fieldaccess.advanced.EmployeeCustomizer.class)
118
public class Employee implements Serializable, Cloneable {
118
public class Employee implements Serializable, Cloneable {
(-)src/org/eclipse/persistence/testing/models/jpa/sessionbean/EmployeeService.java (+2 lines)
Lines 24-32 Link Here
24
    
24
    
25
    Employee findById(int id);
25
    Employee findById(int id);
26
    
26
    
27
    List findByFirstName(String fname);
27
    Employee fetchById(int id);
28
    Employee fetchById(int id);
28
    
29
    
29
    void update(Employee employee);
30
    void update(Employee employee);
30
    
31
    
31
    int insert(Employee employee);
32
    int insert(Employee employee);
33
    void delete(Employee employee);
32
}
34
}
(-)src/org/eclipse/persistence/testing/models/jpa/sessionbean/EmployeeServiceBean.java (+10 lines)
Lines 43-48 Link Here
43
        return employee;
43
        return employee;
44
    }
44
    }
45
    
45
    
46
    public List findByFirstName(String fname) {
47
        //NamedQuery("findAllFieldAccessEmployeesByFirstName")
48
        Query query = entityManager.createQuery("SELECT e FROM Employee e where e.firstName = :fname").setParameter("fname", fname);
49
	query.setHint("eclipselink.cache-usage", "CheckCacheOnly");
50
        return query.getResultList();
51
    }
46
    public Employee fetchById(int id) {
52
    public Employee fetchById(int id) {
47
        Employee employee = entityManager.find(Employee.class, new Integer(id));
53
        Employee employee = entityManager.find(Employee.class, new Integer(id));
48
        employee.getAddress();
54
        employee.getAddress();
Lines 63-66 Link Here
63
        return employee.getId();
69
        return employee.getId();
64
    }
70
    }
65
    
71
    
72
   public void delete(Employee employee) {
73
         Employee emp = entityManager.find(Employee.class, employee.getId());       
74
        entityManager.remove(emp);
75
    }
66
}
76
}
(-)src/org/eclipse/persistence/testing/tests/jpa/sessionbean/SessionBeanTestsRCM.java (+281 lines)
Line 0 Link Here
1
/*******************************************************************************
2
 * Copyright (c) 1998, 2008 Oracle. All rights reserved.
3
 * This program and the accompanying materials are made available under the 
4
 * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 
5
 * which accompanies this distribution. 
6
 * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
7
 * and the Eclipse Distribution License is available at 
8
 * http://www.eclipse.org/org/documents/edl-v10.php.
9
 *
10
 * Contributors:
11
 *     Oracle - initial API and implementation from Oracle TopLink
12
 ******************************************************************************/  
13
 package org.eclipse.persistence.testing.tests.jpa.sessionbean;
14
15
import java.util.Iterator;
16
import java.util.List;
17
import java.util.Properties;
18
import javax.naming.Context;
19
import javax.naming.InitialContext;
20
import javax.naming.NameNotFoundException;
21
import javax.rmi.PortableRemoteObject;
22
23
import junit.framework.*;
24
25
import org.eclipse.persistence.exceptions.ValidationException;
26
import org.eclipse.persistence.testing.framework.junit.JUnitTestCase;
27
import org.eclipse.persistence.testing.models.jpa.fieldaccess.advanced.Department;
28
import org.eclipse.persistence.testing.models.jpa.fieldaccess.advanced.Employee;
29
import org.eclipse.persistence.testing.models.jpa.fieldaccess.advanced.Address;
30
import org.eclipse.persistence.testing.models.jpa.fieldaccess.advanced.AdvancedTableCreator;
31
import org.eclipse.persistence.testing.models.jpa.sessionbean.EmployeeService;
32
33
import org.eclipse.persistence.expressions.Expression;
34
import org.eclipse.persistence.expressions.ExpressionBuilder;
35
import org.eclipse.persistence.queries.ReadObjectQuery;
36
37
38
/**
39
 * EJB 3 SessionBean tests.
40
 * Testing using EclipseLink JPA in a JEE EJB 3 SessionBean environment.
41
 * These tests can only be run with a server.
42
 */
43
public class SessionBeanTestsRCM extends JUnitTestCase {
44
    protected EmployeeService service;
45
	private String wlsUserName="weblogic";
46
	private String wlsPassword="weblogic";
47
	private String server1Url = "t3://localhost:7001";
48
	private String server2Url = "t3://localhost:7021";
49
	private String server3Url = "t3://localhost:7031";
50
	int empId = 0;
51
	private Employee employeeCached = null; 	
52
    
53
    public SessionBeanTestsRCM() {
54
        super();
55
    }
56
57
    public SessionBeanTestsRCM(String name) {
58
        super(name);
59
    }
60
61
    public SessionBeanTestsRCM(String name, boolean shouldRunTestOnServer) {
62
        super(name);
63
        this.shouldRunTestOnServer = shouldRunTestOnServer;
64
    }
65
    
66
    public static Test suite() {
67
        TestSuite suite = new TestSuite("SessionBeanTestsRCM");
68
69
	suite.addTest(new SessionBeanTestsRCM("testSetupRcmOnServer2", true));
70
	suite.addTest(new SessionBeanTestsRCM("testSetupForDeleteOnServer2", true));
71
	
72
	suite.addTest(new SessionBeanTestsRCM("testSetupRcmOnServer1", true));
73
	suite.addTest(new SessionBeanTestsRCM("testPerformDeleteOnServer1", true));
74
	
75
	//suite.addTest(new SessionBeanTestsRCM("testReadFromServer2AfterUpdateNonJPQL", true));
76
        suite.addTest(new SessionBeanTestsRCM("testConfirmUpdateOnServer2", true));
77
        suite.addTest(new SessionBeanTestsRCM("testConfirmDeleteOnServer2", true));
78
        return suite;
79
    }
80
    
81
    /**
82
     * The setup is done as a test, both to record its failure, and to alow execution in the server2.
83
     */
84
    public void testSetupRcmOnServer2() throws Exception {
85
	    new AdvancedTableCreator().replaceTables(JUnitTestCase.getServerSession("sessionbean"));
86
    }
87
88
    public EmployeeService getEmployeeService(String url) throws Exception {
89
        if (service == null) {
90
		
91
            Properties properties = new Properties();
92
            //System.getProperty("server2.url");
93
94
            if (url != null) {
95
                properties.put("java.naming.provider.url", url);
96
            }
97
            Context context = new InitialContext(properties);
98
    
99
            try {
100
                service = (EmployeeService) PortableRemoteObject.narrow(context.lookup("java:comp/env/ejb/EmployeeService"), EmployeeService.class);
101
            } catch (NameNotFoundException notFoundException) {
102
                try {
103
                    service = (EmployeeService) PortableRemoteObject.narrow(context.lookup("ejb/EmployeeService"), EmployeeService.class);
104
                } catch (NameNotFoundException notFoundException2) {
105
                    try {
106
                        // WLS likes this one.
107
                        service = (EmployeeService) PortableRemoteObject.narrow(context.lookup("EmployeeService#org.eclipse.persistence.testing.models.jpa.sessionbean.EmployeeService"), EmployeeService.class);
108
                    } catch (NameNotFoundException notFoundException3) {
109
                        try {
110
                             //jboss likes this one
111
                             service = (EmployeeService) PortableRemoteObject.narrow(context.lookup("EmployeeService/remote"), EmployeeService.class);
112
                        } catch (NameNotFoundException notFoundException4) {
113
                             throw new Error("All lookups failed.", notFoundException);
114
                        }
115
                    }
116
                }
117
            }
118
        }
119
        return service;
120
    }    
121
   
122
123
    /* CacheCoordination Delete Test Setup on Server2:
124
    *  This test insert an employee record, which will be deleted later using Server1
125
    */
126
   public void testSetupForDeleteOnServer2() throws Exception {  
127
       	/* Create an Employee record using Server2 */
128
        Employee employee = new Employee();
129
        employee.setFirstName("Jane2");
130
        employee.setLastName("Doe2");
131
	employee.setAddress(new Address());
132
        employee.getAddress().setCity("Ottawa2");
133
	Employee manager = new Employee();
134
        manager.setFirstName("John2");
135
        manager.setLastName("Done2");
136
        employee.setManager(manager);
137
138
        int empID = getEmployeeService(server2Url).insert(employee); 
139
       
140
       try{    
141
        employee = getEmployeeService(server2Url).findById(empID);
142
	if(employee == null){
143
        	
144
          fail("Server2 CacheCoordination Setup Failure: New employee added from Server2 is not found in cache or DB.");
145
        }
146
       } catch(Exception e){
147
	       throw new Error("Following Emp ID not found: " + empID); 
148
       }      
149
   }  
150
151
    /**
152
     * CacheCoordination Update Test setup on Server1:
153
     * This test insert an employee record, which is then updated using Server1. Later on,  this update will be verified on Server2.
154
     * The setup is done as a test, both to record its failure, and to alow execution in the server1.
155
     */
156
    public void testSetupRcmOnServer1() throws Exception {
157
158
       	/* Create an Employee record in Server1 */
159
        Employee employee = new Employee();
160
        employee.setFirstName("Jane1");
161
        employee.setLastName("Doe1");
162
        employee.setAddress(new Address());
163
        employee.getAddress().setCity("Ottawa1");
164
	Employee manager = new Employee();
165
        manager.setFirstName("John1");
166
        manager.setLastName("Done1");
167
        employee.setManager(manager);
168
	
169
        empId = getEmployeeService(server1Url).insert(employee);	
170
	
171
	/* read Employee from cache and/or DB */
172
	Employee jane1 = (Employee) getEmployeeService(server1Url).findById(empId);
173
	/* update employee on Server1 */
174
        jane1.setLastName("LastNameUpdatedOnServer1");
175
        jane1.getAddress().setCity("newCity");
176
        getEmployeeService(server1Url).update(jane1);
177
178
        if (!jane1.getLastName().equals("LastNameUpdatedOnServer1")) {
179
		fail("UpdateTest Setup on Server1 failed");
180
        } 
181
	
182
    }
183
 
184
     /**
185
     * CacheCoordination Test setup for Delete on Server1:
186
     * Find employee created on Server2, then delete it using Server1.
187
     */
188
    public void testPerformDeleteOnServer1() throws Exception {
189
	
190
	List result = getEmployeeService(server1Url).findByFirstName("Jane2");
191
	int count = 0;
192
	for(Iterator i = result.iterator(); i.hasNext();){
193
		 employeeCached = (Employee) i.next();
194
	}
195
196
	if(employeeCached == null){
197
        	
198
          fail("Perform Delete Test failed: New employee was not found in distributed cache to delete");
199
        }
200
	
201
        getEmployeeService(server1Url).delete(employeeCached);   	
202
    }
203
    
204
       
205
    /* CacheCoordination Test - Verify that Object Update done on Server1 is sync with Server2 thru cache:
206
    *  This test uses JPQL to read object on Server2.
207
    */
208
   public void testConfirmUpdateOnServer2() throws Exception {  
209
        
210
        
211
        /* verify updates are in sync: read Employee from using Server2 URL */
212
	   
213
	List result = getEmployeeService(server2Url).findByFirstName("Jane1");
214
	int count = 0;
215
	for(Iterator i = result.iterator(); i.hasNext();){
216
		 employeeCached = (Employee) i.next();
217
	}
218
	if(employeeCached == null){
219
        	
220
          fail("Object Update Test verification failed: New employee was not found in distributed cache");
221
        }
222
        if (!employeeCached.getLastName().equals("LastNameUpdatedOnServer1")) {
223
		fail("Object Update Test verification failed: Changes from server1 is not seen by server2 from distributed cache");
224
        } 
225
226
227
   }  
228
     
229
230
   
231
   /* CacheCoordination Test - Verify that Object Delete done on Server1 is sync with Server2 thru cache:
232
    *    This test uses JPQL to read object on Server2.
233
    */
234
   public void testConfirmDeleteOnServer2() throws Exception {  
235
      
236
        /* verify deletes are in sync: read Employee from using Server2 URL */
237
	   
238
	List result = getEmployeeService(server2Url).findByFirstName("Jane2");
239
	int count = 0;
240
	for(Iterator i = result.iterator(); i.hasNext();){
241
		 employeeCached = (Employee) i.next();
242
	}
243
	if(!( employeeCached == null)){
244
        	
245
          fail("Object Delete Test verification failed: employee was not removed from cache as expected" );
246
        } 
247
248
   }   
249
250
    /* CacheCoordination Test - Verify changes are on cache and read onto Server2:
251
    *
252
    */
253
/*
254
   public void testReadFromServer2AfterUpdateNonJPQL() throws Exception {  
255
        
256
        
257
        // read Employee from using Server2 URL 
258
       ExpressionBuilder employees = new ExpressionBuilder();
259
       Expression expression = employees.get("firstName").equal("Jane1");
260
       ReadObjectQuery query = new ReadObjectQuery(Employee.class, expression);            
261
        
262
        // verify updates are in sync
263
	
264
	query.checkCacheOnly();
265
	//empID = getEmpID();
266
        Employee employeeCached = (Employee) (this.getServerSession("sessionbean")).executeQuery(query); 
267
268
	if(employeeCached == null){
269
        	
270
          fail("Object_Exist_Test: New employee was not added to distributed cache: (SERVER2_URL) "+ (this.getServerSession("sessionbean")).getName() );
271
        }
272
        if (!employeeCached.getLastName().equals("LastNameUpdatedOnServer1")) {
273
		fail("Object_Update_Test: Changes from server1 is not seen by server2 from distributed cache");
274
        } 
275
276
        
277
   }
278
*/   
279
280
}
281
(-)weblogic.properties (-1 / +34 lines)
Lines 6-12 Link Here
6
server.url=t3://localhost:7001/
6
server.url=t3://localhost:7001/
7
server.testrunner=TestRunner#org.eclipse.persistence.testing.framework.server.TestRunner
7
server.testrunner=TestRunner#org.eclipse.persistence.testing.framework.server.TestRunner
8
server.lib=../../../bea/wlserver_10.0/server/lib
8
server.lib=../../../bea/wlserver_10.0/server/lib
9
server.depend=weblogic.jar,weblogic_sp.jar
9
server.depend=weblogic.jar,weblogic_sp.jar,wlclient.jar
10
server.platform=weblogic
10
server.platform=weblogic
11
server.factory=weblogic.jndi.WLInitialContextFactory
11
server.factory=weblogic.jndi.WLInitialContextFactory
12
12
Lines 19-21 Link Here
19
junit.lib=../../../extension.lib.external/junit.jar
19
junit.lib=../../../extension.lib.external/junit.jar
20
eclipselink.jar.name=../../eclipselink.jar
20
eclipselink.jar.name=../../eclipselink.jar
21
jdbc.driver.jar=../../../extension.oracle.lib.external/ojdbc5_11.jar
21
jdbc.driver.jar=../../../extension.oracle.lib.external/ojdbc5_11.jar
22
#******* CacheCoordination Env properties.
23
server.lib=../../../../bea103/wlserver_10.3/server/lib
24
weblogic.home=../../../../bea103/wlserver_10.3/server/
25
weblogic.domain=../../../../bea103/user_projects/domains/mydomain
26
jdbc.driver.jar=../../../extension.oracle.lib.external/ojdbc6_11.jar
27
eclipselink.jpa.depend=../plugins/javax.persistence_1.99.0.jar
28
29
# CacheCoordination common properties
30
#
31
cachecoordination.multicastgroup=
32
cachecoordination.multicastport=
33
34
# CacheCoordination Weblogic properties
35
#
36
#cachecoordination.wls.adminserver.httphost=${weblogic.host}
37
cachecoordination.wls.server1.httphost=${weblogic.host}
38
cachecoordination.wls.server2.httphost=${weblogic.host}
39
cachecoordination.wls.server3.httphost=${weblogic.host}
40
#cachecoordination.wls.adminserver.name=server1
41
cachecoordination.wls.server1.name=server1
42
cachecoordination.wls.server2.name=server2
43
cachecoordination.wls.server3.name=server3
44
#cachecoordination.wls.adminserver.port=${weblogic.port}
45
cachecoordination.wls.server1.port=7001
46
cachecoordination.wls.server2.port=7021
47
cachecoordination.wls.server3.port=7031
48
49
server1.url=t3://localhost:7001/
50
server2.url=t3://localhost:7021/
51
server3.url=t3://localhost:7031/
52
53
# test config using protocol: valid values jms or rmi
54
cachecoordination.protocol=jms

Return to bug 262740