#
# Copyright (c) 2018, 2020 Oracle and/or its affiliates. All rights reserved.
#
# This program and the accompanying materials are made available under the
# terms of the Eclipse Public License v. 2.0 which is available at
# http://www.eclipse.org/legal/epl-2.0,
# or the Eclipse Distribution License v. 1.0 which is available at
# http://www.eclipse.org/org/documents/edl-v10.php.
#
# SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
#


#
# 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 port for the WLS admin server; defined during installation
weblogic.port=7001
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.modules=${weblogic.installdir}/../oracle_common/modules
server.module.toplink=${server.modules}/oracle.toplink
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.testrunner6=TestRunner6#org.eclipse.persistence.testing.framework.server.TestRunner6
server.depend=weblogic.jar,weblogic_sp.jar
server.platform=weblogic
server.platform.class=weblogic-12-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
