# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

# TODO - allow this to run across all databases in one go.

# MySQL
test-unit-sys-prop.db.url=jdbc:mysql://localhost:8889/test
test-unit-sys-prop.db.user=root
test-unit-sys-prop.db.password=root
test-unit-sys-prop.db.schema=test
test-unit-sys-prop.db.driver.jarpath=nbinst:///modules/ext/mysql-connector-java-5.1.5-bin.jar
test-unit-sys-prop.db.driver.classname=com.mysql.jdbc.Driver

# Java DB
#test-unit-sys-prop.db.url=jdbc:derby://localhost:1527/test;create=true
#test-unit-sys-prop.db.user=foo
#test-unit-sys-prop.db.password=bar
#test-unit-sys-prop.db.schema=FOO
#test-unit-sys-prop.db.driver.jarpath=file:///Users/David/glassfish/javadb/lib/derbyclient.jar
#test-unit-sys-prop.db.driver.classname=org.apache.derby.jdbc.ClientDriver

# PostgreSQL
#test-unit-sys-prop.db.url=jdbc:postgresql://localhost:5432/postgres
#test-unit-sys-prop.db.user=postgres
#test-unit-sys-prop.db.password=postgres
#test-unit-sys-prop.db.schema=public
#test-unit-sys-prop.db.driver.jarpath=nbinst:///modules/ext/postgresql-8.3-603.jdbc3.jar
#test-unit-sys-prop.db.driver.classname=org.postgresql.Driver
