#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

# ------------------------
# Kafka module properties:
# ------------------------

#kafka.bootstrap.servers=localhost:9092
#kafka.topic.prefix=metamodel_test

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