Previous: Installing Addanc System ComponentsUp: Table of ContentsNext: Brick/Commander xmlrpc Interface

Addanc Reference Manual
Addanc Tech Specs

Addanc HomeIndexTable of Contents

Brick Architecture


Brick Architecture

      1. Overview

      2. Brick Queues

        • 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:
          1. newVCQue- a queue to hold new minted VCs.
          2. runQue- a queue to hold VCs with executable transactions
          3. processQue- a queue to hold VCs who have completed a transaction and must process response and the  prepare the next transactoin.
          4. waitQue- a queue to hold VCs which need to perform the <wait> specified in the VC's script.
          5. deadQue- a queue of no longer functioning VC waiting to have their instrumentation and metric written to the data file.
      3. 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.
      4. 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.
      5. Non-Threaded Components

        1. Script
        2. Test
        3. VirtualClient

Previous: <none> Up: Addanc Tech Specs Next: Brick/Commander xmlrpc Interface
Page Updated: 02/15/2003