The brick's threaded components transfer VCs between the individual
components used the standard python Queue object. The following queues
are used by the AddancBrick:
newVCQue-
a queue to hold new minted VCs.
runQue-
a queue to hold VCs with
executable transactions
processQue-
a queue to hold VCs who have
completed a transaction and must process response and the prepare
the next transactoin.
waitQue-
a queue to hold VCs which
need to perform the <wait> specified in the VC's script.
deadQue-
a queue of no longer functioning VC waiting
to have their instrumentation and metric written to the data file.
Brick Threaded Components
brickControlThread-
Provides overall monitoring and control functions, schedules and
terminates test.
vcFactory-
Builds and initialize an inventory of new VC, runs whenever signalled on the vcConsumed condition
object. Builds inventory up to DEFAULT_MIN_NEW_VC_QUEUE_DEPTHconfigured
level before retiring to wait on another vcConsumed signal.
vcSignalGenerator-
Starts new VCs at a rate
determined by the test's specified arrival rate. Reads from the newVCQue and
writes to the runQue.Upon
starting, the vcSignalGeneratorwaits
on the startVCSignalGeneratorcondition
before generating new VCs at
the specified rate and continues to generate VCs until either stopTest or stopTestImmedialy events
are set.
vcTransactionGenerator-
Generates transactions for VCs on
the runQue. Provides
basic HTTP/HTTPS functionality via several threads:
connectThreads(connection
pool) - A configurable pool of select threads, each of which reads from
the RunQue, performs a connect for the VC,
and transfers the VC to the selecThread's
internal send/recv lists.
selectThread-
A single select thread to handle all reads/writes asynchronously. When
transaction has been completed, moves the VC to the processQue
vcTransactionProcessor-
Reads from the processQ,
allows the VC to process the
HTTP response before moving to the next transaction. Setup and
initialize the next transaction. Writes to the waitQue,
the runQue,
or the deadQue
depending on the state of the VC.
vcWaitQProcessor-
Keeps a VC suspended for the <wait>
period specified in the VC's
script. Enables the VC when
waut time has expired. Reads from the waitQue, writes to the runQue
instrumentationRecorder-
Writes response time metrics to the instrumentation file. Reads from
the deadQ.
jabberConnection-
Provides threaded interface to the jabber server and AddancCommander
heartbeatThread-
Writes VC accounting and
queue statistics to the log at configurable time intervals. Can also
send the same information to the AddancCommander via
the jabber interface.
Coordinating Events/Conditions
vcConsumedcondition object - signaled by the
vcSignalGenerator when ever it uses one of the inventoried VCs from the
newVCQue
startVCSignalGeneratorcondition object - signaled by the brickControlThread to
tell the vcSignalGeneratorto
start a test.
stopTestevent object - set by any thread to
signal that the current test should stop
stopTestImmediatlyevent object - set by any thread
to signal that the current test should stop immediatly.