Skip to content

Instantly share code, notes, and snippets.

@danmueller
Created June 2, 2009 03:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save danmueller/121977 to your computer and use it in GitHub Desktop.
Save danmueller/121977 to your computer and use it in GitHub Desktop.
ActiveMQ perftest
#!/bin/bash
# this file should be sourced (preferable with set -u)
# if the execution model is unchanged, then this will be sourced from
# .bashrc
export DOWNLOADS=$HOME/downloads
export JAVA_HOME=/usr/lib/jvm/java-6-sun
export M2_HOME=/home/ubuntu/apache-maven-2.1.0
export M2=$M2_HOME/bin
export PATH=$PATH:$M2
export MAVEN_OPTS=-Xmx512M
#EC2_BASE=~/.ec2
#export EC2_HOME=`ls -1td $EC2_BASE/ec2-api-tools* | head -n1`
#export PATH=$PATH:/opt/local/bin:/opt/local/sbin:$EC2_HOME/bin:~/.scripts/bin
#export EC2_PRIVATE_KEY=`ls $EC2_BASE/certs/pk-*.pem`
#export EC2_CERT=`ls $EC2_BASE/certs/cert-*.pem`
# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples
# If not running interactively, don't do anything
[ -z "$PS1" ] && return
# don't put duplicate lines in the history. See bash(1) for more options
# don't overwrite GNU Midnight Commander's setting of `ignorespace'.
export HISTCONTROL=$HISTCONTROL${HISTCONTROL+,}ignoredups
# ... or force ignoredups and ignorespace
export HISTCONTROL=ignoreboth
# append to the history file, don't overwrite it
shopt -s histappend
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
shopt -s checkwinsize
# make less more friendly for non-text input files, see lesspipe(1)
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
# set variable identifying the chroot you work in (used in the prompt below)
if [ -z "$debian_chroot" ] && [ -r /etc/debian_chroot ]; then
debian_chroot=$(cat /etc/debian_chroot)
fi
# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
xterm-color) color_prompt=yes;;
esac
# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
#force_color_prompt=yes
if [ -n "$force_color_prompt" ]; then
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
# We have color support; assume it's compliant with Ecma-48
# (ISO/IEC-6429). (Lack of such support is extremely rare, and such
# a case would tend to support setf rather than setaf.)
color_prompt=yes
else
color_prompt=
fi
fi
if [ "$color_prompt" = yes ]; then
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt
# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
;;
*)
;;
esac
# Alias definitions.
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
# enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
eval "`dircolors -b`"
alias ls='ls --color=auto'
#alias dir='dir --color=auto'
#alias vdir='vdir --color=auto'
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
fi
# some more ls aliases
alias ll='ls -CF'
alias la='ls -Al'
alias l='ls -l'
# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
# Path definitions.
# You may want to put all your path exports into a separate file
# like ~/.bash_exports, instead of adding them here directly.
if [ -f ~/.bash_exports ]; then
. ~/.bash_exports
fi
# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples
# If not running interactively, don't do anything
[ -z "$PS1" ] && return
# don't put duplicate lines in the history. See bash(1) for more options
# don't overwrite GNU Midnight Commander's setting of `ignorespace'.
export HISTCONTROL=$HISTCONTROL${HISTCONTROL+,}ignoredups
# ... or force ignoredups and ignorespace
export HISTCONTROL=ignoreboth
# append to the history file, don't overwrite it
shopt -s histappend
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
shopt -s checkwinsize
# make less more friendly for non-text input files, see lesspipe(1)
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
# set variable identifying the chroot you work in (used in the prompt below)
if [ -z "$debian_chroot" ] && [ -r /etc/debian_chroot ]; then
debian_chroot=$(cat /etc/debian_chroot)
fi
# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
xterm-color) color_prompt=yes;;
esac
# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
#force_color_prompt=yes
if [ -n "$force_color_prompt" ]; then
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
# We have color support; assume it's compliant with Ecma-48
# (ISO/IEC-6429). (Lack of such support is extremely rare, and such
# a case would tend to support setf rather than setaf.)
color_prompt=yes
else
color_prompt=
fi
fi
if [ "$color_prompt" = yes ]; then
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt
# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
;;
*)
;;
esac
# Alias definitions.
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.
#if [ -f ~/.bash_aliases ]; then
# . ~/.bash_aliases
#fi
# enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
eval "`dircolors -b`"
alias ls='ls --color=auto'
#alias dir='dir --color=auto'
#alias vdir='vdir --color=auto'
#alias grep='grep --color=auto'
#alias fgrep='fgrep --color=auto'
#alias egrep='egrep --color=auto'
fi
# some more ls aliases
#alias ll='ls -l'
#alias la='ls -A'
#alias l='ls -CF'
# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
[alias]
st = status
ci = commit
co = checkout
w = whatchanged
[diff]
renamelimit = 0
[color]
diff = auto
interactive = auto
status = auto
branch = auto
[apply]
whitespace = fix
target
reports
activemq-data
target
reports
bin
*eggs/
*.egg-info/
.installed.cfg
bindkey -d ^? stuff ^H
bindkey -d ^@ stuff ^H
import logging
logging.basicConfig(level=logging.INFO,
format='[%(name)s %(levelname)s] %(message)s')
# format='[%(levelname)s] %(message)s')
logging.getLogger('boto').setLevel(logging.DEBUG)
import logging
logging.basicConfig(level=logging.INFO,
format='[%(name)s %(levelname)s] %(message)s')
# format='[%(levelname)s] %(message)s')
logging.getLogger('boto').setLevel(logging.DEBUG)
import logging
logging.basicConfig(level=logging.INFO,
format='[%(name)s %(levelname)s] %(message)s')
# format='[%(levelname)s] %(message)s')
logging.getLogger('boto').setLevel(logging.DEBUG)
import logging
logging.basicConfig(level=logging.INFO,
format='[%(name)s %(levelname)s] %(message)s')
# format='[%(levelname)s] %(message)s')
logging.getLogger('boto').setLevel(logging.DEBUG)
<!--
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.
-->
<h2><a name="ActiveMQPerformanceModuleUsersManual-RunningMaven2PerformanceTest"></a>Running Maven 2 Performance Test</h2>
<p>This <span class="nobr"><a href="http://maven.apache.org" title="Visit page outside Confluence" rel="nofollow">Maven 2</a></span> plugin allows you to run performance tests easily using the Maven command line or run tests automatically in <span class="nobr"><a href="http://maven.apache.org/continuum/" title="Visit page outside Confluence" rel="nofollow">Continuum</a></span></p>
<h3><a name="ActiveMQPerformanceModuleUsersManual-Prerequisites"></a>Prerequisites</h3>
<p>Currently we have not released the plugin so you could well have to build it yourself first. Start with a complete build of Apache ActiveMQ and then do</p>
<div class="code"><div class="codeContent">
<pre class="code-java">cd tooling/maven-activemq-perf-plugin
mvn clean install</pre>
</div></div>
<p>To run the following Maven goals make sure you are inside a Maven2 project directory where its POM is enabled with the Maven2 plugin such as the <span class="nobr"><a href="http://svn.apache.org/repos/asf/incubator/activemq/trunk/activemq-perftest/" title="Visit page outside Confluence" rel="nofollow">activemq-perftest module</a></span>.</p>
<h3><a name="ActiveMQPerformanceModuleUsersManual-Gettingstarted"></a>Getting started</h3>
<p>To get started try typing the following commands into separate shells from the <span class="nobr"><a href="http://svn.apache.org/repos/asf/incubator/activemq/trunk/activemq-perftest/" title="Visit page outside Confluence" rel="nofollow">activemq-perftest directory</a></span></p>
<div class="code"><div class="codeContent">
<pre class="code-java">mvn activemq-perf:broker -Durl=broker:tcp:<span class="code-comment">//localhost:61616
</span>mvn activemq-perf:consumer
mvn activemq-perf:producer</pre>
</div></div>
<p>If you run the broker on a different machine then change the producer and consumer commands to</p>
<div class="code"><div class="codeContent">
<pre class="code-java">mvn activemq-perf:consumer -Dfactory.brokerUrl=tcp:<span class="code-comment">//host:port
</span>mvn activemq-perf:producer -Dfactory.brokerUrl=tcp:<span class="code-comment">//host:port</span></pre>
</div></div>
<p>where you switch host:port with the actual values.</p>
<p>When you run the producer &amp; consumer, it generates an XML performance report in the current directory, so that you can graph and chart the results etc. See the <a href="/confluence/display/ACTIVEMQ/sample+report" title="sample report">sample report</a></p>
<h3><a name="ActiveMQPerformanceModuleUsersManual-Mavengoals"></a>Maven goals</h3>
<table border="1" class="confluenceTable"><tbody>
<tr>
<th class="confluenceTh"> Goal </th>
<th class="confluenceTh"> Description </th>
</tr>
<tr>
<td class="confluenceTd"> activemq-perf:broker </td>
<td class="confluenceTd"> Starts broker using the activemq configuration file located in "src\main\resources\broker-conf" where the default config is activemq.xml. <br clear="all">
Parameters: <br clear="all">
&nbsp;1. -DconfigType - specifies the type of configuration to use. Its value must be one of the filename in the "..\broker-config" directory (e.g. -DconfigType=kaha). <br clear="all">
&nbsp;2. -DconfigFile - path to config file other than those in "src\..\broker-config".e.g -DconfigFile=c:\dir\activemq.xml) </td>
</tr>
<tr>
<td class="confluenceTd"> activemq-perf:consumer </td>
<td class="confluenceTd"> Starts the consumer's performance testing. The generated report file can be found in the directory specified in the parameter "sysTest.reportDir". </td>
</tr>
<tr>
<td class="confluenceTd"> activemq-perf:producer </td>
<td class="confluenceTd"> Starts the producer's performance testing. The generated report file can be found in the directory specified in the parameter "sysTest.reportDir". </td>
</tr>
</tbody></table>
<p><sup>1</sup> <b>Note</b>:The parameters for both consumer and producers are described in the next section. (<a href="/confluence/display/ACTIVEMQ/sample+report" title="sample report">sample report</a>)</p>
<h3><a name="ActiveMQPerformanceModuleUsersManual-ConfigurationforrunningasystemofJMSClients(Producer/Consumer)"></a>Configuration for running a system of JMS Clients (Producer/Consumer)</h3>
<table border="1" class="confluenceTable"><tbody>
<tr>
<th class="confluenceTh"> Configuration Key </th>
<th class="confluenceTh"> Default Value <br clear="all"> </th>
<th class="confluenceTh"> Description </th>
</tr>
<tr>
<td class="confluenceTd"> sysTest.clientPrefix </td>
<td class="confluenceTd"> JmsConsumer or JmsProducer </td>
<td class="confluenceTd"> Specifies the client name prefix that will be use for each system. By default it will use JmsConsumer for consumer systems, and JmsProducer for producer systems. </td>
</tr>
<tr>
<td class="confluenceTd"> sysTest.numClients </td>
<td class="confluenceTd"> 1 </td>
<td class="confluenceTd"> Specifies the number of JMS Clients to start. </td>
</tr>
<tr>
<td class="confluenceTd"> sysTest.totalDests </td>
<td class="confluenceTd"> 1 </td>
<td class="confluenceTd"> Specifies the total number of destinations to use for the whole system test. </td>
</tr>
<tr>
<td class="confluenceTd"> sysTest.destDistro </td>
<td class="confluenceTd"> all </td>
<td class="confluenceTd"> Specifies how to distribute the destinations to the clients. Available values are (Invalid value will result to using the default value 'all')<sup>1</sup>:
<ul>
<li>'all' - All clients will send/receive to all destinations. i.e. if there are 2 producers and 5 destinations, each producer will send a message to each individual destination.</li>
<li>'equal' - Clients will equally divide the destinations among themselves. i.e. if there are 2 producers and 5 destinations, each producer will send messages to 2 destinations. The fifth destination will not be used.</li>
<li>'divide' - Clients will divide the destinations among themselves regardless of equality. i.e. if there are 2 producers and 5 destinations, producer 1 will send to 3 destinations, while producer 2 will send to 2 destinations.</li>
</ul>
</td>
</tr>
<tr>
<td class="confluenceTd"> sysTest.reportDirectory </td>
<td class="confluenceTd"> ./ </td>
<td class="confluenceTd"> The directory where the sampler report will be saved. </td>
</tr>
<tr>
<td class="confluenceTd"> sysTest.reportName </td>
<td class="confluenceTd"> null </td>
<td class="confluenceTd"> The default filename the sampler report will be saved us. There is usually no need to set this setting as the default value will create either JmsProducer_numClients#<em>numDests#</em>&lt;Dest Distro&gt;.xml and JmsConsumer_numClients#_numDests#_&lt;Dest Distro&gt;.xml, where # represents the number of clients and destinations set for that system, and &lt;Dest Distro&gt; specifies the destination distribution for the system. </td>
</tr>
<tr>
<td class="confluenceTd"> sysTest.reportType </td>
<td class="confluenceTd"> xml </td>
<td class="confluenceTd"> Specifies the manner of generating the performance report. Available values are:
<ul>
<li>'xml' - Write the performance report into an xml file. Specified by reportDirectory and reportName. A verbose summary will also be displayed at the end of the test.</li>
<li>'verbose' - All information will be written to the standard output, which includes settings, sampler data, and performance summary.</li>
</ul>
</td>
</tr>
<tr>
<td class="confluenceTd"> sysTest.samplers </td>
<td class="confluenceTd"> tp,cpu </td>
<td class="confluenceTd"> Specifies the samplers that will be started. To use enable more than one sampler, separate the values by commas without spaces. Available values are:
<ul>
<li>'tp' - Throughput sampler</li>
<li>'cpu' - CPU Usage sampler</li>
</ul>
</td>
</tr>
<tr>
<td class="confluenceTd"> sysTest.spiClass </td>
<td class="confluenceTd"> org.apache.activemq.tool.spi.ActiveMQClassLoaderSPI </td>
<td class="confluenceTd"> The service provider interface class that allows the client to create a generic connection factory. Current available SPI classes include:
<ol>
<li>'org.apache.activemq.tool.ActiveMQPojoSPI'</li>
<li>'org.apache.activemq.tool.ActiveMQClassLoaderSPI'</li>
</ol>
</td>
</tr>
</tbody></table>
<p><sup>1</sup> <b>Note</b>: If the number of destinations is less than the number of clients and the distribution type is either 'equal' or 'divide', each client will send/receive from only one destination, distributing the destinations among the clients. i.e. if there are 5 producers and 2 destinations, 3 producers will send to destination 1, and 2 producers will send to destination 2. Also, a consumer can only receive from a single destination, unless composite destination is supported and specified.</p>
<h3><a name="ActiveMQPerformanceModuleUsersManual-ConfigurationforrunningaJMSProducer"></a>Configuration for running a JMS Producer</h3>
<table border="1" class="confluenceTable"><tbody>
<tr>
<th class="confluenceTh"> Configuration Key </th>
<th class="confluenceTh"> Default Value </th>
<th class="confluenceTh"> Description </th>
</tr>
<tr>
<td class="confluenceTd"> producer.sessTransacted </td>
<td class="confluenceTd"> false </td>
<td class="confluenceTd"> Specifies if the session created will be transacted or not. See the JMS Specifications for more details. </td>
</tr>
<tr>
<td class="confluenceTd"> producer.sessAckMode </td>
<td class="confluenceTd"> autoAck </td>
<td class="confluenceTd"> Specified the acknowledge mode of the session. See the JMS Specifications for more details. Available values are:
<ol>
<li>'autoAck' - Session.AUTO_ACKNOWLEDGE</li>
<li>'clientAck' - Session.CLIENT_ACKNOWLEDGE</li>
<li>'dupsAck' - Session.DUPS_OK_ACKNOWLEDGE</li>
<li>'transacted' - Session.TRANSACTED</li>
</ol>
</td>
</tr>
<tr>
<td class="confluenceTd"> producer.destName </td>
<td class="confluenceTd"> TEST.FOO </td>
<td class="confluenceTd"> The prefix of the destination name to use. To specify a queue, prefix the destination name with 'queue://', for topics, prefix the destination with 'topic://'. If no prefix is specified, a topic will be created. </td>
</tr>
<tr>
<td class="confluenceTd"> producer.destComposite </td>
<td class="confluenceTd"> false </td>
<td class="confluenceTd"> If there are more than one destination, and destComposite=true, the destinations will be merged into one. This assumes that the provider supports composite destinations. </td>
</tr>
<tr>
<td class="confluenceTd"> producer.deliveryMode </td>
<td class="confluenceTd"> nonpersistent </td>
<td class="confluenceTd"> The message delivery mode that will be used for each producer. Available values are:
<ol>
<li>'nonpersistent' - use non-persistent delivery mode. javax.jms.DeliveryMode.NON_PERSISTENT.</li>
<li>'persistent' - use persistent delivery mode. javax.jms.DeliveryMode.PERSISTENT.</li>
</ol>
</td>
</tr>
<tr>
<td class="confluenceTd"> producer.messageSize </td>
<td class="confluenceTd"> 1024 bytes </td>
<td class="confluenceTd"> The size of each text message to send. </td>
</tr>
<tr>
<td class="confluenceTd"> producer.createNewMsg </td>
<td class="confluenceTd"> false </td>
<td class="confluenceTd"> If true, each send will create a new JMS Message with the specified message size with incrementing text messages (i.e. Text Message 1, Text Message 2, ...). If false, only one message will be created before the send loop, and this message will be sent over and over again. </td>
</tr>
<tr>
<td class="confluenceTd"> producer.sendType </td>
<td class="confluenceTd"> time </td>
<td class="confluenceTd"> Send either time-based or message-count-based. Available values are:
<ol>
<li>'time' - keep sending messages until a specific interval of time elapses.</li>
<li>'count' - keep sending messages until N messages has been sent.</li>
</ol>
</td>
</tr>
<tr>
<td class="confluenceTd"> producer.sendCount </td>
<td class="confluenceTd"> 1000000 msgs <br clear="all">
(1 million) </td>
<td class="confluenceTd"> If sendType=count, send this number of messages. </td>
</tr>
<tr>
<td class="confluenceTd"> producer.sendDuration </td>
<td class="confluenceTd"> 300000 ms <br clear="all">
(5 mins) </td>
<td class="confluenceTd"> If sendType=time, send messages for this number of milliseconds. </td>
</tr>
</tbody></table>
<h3><a name="ActiveMQPerformanceModuleUsersManual-ConfigurationforrunningaJMSConsumer"></a>Configuration for running a JMS Consumer</h3>
<table border="1" class="confluenceTable"><tbody>
<tr>
<th class="confluenceTh"> Configuration Key </th>
<th class="confluenceTh"> Default Value </th>
<th class="confluenceTh"> Description </th>
</tr>
<tr>
<td class="confluenceTd"> consumer.sessTransacted </td>
<td class="confluenceTd"> false </td>
<td class="confluenceTd"> Specifies if the session created will be transacted or not. See the JMS Specifications for more details. </td>
</tr>
<tr>
<td class="confluenceTd"> consumer.sessAckMode </td>
<td class="confluenceTd"> autoAck </td>
<td class="confluenceTd"> Specified the acknowledge mode of the session. See the JMS Specifications for more details. Available values are:
<ol>
<li>'autoAck' - Session.AUTO_ACKNOWLEDGE</li>
<li>'clientAck' - Session.CLIENT_ACKNOWLEDGE</li>
<li>'dupsAck' - Session.DUPS_OK_ACKNOWLEDGE</li>
<li>'transacted' - Session.TRANSACTED</li>
</ol>
</td>
</tr>
<tr>
<td class="confluenceTd"> consumer.destName </td>
<td class="confluenceTd"> TEST.FOO </td>
<td class="confluenceTd"> The prefix of the destination name to use. To specify a queue, prefix the destination name with 'queue://', for topics, prefix the destination with 'topic://'. If no prefix is specified, a topic will be created. </td>
</tr>
<tr>
<td class="confluenceTd"> consumer.destComposite </td>
<td class="confluenceTd"> false </td>
<td class="confluenceTd"> If there are more than one destination, and destComposite=true, the destinations will be merged into one. This assumes that the provider supports composite destinations. </td>
</tr>
<tr>
<td class="confluenceTd"> consumer.durable </td>
<td class="confluenceTd"> false </td>
<td class="confluenceTd"> If true, create a durable subscriber, otherwise create a message consumer. See the JMS Specifications for more details. </td>
</tr>
<tr>
<td class="confluenceTd"> consumer.asyncRecv </td>
<td class="confluenceTd"> true </td>
<td class="confluenceTd"> If true, asynchronously receive messages using the onMessage() method, otherwise use the receive() method. </td>
</tr>
<tr>
<td class="confluenceTd"> consumer.recvType </td>
<td class="confluenceTd"> time </td>
<td class="confluenceTd"> Receive either time-based or message-count-based. Available values are:
<ol>
<li>'time' - keep receiving messages until a specific time interval has elapsed.</li>
<li>'count' - keep receiving until N messages has been received.</li>
</ol>
</td>
</tr>
<tr>
<td class="confluenceTd"> consumer.recvCount </td>
<td class="confluenceTd"> 1000000 msgs <br clear="all">
(1 million) </td>
<td class="confluenceTd"> If recvType=count, receive this much messages. </td>
</tr>
<tr>
<td class="confluenceTd"> consumer.recvType </td>
<td class="confluenceTd"> 300000 ms <br clear="all">
(5 mins) </td>
<td class="confluenceTd"> If recvType=time, receive messages for this specific time duration. </td>
</tr>
</tbody></table>
<p><b>Note</b>: If you have more than one consumer receiving from multiple destinations, it is a good idea to change the sysTest.destDistro to 'equal', since by default it uses 'all' and a consumer can only receive from a single destination, hence all consumers will receive from the first destination in the list only.</p>
<h3><a name="ActiveMQPerformanceModuleUsersManual-ConfigurationforSPIConnectionFactory:org.apache.activemq.tool.spi.ActiveMQPojoSPI"></a>Configuration for SPI Connection Factory: org.apache.activemq.tool.spi.ActiveMQPojoSPI</h3>
<p><b>Description:</b> This provides details in configuring the JMS Connection Factory created by ActiveMQPojoSPI. Default values are based from the default values of the service provider org.apache.activemq.ActiveMQConnectionFactory.</p>
<table border="1" class="confluenceTable"><tbody>
<tr>
<th class="confluenceTh"> Configuration Key </th>
<th class="confluenceTh"> Default Value </th>
<th class="confluenceTh"> Description </th>
</tr>
<tr>
<td class="confluenceTd"> factory.brokerUrl </td>
<td class="confluenceTd"> tcp://localhost:61616 </td>
<td class="confluenceTd"> The url of the broker the client will connect to. </td>
</tr>
<tr>
<td class="confluenceTd"> factory.username </td>
<td class="confluenceTd"> null </td>
<td class="confluenceTd"> Username on the connection to use. </td>
</tr>
<tr>
<td class="confluenceTd"> factory.password </td>
<td class="confluenceTd"> null </td>
<td class="confluenceTd"> Password on the connection to use. </td>
</tr>
<tr>
<td class="confluenceTd"> factory.clientID </td>
<td class="confluenceTd"> null </td>
<td class="confluenceTd"> Client ID the connection will use. If none is specified, it will be automatically generated. </td>
</tr>
<tr>
<td class="confluenceTd"> factory.asyncSend </td>
<td class="confluenceTd"> false </td>
<td class="confluenceTd"> If true, asynchronously send messages. </td>
</tr>
<tr>
<td class="confluenceTd"> factory.asyncDispatch </td>
<td class="confluenceTd"> false </td>
<td class="confluenceTd"> If true, asynchronously dispatch messages. </td>
</tr>
<tr>
<td class="confluenceTd"> factory.asyncSession </td>
<td class="confluenceTd"> true </td>
<td class="confluenceTd"> If true, session will dispatch messages asynchronously. </td>
</tr>
<tr>
<td class="confluenceTd"> factory.closeTimeout </td>
<td class="confluenceTd"> 15000 ms </td>
</tr>
<tr>
<td class="confluenceTd"> factory.copyMsgOnSend </td>
<td class="confluenceTd"> true </td>
<td class="confluenceTd"> If true, creates a copy of the message to be sent. </td>
</tr>
<tr>
<td class="confluenceTd"> factory.disableTimestamp </td>
<td class="confluenceTd"> false </td>
<td class="confluenceTd"> If true, disable the setting of the JMSTimestamp. </td>
</tr>
<tr>
<td class="confluenceTd"> factory.deferObjSerial </td>
<td class="confluenceTd"> false </td>
<td class="confluenceTd"> If true, defer the serialization of message objects. </td>
</tr>
<tr>
<td class="confluenceTd"> factory.optimAck </td>
<td class="confluenceTd"> true </td>
<td class="confluenceTd"> If true, optimizes the acknowledgement of messages. </td>
</tr>
<tr>
<td class="confluenceTd"> factory.optimDispatch </td>
<td class="confluenceTd"> true </td>
<td class="confluenceTd"> If true, optimizes the dispatching of messages. </td>
</tr>
<tr>
<td class="confluenceTd"> factory.prefetchQueue </td>
<td class="confluenceTd"> 1000 messages </td>
<td class="confluenceTd"> Number of messages a queue consumer will cache in RAM before processing it. </td>
</tr>
<tr>
<td class="confluenceTd"> factory.prefetchTopic </td>
<td class="confluenceTd"> 32766 messages </td>
<td class="confluenceTd"> Number of messages a topic consumer will cache in RAM before processing it. </td>
</tr>
<tr>
<td class="confluenceTd"> factory.useCompression </td>
<td class="confluenceTd"> false </td>
<td class="confluenceTd"> If true, compress message data. </td>
</tr>
<tr>
<td class="confluenceTd"> factory.useRetroactive </td>
<td class="confluenceTd"> false </td>
<td class="confluenceTd"> If true, make consumers retroactive. </td>
</tr>
</tbody></table>
<h3><a name="ActiveMQPerformanceModuleUsersManual-ConfigurationforSPIConnectionFactory:org.apache.activemq.tool.spi.ActiveMQClassLoaderSPI"></a>Configuration for SPI Connection Factory: org.apache.activemq.tool.spi.ActiveMQClassLoaderSPI</h3>
<p><b>Description:</b> This provides details in configuring the JMS Connection Factory created by ActiveMQClassLoaderSPI. Default values are based from the default values of the service provider org.apache.activemq.ActiveMQConnectionFactory.</p>
<p>ActiveMQClassLoaderSPI loads from the classpath "org.apache.activemq.ActiveMQConnectionFactory" and configures it using reflection. Configuration is generally based on the API of the class loaded. General format is factory.YYY or factory.XXX.YYY, where the last variable (YYY) is the property to set and everything in between is the getter of the class to use to set (YYY). For example:</p>
<ol>
<li>To set the value for asyncSend in ActiveMQConnectionFactory, use:<br>
<tt>factory.useAsyncSend=true</tt>, which is equivalent to calling <tt>factory.setUseAsyncSend(true)</tt></li>
</ol>
<ol>
<li>To set the queue prefetch for ActiveMQConnectionFactory, use:<br>
<tt>factory.prefetchPolicy.queuePrefetch=1</tt>, which is equivalent to calling <tt>factory.getPrefetchPolicy().setQueuePrefetch(1)</tt></li>
</ol>
<p>It should be noted that the loaded class should implement the appropriate getter and setter methods. Nested objects should also be properly instantiated. For more information on configuring this SPI, refer to the specific provider API manual.</p>
<p>As of ActiveMQ 4.0.1, these are the available fields and default values:</p>
<table border="1" class="confluenceTable"><tbody>
<tr>
<th class="confluenceTh"> Configuration Key </th>
<th class="confluenceTh"> Default Value </th>
</tr>
<tr>
<td class="confluenceTd"> factory.prefetchPolicy.optimizeDurableTopicPrefetch </td>
<td class="confluenceTd"> 1000 </td>
</tr>
<tr>
<td class="confluenceTd"> factory.prefetchPolicy.durableTopicPrefetch </td>
<td class="confluenceTd"> 100 </td>
</tr>
<tr>
<td class="confluenceTd"> factory.password </td>
<td class="confluenceTd"> null </td>
</tr>
<tr>
<td class="confluenceTd"> factory.prefetchPolicy.queueBrowserPrefetch </td>
<td class="confluenceTd"> 500 </td>
</tr>
<tr>
<td class="confluenceTd"> factory.useCompression </td>
<td class="confluenceTd"> false </td>
</tr>
<tr>
<td class="confluenceTd"> factory.disableTimeStampsByDefault </td>
<td class="confluenceTd"> false </td>
</tr>
<tr>
<td class="confluenceTd"> factory.optimizedMessageDispatch </td>
<td class="confluenceTd"> true </td>
</tr>
<tr>
<td class="confluenceTd"> factory.useRetroactiveConsumer </td>
<td class="confluenceTd"> false </td>
</tr>
<tr>
<td class="confluenceTd"> factory.alwaysSessionAsync </td>
<td class="confluenceTd"> true </td>
</tr>
<tr>
<td class="confluenceTd"> factory.copyMessageOnSend </td>
<td class="confluenceTd"> true </td>
</tr>
<tr>
<td class="confluenceTd"> factory.prefetchPolicy.topicPrefetch </td>
<td class="confluenceTd"> 32766 </td>
</tr>
<tr>
<td class="confluenceTd"> factory.useAsyncSend </td>
<td class="confluenceTd"> false </td>
</tr>
<tr>
<td class="confluenceTd"> factory.redeliveryPolicy.backOffMultiplier </td>
<td class="confluenceTd"> 5 </td>
</tr>
<tr>
<td class="confluenceTd"> factory.prefetchPolicy.inputStreamPrefetch </td>
<td class="confluenceTd"> 100 </td>
</tr>
<tr>
<td class="confluenceTd"> factory.closeTimeout </td>
<td class="confluenceTd"> 15000 </td>
</tr>
<tr>
<td class="confluenceTd"> factory.userName </td>
<td class="confluenceTd"> null </td>
</tr>
<tr>
<td class="confluenceTd"> factory.optimizeAcknowledge </td>
<td class="confluenceTd"> false </td>
</tr>
<tr>
<td class="confluenceTd"> factory.clientID </td>
<td class="confluenceTd"> null </td>
</tr>
<tr>
<td class="confluenceTd"> factory.objectMessageSerializationDefered </td>
<td class="confluenceTd"> false </td>
</tr>
<tr>
<td class="confluenceTd"> factory.asyncDispatch </td>
<td class="confluenceTd"> false </td>
</tr>
<tr>
<td class="confluenceTd"> factory.redeliveryPolicy.initialRedeliveryDelay </td>
<td class="confluenceTd"> 1000 </td>
</tr>
<tr>
<td class="confluenceTd"> factory.prefetchPolicy.queuePrefetch </td>
<td class="confluenceTd"> 1000 </td>
</tr>
<tr>
<td class="confluenceTd"> factory.redeliveryPolicy.maximumRedeliveries </td>
<td class="confluenceTd"> 5 </td>
</tr>
<tr>
<td class="confluenceTd"> factory.redeliveryPolicy.useCollisionAvoidance </td>
<td class="confluenceTd"> false </td>
</tr>
<tr>
<td class="confluenceTd"> factory.prefetchPolicy.maximumPendingMessageLimit </td>
<td class="confluenceTd"> 0 </td>
</tr>
<tr>
<td class="confluenceTd"> factory.redeliveryPolicy.useExponentialBackOff </td>
<td class="confluenceTd"> false </td>
</tr>
</tbody></table>
<h3><a name="ActiveMQPerformanceModuleUsersManual-Configurationforthethroughputsampler"></a>Configuration for the throughput sampler</h3>
<table border="1" class="confluenceTable"><tbody>
<tr>
<th class="confluenceTh"> Configuration Key </th>
<th class="confluenceTh"> Default Value </th>
<th class="confluenceTh"> Description </th>
</tr>
<tr>
<td class="confluenceTd"> tpSampler.duration </td>
<td class="confluenceTd"> 300000 </td>
<td class="confluenceTd"> The total duration (in ms) the sampler will run, including ramp up and ramp down time. </td>
</tr>
<tr>
<td class="confluenceTd"> tpSampler.rampUpTime </td>
<td class="confluenceTd"> 30000 </td>
<td class="confluenceTd"> The ramp up time of the sampler, sampling will only start after the ramp up time. </td>
</tr>
<tr>
<td class="confluenceTd"> tpSampler.rampDownTime </td>
<td class="confluenceTd"> 30000 </td>
<td class="confluenceTd"> The ramp down time of the sampler, sampling will stop when the sampler has executed for (duration - rampUpTime - rampDownTime) ms. </td>
</tr>
<tr>
<td class="confluenceTd"> tpSampler.interval </td>
<td class="confluenceTd"> 1000 </td>
<td class="confluenceTd"> The interval (in ms), the sampler will sample for data. </td>
</tr>
</tbody></table>
<h3><a name="ActiveMQPerformanceModuleUsersManual-Configurationforthecpusampler"></a>Configuration for the cpu sampler</h3>
<table border="1" class="confluenceTable"><tbody>
<tr>
<th class="confluenceTh"> Configuration Key </th>
<th class="confluenceTh"> Default Value </th>
<th class="confluenceTh"> Description </th>
</tr>
<tr>
<td class="confluenceTd"> cpuSampler.duration </td>
<td class="confluenceTd"> 300000 </td>
<td class="confluenceTd"> The total duration (in ms) the sampler will run, including ramp up and ramp down time. </td>
</tr>
<tr>
<td class="confluenceTd"> cpuSampler.rampUpTime </td>
<td class="confluenceTd"> 30000 </td>
<td class="confluenceTd"> The ramp up time of the sampler, sampling will only start after the ramp up time. </td>
</tr>
<tr>
<td class="confluenceTd"> cpuSampler.rampDownTime </td>
<td class="confluenceTd"> 30000 </td>
<td class="confluenceTd"> The ramp down time of the sampler, sampling will stop when the sampler has executed for (duration - rampUpTime - rampDownTime) ms. </td>
</tr>
<tr>
<td class="confluenceTd"> cpuSampler.interval </td>
<td class="confluenceTd"> 1000 </td>
<td class="confluenceTd"> The interval (in ms), the sampler will sample for data. </td>
</tr>
</tbody></table>

