#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

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

#salesforce.username=
#salesforce.password=
#salesforce.securityToken=

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

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