#
# 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
#


# Testing environment properties
# Set your target database properties here or give it by -Dtest.properties=file option

# MongoDB properties
#jdbc.driver.jar=/data/ecl/lib/mongodb-driver-3.0.0.jar
#db.url=mongodb://prg10043.cz.oracle.com/mydb
#db.user=
#db.pwd=
#db.platform=org.eclipse.persistence.nosql.adapters.mongo.MongoPlatform

# Oracle NoSQL properties
jdbc.driver.jar=../../../extension.oracle.lib.external/ojdbc5_11.jar
db.driver=oracle.jdbc.OracleDriver
db.url=jdbc:oracle:thin:@tlsvrdb7.ca.oracle.com:1521:toplink
db.user=jsutherl
db.pwd=password
db.platform=org.eclipse.persistence.platform.database.oracle.Oracle11Platform

db.oci.url=jdbc:oracle:oci:@orcl

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

# Security manager options, switch from ignore to use a security manager
test.security-manager=-Dignore
# test.security-manager=-Djava.security.manager
test.security-manager.policy=-Dignore
# test.security-manager.policy=-Djava.security.policy=./java.policy.allpermissions

# Test class to be run.
test.class=org.eclipse.persistence.testing.tests.NoSQLJPATestSuite

# Test runner properties.
run.dir=run
report.dir=reports
