#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

# -------------------------
# Hadoop module properties:
# -------------------------

#hadoop.hdfs.hostname=localhost
#hadoop.hdfs.port=9000
#hadoop.hdfs.file.path=/apache_metamodel_testfile.txt

# ----------------------------
# Dynamo DB module properties:
# ----------------------------

#dynamodb.accessKey=
#dynamodb.secretKey=
#dynamodb.region=us-west-2

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

#jdbc.hive.driver=org.apache.hive.jdbc.HiveDriver
#jdbc.hive.url=jdbc:hive2://localhost:10000
#jdbc.hive.username=
#jdbc.hive.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

# ---------------------------
# Neo4j module properties:
# ---------------------------

#neo4j.hostname=localhost
#neo4j.port=7474
#neo4j.username=neo4j
#neo4j.password=neo4j
#neo4j.serviceroot=/data/db
