#
# WLS Server Testing Environment Properties.
#
# This property file is used by the jpa/eclipselink.jpa.test/weblogic.xml
# build file which handles execution of JPA tests against WebLogic server.
#
# This file can be copied to your $USER_HOME directory or can be left in its
# original location (jpa/eclipselink.jpa.test).
# The advantage of copying this file to $USER_HOME is that your changes
# does not get overwritten the next time you refresh from the repository.
#
# On Windows, $USER_HOME normally maps to C:\Documents and Settings\<user>.
# On Unix, it normally maps to /home/<user>.
#

###############################################
# User must check these properties and modify
# if needed.
###############################################

# WebLogic home - where you installed WLS
# weblogic.home is currently being used for another directory.
weblogic.installdir=C:/Oracle/Middleware/wlserver_10.3

# The following only for WebLogic JPA2.0 support
server.persistence20.lib=${weblogic.installdir}/../patch_wls1034/profiles/default/sys_manifest_classpath
server.persistence20.jar=weblogic_patch.jar

# user and password defined during installation
server.user=weblogic
server.pwd=welcome1

# host and ports for the WLS admin server; defined during installation
weblogic.port=7001
weblogic.port.ssl=7002
weblogic.host=localhost

# EL tests creates a new domain in the server-install ant task - specify the new domain location
# If you want to use your own domain, do not call server-install, and ignore this property
weblogic.domain=${weblogic.installdir}/samples/domains/mydomain

####################################
# DO NOT CHANGE
####################################

server.lib=${weblogic.installdir}/server/lib
server.testrunner=TestRunner#org.eclipse.persistence.testing.framework.server.TestRunner
server.testrunner.wdf=ServerTestRunner#org.eclipse.persistence.testing.framework.wdf.server.ServerTestRunner
server.testrunner1=TestRunner1#org.eclipse.persistence.testing.framework.server.TestRunner1
server.testrunner2=TestRunner2#org.eclipse.persistence.testing.framework.server.TestRunner2
server.testrunner3=TestRunner3#org.eclipse.persistence.testing.framework.server.TestRunner3
server.testrunner4=TestRunner4#org.eclipse.persistence.testing.framework.server.TestRunner4
server.testrunner5=TestRunner5#org.eclipse.persistence.testing.framework.server.TestRunner5
server.depend=weblogic.jar,weblogic_sp.jar
server.platform=weblogic
server.platform.class=weblogic-10-platform
server.factory=weblogic.jndi.WLInitialContextFactory
weblogic.home=${weblogic.installdir}/server/
server.url=t3://${weblogic.host}:${weblogic.port}/
server.admin.url=${server.url}
target.server=myserver

####################################
# Cache Co-Ordination Testing only
####################################
# CacheCoordination Weblogic properties
domain.name=mydomain
weblogic.version=10.3
announcement.delay=1000
rcm.multicastgroup=239.192.0.0
rcm.multicastport=3121
rcm.packet.timetolive=2

rcm.wls.cluster.name=eclipselink
rcm.wls.admin.httphost=${weblogic.host}
rcm.wls.server1.httphost=${weblogic.host}
rcm.wls.server2.httphost=${weblogic.host}
rcm.wls.server3.httphost=${weblogic.host}
rcm.wls.admin.name=admin
rcm.wls.server1.name=myserver
rcm.wls.server2.name=server2
rcm.wls.server3.name=server3
rcm.wls.admin.port=${weblogic.port}
rcm.wls.server1.port=7007
rcm.wls.server2.port=7021
rcm.wls.server3.port=7031

rcm.wls.server4.name=server4
rcm.wls.server5.name=server5
rcm.wls.server6.name=server6
rcm.wls.server4.httphost=${weblogic.host}
rcm.wls.server5.httphost=${weblogic.host}
rcm.wls.server6.httphost=${weblogic.host}
rcm.wls.server4.port=7008
rcm.wls.server5.port=7022
rcm.wls.server6.port=7032

rcm.wls.jms-server.name=jms-server
rcm.wls.jms-server.httphost=localhost
rcm.wls.jms-server.port=7042
rcm.wls.jms-server.url=t3://${rcm.wls.jms-server.httphost}:${rcm.wls.jms-server.port}/

rcm.wls.server7.name=server7
rcm.wls.server8.name=server8
rcm.wls.server9.name=server9
rcm.wls.server7.httphost=ottvm084
rcm.wls.server8.httphost=ottvm084
rcm.wls.server9.httphost=ottvm084
rcm.wls.server7.port=7008
rcm.wls.server8.port=7022
rcm.wls.server9.port=7032

rcm.wls.server1.url=t3://localhost:7007/
rcm.wls.server2.url=t3://localhost:7021/
rcm.wls.server3.url=t3://localhost:7031/

rcm.wls.server4.url=t3://ottvm083:7008/
rcm.wls.server5.url=t3://ottvm083:7022/
rcm.wls.server6.url=t3://ottvm083:7032/

rcm.wls.server7.url=t3://ottvm084:7008/
rcm.wls.server8.url=t3://ottvm084:7022/
rcm.wls.server9.url=t3://ottvm084:7032/

# test config using protocol: valid values are jms, jgroups, or rmi
cachecoordination.protocol=jms
grid=false
kryo=false
rcm.wls.jms.topichost.url=${rcm.wls.jms-server.url}
rcm.wls.jms.topicname=jms/EclipseLinkTopic
rcm.wls.jms.topic.connectionfactory.name=jms/EclipseLinkTopicConnectionFactory
