# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

brokerHostPortPlain=tcp://localhost:5672
brokerHostPortSsl=tcp://localhost:5671
perftestResultsDirectory=perftestResultsDb
username=guest
password=guest

connectionfactory.connectionfactory = amqp://${username}:${password}@clientid/?brokerlist='${brokerHostPortPlain}'
connectionfactory.sslconnectionfactory = amqp://${username}:${password}@clientid/?ssl='true'&brokerlist='${brokerHostPortSsl}'

queue.controllerqueue = controllerqueue

jdbcDriverClass=org.apache.derby.jdbc.EmbeddedDriver
# writes to a results database in ./perftestResultsDb by default.
jdbcUrl=jdbc:derby:${perftestResultsDirectory};create=true