Setting up the Python environment

wget http://svn.zope.org/checkout/zc.buildout/trunk/bootstrap/bootstrap.py

Index: activemq-xmpp/pom.xml
===================================================================
--- activemq-xmpp/pom.xml (revision 780792)
+++ activemq-xmpp/pom.xml (working copy)
@@ -38,24 +38,24 @@
<repository>
<id>maven2-repository.dev.java.net</id>
<name>Java.net Maven 2 Repository</name>
- <url>https://maven2-repository.dev.java.net/nonav/repository</url>
+ <url>http://download.java.net/maven/2</url>
</repository>
<repository>
<id>maven-repository.dev.java.net</id>
<name>Java.net Maven 1 Repository (legacy)</name>
- <url>https://maven-repository.dev.java.net/nonav/repository</url>
+ <url>http://download.java.net/maven/1</url>
<layout>legacy</layout>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>maven2-repository.dev.java.net</id>
- <url>https://maven2-repository.dev.java.net/nonav/repository</url>
+ <url>http://download.java.net/maven/2</url>
</pluginRepository>
<pluginRepository>
<id>maven-repository.dev.java.net</id>
<name>Java.net Maven 1 Repository (legacy)</name>
- <url>https://maven-repository.dev.java.net/nonav/repository</url>
+ <url>http://download.java.net/maven/1</url>
<layout>legacy</layout>
</pluginRepository>
</pluginRepositories>
Index: activemq-perftest/pom.xml
===================================================================
--- activemq-perftest/pom.xml (revision 780792)
+++ activemq-perftest/pom.xml (working copy)
@@ -22,7 +22,7 @@
<parent>
<artifactId>activemq-parent</artifactId>
<groupId>org.apache.activemq</groupId>
- <version>5.2-SNAPSHOT</version>
+ <version>5.2.0</version>
</parent>
<artifactId>activemq-perftest</artifactId>
#!/usr/bin/env python
"""
This file is used to actually start the broker on the target system and have it behave.
"""
import os
import sys
import re
import subprocess
import logging
import optparse
import types
#from instances import aws_connect
logging.getLogger('boto').setLevel(logging.INFO)
log = logging.getLogger('activemq_stress')
def main():
usage = "usage: %prog [options]"
parser = optparse.OptionParser(usage)
parser.add_option("-u", "--up", dest="start",
action="store_true",
default=False,
help="Start the broker.")
parser.add_option("-d", "--down", dest="stop",
action="store_true",
default=False,
help="Stop the broker.")
parser.add_option("-t", "--status", dest="status",
action="store_true",
default=False,
help="Display status message for the broker")
parser.add_option("-c", "--connection-url", dest="connection_url",
action="store_true",
default=False,
help="Display connection URL for clients to use all active brokers in group [activemq-broker]")
parser.add_option("-l", "--local", dest="local",
action="store_false",
default=True,
help="all operations are only executed locally, and fail if there's remote connectivity required")
options, args = parser.parse_args()
if options.start and options.stop:
raise Exception, 'Cannot start and stop at the same time, decide what you want'
if options.start:
start_broker(options.local)
elif options.stop:
stop_broker()
if options.status:
print_broker_status()
if options.connection_url:
if options.local:
raise Exception, 'online is required'
else:
conn = aws_connect()
reservation = conn.get_all_instances()
def start_broker(local=True):
# TODO should we block, until it's running or waiting for the master?
log.info('starting activemq')
# TODO check implicitly on running brokers and ask for restart
cmd = os.path.join(activemq_home, 'bin', 'activemq')
if os.name == 'nt':
cmd += '.bat'
if local:
cmd += " xbean:file:" + os.path.join(config_home, "inmemory-activemq.xml")
std_log = file(os.path.join(log_dir, 'activemq_std.log'), 'a')
err_log = file(os.path.join(log_dir, 'activemq_err.log'), 'a')
process = subprocess.Popen(cmd,
shell=True,
stdout=std_log,
stderr=err_log)
# output,_ = call_command("%s" % cmd)
def get_broker_pids():
cmd = "ps aux | grep %s | grep -v grep | awk '{print $2}'" % activemq_home
log.debug("'%s'" % cmd)
process = subprocess.Popen(cmd,
shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
output,_ = process.communicate()
return [int(s) for s in output.splitlines()]
def print_broker_status():
cmd = "ps aux | grep %s | grep -v grep" % activemq_home
log.debug("'%s'" % cmd)
process = subprocess.Popen(cmd,
shell=True)
def stop_broker(pids=None):
# if called without argument, go on a killing spree!!
if not pids:
pids = get_broker_pids()
if type(pids) is types.ListType:
for pid in pids:
stop_broker(pid) # recursive
else:
log.info('[pid: %s] killing activemq' % pids)
log.debug("%s [%s]" % (pids, type(pids)))
os.kill(pids, 15) # 15 is SIG TERM, see man kill for numbers
def call_command(command):
log.warning("'%s'" % command)
#return (None, None)
if False:
process = subprocess.Popen(command,
shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
process = subprocess.Popen(command, shell=True)
log.warning("'%s'" % command)
return (None, None)
return process.wait()
def setup_dir_from_env(var_name, default=None, create_if_absent=False):
var = os.getenv(var_name)
if not var:
if default:
log.warn("%s wasn't defined in the environment" % var_name)
var = os.path.expanduser(default)
else:
raise Exception, "%s not defined, and no default defined either" % var_name
# check if it's a decent path
if not os.path.exists(var):
if create_if_absent:
os.makedirs(var)
return var
else:
raise Exception, "%s is defined as %s which is not a directory" % (var_name, var)
if not os.path.isdir(var):
raise Exception, "%s is defined as %s which is not a directory" % (var_name, var)
# if not os.path.isreadable(var):
# raise Exception, "%s is defined as %s is not readable" % (var_name, var)
# if not os.path.iswriteable(var):
# raise Exception, "%s is defined as %s is not writeable" % (var_name, var)
return var
activemq_home = setup_dir_from_env('ACTIVEMQ_HOME',
default='~/apache-activemq-5.2.0')
log_dir = setup_dir_from_env('STRESS_LOG_DIR',
default='~/test-logs',
create_if_absent=True)
script_path = os.path.join(sys.path[0], __name__.replace(".", "/")) # dir of the current executing script
script_home = os.path.dirname(script_path)
config_home = os.path.join(script_home, 'configs')
if __name__ == "__main__":
main()
<!--
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.
-->
<!-- START SNIPPET: xbean -->
<beans xmlns="http://activemq.apache.org/schema/core">
<broker useJmx="false" brokerName="defaultBroker" start="false" persistent="true" useShutdownHook="false" deleteAllMessagesOnStartup="true">
<persistenceAdapter>
<journaledJDBC journalLogFiles="4" journalLogFileSize="32768" useJournal="true" useQuickJournal="false" dataSource="#derby-ds" dataDirectory="target/defaultBroker-data"/>
</persistenceAdapter>
<transportConnectors>
<transportConnector name="default" uri="tcp://localhost:61616"/>
</transportConnectors>
</broker>
<!-- This xbean configuration file supports all the standard spring xml configuration options -->
<!-- Postgres DataSource Sample Setup -->
<!--
<bean id="postgres-ds" class="org.postgresql.ds.PGPoolingDataSource">
<property name="serverName" value="localhost"/>
<property name="databaseName" value="activemq"/>
<property name="portNumber" value="0"/>
<property name="user" value="activemq"/>
<property name="password" value="activemq"/>
<property name="dataSourceName" value="postgres"/>
<property name="initialConnections" value="1"/>
<property name="maxConnections" value="10"/>
</bean>
-->
<!-- MySql DataSource Sample Setup -->
<!--
<bean id="mysql-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost/activemq?relaxAutoCommit=true"/>
<property name="username" value="activemq"/>
<property name="password" value="activemq"/>
<property name="poolPreparedStatements" value="true"/>
</bean>
-->
<!-- Embedded Derby DataSource Sample Setup -->
<bean id="derby-ds" class="org.apache.derby.jdbc.EmbeddedDataSource">
<property name="databaseName" value="derbydb"/>
<property name="createDatabase" value="create"/>
</bean>
</beans>
<!-- END SNIPPET: xbean -->
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:amq="http://activemq.apache.org/schema/core"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd
http://activemq.apache.org/camel/schema/spring http://activemq.apache.org/camel/schema/spring/camel-spring.xsd">
<!-- Allows us to use system properties as variables in this configuration file -->
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<value>file:///${activemq.base}/conf/credentials.properties</value>
</property>
</bean>
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="localhost">
<!-- Use the following to configure how ActiveMQ is exposed in JMX -->
<managementContext>
<managementContext createConnector="false"/>
</managementContext>
<persistenceAdapter>
<jdbcPersistenceAdapter dataSource="#mssql-jtds-ds" adapter="#sqlserver-adapter"/>
</persistenceAdapter>
<!-- The maximum about of space the broker will use before slowing down producers -->
<systemUsage>
<systemUsage>
<memoryUsage>
<memoryUsage limit="200 mb"/>
</memoryUsage>
<tempUsage>
<tempUsage limit="500 mb"/>
</tempUsage>
</systemUsage>
</systemUsage>
<transportConnectors>
<transportConnector name="openwire" uri="tcp://localhost:61616"/>
</transportConnectors>
<!-- Ignored
<plugins>
<jaasAuthenticationPlugin configuration="activemq-domain" />
</plugins>
-->
</broker>
<!-- Uncomment to create a command agent to respond to
message based admin commands on the ActiveMQ.Agent topic -->
<!--
<commandAgent xmlns="http://activemq.apache.org/schema/core" brokerUrl="vm://localhost" username="${activemq.username}" password="${activemq.password}"/>
-->
<!-- An embedded servlet engine for serving up the Admin console -->
<jetty xmlns="http://mortbay.com/schemas/jetty/1.0">
<connectors>
<nioConnector port="8161"/>
</connectors>
<handlers>
<webAppContext contextPath="/admin" resourceBase="${activemq.base}/webapps/admin" logUrlOnStart="true"/>
<webAppContext contextPath="/demo" resourceBase="${activemq.base}/webapps/demo" logUrlOnStart="true"/>
<webAppContext contextPath="/fileserver" resourceBase="${activemq.base}/webapps/fileserver" logUrlOnStart="true"/>
</handlers>
</jetty>
<!-- This xbean configuration file supports all the standard spring xml configuration options -->
<!-- Postgres DataSource Sample Setup -->
<!--
<bean id="postgres-ds" class="org.postgresql.ds.PGPoolingDataSource">
<property name="serverName" value="localhost"/>
<property name="databaseName" value="activemq"/>
<property name="portNumber" value="0"/>
<property name="user" value="activemq"/>
<property name="password" value="activemq"/>
<property name="dataSourceName" value="postgres"/>
<property name="initialConnections" value="1"/>
<property name="maxConnections" value="10"/>
</bean>
-->
<!-- JTDS (DBCP) DataSource Sample Setup -->
<bean id="mssql-jtds-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="net.sourceforge.jtds.jdbcx.JtdsDataSource"/>
<property name="url" value="jdbc:jtds:sqlserver://HOST:1433;DatabaseName=ACTIVEMQ"/>
<property name="username" value="USERNAME"/>
<property name="password" value="PASSWORD"/>
<property name="poolPreparedStatements" value="false"/>
<property name="maxWait" value="20"/>
<property name="maxIdle" value="10"/>
<property name="maxActive" value="20"/>
<property name="validationQuery" value="select cast('10' as integer)"/>
<property name="testOnBorrow" value="false"/>
<property name="defaultAutoCommit" value="false"/>
</bean>
<bean id="sqlserver-adapter" class="ch.bedag.ste.opensource.activemq.jdbc.adapter.SqlServerJDBCAdapter"/>
<bean id="ds-exporter" class="org.springframework.jmx.export.MBeanExporter" lazy-init="false">
<property name="beans">
<map>
<entry key="DataSource:name=mssql" value-ref="mssql-jtds-ds"/>
</map>
</property>
<property name="registrationBehaviorName" value="REGISTRATION_REPLACE_EXISTING"/>
<property name="assembler">
<bean class="org.springframework.jmx.export.assembler.MethodNameBasedMBeanInfoAssembler">
<property name="managedMethods">
<value>getDriverClassName,getDefaultAutoCommit,getLogAbandoned,setLogAbandoned,getMaxActive,getMaxIdle,getMaxOpenPreparedStatements,getMaxWait,getMinIdle,getNumActive,getNumIdle,isPoolPreparedStatements,getUrl,getUsername,getValidationQuery,getTestOnBorrow,getTestOnReturn,getTestWhileIdle</value>
</property>
</bean>
</property>
</bean>
</beans>
#!/bin/bash
#
# Preparation script for the image. There are manual elements in this script
# * the installation of java requires accepting the license
# * the installation of hyperic requires setting the ip of the hyperic server
#
# Need to manually accept the license
sudo apt-get install -y sun-java6-jdk
sudo apt-get install -y ant ant-optional
mkdir downloads
cd downloads
# download everything that's necessary
wget http://mirror.cloudera.com/apache/activemq/apache-activemq/5.2.0/apache-activemq-5.2.0-bin.tar.gz
wget http://internap.dl.sourceforge.net/sourceforge/hyperic-hq/hyperic-hq-installer-4.1.2-1053-x86-linux.tgz
#wget http://internap.dl.sourceforge.net/sourceforge/hyperic-hq/hyperic-hq-agent-4.1.2-1053-noJRE.tgz
wget http://www.bizdirusa.com/mirrors/apache/maven/binaries/apache-maven-2.1.0-bin.tar.bz2
wget https://m2proxy.atlassian.com/repository/public/net/sourceforge/jtds/jtds/1.2.2/jtds-1.2.2.jar
cd
# unpack the downloads
tar -xzvf downloads/apache-activemq-5.2.0-bin.tar.gz
tar -xzvf downloads/hyperic-hq-installer-4.1.2-1053-x86-linux.tgz
#tar -xzvf downloads/hyperic-hq-agent-4.1.2-1053-noJRE.tgz
tar -xjvf downloads/apache-maven-2.1.0-bin.tar.bz2
# installing hyperic
sudo adduser --system hyperic
sudo -u hyperic hyperic-hq-installer/setup.sh
sudo hyperic-hq-installer/installer-4.1.2/data/hqdb/tune-os.sh
IP="$(dig $(hostname) '+short')"
sudo sed -i -e "s/#agent.setup.camPort=\(.*\)/agent.setup.camPort=\1/g" /home/hyperic/agent-4.1.2/conf/agent.properties
sudo sed -i -e "s/#agent.setup.camSSLPort=\(.*\)/agent.setup.camSSLPort=\1/g" /home/hyperic/agent-4.1.2/conf/agent.properties
sudo sed -i -e "s/#agent.setup.camSecure=\(.*\)/agent.setup.camSecure=no/g" /home/hyperic/agent-4.1.2/conf/agent.properties
sudo sed -i -e "s/#agent.setup.camLogin=\(.*\)/agent.setup.camLogin=\1/g" /home/hyperic/agent-4.1.2/conf/agent.properties
sudo sed -i -e "s/#agent.setup.camPword=\(.*\)/agent.setup.camPword=\1/g" /home/hyperic/agent-4.1.2/conf/agent.properties
sudo sed -i -e "s/#agent.setup.agentIP=\(.*\)/agent.setup.agentIP=$IP/g" /home/hyperic/agent-4.1.2/conf/agent.properties
sudo sed -i -e "s/#agent.setup.agentPort=\(.*\)/agent.setup.agentPort=2144/g" /home/hyperic/agent-4.1.2/conf/agent.properties
#agent.setup.agentIP
# later - starting hyperic (asks for hyperic server IP)
# sudo -u hyperic /home/hyperic/agent-4.1.2/bin/hq-agent.sh start
#
# Prepare Java/Maven execution
#
export JAVA_HOME=/usr/lib/jvm/java-6-sun
export M2_HOME=~/apache-maven-2.1.0
export M2=$M2_HOME/bin
export PATH=$PATH:$M2
export MAVEN_OPTS=-Xmx512M
#
# Checkout & Build ActiveMQ
#
mkdir -p source/svn; cd source/svn
svn co https://svn.apache.org/repos/asf/activemq/tags/activemq-5.2.0 activemq-5.2.0
cd activemq-5.2.0
patch -p0 -i ~/conf/various/activemq.patch
mvn -Dtest=false -DfailIfNoTests=false clean install
# build maven-perf-test-plugin (and the rest of tooling)
cd activemq-tooling
mvn clean install
cd ..
mvn clean
cd
# Install jstatd
# http://java.sun.com/javase/6/docs/technotes/tools/share/jstatd.html
cat <<'EOF' | tee ~.java.policy > /dev/null
grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.AllPermission;
};
EOF
# additional deps into maven2 repo
# curl timkay.com/aws/aws -o aws; perl aws --install
# sudo port install tuntaposx
# sudo launchctl load -w /Library/LaunchDaemons/org.macports.tuntaposx.plist
#!/usr/bin/env python
"""
This script can help in building an ami. It has parts which are invoked on the development machine
(later on referred as the AWS monitor). Other parts can be invoked directly on the target machine.
"""
import os
import sys
import re
import subprocess
import logging
import optparse
import types
aws_monitor_path = os.path.join(os.path.expanduser("~"), ".aws_monitor")
is_monitor = os.path.exists(aws_monitor_path)
aws_monitor =
if is_monitor(yaml):
yaml.load(aws_monitor)
logging.getLogger('boto').setLevel(logging.INFO)
log = logging.getLogger('activemq_stress')
def main():
usage = "usage: %prog [options]"
parser = optparse.OptionParser(usage)
parser.add_option("-u", "--up", dest="start",
action="store_true",
default=False,
help="Start the broker.")
parser.add_option("-d", "--down", dest="stop",
action="store_true",
default=False,
help="Stop the broker.")
parser.add_option("-t", "--status", dest="status",
action="store_true",
default=False,
help="Display status message for the broker")
parser.add_option("-c", "--connection-url", dest="connection_url",
action="store_true",
default=False,
help="Display connection URL for clients to use all active brokers in group [activemq-broker]")
parser.add_option("-l", "--local", dest="local",
action="store_false",
default=True,
help="all operations are only executed locally, and fail if there's remote connectivity required")
if is_monitor:
print "Running as Monitor"
else:
print "Running on a AWS host"
options, args = parser.parse_args()
if options.start and options.stop:
raise Exception, 'Cannot start and stop at the same time, decide what you want'
if options.start:
start_broker(options.local)
elif options.stop:
stop_broker()
if options.status:
print_broker_status()
if options.connection_url:
if options.local:
raise Exception, 'online is required'
else:
conn = aws_connect()
reservation = conn.get_all_instances()
def assertMonitor():
if not is_monitor:
raise Exception "This command can only be executed when running as Monitor (development machine)"
def assertInstance():
if is_monitor:
raise Exception "This command can only be executed when running as Instance (on AWS machine)"
def send_keys(instance_address):
"Can be used send the keys from the local machine to the remote instance"
assertMonitor()
# TODO should we block, until it's running or waiting for the master?
cmd = "scp -i %s ubuntu@%s:/mnt/" % (aws_monitor.ami_key,
aws_monitor.username,
instance_address)
log.info("executing '%s'" % cmd)
# TODO fix the input output stream (here we are executing blocking)
std_log = file(os.path.join(log_dir, 'activemq_std.log'), 'a')
err_log = file(os.path.join(log_dir, 'activemq_err.log'), 'a')
process = subprocess.Popen(cmd,
shell=True,
stdout=std_log,
stderr=err_log)
# output,_ = call_command("%s" % cmd)
def move_certs_to_mnt():
"""If we don't have the necessary rights to copy the certs directly to mnt,
then this function moves them out of the home directory and into the mnt
(with sudo)"""
cmd = "sudo mv *.pem /mnt/"
subprocess.Popen(cmd)
def execute_bundle_vol():
cmd = "ec2-bundle-vol -d /mnt -k /mnt/%s -c /mnt/%s -u %s -r %s -p %s" % (key,
cert,
account_id,
platform,
ami_name)
def upload_bundle():
cmd = "ec2-upload-bundle -b %s -m /mnt/%s.manifest.xml -a %s -s %s " % (bucket,
ami_name,
access_key,
access_secret)
def register_ami():
cmd = "ec2-register %s/%s.manifest.xml" % (bucket,
ami_name)
def call_command(command):
log.warning("'%s'" % command)
if False:
process = subprocess.Popen(command,
shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
process = subprocess.Popen(command, shell=True)
log.warning("'%s'" % command)
return (None, None)
return process.wait()
if __name__ == "__main__":
main()
## ---------------------------------------------------------------------------
## 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.
## ---------------------------------------------------------------------------
# Consumer System Settings
sysTest.spiClass=org.apache.activemq.tool.spi.ActiveMQReflectionSPI
sysTest.reportType=xml
sysTest.destDistro=equal
sysTest.samplers=tp
sysTest.numClients=1
sysTest.totalDests=1
sysTest.reportDir=./
# Consumer Client Settings
consumer.durable=false
consumer.asyncRecv=true
consumer.destName=queue://TEST.FOO
consumer.sessTransacted=false
consumer.sessAckMode=autoAck
consumer.destComposite=false
consumer.unsubscribe=true
# 5 mins receive duration
consumer.recvType=time
consumer.recvDuration=300000
# 1 million messages receive
# consumer.recvType=count
# consumer.recvCount=1000000
# Throughput Sampler Settings
# 5 mins sampling duration
# 1 min ramp up and ramp down time
# 1 sec sampling interval
tpSampler.duration=300000
tpSampler.rampUpTime=60000
tpSampler.rampDownTime=60000
tpSampler.interval=1000
# CPU Sampler Settings
# 5 mins sampling duration
# 1 min ramp up and ramp down time
# 1 sec sampling interval
# cpuSampler.duration=300000
# cpuSampler.rampUpTime=60000
# cpuSampler.rampDownTime=60000
# cpuSampler.interval=1000
# AMQ Connection Factory Settings
# Use default settings
# factory.brokerURL=tcp://localhost:61616
# factory.useAsyncSend=false
# factory.asyncDispatch=false
# factory.alwaysSessionAsync=true
# factory.useCompression=false
# factory.optimizeAcknowledge=false
# factory.objectMessageSerializationDefered=false
# factory.disableTimeStampsByDefault=false
# factory.optimizedMessageDispatch=true
# factory.useRetroactiveConsumer=false
# factory.copyMessageOnSend=true
# factory.closeTimeout=15000
# factory.userName=null
# factory.clientID=null
# factory.password=null
# factory.prefetchPolicy.durableTopicPrefetch=100
# factory.prefetchPolicy.topicPrefetch=32766
# factory.prefetchPolicy.queueBrowserPrefetch=500
# factory.prefetchPolicy.queuePrefetch=1000
# factory.prefetchPolicy.inputStreamPrefetch=100
# factory.prefetchPolicy.maximumPendingMessageLimit=0
# factory.prefetchPolicy.optimizeDurableTopicPrefetch=1000
# factory.redeliveryPolicy.initialRedeliveryDelay=1000
# factory.redeliveryPolicy.maximumRedeliveries=5
# factory.redeliveryPolicy.useCollisionAvoidance=false
# factory.redeliveryPolicy.useExponentialBackOff=false
# factory.redeliveryPolicy.collisionAvoidancePercent=15
# factory.redeliveryPolicy.backOffMultiplier=5
## ---------------------------------------------------------------------------
## 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.
## ---------------------------------------------------------------------------
# Consumer System Settings
sysTest.spiClass=org.apache.activemq.tool.spi.ActiveMQReflectionSPI
sysTest.reportType=xml
sysTest.destDistro=equal
sysTest.samplers=tp
sysTest.numClients=1
sysTest.totalDests=1
sysTest.reportDir=./
# Consumer Client Settings
consumer.durable=true
consumer.asyncRecv=true
consumer.destName=topic://TEST.FOO
consumer.sessTransacted=false
consumer.sessAckMode=autoAck
consumer.destComposite=false
consumer.unsubscribe=true
# 5 mins receive duration
consumer.recvType=time
consumer.recvDuration=300000
# 1 million messages receive
# consumer.recvType=count
# consumer.recvCount=1000000
# Throughput Sampler Settings
# 5 mins sampling duration
# 1 min ramp up and ramp down time
# 1 sec sampling interval
tpSampler.duration=300000
tpSampler.rampUpTime=60000
tpSampler.rampDownTime=60000
tpSampler.interval=1000
# CPU Sampler Settings
# 5 mins sampling duration
# 1 min ramp up and ramp down time
# 1 sec sampling interval
# cpuSampler.duration=300000
# cpuSampler.rampUpTime=60000
# cpuSampler.rampDownTime=60000
# cpuSampler.interval=1000
# AMQ Connection Factory Settings
# Use default settings
# factory.brokerURL=tcp://localhost:61616
# factory.useAsyncSend=false
# factory.asyncDispatch=false
# factory.alwaysSessionAsync=true
# factory.useCompression=false
# factory.optimizeAcknowledge=false
# factory.objectMessageSerializationDefered=false
# factory.disableTimeStampsByDefault=false
# factory.optimizedMessageDispatch=true
# factory.useRetroactiveConsumer=false
# factory.copyMessageOnSend=true
# factory.closeTimeout=15000
# factory.userName=null
# factory.clientID=null
# factory.password=null
# factory.prefetchPolicy.durableTopicPrefetch=100
# factory.prefetchPolicy.topicPrefetch=32766
# factory.prefetchPolicy.queueBrowserPrefetch=500
# factory.prefetchPolicy.queuePrefetch=1000
# factory.prefetchPolicy.inputStreamPrefetch=100
# factory.prefetchPolicy.maximumPendingMessageLimit=0
# factory.prefetchPolicy.optimizeDurableTopicPrefetch=1000
# factory.redeliveryPolicy.initialRedeliveryDelay=1000
# factory.redeliveryPolicy.maximumRedeliveries=5
# factory.redeliveryPolicy.useCollisionAvoidance=false
# factory.redeliveryPolicy.useExponentialBackOff=false
# factory.redeliveryPolicy.collisionAvoidancePercent=15
# factory.redeliveryPolicy.backOffMultiplier=5
## ---------------------------------------------------------------------------
## 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.
## ---------------------------------------------------------------------------
# Consumer System Settings
sysTest.spiClass=org.apache.activemq.tool.spi.ActiveMQReflectionSPI
sysTest.reportType=xml
sysTest.destDistro=equal
sysTest.samplers=tp
sysTest.numClients=1
sysTest.totalDests=1
sysTest.reportDir=./
# Consumer Client Settings
consumer.durable=false
consumer.asyncRecv=true
consumer.destName=topic://TEST.FOO
consumer.sessTransacted=false
consumer.sessAckMode=autoAck
consumer.destComposite=false
consumer.unsubscribe=true
# 5 mins receive duration
consumer.recvType=time
consumer.recvDuration=300000
# 1 million messages receive
# consumer.recvType=count
# consumer.recvCount=1000000
# Throughput Sampler Settings
# 5 mins sampling duration
# 1 min ramp up and ramp down time
# 1 sec sampling interval
tpSampler.duration=300000
tpSampler.rampUpTime=60000
tpSampler.rampDownTime=60000
tpSampler.interval=1000
# CPU Sampler Settings
# 5 mins sampling duration
# 1 min ramp up and ramp down time
# 1 sec sampling interval
# cpuSampler.duration=300000
# cpuSampler.rampUpTime=60000
# cpuSampler.rampDownTime=60000
# cpuSampler.interval=1000
# AMQ Connection Factory Settings
# Use default settings
# factory.brokerURL=tcp://localhost:61616
# factory.useAsyncSend=false
# factory.asyncDispatch=false
# factory.alwaysSessionAsync=true
# factory.useCompression=false
# factory.optimizeAcknowledge=false
# factory.objectMessageSerializationDefered=false
# factory.disableTimeStampsByDefault=false
# factory.optimizedMessageDispatch=true
# factory.useRetroactiveConsumer=false
# factory.copyMessageOnSend=true
# factory.closeTimeout=15000
# factory.userName=null
# factory.clientID=null
# factory.password=null
# factory.prefetchPolicy.durableTopicPrefetch=100
# factory.prefetchPolicy.topicPrefetch=32766
# factory.prefetchPolicy.queueBrowserPrefetch=500
# factory.prefetchPolicy.queuePrefetch=1000
# factory.prefetchPolicy.inputStreamPrefetch=100
# factory.prefetchPolicy.maximumPendingMessageLimit=0
# factory.prefetchPolicy.optimizeDurableTopicPrefetch=1000
# factory.redeliveryPolicy.initialRedeliveryDelay=1000
# factory.redeliveryPolicy.maximumRedeliveries=5
# factory.redeliveryPolicy.useCollisionAvoidance=false
# factory.redeliveryPolicy.useExponentialBackOff=false
# factory.redeliveryPolicy.collisionAvoidancePercent=15
# factory.redeliveryPolicy.backOffMultiplier=5
## ---------------------------------------------------------------------------
## 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.
## ---------------------------------------------------------------------------
# Consumer System Settings
sysTest.spiClass=org.apache.activemq.tool.spi.ActiveMQReflectionSPI
sysTest.reportType=xml
sysTest.destDistro=equal
sysTest.samplers=tp
sysTest.numClients=10
sysTest.totalDests=1
sysTest.reportDir=./
# Consumer Client Settings
consumer.durable=false
consumer.asyncRecv=true
consumer.destName=queue://TEST.FOO
consumer.sessTransacted=false
consumer.sessAckMode=autoAck
consumer.destComposite=false
consumer.unsubscribe=true
# 5 mins receive duration
consumer.recvType=time
consumer.recvDuration=300000
# 1 million messages receive
# consumer.recvType=count
# consumer.recvCount=1000000
# Throughput Sampler Settings
# 5 mins sampling duration
# 1 min ramp up and ramp down time
# 1 sec sampling interval
tpSampler.duration=300000
tpSampler.rampUpTime=60000
tpSampler.rampDownTime=60000
tpSampler.interval=1000
# CPU Sampler Settings
# 5 mins sampling duration
# 1 min ramp up and ramp down time
# 1 sec sampling interval
# cpuSampler.duration=300000
# cpuSampler.rampUpTime=60000
# cpuSampler.rampDownTime=60000
# cpuSampler.interval=1000
# AMQ Connection Factory Settings
# Use default settings
# factory.brokerURL=tcp://localhost:61616
# factory.useAsyncSend=false
# factory.asyncDispatch=false
# factory.alwaysSessionAsync=true
# factory.useCompression=false
# factory.optimizeAcknowledge=false
# factory.objectMessageSerializationDefered=false
# factory.disableTimeStampsByDefault=false
# factory.optimizedMessageDispatch=true
# factory.useRetroactiveConsumer=false
# factory.copyMessageOnSend=true
# factory.closeTimeout=15000
# factory.userName=null
# factory.clientID=null
# factory.password=null
# factory.prefetchPolicy.durableTopicPrefetch=100
# factory.prefetchPolicy.topicPrefetch=32766
# factory.prefetchPolicy.queueBrowserPrefetch=500
# factory.prefetchPolicy.queuePrefetch=1000
# factory.prefetchPolicy.inputStreamPrefetch=100
# factory.prefetchPolicy.maximumPendingMessageLimit=0
# factory.prefetchPolicy.optimizeDurableTopicPrefetch=1000
# factory.redeliveryPolicy.initialRedeliveryDelay=1000
# factory.redeliveryPolicy.maximumRedeliveries=5
# factory.redeliveryPolicy.useCollisionAvoidance=false
# factory.redeliveryPolicy.useExponentialBackOff=false
# factory.redeliveryPolicy.collisionAvoidancePercent=15
# factory.redeliveryPolicy.backOffMultiplier=5
## ---------------------------------------------------------------------------
## 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.
## ---------------------------------------------------------------------------
# Consumer System Settings
sysTest.spiClass=org.apache.activemq.tool.spi.ActiveMQReflectionSPI
sysTest.reportType=xml
sysTest.destDistro=equal
sysTest.samplers=tp
sysTest.numClients=10
sysTest.totalDests=1
sysTest.reportDir=./
# Consumer Client Settings
consumer.durable=true
consumer.asyncRecv=true
consumer.destName=topic://TEST.FOO
consumer.sessTransacted=false
consumer.sessAckMode=autoAck
consumer.destComposite=false
consumer.unsubscribe=true
# 5 mins receive duration
consumer.recvType=time
consumer.recvDuration=300000
# 1 million messages receive
# consumer.recvType=count
# consumer.recvCount=1000000
# Throughput Sampler Settings
# 5 mins sampling duration
# 1 min ramp up and ramp down time
# 1 sec sampling interval
tpSampler.duration=300000
tpSampler.rampUpTime=60000
tpSampler.rampDownTime=60000
tpSampler.interval=1000
# CPU Sampler Settings
# 5 mins sampling duration
# 1 min ramp up and ramp down time
# 1 sec sampling interval
# cpuSampler.duration=300000
# cpuSampler.rampUpTime=60000
# cpuSampler.rampDownTime=60000
# cpuSampler.interval=1000
# AMQ Connection Factory Settings
# Use default settings
# factory.brokerURL=tcp://localhost:61616
# factory.useAsyncSend=false
# factory.asyncDispatch=false
# factory.alwaysSessionAsync=true
# factory.useCompression=false
# factory.optimizeAcknowledge=false
# factory.objectMessageSerializationDefered=false
# factory.disableTimeStampsByDefault=false
# factory.optimizedMessageDispatch=true
# factory.useRetroactiveConsumer=false
# factory.copyMessageOnSend=true
# factory.closeTimeout=15000
# factory.userName=null
# factory.clientID=null
# factory.password=null
# factory.prefetchPolicy.durableTopicPrefetch=100
# factory.prefetchPolicy.topicPrefetch=32766
# factory.prefetchPolicy.queueBrowserPrefetch=500
# factory.prefetchPolicy.queuePrefetch=1000
# factory.prefetchPolicy.inputStreamPrefetch=100
# factory.prefetchPolicy.maximumPendingMessageLimit=0
# factory.prefetchPolicy.optimizeDurableTopicPrefetch=1000
# factory.redeliveryPolicy.initialRedeliveryDelay=1000
# factory.redeliveryPolicy.maximumRedeliveries=5
# factory.redeliveryPolicy.useCollisionAvoidance=false
# factory.redeliveryPolicy.useExponentialBackOff=false
# factory.redeliveryPolicy.collisionAvoidancePercent=15
# factory.redeliveryPolicy.backOffMultiplier=5
## ---------------------------------------------------------------------------
## 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.
## ---------------------------------------------------------------------------
# Consumer System Settings
sysTest.spiClass=org.apache.activemq.tool.spi.ActiveMQReflectionSPI
sysTest.reportType=xml
sysTest.destDistro=equal
sysTest.samplers=tp
sysTest.numClients=10
sysTest.totalDests=1
sysTest.reportDir=./
# Consumer Client Settings
consumer.durable=false
consumer.asyncRecv=true
consumer.destName=topic://TEST.FOO
consumer.sessTransacted=false
consumer.sessAckMode=autoAck
consumer.destComposite=false
consumer.unsubscribe=true
# 5 mins receive duration
consumer.recvType=time
consumer.recvDuration=300000
# 1 million messages receive
# consumer.recvType=count
# consumer.recvCount=1000000
# Throughput Sampler Settings
# 5 mins sampling duration
# 1 min ramp up and ramp down time
# 1 sec sampling interval
tpSampler.duration=300000
tpSampler.rampUpTime=60000
tpSampler.rampDownTime=60000
tpSampler.interval=1000
# CPU Sampler Settings
# 5 mins sampling duration
# 1 min ramp up and ramp down time
# 1 sec sampling interval
# cpuSampler.duration=300000
# cpuSampler.rampUpTime=60000
# cpuSampler.rampDownTime=60000
# cpuSampler.interval=1000
# AMQ Connection Factory Settings
# Use default settings
# factory.brokerURL=tcp://localhost:61616
# factory.useAsyncSend=false
# factory.asyncDispatch=false
# factory.alwaysSessionAsync=true
# factory.useCompression=false
# factory.optimizeAcknowledge=false
# factory.objectMessageSerializationDefered=false
# factory.disableTimeStampsByDefault=false
# factory.optimizedMessageDispatch=true
# factory.useRetroactiveConsumer=false
# factory.copyMessageOnSend=true
# factory.closeTimeout=15000
# factory.userName=null
# factory.clientID=null
# factory.password=null
# factory.prefetchPolicy.durableTopicPrefetch=100
# factory.prefetchPolicy.topicPrefetch=32766
# factory.prefetchPolicy.queueBrowserPrefetch=500
# factory.prefetchPolicy.queuePrefetch=1000
# factory.prefetchPolicy.inputStreamPrefetch=100
# factory.prefetchPolicy.maximumPendingMessageLimit=0
# factory.prefetchPolicy.optimizeDurableTopicPrefetch=1000
# factory.redeliveryPolicy.initialRedeliveryDelay=1000
# factory.redeliveryPolicy.maximumRedeliveries=5
# factory.redeliveryPolicy.useCollisionAvoidance=false
# factory.redeliveryPolicy.useExponentialBackOff=false
# factory.redeliveryPolicy.collisionAvoidancePercent=15
# factory.redeliveryPolicy.backOffMultiplier=5
## ---------------------------------------------------------------------------
## 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.
## ---------------------------------------------------------------------------
# Consumer System Settings
sysTest.spiClass=org.apache.activemq.tool.spi.ActiveMQReflectionSPI
sysTest.reportType=xml
sysTest.destDistro=equal
sysTest.samplers=tp
sysTest.numClients=10
sysTest.totalDests=10
sysTest.reportDir=./
# Consumer Client Settings
consumer.durable=false
consumer.asyncRecv=true
consumer.destName=queue://TEST.FOO
consumer.sessTransacted=false
consumer.sessAckMode=autoAck
consumer.destComposite=false
consumer.unsubscribe=true
# 5 mins receive duration
consumer.recvType=time
consumer.recvDuration=300000
# 1 million messages receive
# consumer.recvType=count
# consumer.recvCount=1000000
# Throughput Sampler Settings
# 5 mins sampling duration
# 1 min ramp up and ramp down time
# 1 sec sampling interval
tpSampler.duration=300000
tpSampler.rampUpTime=60000
tpSampler.rampDownTime=60000
tpSampler.interval=1000
# CPU Sampler Settings
# 5 mins sampling duration
# 1 min ramp up and ramp down time
# 1 sec sampling interval
# cpuSampler.duration=300000
# cpuSampler.rampUpTime=60000
# cpuSampler.rampDownTime=60000
# cpuSampler.interval=1000
# AMQ Connection Factory Settings
# Use default settings
# factory.brokerURL=tcp://localhost:61616
# factory.useAsyncSend=false
# factory.asyncDispatch=false
# factory.alwaysSessionAsync=true
# factory.useCompression=false
# factory.optimizeAcknowledge=false
# factory.objectMessageSerializationDefered=false
# factory.disableTimeStampsByDefault=false
# factory.optimizedMessageDispatch=true
# factory.useRetroactiveConsumer=false
# factory.copyMessageOnSend=true
# factory.closeTimeout=15000
# factory.userName=null
# factory.clientID=null
# factory.password=null
# factory.prefetchPolicy.durableTopicPrefetch=100
# factory.prefetchPolicy.topicPrefetch=32766
# factory.prefetchPolicy.queueBrowserPrefetch=500
# factory.prefetchPolicy.queuePrefetch=1000
# factory.prefetchPolicy.inputStreamPrefetch=100
# factory.prefetchPolicy.maximumPendingMessageLimit=0
# factory.prefetchPolicy.optimizeDurableTopicPrefetch=1000
# factory.redeliveryPolicy.initialRedeliveryDelay=1000
# factory.redeliveryPolicy.maximumRedeliveries=5
# factory.redeliveryPolicy.useCollisionAvoidance=false
# factory.redeliveryPolicy.useExponentialBackOff=false
# factory.redeliveryPolicy.collisionAvoidancePercent=15
# factory.redeliveryPolicy.backOffMultiplier=5
## ---------------------------------------------------------------------------
## 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.
## ---------------------------------------------------------------------------
# Consumer System Settings
sysTest.spiClass=org.apache.activemq.tool.spi.ActiveMQReflectionSPI
sysTest.reportType=xml
sysTest.destDistro=equal
sysTest.samplers=tp
sysTest.numClients=10
sysTest.totalDests=10
sysTest.reportDir=./
# Consumer Client Settings
consumer.durable=true
consumer.asyncRecv=true
consumer.destName=topic://TEST.FOO
consumer.sessTransacted=false
consumer.sessAckMode=autoAck
consumer.destComposite=false
consumer.unsubscribe=true
# 5 mins receive duration
consumer.recvType=time
consumer.recvDuration=300000
# 1 million messages receive
# consumer.recvType=count
# consumer.recvCount=1000000
# Throughput Sampler Settings
# 5 mins sampling duration
# 1 min ramp up and ramp down time
# 1 sec sampling interval
tpSampler.duration=300000
tpSampler.rampUpTime=60000
tpSampler.rampDownTime=60000
tpSampler.interval=1000
# CPU Sampler Settings
# 5 mins sampling duration
# 1 min ramp up and ramp down time
# 1 sec sampling interval
# cpuSampler.duration=300000
# cpuSampler.rampUpTime=60000
# cpuSampler.rampDownTime=60000
# cpuSampler.interval=1000
# AMQ Connection Factory Settings
# Use default settings
# factory.brokerURL=tcp://localhost:61616
# factory.useAsyncSend=false
# factory.asyncDispatch=false
# factory.alwaysSessionAsync=true
# factory.useCompression=false
# factory.optimizeAcknowledge=false
# factory.objectMessageSerializationDefered=false
# factory.disableTimeStampsByDefault=false
# factory.optimizedMessageDispatch=true
# factory.useRetroactiveConsumer=false
# factory.copyMessageOnSend=true
# factory.closeTimeout=15000
# factory.userName=null
# factory.clientID=null
# factory.password=null
# factory.prefetchPolicy.durableTopicPrefetch=100
# factory.prefetchPolicy.topicPrefetch=32766
# factory.prefetchPolicy.queueBrowserPrefetch=500
# factory.prefetchPolicy.queuePrefetch=1000
# factory.prefetchPolicy.inputStreamPrefetch=100
# factory.prefetchPolicy.maximumPendingMessageLimit=0
# factory.prefetchPolicy.optimizeDurableTopicPrefetch=1000
# factory.redeliveryPolicy.initialRedeliveryDelay=1000
# factory.redeliveryPolicy.maximumRedeliveries=5
# factory.redeliveryPolicy.useCollisionAvoidance=false
# factory.redeliveryPolicy.useExponentialBackOff=false
# factory.redeliveryPolicy.collisionAvoidancePercent=15
# factory.redeliveryPolicy.backOffMultiplier=5
## ---------------------------------------------------------------------------
## 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.
## ---------------------------------------------------------------------------
# Consumer System Settings
sysTest.spiClass=org.apache.activemq.tool.spi.ActiveMQReflectionSPI
sysTest.reportType=xml
sysTest.destDistro=equal
sysTest.samplers=tp
sysTest.numClients=10
sysTest.totalDests=10
sysTest.reportDir=./
# Consumer Client Settings
consumer.durable=false
consumer.asyncRecv=true
consumer.destName=topic://TEST.FOO
consumer.sessTransacted=false
consumer.sessAckMode=autoAck
consumer.destComposite=false
consumer.unsubscribe=true
# 5 mins receive duration
consumer.recvType=time
consumer.recvDuration=300000
# 1 million messages receive
# consumer.recvType=count
# consumer.recvCount=1000000
# Throughput Sampler Settings
# 5 mins sampling duration
# 1 min ramp up and ramp down time
# 1 sec sampling interval
tpSampler.duration=300000
tpSampler.rampUpTime=60000
tpSampler.rampDownTime=60000
tpSampler.interval=1000
# CPU Sampler Settings
# 5 mins sampling duration
# 1 min ramp up and ramp down time
# 1 sec sampling interval
# cpuSampler.duration=300000
# cpuSampler.rampUpTime=60000
# cpuSampler.rampDownTime=60000
# cpuSampler.interval=1000
# AMQ Connection Factory Settings
# Use default settings
# factory.brokerURL=tcp://localhost:61616
# factory.useAsyncSend=false
# factory.asyncDispatch=false
# factory.alwaysSessionAsync=true
# factory.useCompression=false
# factory.optimizeAcknowledge=false
# factory.objectMessageSerializationDefered=false
# factory.disableTimeStampsByDefault=false
# factory.optimizedMessageDispatch=true
# factory.useRetroactiveConsumer=false
# factory.copyMessageOnSend=true
# factory.closeTimeout=15000
# factory.userName=null
# factory.clientID=null
# factory.password=null
# factory.prefetchPolicy.durableTopicPrefetch=100
# factory.prefetchPolicy.topicPrefetch=32766
# factory.prefetchPolicy.queueBrowserPrefetch=500
# factory.prefetchPolicy.queuePrefetch=1000
# factory.prefetchPolicy.inputStreamPrefetch=100
# factory.prefetchPolicy.maximumPendingMessageLimit=0
# factory.prefetchPolicy.optimizeDurableTopicPrefetch=1000
# factory.redeliveryPolicy.initialRedeliveryDelay=1000
# factory.redeliveryPolicy.maximumRedeliveries=5
# factory.redeliveryPolicy.useCollisionAvoidance=false
# factory.redeliveryPolicy.useExponentialBackOff=false
# factory.redeliveryPolicy.collisionAvoidancePercent=15
# factory.redeliveryPolicy.backOffMultiplier=5
## ---------------------------------------------------------------------------
## 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.
## ---------------------------------------------------------------------------
# Consumer System Settings
sysTest.spiClass=org.apache.activemq.tool.spi.ActiveMQReflectionSPI
sysTest.reportType=xml
sysTest.destDistro=all
sysTest.samplers=tp
sysTest.numClients=1
sysTest.totalDests=1
sysTest.reportDir=./
# Consumer Client Settings
producer.deliveryMode=nonpersistent
producer.messageSize=1024
producer.destName=queue://TEST.FOO
producer.sessTransacted=false
producer.sessAckMode=autoAck
producer.createNewMsg=false
producer.destComposite=false
# 5 mins send duration
producer.sendType=time
producer.sendDuration=300000
# 1 million messages send
# producer.sendType=count
# producer.sendCount=1000000
# Throughput Sampler Settings
# 5 mins sampling duration
# 1 min ramp up and ramp down time
# 1 sec sampling interval
tpSampler.duration=300000
tpSampler.rampUpTime=60000
tpSampler.rampDownTime=60000
tpSampler.interval=1000
# CPU Sampler Settings
# 5 mins sampling duration
# 1 min ramp up and ramp down time
# 1 sec sampling interval
# cpuSampler.duration=300000
# cpuSampler.rampUpTime=60000
# cpuSampler.rampDownTime=60000
# cpuSampler.interval=1000
# AMQ Connection Factory Settings
# Use default settings
# factory.brokerURL=tcp://localhost:61616
# factory.useAsyncSend=false
# factory.asyncDispatch=false
# factory.alwaysSessionAsync=true
# factory.useCompression=false
# factory.optimizeAcknowledge=false
# factory.objectMessageSerializationDefered=false
# factory.disableTimeStampsByDefault=false
# factory.optimizedMessageDispatch=true
# factory.useRetroactiveConsumer=false
# factory.copyMessageOnSend=true
# factory.closeTimeout=15000
# factory.userName=null
# factory.clientID=null
# factory.password=null
# factory.prefetchPolicy.durableTopicPrefetch=100
# factory.prefetchPolicy.topicPrefetch=32766
# factory.prefetchPolicy.queueBrowserPrefetch=500
# factory.prefetchPolicy.queuePrefetch=1000
# factory.prefetchPolicy.inputStreamPrefetch=100
# factory.prefetchPolicy.maximumPendingMessageLimit=0
# factory.prefetchPolicy.optimizeDurableTopicPrefetch=1000
# factory.redeliveryPolicy.initialRedeliveryDelay=1000
# factory.redeliveryPolicy.maximumRedeliveries=5
# factory.redeliveryPolicy.useCollisionAvoidance=false
# factory.redeliveryPolicy.useExponentialBackOff=false
# factory.redeliveryPolicy.collisionAvoidancePercent=15
# factory.redeliveryPolicy.backOffMultiplier=5
## ---------------------------------------------------------------------------
## 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.
## ---------------------------------------------------------------------------
# Consumer System Settings
sysTest.spiClass=org.apache.activemq.tool.spi.ActiveMQReflectionSPI
sysTest.reportType=xml
sysTest.destDistro=all
sysTest.samplers=tp
sysTest.numClients=1
sysTest.totalDests=1
sysTest.reportDir=./
# Consumer Client Settings
producer.deliveryMode=persistent
producer.messageSize=1024
producer.destName=queue://TEST.FOO
producer.sessTransacted=false
producer.sessAckMode=autoAck
producer.createNewMsg=false
producer.destComposite=false
# 5 mins send duration
producer.sendType=time
producer.sendDuration=300000
# 1 million messages send
# producer.sendType=count
# producer.sendCount=1000000
# Throughput Sampler Settings
# 5 mins sampling duration
# 1 min ramp up and ramp down time
# 1 sec sampling interval
tpSampler.duration=300000
tpSampler.rampUpTime=60000
tpSampler.rampDownTime=60000
tpSampler.interval=1000
# CPU Sampler Settings
# 5 mins sampling duration
# 1 min ramp up and ramp down time
# 1 sec sampling interval
# cpuSampler.duration=300000
# cpuSampler.rampUpTime=60000
# cpuSampler.rampDownTime=60000
# cpuSampler.interval=1000
# AMQ Connection Factory Settings
# Use default settings
# factory.brokerURL=tcp://localhost:61616
# factory.useAsyncSend=false
# factory.asyncDispatch=false
# factory.alwaysSessionAsync=true
# factory.useCompression=false
# factory.optimizeAcknowledge=false
# factory.objectMessageSerializationDefered=false
# factory.disableTimeStampsByDefault=false
# factory.optimizedMessageDispatch=true
# factory.useRetroactiveConsumer=false
# factory.copyMessageOnSend=true
# factory.closeTimeout=15000
# factory.userName=null
# factory.clientID=null
# factory.password=null
# factory.prefetchPolicy.durableTopicPrefetch=100
# factory.prefetchPolicy.topicPrefetch=32766
# factory.prefetchPolicy.queueBrowserPrefetch=500
# factory.prefetchPolicy.queuePrefetch=1000
# factory.prefetchPolicy.inputStreamPrefetch=100
# factory.prefetchPolicy.maximumPendingMessageLimit=0
# factory.prefetchPolicy.optimizeDurableTopicPrefetch=1000
# factory.redeliveryPolicy.initialRedeliveryDelay=1000
# factory.redeliveryPolicy.maximumRedeliveries=5
# factory.redeliveryPolicy.useCollisionAvoidance=false
# factory.redeliveryPolicy.useExponentialBackOff=false
# factory.redeliveryPolicy.collisionAvoidancePercent=15
# factory.redeliveryPolicy.backOffMultiplier=5
## ---------------------------------------------------------------------------
## 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.
## ---------------------------------------------------------------------------
# Consumer System Settings
sysTest.spiClass=org.apache.activemq.tool.spi.ActiveMQReflectionSPI
sysTest.reportType=xml
sysTest.destDistro=all
sysTest.samplers=tp
sysTest.numClients=1
sysTest.totalDests=1
sysTest.reportDir=./
# Consumer Client Settings
producer.deliveryMode=nonpersistent
producer.messageSize=1024
producer.destName=topic://TEST.FOO
producer.sessTransacted=false
producer.sessAckMode=autoAck
producer.createNewMsg=false
producer.destComposite=false
# 5 mins send duration
producer.sendType=time
producer.sendDuration=300000
# 1 million messages send
# producer.sendType=count
# producer.sendCount=1000000
# Throughput Sampler Settings
# 5 mins sampling duration
# 1 min ramp up and ramp down time
# 1 sec sampling interval
tpSampler.duration=300000
tpSampler.rampUpTime=60000
tpSampler.rampDownTime=60000
tpSampler.interval=1000
# CPU Sampler Settings
# 5 mins sampling duration
# 1 min ramp up and ramp down time
# 1 sec sampling interval
# cpuSampler.duration=300000
# cpuSampler.rampUpTime=60000
# cpuSampler.rampDownTime=60000
# cpuSampler.interval=1000
# AMQ Connection Factory Settings
# Use default settings
# factory.brokerURL=tcp://localhost:61616
# factory.useAsyncSend=false
# factory.asyncDispatch=false
# factory.alwaysSessionAsync=true
# factory.useCompression=false
# factory.optimizeAcknowledge=false
# factory.objectMessageSerializationDefered=false
# factory.disableTimeStampsByDefault=false
# factory.optimizedMessageDispatch=true
# factory.useRetroactiveConsumer=false
# factory.copyMessageOnSend=true
# factory.closeTimeout=15000
# factory.userName=null
# factory.clientID=null
# factory.password=null
# factory.prefetchPolicy.durableTopicPrefetch=100
# factory.prefetchPolicy.topicPrefetch=32766
# factory.prefetchPolicy.queueBrowserPrefetch=500
# factory.prefetchPolicy.queuePrefetch=1000
# factory.prefetchPolicy.inputStreamPrefetch=100
# factory.prefetchPolicy.maximumPendingMessageLimit=0
# factory.prefetchPolicy.optimizeDurableTopicPrefetch=1000
# factory.redeliveryPolicy.initialRedeliveryDelay=1000
# factory.redeliveryPolicy.maximumRedeliveries=5
# factory.redeliveryPolicy.useCollisionAvoidance=false
# factory.redeliveryPolicy.useExponentialBackOff=false
# factory.redeliveryPolicy.collisionAvoidancePercent=15
# factory.redeliveryPolicy.backOffMultiplier=5
## ---------------------------------------------------------------------------
## 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.
## ---------------------------------------------------------------------------
# Consumer System Settings
sysTest.spiClass=org.apache.activemq.tool.spi.ActiveMQReflectionSPI
sysTest.reportType=xml
sysTest.destDistro=all
sysTest.samplers=tp
sysTest.numClients=1
sysTest.totalDests=1
sysTest.reportDir=./
# Consumer Client Settings
producer.deliveryMode=persistent
producer.messageSize=1024
producer.destName=topic://TEST.FOO
producer.sessTransacted=false
producer.sessAckMode=autoAck
producer.createNewMsg=false
producer.destComposite=false
# 5 mins send duration
producer.sendType=time
producer.sendDuration=300000
# 1 million messages send
# producer.sendType=count
# producer.sendCount=1000000
# Throughput Sampler Settings
# 5 mins sampling duration
# 1 min ramp up and ramp down time
# 1 sec sampling interval
tpSampler.duration=300000
tpSampler.rampUpTime=60000
tpSampler.rampDownTime=60000
tpSampler.interval=1000
# CPU Sampler Settings
# 5 mins sampling duration
# 1 min ramp up and ramp down time
# 1 sec sampling interval
# cpuSampler.duration=300000
# cpuSampler.rampUpTime=60000
# cpuSampler.rampDownTime=60000
# cpuSampler.interval=1000
# AMQ Connection Factory Settings
# Use default settings
# factory.brokerURL=tcp://localhost:61616
# factory.useAsyncSend=false
# factory.asyncDispatch=false
# factory.alwaysSessionAsync=true
# factory.useCompression=false
# factory.optimizeAcknowledge=false
# factory.objectMessageSerializationDefered=false
# factory.disableTimeStampsByDefault=false
# factory.optimizedMessageDispatch=true
# factory.useRetroactiveConsumer=false
# factory.copyMessageOnSend=true
# factory.closeTimeout=15000
# factory.userName=null
# factory.clientID=null
# factory.password=null
# factory.prefetchPolicy.durableTopicPrefetch=100
# factory.prefetchPolicy.topicPrefetch=32766
# factory.prefetchPolicy.queueBrowserPrefetch=500
# factory.prefetchPolicy.queuePrefetch=1000
# factory.prefetchPolicy.inputStreamPrefetch=100
# factory.prefetchPolicy.maximumPendingMessageLimit=0
# factory.prefetchPolicy.optimizeDurableTopicPrefetch=1000
# factory.redeliveryPolicy.initialRedeliveryDelay=1000
# factory.redeliveryPolicy.maximumRedeliveries=5
# factory.redeliveryPolicy.useCollisionAvoidance=false
# factory.redeliveryPolicy.useExponentialBackOff=false
# factory.redeliveryPolicy.collisionAvoidancePercent=15
# factory.redeliveryPolicy.backOffMultiplier=5
## ---------------------------------------------------------------------------
## 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.
## ---------------------------------------------------------------------------
# Consumer System Settings
sysTest.spiClass=org.apache.activemq.tool.spi.ActiveMQReflectionSPI
sysTest.reportType=xml
sysTest.destDistro=all
sysTest.samplers=tp
sysTest.numClients=10
sysTest.totalDests=1
sysTest.reportDir=./
# Consumer Client Settings
producer.deliveryMode=nonpersistent
producer.messageSize=1024
producer.destName=queue://TEST.FOO
producer.sessTransacted=false
producer.sessAckMode=autoAck
producer.createNewMsg=false
producer.destComposite=false
# 5 mins send duration
producer.sendType=time
producer.sendDuration=300000
# 1 million messages send
# producer.sendType=count
# producer.sendCount=1000000
# Throughput Sampler Settings
# 5 mins sampling duration
# 1 min ramp up and ramp down time
# 1 sec sampling interval
tpSampler.duration=300000
tpSampler.rampUpTime=60000
tpSampler.rampDownTime=60000
tpSampler.interval=1000
# CPU Sampler Settings
# 5 mins sampling duration
# 1 min ramp up and ramp down time
# 1 sec sampling interval
# cpuSampler.duration=300000
# cpuSampler.rampUpTime=60000
# cpuSampler.rampDownTime=60000
# cpuSampler.interval=1000
# AMQ Connection Factory Settings
# Use default settings
# factory.brokerURL=tcp://localhost:61616
# factory.useAsyncSend=false
# factory.asyncDispatch=false
# factory.alwaysSessionAsync=true
# factory.useCompression=false
# factory.optimizeAcknowledge=false
# factory.objectMessageSerializationDefered=false
# factory.disableTimeStampsByDefault=false
# factory.optimizedMessageDispatch=true
# factory.useRetroactiveConsumer=false
# factory.copyMessageOnSend=true
# factory.closeTimeout=15000
# factory.userName=null
# factory.clientID=null
# factory.password=null
# factory.prefetchPolicy.durableTopicPrefetch=100
# factory.prefetchPolicy.topicPrefetch=32766
# factory.prefetchPolicy.queueBrowserPrefetch=500
# factory.prefetchPolicy.queuePrefetch=1000
# factory.prefetchPolicy.inputStreamPrefetch=100
# factory.prefetchPolicy.maximumPendingMessageLimit=0
# factory.prefetchPolicy.optimizeDurableTopicPrefetch=1000
# factory.redeliveryPolicy.initialRedeliveryDelay=1000
# factory.redeliveryPolicy.maximumRedeliveries=5
# factory.redeliveryPolicy.useCollisionAvoidance=false
# factory.redeliveryPolicy.useExponentialBackOff=false
# factory.redeliveryPolicy.collisionAvoidancePercent=15
# factory.redeliveryPolicy.backOffMultiplier=5
## ---------------------------------------------------------------------------
## 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.
## ---------------------------------------------------------------------------
# Consumer System Settings
sysTest.spiClass=org.apache.activemq.tool.spi.ActiveMQReflectionSPI
sysTest.reportType=xml
sysTest.destDistro=all
sysTest.samplers=tp
sysTest.numClients=10
sysTest.totalDests=1
sysTest.reportDir=./
# Consumer Client Settings
producer.deliveryMode=persistent
producer.messageSize=1024
producer.destName=queue://TEST.FOO
producer.sessTransacted=false
producer.sessAckMode=autoAck
producer.createNewMsg=false
producer.destComposite=false
# 5 mins send duration
producer.sendType=time
producer.sendDuration=300000
# 1 million messages send
# producer.sendType=count
# producer.sendCount=1000000
# Throughput Sampler Settings
# 5 mins sampling duration
# 1 min ramp up and ramp down time
# 1 sec sampling interval
tpSampler.duration=300000
tpSampler.rampUpTime=60000
tpSampler.rampDownTime=60000
tpSampler.interval=1000
# CPU Sampler Settings
# 5 mins sampling duration
# 1 min ramp up and ramp down time
# 1 sec sampling interval
# cpuSampler.duration=300000
# cpuSampler.rampUpTime=60000
# cpuSampler.rampDownTime=60000
# cpuSampler.interval=1000
# AMQ Connection Factory Settings
# Use default settings
# factory.brokerURL=tcp://localhost:61616
# factory.useAsyncSend=false
# factory.asyncDispatch=false
# factory.alwaysSessionAsync=true
# factory.useCompression=false
# factory.optimizeAcknowledge=false
# factory.objectMessageSerializationDefered=false
# factory.disableTimeStampsByDefault=false
# factory.optimizedMessageDispatch=true
# factory.useRetroactiveConsumer=false
# factory.copyMessageOnSend=true
# factory.closeTimeout=15000
# factory.userName=null
# factory.clientID=null
# factory.password=null
# factory.prefetchPolicy.durableTopicPrefetch=100
# factory.prefetchPolicy.topicPrefetch=32766
# factory.prefetchPolicy.queueBrowserPrefetch=500
# factory.prefetchPolicy.queuePrefetch=1000
# factory.prefetchPolicy.inputStreamPrefetch=100
# factory.prefetchPolicy.maximumPendingMessageLimit=0
# factory.prefetchPolicy.optimizeDurableTopicPrefetch=1000
# factory.redeliveryPolicy.initialRedeliveryDelay=1000
# factory.redeliveryPolicy.maximumRedeliveries=5
# factory.redeliveryPolicy.useCollisionAvoidance=false
# factory.redeliveryPolicy.useExponentialBackOff=false
# factory.redeliveryPolicy.collisionAvoidancePercent=15
# factory.redeliveryPolicy.backOffMultiplier=5
## ---------------------------------------------------------------------------
## 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.
## ---------------------------------------------------------------------------
# Consumer System Settings
sysTest.spiClass=org.apache.activemq.tool.spi.ActiveMQReflectionSPI
sysTest.reportType=xml
sysTest.destDistro=all
sysTest.samplers=tp
sysTest.numClients=10
sysTest.totalDests=1
sysTest.reportDir=./
# Consumer Client Settings
producer.deliveryMode=nonpersistent
producer.messageSize=1024
producer.destName=topic://TEST.FOO
producer.sessTransacted=false
producer.sessAckMode=autoAck
producer.createNewMsg=false
producer.destComposite=false
# 5 mins send duration
producer.sendType=time
producer.sendDuration=300000
# 1 million messages send
# producer.sendType=count
# producer.sendCount=1000000
# Throughput Sampler Settings
# 5 mins sampling duration
# 1 min ramp up and ramp down time
# 1 sec sampling interval
tpSampler.duration=300000
tpSampler.rampUpTime=60000
tpSampler.rampDownTime=60000
tpSampler.interval=1000
# CPU Sampler Settings
# 5 mins sampling duration
# 1 min ramp up and ramp down time
# 1 sec sampling interval
# cpuSampler.duration=300000
# cpuSampler.rampUpTime=60000
# cpuSampler.rampDownTime=60000
# cpuSampler.interval=1000
# AMQ Connection Factory Settings
# Use default settings
# factory.brokerURL=tcp://localhost:61616
# factory.useAsyncSend=false
# factory.asyncDispatch=false
# factory.alwaysSessionAsync=true
# factory.useCompression=false
# factory.optimizeAcknowledge=false
# factory.objectMessageSerializationDefered=false
# factory.disableTimeStampsByDefault=false
# factory.optimizedMessageDispatch=true
# factory.useRetroactiveConsumer=false
# factory.copyMessageOnSend=true
# factory.closeTimeout=15000
# factory.userName=null
# factory.clientID=null
# factory.password=null
# factory.prefetchPolicy.durableTopicPrefetch=100
# factory.prefetchPolicy.topicPrefetch=32766
# factory.prefetchPolicy.queueBrowserPrefetch=500
# factory.prefetchPolicy.queuePrefetch=1000
# factory.prefetchPolicy.inputStreamPrefetch=100
# factory.prefetchPolicy.maximumPendingMessageLimit=0
# factory.prefetchPolicy.optimizeDurableTopicPrefetch=1000
# factory.redeliveryPolicy.initialRedeliveryDelay=1000
# factory.redeliveryPolicy.maximumRedeliveries=5
# factory.redeliveryPolicy.useCollisionAvoidance=false
# factory.redeliveryPolicy.useExponentialBackOff=false
# factory.redeliveryPolicy.collisionAvoidancePercent=15
# factory.redeliveryPolicy.backOffMultiplier=5
## ---------------------------------------------------------------------------
## 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.
## ---------------------------------------------------------------------------
# Consumer System Settings
sysTest.spiClass=org.apache.activemq.tool.spi.ActiveMQReflectionSPI
sysTest.reportType=xml
sysTest.destDistro=all
sysTest.samplers=tp
sysTest.numClients=10
sysTest.totalDests=1
sysTest.reportDir=./
# Consumer Client Settings
producer.deliveryMode=persistent
producer.messageSize=1024
producer.destName=topic://TEST.FOO
producer.sessTransacted=false
producer.sessAckMode=autoAck
producer.createNewMsg=false
producer.destComposite=false
# 5 mins send duration
producer.sendType=time
producer.sendDuration=300000
# 1 million messages send
# producer.sendType=count
# producer.sendCount=1000000
# Throughput Sampler Settings
# 5 mins sampling duration
# 1 min ramp up and ramp down time
# 1 sec sampling interval
tpSampler.duration=300000
tpSampler.rampUpTime=60000
tpSampler.rampDownTime=60000
tpSampler.interval=1000
# CPU Sampler Settings
# 5 mins sampling duration
# 1 min ramp up and ramp down time
# 1 sec sampling interval
# cpuSampler.duration=300000
# cpuSampler.rampUpTime=60000
# cpuSampler.rampDownTime=60000
# cpuSampler.interval=1000
# AMQ Connection Factory Settings
# Use default settings
# factory.brokerURL=tcp://localhost:61616
# factory.useAsyncSend=false
# factory.asyncDispatch=false
# factory.alwaysSessionAsync=true
# factory.useCompression=false
# factory.optimizeAcknowledge=false
# factory.objectMessageSerializationDefered=false
# factory.disableTimeStampsByDefault=false
# factory.optimizedMessageDispatch=true
# factory.useRetroactiveConsumer=false
# factory.copyMessageOnSend=true
# factory.closeTimeout=15000
# factory.userName=null
# factory.clientID=null
# factory.password=null
# factory.prefetchPolicy.durableTopicPrefetch=100
# factory.prefetchPolicy.topicPrefetch=32766
# factory.prefetchPolicy.queueBrowserPrefetch=500
# factory.prefetchPolicy.queuePrefetch=1000
# factory.prefetchPolicy.inputStreamPrefetch=100
# factory.prefetchPolicy.maximumPendingMessageLimit=0
# factory.prefetchPolicy.optimizeDurableTopicPrefetch=1000
# factory.redeliveryPolicy.initialRedeliveryDelay=1000
# factory.redeliveryPolicy.maximumRedeliveries=5
# factory.redeliveryPolicy.useCollisionAvoidance=false
# factory.redeliveryPolicy.useExponentialBackOff=false
# factory.redeliveryPolicy.collisionAvoidancePercent=15
# factory.redeliveryPolicy.backOffMultiplier=5
## ---------------------------------------------------------------------------
## 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.
## ---------------------------------------------------------------------------
# Consumer System Settings
sysTest.spiClass=org.apache.activemq.tool.spi.ActiveMQReflectionSPI
sysTest.reportType=xml
sysTest.destDistro=all
sysTest.samplers=tp
sysTest.numClients=10
sysTest.totalDests=10
sysTest.reportDir=./
# Consumer Client Settings
producer.deliveryMode=nonpersistent
producer.messageSize=1024
producer.destName=queue://TEST.FOO
producer.sessTransacted=false
producer.sessAckMode=autoAck
producer.createNewMsg=false
producer.destComposite=false
# 5 mins send duration
producer.sendType=time
producer.sendDuration=300000
# 1 million messages send
# producer.sendType=count
# producer.sendCount=1000000
# Throughput Sampler Settings
# 5 mins sampling duration
# 1 min ramp up and ramp down time
# 1 sec sampling interval
tpSampler.duration=300000
tpSampler.rampUpTime=60000
tpSampler.rampDownTime=60000
tpSampler.interval=1000
# CPU Sampler Settings
# 5 mins sampling duration
# 1 min ramp up and ramp down time
# 1 sec sampling interval
# cpuSampler.duration=300000
# cpuSampler.rampUpTime=60000
# cpuSampler.rampDownTime=60000
# cpuSampler.interval=1000
# AMQ Connection Factory Settings
# Use default settings
# factory.brokerURL=tcp://localhost:61616
# factory.useAsyncSend=false
# factory.asyncDispatch=false
# factory.alwaysSessionAsync=true
# factory.useCompression=false
# factory.optimizeAcknowledge=false
# factory.objectMessageSerializationDefered=false
# factory.disableTimeStampsByDefault=false
# factory.optimizedMessageDispatch=true
# factory.useRetroactiveConsumer=false
# factory.copyMessageOnSend=true
# factory.closeTimeout=15000
# factory.userName=null
# factory.clientID=null
# factory.password=null
# factory.prefetchPolicy.durableTopicPrefetch=100
# factory.prefetchPolicy.topicPrefetch=32766
# factory.prefetchPolicy.queueBrowserPrefetch=500
# factory.prefetchPolicy.queuePrefetch=1000
# factory.prefetchPolicy.inputStreamPrefetch=100
# factory.prefetchPolicy.maximumPendingMessageLimit=0
# factory.prefetchPolicy.optimizeDurableTopicPrefetch=1000
# factory.redeliveryPolicy.initialRedeliveryDelay=1000
# factory.redeliveryPolicy.maximumRedeliveries=5
# factory.redeliveryPolicy.useCollisionAvoidance=false
# factory.redeliveryPolicy.useExponentialBackOff=false
# factory.redeliveryPolicy.collisionAvoidancePercent=15
# factory.redeliveryPolicy.backOffMultiplier=5
## ---------------------------------------------------------------------------
## 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.
## ---------------------------------------------------------------------------
# Consumer System Settings
sysTest.spiClass=org.apache.activemq.tool.spi.ActiveMQReflectionSPI
sysTest.reportType=xml
sysTest.destDistro=all
sysTest.samplers=tp
sysTest.numClients=10
sysTest.totalDests=10
sysTest.reportDir=./
# Consumer Client Settings
producer.deliveryMode=persistent
producer.messageSize=1024
producer.destName=queue://TEST.FOO
producer.sessTransacted=false
producer.sessAckMode=autoAck
producer.createNewMsg=false
producer.destComposite=false
# 5 mins send duration
producer.sendType=time
producer.sendDuration=300000
# 1 million messages send
# producer.sendType=count
# producer.sendCount=1000000
# Throughput Sampler Settings
# 5 mins sampling duration
# 1 min ramp up and ramp down time
# 1 sec sampling interval
tpSampler.duration=300000
tpSampler.rampUpTime=60000
tpSampler.rampDownTime=60000
tpSampler.interval=1000
# CPU Sampler Settings
# 5 mins sampling duration
# 1 min ramp up and ramp down time
# 1 sec sampling interval
# cpuSampler.duration=300000
# cpuSampler.rampUpTime=60000
# cpuSampler.rampDownTime=60000
# cpuSampler.interval=1000
# AMQ Connection Factory Settings
# Use default settings
# factory.brokerURL=tcp://localhost:61616
# factory.useAsyncSend=false
# factory.asyncDispatch=false
# factory.alwaysSessionAsync=true
# factory.useCompression=false
# factory.optimizeAcknowledge=false
# factory.objectMessageSerializationDefered=false
# factory.disableTimeStampsByDefault=false
# factory.optimizedMessageDispatch=true
# factory.useRetroactiveConsumer=false
# factory.copyMessageOnSend=true
# factory.closeTimeout=15000
# factory.userName=null
# factory.clientID=null
# factory.password=null
# factory.prefetchPolicy.durableTopicPrefetch=100
# factory.prefetchPolicy.topicPrefetch=32766
# factory.prefetchPolicy.queueBrowserPrefetch=500
# factory.prefetchPolicy.queuePrefetch=1000
# factory.prefetchPolicy.inputStreamPrefetch=100
# factory.prefetchPolicy.maximumPendingMessageLimit=0
# factory.prefetchPolicy.optimizeDurableTopicPrefetch=1000
# factory.redeliveryPolicy.initialRedeliveryDelay=1000
# factory.redeliveryPolicy.maximumRedeliveries=5
# factory.redeliveryPolicy.useCollisionAvoidance=false
# factory.redeliveryPolicy.useExponentialBackOff=false
# factory.redeliveryPolicy.collisionAvoidancePercent=15
# factory.redeliveryPolicy.backOffMultiplier=5
## ---------------------------------------------------------------------------
## 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.
## ---------------------------------------------------------------------------
# Consumer System Settings
sysTest.spiClass=org.apache.activemq.tool.spi.ActiveMQReflectionSPI
sysTest.reportType=xml
sysTest.destDistro=all
sysTest.samplers=tp
sysTest.numClients=10
sysTest.totalDests=10
sysTest.reportDir=./
# Consumer Client Settings
producer.deliveryMode=nonpersistent
producer.messageSize=1024
producer.destName=topic://TEST.FOO
producer.sessTransacted=false
producer.sessAckMode=autoAck
producer.createNewMsg=false
producer.destComposite=false
# 5 mins send duration
producer.sendType=time
producer.sendDuration=300000
# 1 million messages send
# producer.sendType=count
# producer.sendCount=1000000
# Throughput Sampler Settings
# 5 mins sampling duration
# 1 min ramp up and ramp down time
# 1 sec sampling interval
tpSampler.duration=300000
tpSampler.rampUpTime=60000
tpSampler.rampDownTime=60000
tpSampler.interval=1000
# CPU Sampler Settings
# 5 mins sampling duration
# 1 min ramp up and ramp down time
# 1 sec sampling interval
# cpuSampler.duration=300000
# cpuSampler.rampUpTime=60000
# cpuSampler.rampDownTime=60000
# cpuSampler.interval=1000
# AMQ Connection Factory Settings
# Use default settings
# factory.brokerURL=tcp://localhost:61616
# factory.useAsyncSend=false
# factory.asyncDispatch=false
# factory.alwaysSessionAsync=true
# factory.useCompression=false
# factory.optimizeAcknowledge=false
# factory.objectMessageSerializationDefered=false
# factory.disableTimeStampsByDefault=false
# factory.optimizedMessageDispatch=true
# factory.useRetroactiveConsumer=false
# factory.copyMessageOnSend=true
# factory.closeTimeout=15000
# factory.userName=null
# factory.clientID=null
# factory.password=null
# factory.prefetchPolicy.durableTopicPrefetch=100
# factory.prefetchPolicy.topicPrefetch=32766
# factory.prefetchPolicy.queueBrowserPrefetch=500
# factory.prefetchPolicy.queuePrefetch=1000
# factory.prefetchPolicy.inputStreamPrefetch=100
# factory.prefetchPolicy.maximumPendingMessageLimit=0
# factory.prefetchPolicy.optimizeDurableTopicPrefetch=1000
# factory.redeliveryPolicy.initialRedeliveryDelay=1000
# factory.redeliveryPolicy.maximumRedeliveries=5
# factory.redeliveryPolicy.useCollisionAvoidance=false
# factory.redeliveryPolicy.useExponentialBackOff=false
# factory.redeliveryPolicy.collisionAvoidancePercent=15
# factory.redeliveryPolicy.backOffMultiplier=5
## ---------------------------------------------------------------------------
## 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.
## ---------------------------------------------------------------------------
# Consumer System Settings
sysTest.spiClass=org.apache.activemq.tool.spi.ActiveMQReflectionSPI
sysTest.reportType=xml
sysTest.destDistro=all
sysTest.samplers=tp
sysTest.numClients=10
sysTest.totalDests=10
sysTest.reportDir=./
# Consumer Client Settings
producer.deliveryMode=persistent
producer.messageSize=1024
producer.destName=topic://TEST.FOO
producer.sessTransacted=false
producer.sessAckMode=autoAck
producer.createNewMsg=false
producer.destComposite=false
# 5 mins send duration
producer.sendType=time
producer.sendDuration=300000
# 1 million messages send
# producer.sendType=count
# producer.sendCount=1000000
# Throughput Sampler Settings
# 5 mins sampling duration
# 1 min ramp up and ramp down time
# 1 sec sampling interval
tpSampler.duration=300000
tpSampler.rampUpTime=60000
tpSampler.rampDownTime=60000
tpSampler.interval=1000
# CPU Sampler Settings
# 5 mins sampling duration
# 1 min ramp up and ramp down time
# 1 sec sampling interval
# cpuSampler.duration=300000
# cpuSampler.rampUpTime=60000
# cpuSampler.rampDownTime=60000
# cpuSampler.interval=1000
# AMQ Connection Factory Settings
# Use default settings
# factory.brokerURL=tcp://localhost:61616
# factory.useAsyncSend=false
# factory.asyncDispatch=false
# factory.alwaysSessionAsync=true
# factory.useCompression=false
# factory.optimizeAcknowledge=false
# factory.objectMessageSerializationDefered=false
# factory.disableTimeStampsByDefault=false
# factory.optimizedMessageDispatch=true
# factory.useRetroactiveConsumer=false
# factory.copyMessageOnSend=true
# factory.closeTimeout=15000
# factory.userName=null
# factory.clientID=null
# factory.password=null
# factory.prefetchPolicy.durableTopicPrefetch=100
# factory.prefetchPolicy.topicPrefetch=32766
# factory.prefetchPolicy.queueBrowserPrefetch=500
# factory.prefetchPolicy.queuePrefetch=1000
# factory.prefetchPolicy.inputStreamPrefetch=100
# factory.prefetchPolicy.maximumPendingMessageLimit=0
# factory.prefetchPolicy.optimizeDurableTopicPrefetch=1000
# factory.redeliveryPolicy.initialRedeliveryDelay=1000
# factory.redeliveryPolicy.maximumRedeliveries=5
# factory.redeliveryPolicy.useCollisionAvoidance=false
# factory.redeliveryPolicy.useExponentialBackOff=false
# factory.redeliveryPolicy.collisionAvoidancePercent=15
# factory.redeliveryPolicy.backOffMultiplier=5
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:amq="http://activemq.apache.org/schema/core"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd
http://activemq.apache.org/camel/schema/spring http://activemq.apache.org/camel/schema/spring/camel-spring.xsd">
<!-- Allows us to use system properties as variables in this configuration file -->
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<value>file:///${activemq.base}/conf/credentials.properties</value>
</property>
</bean>
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="localhost">
<!-- Use the following to configure how ActiveMQ is exposed in JMX -->
<managementContext>
<managementContext createConnector="false"/>
</managementContext>
<persistenceAdapter>
<jdbcPersistenceAdapter dataSource="#mssql-jtds-ds" adapter="#sqlserver-adapter"/>
</persistenceAdapter>
<!-- The maximum about of space the broker will use before slowing down producers -->
<systemUsage>
<systemUsage>
<memoryUsage>
<memoryUsage limit="200 mb"/>
</memoryUsage>
<tempUsage>
<tempUsage limit="500 mb"/>
</tempUsage>
</systemUsage>
</systemUsage>
<transportConnectors>
<transportConnector name="openwire" uri="tcp://localhost:61616"/>
</transportConnectors>
<!-- Ignored
<plugins>
<jaasAuthenticationPlugin configuration="activemq-domain" />
</plugins>
-->
</broker>
<!-- Uncomment to create a command agent to respond to
message based admin commands on the ActiveMQ.Agent topic -->
<!--
<commandAgent xmlns="http://activemq.apache.org/schema/core" brokerUrl="vm://localhost" username="${activemq.username}" password="${activemq.password}"/>
-->
<!-- An embedded servlet engine for serving up the Admin console -->
<jetty xmlns="http://mortbay.com/schemas/jetty/1.0">
<connectors>
<nioConnector port="8161"/>
</connectors>
<handlers>
<webAppContext contextPath="/admin" resourceBase="${activemq.base}/webapps/admin" logUrlOnStart="true"/>
<webAppContext contextPath="/demo" resourceBase="${activemq.base}/webapps/demo" logUrlOnStart="true"/>
<webAppContext contextPath="/fileserver" resourceBase="${activemq.base}/webapps/fileserver" logUrlOnStart="true"/>
</handlers>
</jetty>
<!-- This xbean configuration file supports all the standard spring xml configuration options -->
<!-- Postgres DataSource Sample Setup -->
<!--
<bean id="postgres-ds" class="org.postgresql.ds.PGPoolingDataSource">
<property name="serverName" value="localhost"/>
<property name="databaseName" value="activemq"/>
<property name="portNumber" value="0"/>
<property name="user" value="activemq"/>
<property name="password" value="activemq"/>
<property name="dataSourceName" value="postgres"/>
<property name="initialConnections" value="1"/>
<property name="maxConnections" value="10"/>
</bean>
-->
<!-- JTDS (DBCP) DataSource Sample Setup -->
<bean id="mssql-jtds-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="net.sourceforge.jtds.jdbcx.JtdsDataSource"/>
<property name="url" value="jdbc:jtds:sqlserver://HOST:1433;DatabaseName=ACTIVEMQ"/>
<property name="username" value="USERNAME"/>
<property name="password" value="PASSWORD"/>
<property name="poolPreparedStatements" value="false"/>
<property name="maxWait" value="20"/>
<property name="maxIdle" value="10"/>
<property name="maxActive" value="20"/>
<property name="validationQuery" value="select cast('10' as integer)"/>
<property name="testOnBorrow" value="false"/>
<property name="defaultAutoCommit" value="false"/>
</bean>
<bean id="sqlserver-adapter" class="ch.bedag.ste.opensource.activemq.jdbc.adapter.SqlServerJDBCAdapter"/>
<bean id="ds-exporter" class="org.springframework.jmx.export.MBeanExporter" lazy-init="false">
<property name="beans">
<map>
<entry key="DataSource:name=mssql" value-ref="mssql-jtds-ds"/>
</map>
</property>
<property name="registrationBehaviorName" value="REGISTRATION_REPLACE_EXISTING"/>
<property name="assembler">
<bean class="org.springframework.jmx.export.assembler.MethodNameBasedMBeanInfoAssembler">
<property name="managedMethods">
<value>getDriverClassName,getDefaultAutoCommit,getLogAbandoned,setLogAbandoned,getMaxActive,getMaxIdle,getMaxOpenPreparedStatements,getMaxWait,getMinIdle,getNumActive,getNumIdle,isPoolPreparedStatements,getUrl,getUsername,getValidationQuery,getTestOnBorrow,getTestOnReturn,getTestWhileIdle</value>
</property>
</bean>
</property>
</bean>
</beans>
##############################################################################
#
# Copyright (c) 2006 Zope Corporation and Contributors.
# All Rights Reserved.
#
# This software is subject to the provisions of the Zope Public License,
# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE.
#
##############################################################################
"""Bootstrap a buildout-based project
Simply run this script in a directory containing a buildout.cfg.
The script accepts buildout command-line options, so you can
use the -c option to specify an alternate configuration file.
$Id$
"""
import os, shutil, sys, tempfile, urllib2
tmpeggs = tempfile.mkdtemp()
is_jython = sys.platform.startswith('java')
try:
import pkg_resources
except ImportError:
ez = {}
exec urllib2.urlopen('http://peak.telecommunity.com/dist/ez_setup.py'
).read() in ez
ez['use_setuptools'](to_dir=tmpeggs, download_delay=0)
import pkg_resources
if sys.platform == 'win32':
def quote(c):
if ' ' in c:
return '"%s"' % c # work around spawn lamosity on windows
else:
return c
else:
def quote (c):
return c
cmd = 'from setuptools.command.easy_install import main; main()'
ws = pkg_resources.working_set
if len(sys.argv) > 2 and sys.argv[1] == '--version':
VERSION = ' == %s' % sys.argv[2]
args = sys.argv[3:] + ['bootstrap']
else:
VERSION = ''
args = sys.argv[1:] + ['bootstrap']
if is_jython:
import subprocess
assert subprocess.Popen([sys.executable] + ['-c', quote(cmd), '-mqNxd',
quote(tmpeggs), 'zc.buildout' + VERSION],
env=dict(os.environ,
PYTHONPATH=
ws.find(pkg_resources.Requirement.parse('setuptools')).location
),
).wait() == 0
else:
assert os.spawnle(
os.P_WAIT, sys.executable, quote (sys.executable),
'-c', quote (cmd), '-mqNxd', quote (tmpeggs), 'zc.buildout' + VERSION,
dict(os.environ,
PYTHONPATH=
ws.find(pkg_resources.Requirement.parse('setuptools')).location
),
) == 0
ws.add_entry(tmpeggs)
ws.require('zc.buildout' + VERSION)
import zc.buildout.buildout
zc.buildout.buildout.main(args)
shutil.rmtree(tmpeggs)
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:amq="http://activemq.apache.org/schema/core"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd
http://activemq.apache.org/camel/schema/spring http://activemq.apache.org/camel/schema/spring/camel-spring.xsd">
<!-- Allows us to use system properties as variables in this configuration file -->
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<value>file:///${activemq.base}/conf/credentials.properties</value>
</property>
</bean>
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="broker-a" dataDirectory="${activemq.base}/data">
<!-- Use the following to configure how ActiveMQ is exposed in JMX -->
<managementContext>
<managementContext createConnector="false"/>
</managementContext>
<!-- The store and forward broker networks ActiveMQ will listen to -->
<networkConnectors>
<!-- by default just auto discover the other brokers
<networkConnector name="default-nc" uri="multicast://default"/>
-->
<!-- Example of a static configuration:
<networkConnector name="host1 and host2" uri="static://(tcp://host1:61616,tcp://host2:61616)"/>
-->
</networkConnectors>
<persistenceAdapter>
<amqPersistenceAdapter syncOnWrite="false" directory="${activemq.base}/data" maxFileLength="20 mb"/>
</persistenceAdapter>
<!-- The maximum about of space the broker will use before slowing down producers -->
<systemUsage>
<systemUsage>
<memoryUsage>
<memoryUsage limit="200 mb"/>
</memoryUsage>
<storeUsage>
<storeUsage limit="1 gb" name="foo"/>
</storeUsage>
<tempUsage>
<tempUsage limit="500 mb"/>
</tempUsage>
</systemUsage>
</systemUsage>
<!-- The transport connectors ActiveMQ will listen to -->
<transportConnectors>
<transportConnector name="openwire" uri="tcp://localhost:61617" discoveryUri="multicast://default"/>
</transportConnectors>
</broker>
<!-- An embedded servlet engine for serving up the Admin console -->
<jetty xmlns="http://mortbay.com/schemas/jetty/1.0">
<connectors>
<nioConnector port="8162"/>
</connectors>
<handlers>
<webAppContext contextPath="/admin" resourceBase="${activemq.base}/webapps/admin" logUrlOnStart="true"/>
<webAppContext contextPath="/demo" resourceBase="${activemq.base}/webapps/demo" logUrlOnStart="true"/>
<webAppContext contextPath="/fileserver" resourceBase="${activemq.base}/webapps/fileserver" logUrlOnStart="true"/>
</handlers>
</jetty>
<!-- Embedded Derby DataSource Sample Setup -->
<!--
<bean id="derby-ds" class="org.apache.derby.jdbc.EmbeddedDataSource">
<property name="databaseName" value="derbydb"/>
<property name="createDatabase" value="create"/>
</bean>
-->
</beans>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:amq="http://activemq.apache.org/schema/core"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd
http://activemq.apache.org/camel/schema/spring http://activemq.apache.org/camel/schema/spring/camel-spring.xsd">
<!-- Allows us to use system properties as variables in this configuration file -->
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<value>file:///${activemq.base}/conf/credentials.properties</value>
</property>
</bean>
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="broker-a" dataDirectory="${activemq.base}/data">
<!-- Use the following to configure how ActiveMQ is exposed in JMX -->
<managementContext>
<managementContext createConnector="false"/>
</managementContext>
<!-- The store and forward broker networks ActiveMQ will listen to -->
<networkConnectors>
<!-- by default just auto discover the other brokers
<networkConnector name="default-nc" uri="multicast://default"/>
-->
<!-- Example of a static configuration:
<networkConnector name="host1 and host2" uri="static://(tcp://host1:61616,tcp://host2:61616)"/>
-->
</networkConnectors>
<persistenceAdapter>
<amqPersistenceAdapter syncOnWrite="false" directory="${activemq.base}/data" maxFileLength="20 mb"/>
</persistenceAdapter>
<!-- The maximum about of space the broker will use before slowing down producers -->
<systemUsage>
<systemUsage>
<memoryUsage>
<memoryUsage limit="200 mb"/>
</memoryUsage>
<storeUsage>
<storeUsage limit="1 gb" name="foo"/>
</storeUsage>
<tempUsage>
<tempUsage limit="500 mb"/>
</tempUsage>
</systemUsage>
</systemUsage>
<!-- The transport connectors ActiveMQ will listen to -->
<transportConnectors>
<transportConnector name="openwire" uri="tcp://localhost:61618" discoveryUri="multicast://default"/>
</transportConnectors>
</broker>
<!-- An embedded servlet engine for serving up the Admin console -->
<jetty xmlns="http://mortbay.com/schemas/jetty/1.0">
<connectors>
<nioConnector port="8163"/>
</connectors>
<handlers>
<webAppContext contextPath="/admin" resourceBase="${activemq.base}/webapps/admin" logUrlOnStart="true"/>
<webAppContext contextPath="/demo" resourceBase="${activemq.base}/webapps/demo" logUrlOnStart="true"/>
<webAppContext contextPath="/fileserver" resourceBase="${activemq.base}/webapps/fileserver" logUrlOnStart="true"/>
</handlers>
</jetty>
<!-- Embedded Derby DataSource Sample Setup -->
<!--
<bean id="derby-ds" class="org.apache.derby.jdbc.EmbeddedDataSource">
<property name="databaseName" value="derbydb"/>
<property name="createDatabase" value="create"/>
</bean>
-->
</beans>
[config]
mypkgs = shellpack
[buildout]
develop = .
parts = python scripts test
[python]
recipe = zc.recipe.egg
interpreter = pyshell
eggs = ${config:mypkgs}
[scripts]
recipe = zc.recipe.egg:scripts
eggs = ${config:mypkgs}
[test]
recipe = zc.recipe.testrunner
eggs = ${config:mypkgs}
#!/bin/bash
ec2din --xml | \
xmlstarlet sel -t \
-m "//reservationSet/item" \
-i "groupSet/item/groupId[string()='$GROUP_NAME']" \
-m "instancesSet/item" \
-i "instanceState/name[string()='running']" \
-v "instanceId" -n | \
sed \ # -> http://www.grymoire.com/Unix/Sed.html#toc-uh-30
-e 's/#.*//' \ # remove every character from the "#" to the end of the line
-e 's/[ ^I]*$//' \ # delete all blank lines
-e '/^$/ d' # remove all blanks and tabs immediately before the end of line
#!/bin/bash
#
# look for all the files in a directory, and examine the first line
# of each for a shebang ("#!")
#
# Aspects
# - recursiv
# - stdout from head is piped into grep, and grep is silent (-q). (only the status from grep is used)
# - the filename is echoed for your "convenience" ;) (ie: not necessary!)
# - check for files owned by $USER
# -
#
#
#
#
# http://www.linuxquestions.org/questions/linux-general-1/bash-script-to-find-files-with-shebang-and-then-chmod-686031/
#
set -o errexit # Exit when simple command fails.
set -o nounset # Trigger error when expanding unset variables.
find dir/ -user $UID -type f | while read fn; do head -n1 "$fn" | grep -q "^#\!" && echo "$fn" && chmod 755 "$fn"; done
#!/bin/bash
sudo apt-get update; sudo apt-get -y upgrade
sudo apt-get -y install git-core subversion ruby irb gem
# get our code and install it
git clone git://gist.github.com/121977.git conf; conf/install.sh
class DotLookup(object):
def __init__(self, obj):
self.obj = obj
def __getitem__(self, key):
return DotLookup(self.obj[key])
def __getattr__(self, key):
return self[key]
def get(self, key, default=None):
try:
return self[key]
except (KeyError, IndexError):
return default
def __call__(self):
return self.obj
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:amq="http://activemq.apache.org/schema/core"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd
http://activemq.apache.org/camel/schema/spring http://activemq.apache.org/camel/schema/spring/camel-spring.xsd">
<!-- Allows us to use system properties as variables in this configuration file -->
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<value>file:///${activemq.base}/conf/credentials.properties</value>
</property>
</bean>
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="broker-a" dataDirectory="${activemq.base}/data">
<!-- Use the following to configure how ActiveMQ is exposed in JMX -->
<managementContext>
<managementContext createConnector="true"
rmiServerPort="1199"/>
</managementContext>
<!-- The store and forward broker networks ActiveMQ will listen to -->
<networkConnectors>
<!-- by default just auto discover the other brokers
<networkConnector name="default-nc" uri="multicast://default"/>
-->
<!-- Example of a static configuration:
<networkConnector name="host1 and host2" uri="static://(tcp://host1:61616,tcp://host2:61616)"/>
-->
</networkConnectors>
<persistenceAdapter>
<amqPersistenceAdapter syncOnWrite="false" directory="${activemq.base}/data" maxFileLength="20 mb"/>
</persistenceAdapter>
<!-- The maximum about of space the broker will use before slowing down producers -->
<systemUsage>
<systemUsage>
<memoryUsage>
<memoryUsage limit="200 mb"/>
</memoryUsage>
<storeUsage>
<storeUsage limit="1 gb" name="foo"/>
</storeUsage>
<tempUsage>
<tempUsage limit="500 mb"/>
</tempUsage>
</systemUsage>
</systemUsage>
<!-- The transport connectors ActiveMQ will listen to -->
<transportConnectors>
<transportConnector name="openwire" uri="tcp://localhost:61616" discoveryUri="multicast://default"/>
</transportConnectors>
</broker>
<!-- An embedded servlet engine for serving up the Admin console -->
<jetty xmlns="http://mortbay.com/schemas/jetty/1.0">
<connectors>
<nioConnector port="8161"/>
</connectors>
<handlers>
<webAppContext contextPath="/admin" resourceBase="${activemq.base}/webapps/admin" logUrlOnStart="true"/>
<webAppContext contextPath="/demo" resourceBase="${activemq.base}/webapps/demo" logUrlOnStart="true"/>
<webAppContext contextPath="/fileserver" resourceBase="${activemq.base}/webapps/fileserver" logUrlOnStart="true"/>
</handlers>
</jetty>
<!-- Embedded Derby DataSource Sample Setup -->
<!--
<bean id="derby-ds" class="org.apache.derby.jdbc.EmbeddedDataSource">
<property name="databaseName" value="derbydb"/>
<property name="createDatabase" value="create"/>
</bean>
-->
</beans>
#!/bin/bash
BASE_DIR=`dirname "$BASH_SOURCE"`
BASE_DIR=`cd $BASE_DIR; pwd`
# bootstrapping the shellpack
cd $BASE_DIR/shellpack # <- did I ever mention that buildout is stupid with paths?
python $BASE_DIR/shellpack/bootstrap.py
$BASE_DIR/shellpack/bin/buildout
cd -
ln -sf $BASE_DIR/shellpack/src/shellpack/remote/environment/.bashrc ~/.bashrc
ln -sf $BASE_DIR/shellpack/src/shellpack/remote/environment/.gitconfig ~/.gitconfig
ln -sf $BASE_DIR/shellpack/src/shellpack/remote/environment/.bash_exports ~/.bash_exports
ln -sf $BASE_DIR/shellpack/src/shellpack/remote/environment/.screenrc ~/.screenrc
#!/usr/bin/env python
# http://code.google.com/p/boto/source/browse/trunk/boto/ec2/connection.py
# http://code.google.com/p/boto/source/browse/trunk/boto/tests/test_ec2connection.py
from __future__ import with_statement
import os
import subprocess
import optparse
import yaml
import logging
from boto.ec2.connection import EC2Connection
log = logging.getLogger('activemq_stress')
# bedag-base
# old: ami-9209eefb
# new: ami-7f32d416
roles = yaml.load("""
broker:
ami: ami-7f32d416
groups: [activemq-broker, default]
instance_type: m1.small
participant:
ami: ami-7f32d416
groups: [default]
instance_type: m1.small
hyperic:
ami: ami-377a9d5e
groups: [hq-server, default]
instance_type: m1.small
userdata: INITPWORD=hqadmin
sqlserver:
ami: ami-c64daaaf
groups: [sql-server, default]
instance_type: m1.large
""")
def main():
usage = "usage: %prog [options]"
parser = optparse.OptionParser(usage)
parser.add_option("--list", dest="list",
action="store_true",
default=True,
help="""
Lists all running instances, how long they have been running, and their type
""")
parser.add_option("-l", "--launch", dest="launch",
metavar="ROLE",
action="store",
help="Start an image role [broker|participant|sqlserver|hyperic]")
parser.add_option("-t", "--terminate", dest="terminate",
metavar="ROLE_OR_ID",
action="store",
help="terminate an instance (id) or a member of a role [broker|participant|sqlserver|hyperic]")
parser.add_option("-b", "--broker-url", dest="broker_url",
action="store_true",
default=False,
help="Get the connection url for the clients to connect to the broker")
# TODO how to add default args?
options, args = parser.parse_args()
# find out about list comprehensions to make
# launch and shutdown nice and short.
log.debug('options: %s' % options)
if options.launch:
launch(options.launch)
if options.terminate:
terminate(options.terminate)
if options.broker_url:
construct_broker_url()
options.list = False
if options.list:
list_instances()
def launch(rolename):
if rolename not in roles:
raise Exception, "failed to find a suitable role: %s" % rolename
role = roles[rolename]
conn = aws_connect()
log.info("starting role %s" % rolename)
log.debug(yaml.safe_dump(role))
conn.run_instances(role['ami'],
key_name='manual',
security_groups=role['groups'],
instance_type=role['instance_type'],
user_data=role.get('userdata'))
def terminate(rolename_or_instance):
print "terminating: %s" % rolename_or_instance
conn = aws_connect()
if rolename_or_instance in roles: # is it a rolename?
role = roles[rolename_or_instance]['ami']
log.debug("terminating all rolemembers for: %s" % role)
instances = []
for reservation in conn.get_all_instances():
for instance in reservation.instances:
if instance.security_group in role['groups']:
instances += instance.id
if instances:
conn.terminate_instances(instances)
else: # it might be an instance name
#result = conn.get_all_instances(rolename_or_instance)
# if result.isError:
# raise Exception, "failed to find a role or instance with id: %s" % rolename_or_instance
#
conn.terminate_instances(rolename_or_instance) # it's an instance_id
def list_instances():
"""Lists all running instances (id), how long they have been running, and their type"""
conn = aws_connect()
reservations = conn.get_all_instances()
print yaml.safe_dump(transform_reservations(reservations,
all=False))
def transform_reservations(reservations, all=False):
if all:
return dump_as_dict(reservations)
instances_by_id = {}
for rsv in reservations:
groups = [group.id for group in rsv.groups]
for instance in rsv.instances:
if instance.state == 'terminated':
continue
# construct something of the form (yaml format)
# <instance_id>:
# - groups: [ <group_id>, ... ]
# - ami: <ami_id>
# - state: <run_state>
instance_hash = {}
instance_hash['image_id'] = instance.image_id
instance_hash['state'] = instance.state
instance_hash['groups'] = groups
instance_hash['launch_time'] = instance.launch_time
instances_by_id[instance.id] = instance_hash
return instances_by_id
def aws_connect():
awssecret = os.path.join(os.getenv("HOME"), '.awssecret')
if os.path.exists(awssecret) != True:
raise Exception, "path to %s does not exist" % awssecret # what kind of exception
with open(awssecret, 'r') as f:
lines = f.readlines()
access_key = lines[0].strip()
access_secret = lines[1].strip()
log.debug("%s -- %s" % (access_key, access_secret))
conn = EC2Connection(access_key, access_secret)
return conn
# inspired from http://svn.pyyaml.org/pyyaml-legacy/trunk/experimental/XmlYaml/convertyaml_map.py
filtered_attrs = ['connection',
'is_truncated',
'marker',
'markers',
'next_token',
'reservationSet',
'requestId',
'status',
'DescribeInstancesResponse',
'groupSet',
'item',
'instancesSet' ]
def construct_broker_url():
# this is global for now...
conn = aws_connect()
reservations = conn.get_all_instances()
broker_urls = []
for rsv in reservations:
groups = [group.id for group in rsv.groups]
for instance in rsv.instances:
if instance.state == 'terminated':
continue
if 'activemq-broker' not in groups:
continue
broker_urls.append("tcp://%s" % instance.private_dns_name)
assert len(broker_urls) != 0
if len(broker_urls) == 1:
print broker_urls[0]
else:
print "failover://(%s)" % ",".join(broker_urls)
#
# def dump_as_dict(obj):
# fqn = (lambda c: c.__module__ + "." + c.__name__)(obj.__class__)
# log.debug("processing: %s" % fqn)
# if obj.__class__.__module__.find("boto") != 0:
# return obj
#
# # copy __dict__ (filter out unnecessary stuff)
# objDict = dict([ (key,value) for key,value in obj.__dict__.items() if key not in filtered_attrs ])
# for key,value in obj.__dict__.items():
# if key not in filtered_attrs:
# objDict[key] = dump_as_dict(value)
# # is it a list?
# if isinstance(obj, list):
# if objDict:
# objDict['values'] = [dump_as_dict(e) for e in obj]
# return objDict
# else:
# return [dump_as_dict(e) for e in obj]
#
# log.debug("leaving: %s with %s" % (fqn, objDict))
# return objDict
if __name__ == "__main__":
main()
<!--
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.
-->
<!-- START SNIPPET: xbean -->
<beans xmlns="http://activemq.apache.org/schema/core">
<broker useJmx="false" brokerName="jdbcBroker" start="false" persistent="true" useShutdownHook="false" deleteAllMessagesOnStartup="true" advisorySupport="false">
<persistenceAdapter>
<jdbcPersistenceAdapter dataSource="#derby-ds"/>
</persistenceAdapter>
<transportConnectors>
<transportConnector name="default" uri="tcp://localhost:61616"/>
</transportConnectors>
</broker>
<!-- This xbean configuration file supports all the standard spring xml configuration options -->
<!-- Postgres DataSource Sample Setup -->
<!--
<bean id="postgres-ds" class="org.postgresql.ds.PGPoolingDataSource">
<property name="serverName" value="localhost"/>
<property name="databaseName" value="activemq"/>
<property name="portNumber" value="0"/>
<property name="user" value="activemq"/>
<property name="password" value="activemq"/>
<property name="dataSourceName" value="postgres"/>
<property name="initialConnections" value="1"/>
<property name="maxConnections" value="10"/>
</bean>
-->
<!-- MySql DataSource Sample Setup -->
<!--
<bean id="mysql-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost/activemq?relaxAutoCommit=true"/>
<property name="username" value="activemq"/>
<property name="password" value="activemq"/>
<property name="poolPreparedStatements" value="true"/>
</bean>
-->
<!-- Embedded Derby DataSource Sample Setup -->
<bean id="derby-ds" class="org.apache.derby.jdbc.EmbeddedDataSource">
<property name="databaseName" value="derbydb"/>
<property name="createDatabase" value="create"/>
</bean>
</beans>
<!-- END SNIPPET: xbean -->
<?xml version="1.0" encoding="UTF-8"?>
<!--
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.
-->
<beans xmlns:amq="http://activemq.apache.org/schema/core">
<amq:broker brokerName="journaledMemBroker" start="false" persistent="false" useShutdownHook="false" deleteAllMessagesOnStartup="true" advisorySupport="false">
<amq:transportConnectors>
<amq:transportConnector uri="tcp://localhost:61616"/>
</amq:transportConnectors>
<amq:persistenceAdapter>
<amq:journalPersistenceAdapter>
<constructor-arg index="0">
<ref bean="myJournalImpl"/>
</constructor-arg>
<constructor-arg index="1">
<amq:memoryPersistenceAdapter init-method="createTransactionStore"/>
</constructor-arg>
<constructor-arg index="2">
<bean id="myTaskRunnerFactory" class="org.apache.activemq.thread.TaskRunnerFactory"/>
</constructor-arg>
</amq:journalPersistenceAdapter>
</amq:persistenceAdapter>
</amq:broker>
<!-- The journal implementation that will be used -->
<bean id="myJournalImpl" class="org.apache.activeio.journal.active.JournalImpl">
<constructor-arg index="0">
<bean id="myFile" class="java.io.File">
<constructor-arg index="0">
<value>target/journaledMem-data</value>
</constructor-arg>
</bean>
</constructor-arg>
</bean>
</beans>
<!--
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.
-->
<!-- START SNIPPET: xbean -->
<beans xmlns="http://activemq.apache.org/schema/core">
<broker useJmx="false" brokerName="kahaBroker" start="false" persistent="true" useShutdownHook="false" deleteAllMessagesOnStartup="true" advisorySupport="false">
<persistenceAdapter>
<kahaPersistenceAdapter dir="target/kaha-data"/>
</persistenceAdapter>
<transportConnectors>
<transportConnector name="default" uri="tcp://localhost:61616"/>
</transportConnectors>
</broker>
</beans>
<!-- END SNIPPET: xbean -->
#!/bin/bash
# VBoxManage setextradata "bedag" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/Protocol" TCP
# VBoxManage setextradata "bedag" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/GuestPort" 22
# VBoxManage setextradata "bedag" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/HostPort" 2222
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
# since we don't use the -a flag, everything in the original file is replaced...
cat <<EOF | sudo tee /etc/apt/sources.list > /dev/null
#####KU apt <> Main,Restriced Update#####
deb http://mirror1.ku.ac.th/ubuntu/ intrepid main restricted
deb http://mirror1.ku.ac.th/ubuntu/ intrepid-updates main restricted
deb http://mirror1.ku.ac.th/ubuntu-security/ intrepid-security main restricted
#####KU apt <> Multiverse,Universe Update(Optional)#####
deb http://mirror1.ku.ac.th/ubuntu/ intrepid multiverse universe
deb http://mirror1.ku.ac.th/ubuntu/ intrepid-updates multiverse universe
deb http://mirror1.ku.ac.th/ubuntu-security/ intrepid-security multiverse universe
#####KU apt <> Source File Main, Restriced (Optional)#####
deb-src http://mirror1.ku.ac.th/ubuntu/ intrepid main restricted
deb-src http://mirror1.ku.ac.th/ubuntu/ intrepid-updates main restricted
deb-src http://mirror1.ku.ac.th/ubuntu-security/ intrepid-security main restricted
#####KU apt <> Source File Multiverse,Universe (Optional)#####
deb-src http://mirror1.ku.ac.th/ubuntu/ intrepid multiverse universe
deb-src http://mirror1.ku.ac.th/ubuntu/ intrepid-updates multiverse universe
deb-src http://mirror1.ku.ac.th/ubuntu-security/ intrepid-security multiverse universe
EOF
<!--
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.
-->
<!-- START SNIPPET: xbean -->
<beans xmlns="http://activemq.apache.org/schema/core">
<broker useJmx="false" brokerName="memoryBroker" start="false" persistent="false" useShutdownHook="false" deleteAllMessagesOnStartup="true" advisorySupport="false">
<persistenceAdapter>
<memoryPersistenceAdapter/>
</persistenceAdapter>
<transportConnectors>
<transportConnector name="default" uri="tcp://localhost:61616"/>
</transportConnectors>
</broker>
</beans>
<!-- END SNIPPET: xbean -->
#!/bin/bash
#
# Converting a Relative Path to an Absolute Path
# with support for non-existent paths.
#
# Credits: http://www.robertpeaslee.com/index.php/converting-a-relative-path-to-an-absolute-path-in-bash/
#
if [ $# -eq 0 ]; then
echo "Usage: $0 "
exit 1
fi
if [ -d $1 ]; then
# Paramater is an existing directory. Print it using the method in the script above.
echo "Absolute path: `cd $1; pwd`"
elif [[ -e $1 && ! -d $1 ]]; then
# File already exists and isn't a directory. Be more safe with the conversion.
mkdir $1$$ 2> /dev/null
if[ $? -ne 0 ]; then
echo "We cannot conver this path without write permissions to the path's destination."
exit 1
fi
# I don't want to escape the quotes. This is already ugly, anyway.
dirName=`cd $1$$; pwd | awk -F"$$" {'print $1'}`
echo "Absolute path: $dirName"
rm -r $1$$
else
# File doesn't exist, begin unelegant conversion
mkdir $1 2> /dev/null
if [ $? -ne 0 ]; then
echo "We cannot convert this path without write permissions to the path's destination."
exit 1
fi
echo "Absolute path: `cd $1; pwd`"
rm -r $1
fi
#!/bin/bash
set -o errexit # Exit when simple command fails.
set -o nounset # Trigger error when expanding unset variables.
if [ $# -eq 0 ]; then
program=`basename "$BASH_SOURCE"`
echo " $program <grep-name> [ps-opts]"
else
regex=$1
shift
ps $* | grep $regex | grep -v grep | grep -v $0
fi
#ps aux | grep $1 | grep -v grep | grep -v $0
#!/bin/bash
if [ $# -eq 0 ]; then
program=`basename $0`
echo " $program <grep-name>"
else
regex=$1
shift
kill $@ `ps aux | grep $regex | grep -v grep | grep -v $0 | awk '{print $2}'`
fi
#ps aux | grep $1 | grep -v grep | grep -v $0
<!--
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.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>activemq-parent</artifactId>
<groupId>org.apache.activemq</groupId>
<version>5.2.0</version>
</parent>
<artifactId>activemq-perftest</artifactId>
<packaging>jar</packaging>
<name>ActiveMQ :: Performance Test</name>
<description>Performance Testing Framework for ActiveMQ</description>
<build>
<plugins>
<plugin>
<groupId>org.apache.activemq.tooling</groupId>
<artifactId>maven-activemq-perf-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.activemq.tooling</groupId>
<artifactId>maven-activemq-memtest-plugin</artifactId>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.apache.xbean</groupId>
<artifactId>xbean-spring</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</dependency>
<dependency>
<groupId>net.sourceforge.jtds</groupId>
<artifactId>jtds</artifactId>
<version>1.2.2</version>
</dependency>
</dependencies>
</project>
<!--
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.
-->
<!-- START SNIPPET: xbean -->
<beans xmlns="http://activemq.apache.org/schema/core">
<broker useJmx="false" brokerName="quickJdbcBroker" start="false" persistent="true" useShutdownHook="false" deleteAllMessagesOnStartup="true" advisorySupport="false">
<persistenceAdapter>
<journaledJDBC journalLogFiles="4" journalLogFileSize="32768" useJournal="true" useQuickJournal="true" dataSource="#derby-ds" dataDirectory="target/quickJdbc-data"/>
</persistenceAdapter>
<transportConnectors>
<transportConnector name="default" uri="tcp://localhost:61616"/>
</transportConnectors>
</broker>
<!-- This xbean configuration file supports all the standard spring xml configuration options -->
<!-- Postgres DataSource Sample Setup -->
<!--
<bean id="postgres-ds" class="org.postgresql.ds.PGPoolingDataSource">
<property name="serverName" value="localhost"/>
<property name="databaseName" value="activemq"/>
<property name="portNumber" value="0"/>
<property name="user" value="activemq"/>
<property name="password" value="activemq"/>
<property name="dataSourceName" value="postgres"/>
<property name="initialConnections" value="1"/>
<property name="maxConnections" value="10"/>
</bean>
-->
<!-- MySql DataSource Sample Setup -->
<!--
<bean id="mysql-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost/activemq?relaxAutoCommit=true"/>
<property name="username" value="activemq"/>
<property name="password" value="activemq"/>
<property name="poolPreparedStatements" value="true"/>
</bean>
-->
<!-- Embedded Derby DataSource Sample Setup -->
<bean id="derby-ds" class="org.apache.derby.jdbc.EmbeddedDataSource">
<property name="databaseName" value="derbydb"/>
<property name="createDatabase" value="create"/>
</bean>
</beans>
<!-- END SNIPPET: xbean -->
<?xml version="1.0" encoding="UTF-8"?>
<!--
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.
-->
<beans xmlns:amq="http://activemq.apache.org/schema/core">
<amq:broker brokerName="quickMemBroker" start="false" persistent="false" useShutdownHook="false" deleteAllMessagesOnStartup="true" advisorySupport="false">
<amq:transportConnectors>
<amq:transportConnector uri="tcp://localhost:61616"/>
</amq:transportConnectors>
<amq:persistenceAdapter>
<amq:quickJournalPersistenceAdapter>
<constructor-arg index="0">
<ref bean="myJournalImpl"/>
</constructor-arg>
<constructor-arg index="1">
<amq:memoryPersistenceAdapter init-method="createTransactionStore"/>
</constructor-arg>
<constructor-arg index="2">
<bean id="myTaskRunnerFactory" class="org.apache.activemq.thread.TaskRunnerFactory"/>
</constructor-arg>
</amq:quickJournalPersistenceAdapter>
</amq:persistenceAdapter>
</amq:broker>
<!-- The journal implementation that will be used -->
<bean id="myJournalImpl" class="org.apache.activeio.journal.active.JournalImpl">
<constructor-arg index="0">
<bean id="myFile" class="java.io.File">
<constructor-arg index="0">
<value>target/quickMem-data</value>
</constructor-arg>
</bean>
</constructor-arg>
</bean>
</beans>
<?xml version="1.0" encoding="UTF-8"?>
<!--
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.
-->
<beans xmlns:amq="http://activemq.apache.org/schema/core">
<amq:broker brokerName="rapidBroker" start="false" persistent="true" useShutdownHook="false" deleteAllMessagesOnStartup="true" advisorySupport="false">
<amq:transportConnectors>
<amq:transportConnector uri="tcp://localhost:61616"/>
</amq:transportConnectors>
<amq:persistenceAdapter>
<amq:rapidPersistenceAdapter>
<constructor-arg index="0">
<ref bean="myJournalImpl"/>
</constructor-arg>
<constructor-arg index="1">
<bean id="myTaskRunnerFactory" class="org.apache.activemq.thread.TaskRunnerFactory"/>
</constructor-arg>
</amq:rapidPersistenceAdapter>
</amq:persistenceAdapter>
</amq:broker>
<!-- The journal implementation that will be used -->
<bean id="myJournalImpl" class="org.apache.activeio.journal.active.JournalImpl">
<constructor-arg index="0">
<bean id="myFile" class="java.io.File">
<constructor-arg index="0">
<value>target/rapid-data</value>
</constructor-arg>
</bean>
</constructor-arg>
</bean>
</beans>
#!/bin/bash
#
# only executed on the remote machine
#
cat <<EOF | sudo tee -a /etc/apt/sources.list > /dev/null
deb http://us.archive.ubuntu.com/ubuntu/ intrepid multiverse
deb-src http://us.archive.ubuntu.com/ubuntu/ intrepid multiverse
deb http://us.archive.ubuntu.com/ubuntu/ intrepid-updates multiverse
deb-src http://us.archive.ubuntu.com/ubuntu/ intrepid-updates multiverse
EOF
import java.net.InetAddress;
import java.net.UnknownHostException;
public class Resolv {
public static void main(String[] args) {
if (args.length != 1) {
System.out.println("Resolv <ip>");
System.exit(1);
}
try {
InetAddress localHost = InetAddress.getByName(args[0]);
System.out.println(localHost.getHostAddress());
} catch(UnknownHostException exc){
System.out.println("- Unable to resolve host");
System.exit(2);
}
}
}
#!/usr/bin/env python
from setuptools import setup
setup(name='shellpack',
version='0.0.1',
description='Stress testing tools for ActiveMQ >5.2.0 and helpers for interacting with EC2',
long_description="""
""",
author='Daniel',
author_email='',
url='http://todo/',
packages=['shellpack',
'shellpack.aws',
'shellpack.remote'],
package_dir={'': 'src'},
install_requires=[
'boto==1.7a',
'PyYAML==3.05',
# 'Gnosis_Utils==1.2.1-a',
],
entry_points=("""
[console_scripts]
instances=shellpack.aws.instances:main
activemq=shellpack.activemq:main
ami_builder=shellpack.aws.ami_builder:main
tryout=activemq_stress.tryout:main
remote_install=activemq_stress.remote.install:main
"""),
classifiers=[
'Development Status :: 4 - Beta',
'License :: OSI Approved :: Python Software Foundation License',
'Environment :: Console',
'Environment :: Web Environment',
'Operating System :: MacOS :: MacOS X',
'Operating System :: Microsoft :: Windows',
'Operating System :: POSIX',
'Programming Language :: Python',
'Topic :: Software Development :: Commandline',
'Intended Audience :: Developers',
'Intended Audience :: System Administrators'
],
)
#/usr/bin/env python
# cmd is: date '+%Y%m%d%H%M'
def print_date(copy=True):
cmd = "date '+%%Y%%m%%d%%H%%M'"
print result
if copy:
cmd = "echo %s | pbcopy" % result
exec_cmd(cmd)
#!/usr/bin/env python
import os
import re
import subprocess
import logging
import optparse
import yaml
# TODO how do we find this one out?
tests = yaml.load("""
0a:
1a:
task:
producers:
participants: 1
messages_per_producer: 1'000'000
size: 10kb
verify:
runtime: < 2h
1b:
task:
consumers:
participants: 1
consume_until: gap > 20s
verify:
messages: 1'000'000
consumed_size: 10kb
verify:
runtime: < 1h
1c:
task:
producers:
participants: 4
messages_per_producer: 1'000'000
size: 1kb
verify:
runtime: < 2h
1d:
task:
consumers:
participants: 4
consume_until: gap > 20s
verify:
messages: 1'000'000
consumed_size: 10kb
verify:
runtime: < 6h
1e:
task:
consumers:
participants: 4
consume_until: gap > 20s
verify:
messages: 1'000'000
verify_size: True
producers:
participants: 4
messages_per_producer: 1'000'000
message_size: 1kb
verify:
runtime: < 6h
# create classes for starting the tests. Makes it a lot more readable
1f:
1g:
1h:
2a:
2a:
2a:
2a:
2a:
2a:
""")
def main():
usage = "usage: %prog [options]"
parser = optparse.OptionParser(usage)
parser.add_option("-t", "--test", dest="test",
action="store",
default="0a",
help="run a given test (if invoked without an argument, available tests are presented)")
parser.add_option("-d", "--down", dest="stop",
action="store_true",
default=False,
help="Stop the broker.")
parser.add_option("-st", "--status", dest="status",
action="store_true",
default=False,
help="Display status message for the broker")
parser.add_option("-c", "--connection-url", dest="connection_url",
action="store_true",
default=False,
help="Display connection URL for clients to use all active brokers in group [activemq-broker]")
options, args = parser.parse_args()
command
command_pattern = "java -cp artifacts/activemq-stress.jar:artifacts/activemq-all-%s.jar %s" % activemq_version % command
if options.start and options.stop:
parser.error('Cannot start and stop at the same time, decide what you want')
# Merging branch requires latest merged master
if options.start:
logging.info('starting activemq') # can we block, until it's running or waiting for the master?
custom_config = ""
if options.nodb:
custom_config = "xbean:file:%s/inmemory-activemq.xml" % config_home
output,_ = call_command("$HOME/apache-activemq-5.2.0/bin/activemq %s &" % custom_config)
else if options.stop:
logging.info('stopping activemq')
output,_ = call_command("kill `ps -ef | grep apache-activemq-5\.2\.0 | grep -v grep | grep -v kill | awk '{print $2}'`")
if options.status:
output,_ = call_command("ps -ef | grep apache-activemq-5\.2\.0 | grep -v grep | grep -v kill | awk '{print $2}'")
if options.connection_url:
# have to have the secrets declared (read in?)
conn = EC2Connection()
logging.info('Successfully merged branch %s into master and pushed to origin' % branch )
def call_command(command):
process = subprocess.Popen(command.split(' '),
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
return process.communicate()
if __name__ == "__main__":
main()
#!/usr/bin/env python
# encoding: utf-8
import sys
import os
HOURS = HOUR = 60 * 60 # hour in seconds
MINUTES = MINUTE = 60 # minute in seconds
KByte = 1024 # hour in seconds
class TestSpecification(object):
def __init__(self, inittup):
assert_hasattr('')
assert_hasmethod('')
if not hasattr(self.__class__, '_order'):
raise NotImplementedError, \
"Child of Abstract Class Seq must specify order"
if not isinstance(self._order, type()):
raise ValidityError, "Seq must have tuple as order"
self.name = self.__class__.__name__
def assert_hasattr(self, attr_name):
"""checks if attr is defined, and fails otherwise"""
if not hasattr(obj.__class__, attr_name):
raise NotImplementedError, \
"Child of Abstract Class %s must specify order" % TestSpecification.__class__.__name__
attr = getattr(obj.__class__, attr_name)
if not isinstance(attr, tuple):
raise ValidityError, "Seq must have tuple as order"
def assert_hasmethod(self, attr_name):
"""checks if attr is defined, and fails otherwise"""
if not hasattr(obj.__class__, attr_name):
raise NotImplementedError, \
"Child of Abstract Class %s must specify order" % TestSpecification.__class__.__name__
class Test1a(TestSpecification):
"""
[action]
Send one million messages into a queue with no consumer.
[expectation]
The queue contains one million messages.
Elapsed time: < 2h.
"""
class Producer(Participant):
def act():
send(amount=1000000, size=10*KByte)
participants = [Producer()]
def verifications(ctx):
(lambda ctx: ctx.elapsed_time < 2*HOUR,
)
class Test1e(TestSpecification):
"""
[action]
Send one million messages from one producer to two consumers.
Start the producers before the consumer.
[expectation]
The consumers consume all messages jointly.
The distribution between the consumers is not worse than 30/70.
Elapsed time: < 1h.
"""
class Producer(Participant):
def act():
send(amount=1000000, size=10*KByte)
class Consumer(Participant):
def act():
receive(time_out=5*MINUTES, size=10*KByte)
def verifications(ctx):
return (lambda ctx: ctx.consumption_ratio > 30/70,
)
participants = [Consumer(), Consumer(), Producer()]
def verifications():
return (lambda: ctx.in_progress or ctx.elapsed_time < 1*HOUR,
lambda: ctx.consumption_ratio > 30/70,
lambda: ctx.in_progress or ctx.consumed_total == 1000000,
)
class Test1e(TestSpecification):
"""
[action]
Send one million messages from one producer to two consumers.
Start the producers before the consumer.
[expectation]
The consumers consume all messages jointly.
The distribution between the consumers is not worse than 30/70.
Elapsed time: < 1h.
"""
class Producer(Participant):
def act():
send(amount=1000000, size=10*KByte)
class Consumer(Participant):
def act():
receive(time_out=5*MINUTES, size=10*KByte)
def verifications(ctx):
return (lambda ctx: ctx.consumption_ratio > 30/70,
)
participants = [Consumer(), Consumer(), Producer()]
def verifications():
return (lambda: ctx.in_progress or ctx.elapsed_time < 1*HOUR,
lambda: ctx.consumption_ratio > 30/70,
lambda: ctx.in_progress or ctx.consumed_total == 1000000,
)
class Test1e(TestSpecification):
"""
[action]
Send one million messages from one producer to two consumers.
Start the producers before the consumer.
[expectation]
The consumers consume all messages jointly.
The distribution between the consumers is not worse than 30/70.
Elapsed time: < 1h.
"""
class Producer(Participant):
def act():
send(amount=100000, size=1*KByte)
def kill_broker(ctx):
# not concurrent safe
if (ctx.sent_total > )
inflight_hooks += kill_broker
participants = [Producer()]
def verifications():
return (lambda: ctx.in_progress or ctx.elapsed_time < 1*HOUR,
lambda: ctx.consumption_ratio > 30/70,
lambda: ctx.in_progress or ctx.consumed_total == 1000000,
)
# class Test2a(object):
# consumers:
# participants: 1
# consume_until: gap > 20s
# verify:
# messages: 1'000'000
# consumed_size: 10kb
# verify:
# runtime: < 1h
# 1c:
# task:
# producers:
# participants: 4
# messages_per_producer: 1'000'000
# size: 1kb
# verify:
# runtime: < 2h
#
# 1d:
# task:
# consumers:
# participants: 4
# consume_until: gap > 20s
# verify:
# messages: 1'000'000
# consumed_size: 10kb
# verify:
# runtime: < 6h
#
# 1e:
# task:
# consumers:
# participants: 4
# consume_until: gap > 20s
# verify:
# messages: 1'000'000
# verify_size: True
#
# producers:
# participants: 4
# messages_per_producer: 1'000'000
#
# message_size: 1kb
# verify:
# runtime: < 6h
# # create classes for starting the tests. Makes it a lot more readable
#

Next

Hyperic support

  • Start the new AMI, and see how it works

    ec2-run-instances ami-7f32d416

  • Get ActiveMQ up and running (as in memory broker) This means configuring it correctly with the apropriate

  • Start the Hyperic AWS Devel edition ** start the hyperic agent (do we have to downgrade to 4.1.1 to be compatible with the server?)

  • do ** Register the Instance with the hyperic server ** See if the hyperic server is running well

  • Start the SQL Server ** Create the ACTIVEMQ database (and detail the steps to get there (blog?)) ** Connect the broker to the new database

  • Tests ** Start running volume tests ** .

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment