# Testing environment properties.

# Link to dependencies not in SVN, assumes default location, if you store elsewhere you need to edit these.
oracle.extensions.depend.dir=../../../extension.oracle.lib.external
# toplink.jar=../../../extension.oracle.lib.external/toplink.jar
# toplink-essentials.jar=../../../extension.oracle.lib.external/toplink-essentials.jar
# toplink-essentials-agent.jar=../../../extension.oracle.lib.external/toplink-essentials-agent.jar
# hibernate.dir=../../../extension.hibernate.lib.external/
# openjpa.dir=../../../extension.openjpa.lib.external/
# coherence.dir=../../../extension.coherence.lib.external/
# Set your target database properties here or give it by -Dtest.properties=file option.

# Oracle DBJ @ SAP
#jdbc.driver.jar=\\production2\contexts\nwcd001\ec.jdbc\nwcd001_stream\gen\dbg\java\packaged\full\_oracle\ojdbc14.jar
#db.driver=oracle.jdbc.OracleDriver
#db.url=jdbc:oracle:thin:@ls4084:1527:DBJ
#db.user=sapdbj
#db.pwd=sap
#db.platform=org.eclipse.persistence.platform.database.OraclePlatform

# local MySQL
jdbc.driver.jar=W:/SVNS/extension.lib.external/mysql-connector-java-5.1.8-bin.jar
db.driver=com.mysql.jdbc.Driver
db.url=jdbc:mysql://localhost/EL
db.user=me
db.pwd=abcd1234
db.platform=org.eclipse.persistence.platform.database.MySQLPlatform


# Logging option for debugging.
#  logging.level=info
logging.level=finest
# logging.level=off

# Weaving options, switch to ignore for no weaving
#test.agent=-javaagent:${eclipselink.jar.run}
test.agent=-Dignore
test.weaving=-Dignore
# test.weaving=-DTEST_NO_WEAVING=true

# Test class to be run.

# Test runner properties.
run.dir=run
report.dir=report
# This is relative to the run directory.
eclipselink.jar.run=../../../eclipselink.jar

# Server properties
# Valid values of server.name are weblogic, oc4j, ...
server.name=weblogic

# A property specifying if PromptTestRunner should save the test results to the database
should.save.results=false

# The baseline version that the performance tests will compare this version with.
# By default, it is the version that the last success runs were against.
# To this version as a baseline, you can specify a non-existing baseline version and run the performance tests.
# performance.baseline.version=1.0_:SNAPSHOT_-_20080402

# A property indicating that tests annotated with @Bugzilla(bugid=<bugid>) should be executed
#test.bugzilla.run=all
#test.issue.run=all
#test.bugzilla.run=300503
#test.to-be-investigated.run=all

