//--------------------------------------------------------------------------- #ifndef RunTestsH #define RunTestsH //--------------------------------------------------------------------------- #include #include #include #include #include "Grids_ts.hpp" #include "TSDBGrid.hpp" #include "TSGrid.hpp" #include #include #include #include #include #include #include "DataModule.h" #include "TXMLSchema.h" #include "AdvProgressBar.hpp" #include #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