# 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

