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

# This file is specific to continuous integration, it contains the configuration for Travis CI service.

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

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

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

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

neo4j.hostname=localhost
neo4j.port=7474
neo4j.username=neo4j
neo4j.password=neo4j

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

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

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