||Addanc is a distributed,
scalable system for stress- or load-testing Web applications. Addanc is
most useful for testing complex systems consisting of multiple "moving
parts" with a web GUI.
Addanc focuses on the arrival rate of ”service requests”, rather than
generating a server load based on a fixed number of clients. Addanc
clients arrive at a specific rate and execute a set of HTTP/HTTPS GET
and/or POST transactions representing the “service request.”
Addanc supports the following features:
- Definable arrival rates
- Unlimited number of clients
- Scheduled tests
- HTTP and HTTPS support
- Cookie support
- Redirection support
- Configurable test durations
- Ability to allow client scripts to complete at test
- XML based scripts
- Configurable inter-page wait times
- Real-time monitoring of internal queues
- Jabber support for distributed component command, control,
- Instrumentation of page times, transaction connect times,
send and receive times, send and receive byte counts
- MySQL and file support for recording instrumentation data
- Configurable page and transaction ids
- Distributed, scalable architecture
The Addanc project is open-source, uses open-source components and is
hosted on sourceforge.net. The Addanc team appreciates the support of
the open source community and the project support services
provided by SourceForge.
Addanc is different from most other web performance testing systems in
that it focuses on testing a system via the arrival rate of new requests
for services rather than a fixed number of clients. Members of the
development team have used a number of testing tools that focus on
delivering testing traffic from a fixed (or varying) number of clients.
In these test environments, the number of clients is fixed and each
client iterates through a script. The load generated by a
client-oriented system is limited by the number of clients and the time
it takes the system under test (SUT) to respond to all the requests in a
client's script. Thus, the load generator and the SUT are tied together
in a feedback loop. This becomes a non-linear system leading to
unpredictable behavior that may be sensitive to initial conditions. At
extremes of performance, which is where most testing is interesting,
this feedback loop limits the test load and often causes positive
feedback and wild swings in measured performance and loads. Even when
not at extremes, testing systems based on a fixed number of clients are
difficult to "tune" when attempting to test systems against transaction
rate metrics. For example, it can be difficult to determine, except with
trial and error, the number of clients required to generate a targeted
Addanc decouples the generation of test traffic from the "life" of a
client. Addanc generates new clients at a specified rate. These clients
then execute their assigned script and exist for as long as necessary to
complete the script. When the arrival rate of new clients is well below
the work capacity of a tested system, the number of clients will remain
relatively fixed, with some variance due to the stochastic nature of
servicing the requests. When the client arrival rate starts to exceed
the work capacity of the SUT, the number of active clients will start
(and usually continue) to rise. When the client arrival rate closely
matches the work capacity of the SUT, the number of active clients will
vary as the system deals with the work requests. Because Addanc clients
are generated at a determined rate, it avoids "surging" or client
synchronization that can occur in other systems due to resource
queuing. By generating new clients based on arrival rate, Addanc also
avoids the problem of starting a set of clients at the same time (which
would result in synchronized demand as all clients step through their
scripts at the same rate).
So, Addanc offers a better testing environment than fixed-client
testing systems by more accurately simulating a "real world" environment
where service demand and capacity are independent. By focusing on
arrival rates, Addanc allows the tester to plan and develop tests that
will reveal the behavior of the SUT under loads expected when deployed.
Addanc is most useful when testing complex applications consisting of
several "moving parts" with a web-based front end. The stochastic nature
of such systems can make client based tests difficult to plan and
interpret. Consider a system involving multiple application servers, a
database server, and a communication channel to a mainframe application. When testing such a system at the limits of its capacity
using a fixed number of clients, small perturbations in mainframe
service times or communication channel capacity may cause strong feedback
to the testing system leading to wide swings in test load, measured
performance, and measured throughput. Because Addanc continues to
generate new requests for service, uncoupled from the SUT's ability to
handle the requests, this feedback is avoided and true measures of
performance and capacity may be obtained.
An Addanc test system consists of number of cooperating and interacting
components. These components communicate with each other using the
Jabber protocol. Addanc components can exist on the same network or can
be distributed across any number of networks, as long as they can all
access a common jabber server. The Addanc Brick provides the basic testing
functionality. Thus, increasing testing capacity is simply a matter of
provisioning additional Bricks.
The basic Addanc components are:
Commander - The Commander is
the basic command and monitoring interface for the Addanc Web Testing
System. The Commander provides the basic ability to schedule tests,
monitor the state and activity of Addanc Bricks,
and to control the activity of Addanc Bricks.
The commander uses wxPython to provide a portable GUI .
- Addanc Brick
- An Addanc Brick provides
the basic testing functionality for the Addanc Web Testing System. A Brick generates
simulated clients at a specified rate, executes the simulated client's
script, and collects the instrumentation metrics. The total number of Bricks provisioned
or allocated to the testing system defines the overall testing capacity
of an Annanc Web Testing System.
Jabber Server - Basic command, control, and status information is transferred
between Addanc components via the jabber protocol. To
minimize latency issues, we recommend using a dedicated jabber server in
the Addanc Web Testing System.
Addanc uses a number of other open-source components. To successfully install and use Addanc you must download and install the following
- Python 2.3 - Addanc is written in
Python and uses features that first appeared in Python 2.3.
- Jabber - You will probably want to install a local copy of a jabber server for your Addanc system if you
need GUI control of multiple bricks via the Addanc
- M2Crypto - Addanc
uses the M2Crypto Python (Version 0.11) wrapper for the OpenSSL
functions. If you do not need HTTPS transaction support, you do not have to
install M2Crypto. The Addanc Brick will function without the
- OpenSSL - To successfully use
Addanc with SSL/HHTPS tests, you must download the source tar-ball and (re)build OpenSSL with
RC5, and IDEA support. (This is really a M2Crypto prerequisite.)
- SWIG - M2Crypto uses the
Simplified Wrapper and Interface Generator, SWIG (Version 1.3.17), to
build wrappers for the OpenSSL functions.
- wxPython - Addanc (specifically,
the Addanc Commander)
wxPython to provide a portable GUI across Windows and X11 systems.
- MySQLdb - The Addanc
Brick can be configured to store instrumentation information in a
MySQL database. If you choose to enable this feature, you will need to
install the MySQLdb package.
The Addanc installation process will automatically install the following packages:
- ElementTree -
Addanc uses Fredrik Lundh's ElementTree object to handle some (soon to be
all) XML parsing and storing operations.
- pyjabber - Addanc
uses jabber to coordinate the activities of distributed components.
Addanc Mailing Lists
The Addanc team has established the following mailing lists:
Where does the name Addanc come from?
Addanc (also spelled Affanc, Avanc, or Abac) is a character from
pre-Christian Welsh and Celtic mythology. Like many cultures, early
Welsh and Celtic mythology includes a story about a worldwide flood or
deluge. In the Celtic flood mythology, Addanc was a primordial god or
faery, often characterized as a dragon, who created and rode (surfed)
the crest of the great flood near his home on Llyon Llion, the Lake of
Waves. The flood washed over the entire earth killing all inhabitants
except the God/Hero Dwyvan, and his wife, the Goddess/Heroine
Dwyvach, who escaped the flood in an ark.
In modern Wales, "Addanc" is used to describe any evil fresh
water-dwelling spirit. The related term "Afanc" describes
The Addanc development team relishes the image of a giant dragon surfing
the crest of a large wave washing across the world destroying everything
in its path. Now that's a stress test!
Page Updated: 2/9/2004