Subversion Repositories DevTools

Rev

Blame | Last modification | View Log | RSS feed

//---------------------------------------------------------------------------

#ifndef RunTestsH
#define RunTestsH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include "Grids_ts.hpp"
#include "TSDBGrid.hpp"
#include "TSGrid.hpp"
#include <Buttons.hpp>
#include <ComCtrls.hpp>
#include <ExtCtrls.hpp>
#include <ToolWin.hpp>
#include <ADODB.hpp>
#include <DB.hpp>
#include "DataModule.h"
#include "TXMLSchema.h"
#include "AdvProgressBar.hpp"
#include <vector>
#include "Main.h"
//---------------------------------------------------------------------------
class TRunTestsForm : public TForm
{
__published:    // IDE-managed Components
        TToolBar *ToolBar1;
        TToolButton *ToolButton1;
        TSpeedButton *GenerateTransactions;
        TToolButton *ToolButton3;
        TPanel *Panel1;
        TSplitter *Splitter1;
        TPanel *Panel2;
        TToolButton *ToolButton4;
        TStatusBar *StatusBar;
        TTreeView *TestCaseTxnTreeView;
        TPanel *TestCaseTitle;
        TComboBox *GenerationTargetComboBox;
        TToolButton *ToolButton6;
        TSpeedButton *SaveTxnsToFile;
        TSpeedButton *SpeedButton1;
        TPageControl *PageControl1;
        TTabSheet *TabSheet3;
        TtsGrid *PayloadGrid;
        void __fastcall TestCaseTxnTreeViewChange(TObject *Sender,
                  TTreeNode *Node);
        void __fastcall SaveTxnsToFileClick(TObject *Sender);
        void __fastcall FormCreate(TObject *Sender);
        void __fastcall StatusBarResize(TObject *Sender);
        void __fastcall GenerateTransactionsClick(TObject *Sender);

private:        // User declarations
        AnsiString                              m_currentproject;
        int                                             m_currentiteration;
        AnsiString                              m_testcase;
        vector< AnsiString >    m_xml_schemas;
        TXMLSchema *                    m_XMLSchema;
        AnsiString                              m_user_gen_dir;
        TProgressBar *                  m_progressBarOld;
        TAdvProgressBar *               m_progressBar;

        class TransactionArtefact
        {
        public:
                TransactionArtefact( TXMLSchema &                       schema,
                                                         const string &                 name,
                                                         const unsigned short & udType )
                :       m_schema( &schema ),
                        m_name( name ),
                        m_udType( udType )
                {
                }

                ~TransactionArtefact()
                {
                        m_schema->Destroy( m_handle );
                        m_schema = 0;   // We don't own this.
                }

                void setHandle( const string & handle )
                {
                        if ( m_handle.length() )
                        {
                                m_schema->Destroy( m_handle );;
                        }
                        m_handle = handle;
                }

                const string & getHandle( void ) const
                {
                        return ( m_handle );
                }

                IterationParams & getIterationParameters( void )
                {
                        return ( m_parameters );
                }

                const string & getName( void ) const
                {
                        return ( m_name );
                }

                const unsigned short & getUdType( void ) const
                {
                        return ( m_udType );
                }

        private:
                TransactionArtefact();
                TransactionArtefact( const TransactionArtefact & );
                TransactionArtefact & operator=( const TransactionArtefact & );

        private:
                TXMLSchema *    m_schema;
                string                  m_handle;               // handle to XML structure.
                string                  m_name;                 // name of the XML structure.
                unsigned short  m_udType;               // The ud type.
                IterationParams m_parameters;   // parameters for transaction.
        };
        typedef map< int, TransactionArtefact * > TransactionSchedule;

        static const bool findSchema( vector< AnsiString > &    xmlSchemas,
                                                                  TXMLSchema &                          schema,
                                                                  const AnsiString &            currentProject,
                                                                  const int &                           currentIteration );
        void buildTranactionMap( TXNIndexMap &          transactions,
                                                         const AnsiString &     currentProject,
                                                         const int &            currentIteration );
        void buildHeader( string &                                                              handle,
                                          TXMLSchema &                                                  schema,
                                          vector< pair< string, string > > &    macros,
                                          const AnsiString &                                    currentProject,
                                          const int &                                                   currentIteration );
        static const bool isMacro( const string & value );
        static AnsiString & substituteMacro( AnsiString & value,
                                                                                 const unsigned short & udType );
        static void substituteMacros( string &                                                                  handle,
                                                                  TXMLSchema &                                                          schema,
                                                                  const vector< pair< string, string > > &      macros,
                                                                  const unsigned short &                                        udType );
        void generateScenario( const unsigned int &                                             testscenario_no,
                                                   TXNIndexMap &                                                        mass_txns,
                                                   const bool &                                                         isTds,
                                                   string &                                                                     headerHandle,
                                                   TransactionSchedule &                                        transactionSchedule,
                                                   const vector< pair< string, string > > &     macros,
                                                   const unsigned int &                                         repeatCount,
                                                   const unsigned int &                                         total,
                                                   const int &                                                          batchSk );
//      TransactionArtefact * getTransactionArtefact(
//                                                              TransactionCache &      transactionCache,
//                                                              const int &                     transactionSpecification,
//                                                              const string &          structureName,
//                                                              const int &                     currentIteration,
//                                                              TXMLSchema &            schema,
//                                                              const int &                     testScenario );
        static void loadParameters(
                IterationParams &       parameters,
                const int &                     testScenario,
                const int &                     transactionSpecification );
        static void readTransactionSchedule(
                TADOConnection *                database,
                TXMLSchema &                    schema,
                const int &                             currentIteration,
                TXNIndexMap &                   massTransactions,
                const int &                             testScenario,
                TransactionSchedule &   transactionSchedule );

        void generateTestCase( void );

        bool __fastcall InitialiseTxnStructure(const string &structure_handle, int subscript, IterationParams &structure_params);

public:         // User declarations
        __fastcall TRunTestsForm(TComponent* Owner);
        void ShowForm(const AnsiString &testcase, const AnsiString &testname, const AnsiString &project, int currentiteration, const AnsiString &user_gen_dir, TXMLSchema *XMLSchema);
};
//---------------------------------------------------------------------------
extern PACKAGE TRunTestsForm *RunTestsForm;
//---------------------------------------------------------------------------
#endif