#Configuration file for the integration tests of Apache MetaModel.
#This file contains externalized properties which enable the test
#code to connect to actual running backends for testing the real integration.

# -----------
# HOW TO USE:
# -----------
# To use this file, copy it into your user home directory and uncomment the lines of relevance to you

# --------------------------
# CouchDB module properties:
# --------------------------

#couchdb.hostname=localhost
#couchdb.databaseName=metamodel_test_database

# --------------------------
# MongoDB module properties:
# --------------------------

#mongodb.hostname=localhost
#mongodb.databaseName=metamodel_test
#mongodb.collectionName=my_collection

# ------------------------
# HBase module properties:
# ------------------------

#hbase.zookeeper.hostname=localhost
#hbase.zookeeper.port=2181

# -----------------------
# JDBC module properties:
# -----------------------

#jdbc.postgresql.driver=org.postgresql.Driver
#jdbc.postgresql.url=jdbc:postgresql://localhost/dellstore2
#jdbc.postgresql.username=metamodel
#jdbc.postgresql.password=metamodel
#jdbc.postgresql.longrunningtests=false

#jdbc.mysql.driver=com.mysql.jdbc.Driver
#jdbc.mysql.url=jdbc:mysql://localhost/sakila?defaultFetchSize=-2147483648
#jdbc.mysql.username=
#jdbc.mysql.password=

#jdbc.oracle.driver=oracle.jdbc.OracleDriver
#jdbc.oracle.url=jdbc:oracle:thin:@localhost:1521:XE
#jdbc.oracle.username=HR
#jdbc.oracle.password=

#jdbc.db2.driver=com.ibm.db2.jcc.DB2Driver
#jdbc.db2.url
#jdbc.db2.username
#jdbc.db2.password

#jdbc.firebird.driver=org.firebirdsql.jdbc.FBDriver
#jdbc.firebird.url=jdbc:firebirdsql:127.0.0.1:employee.fdb
#jdbc.firebird.username=SYSDBA
#jdbc.firebird.password=

#jdbc.sqlserver.jtds_driver.driver=net.sourceforge.jtds.jdbc.Driver
#jdbc.sqlserver.jtds_driver.url=jdbc:jtds:sqlserver://localhost:1433/AdventureWorks;instance=SQLEXPRESS
#jdbc.sqlserver.jtds_driver.username=
#jdbc.sqlserver.jtds_driver.password=

#jdbc.sqlserver.microsoft_driver.driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
#jdbc.sqlserver.microsoft_driver.url=jdbc:sqlserver://localhost\\SQLEXPRESS;databaseName=AdventureWorks
#jdbc.sqlserver.microsoft_driver.username=
#jdbc.sqlserver.microsoft_driver.password=

# -----------------------------
# Salesforce module properties:
# -----------------------------

#salesforce.username=
#salesforce.password=
#salesforce.securityToken=
#salesforce.endpoint=https://test.salesforce.com

# ---------------------------
# SugarCRM module properties:
# ---------------------------

#sugarcrm.username=
#sugarcrm.password=
#sugarcrm.numberOfAccounts=

# ---------------------------
# Cassandra module properties:
# ---------------------------

#cassandra.hostname=localhost
#cassandra.port=9042
#cassandra.keyspace=my_keyspace