//## begin module%1.7%.codegen_version preserve=yes // Read the documentation to learn more about C++ code generator // versioning. //## end module%1.7%.codegen_version //## begin module%42030C2C00B8.cm preserve=no //## end module%42030C2C00B8.cm //## begin module%42030C2C00B8.cp preserve=no // C O P Y R I G H T N O T I C E // This material is confidential to ERG and may not be disclosed in whole // or in part to any third party nor used in any manner whatsoever other // than for the purposes expressly consented to by ERG in writing. // // This material is also copyright and may not be reproduced, stored in a // retrieval system or transmitted in any form or by any means in whole or // in part without the express written consent of ERG. //## end module%42030C2C00B8.cp //## Module: TestScenario%42030C2C00B8; Pseudo Package body //## Subsystem: MASS::Dev::Tools::TxnTestManager::src%41F5A79001E4 //## Source file: Z:\MASS_Dev\Tools\TxnTestManager\src\TestScenario.cpp //## begin module%42030C2C00B8.additionalIncludes preserve=no //## end module%42030C2C00B8.additionalIncludes //## begin module%42030C2C00B8.includes preserve=yes #pragma warn -com #include #pragma warn +com //## end module%42030C2C00B8.includes // Iteration #include "Iteration.h" // TestScenario #include "TestScenario.h" // TransactionSpecification #include "TransactionSpecification.h" // EvaluationContext #include "EvaluationContext.h" // TransactionStream #include "TransactionStream.h" // DefinedVariable #include "DefinedVariable.h" //## begin module%42030C2C00B8.additionalDeclarations preserve=yes #include //## end module%42030C2C00B8.additionalDeclarations // Class TestScenario //## Operation: TestScenario%4203231D030E TestScenario::TestScenario (const int &scenario, Iteration& iteration) //## begin TestScenario::TestScenario%4203231D030E.hasinit preserve=no : m_batchSize(0), m_repeatCount(0), m_iteration(&iteration) //## end TestScenario::TestScenario%4203231D030E.hasinit //## begin TestScenario::TestScenario%4203231D030E.initialization preserve=yes , m_scenario( scenario ) //## end TestScenario::TestScenario%4203231D030E.initialization { //## begin TestScenario::TestScenario%4203231D030E.body preserve=yes //## end TestScenario::TestScenario%4203231D030E.body } TestScenario::~TestScenario() { //## begin TestScenario::~TestScenario%42030C2C00B8_dest.body preserve=yes for ( std::map< int, TransactionSpecification * >::iterator where = m_transaction.begin(); where != m_transaction.end(); ++where ) { delete where->second; where->second = 0; } m_iteration = 0; // We don't own this object. //## end TestScenario::~TestScenario%42030C2C00B8_dest.body } //## Other Operations (implementation) //## Operation: buildBatchName%4208537A00B6 std::string & TestScenario::buildBatchName (std::string &batchName, const std::string &scenarioName) { //## begin TestScenario::buildBatchName%4208537A00B6.body preserve=yes batchName.erase(); batchName.reserve( scenarioName.length() ); for ( std::string::size_type index = 0; index < scenarioName.length(); ++index ) { if ( std::isalnum( scenarioName[ index ] ) ) { batchName += scenarioName[ index ]; } else { batchName += '_'; } } return ( batchName ); //## end TestScenario::buildBatchName%4208537A00B6.body } //## Operation: defineVariable%425B47DD004F DefinedVariable& TestScenario::defineVariable (const std::string &variableName) { //## begin TestScenario::defineVariable%425B47DD004F.body preserve=yes std::map< std::string, DefinedVariable * >::const_iterator instance = m_variable.find( variableName ); if ( instance != m_variable.end() ) { return ( *instance->second ); } else { DefinedVariable * object = 0; try { object = new DefinedVariable( variableName ); if ( m_variable.insert( std::map< std::string, DefinedVariable * >::value_type( variableName, object ) ).second ) { return ( *object ); } else { MTHROW( std::runtime_error, \ "Cannot add variable \"" \ << variableName \ << "\" to defined variable table." ); } } catch ( ... ) { delete object; object = 0; throw; } } //## end TestScenario::defineVariable%425B47DD004F.body } //## Operation: generate%420455D80390 const bool TestScenario::generate (TransactionStream& stream, const bool &generateHeaders, EvaluationContext& evaluationContext) { //## begin TestScenario::generate%420455D80390.body preserve=yes bool generated = true; if ( m_repeatCount ) { std::string batchName; stream.newBatch( m_batchSize, buildBatchName( batchName, m_scenarioName ) ); for ( unsigned repeat = 1; repeat <= m_repeatCount && generated; ++repeat ) { evaluationContext.setScenarioIndex( repeat ); for ( std::vector< TransactionSpecification * >::iterator where = m_orderedTransactionCollection.begin(); where != m_orderedTransactionCollection.end(); ++where ) { if ( !(*where)->generate( stream, generateHeaders, evaluationContext ) ) { generated = false; break; } } } } return ( generated ); //## end TestScenario::generate%420455D80390.body } //## Operation: getBatchSize%42042C5E0029 const unsigned & TestScenario::getBatchSize () const { //## begin TestScenario::getBatchSize%42042C5E0029.body preserve=yes return ( m_batchSize ); //## end TestScenario::getBatchSize%42042C5E0029.body } //## Operation: getIteration%420460EA003C const Iteration & TestScenario::getIteration () const { //## begin TestScenario::getIteration%420460EA003C.body preserve=yes return ( *m_iteration ); //## end TestScenario::getIteration%420460EA003C.body } //## Operation: getRepeatCount%42042C5D02F8 const unsigned & TestScenario::getRepeatCount () const { //## begin TestScenario::getRepeatCount%42042C5D02F8.body preserve=yes return ( m_repeatCount ); //## end TestScenario::getRepeatCount%42042C5D02F8.body } //## Operation: getScenarioName%42084D3A0270 const std::string & TestScenario::getScenarioName () const { //## begin TestScenario::getScenarioName%42084D3A0270.body preserve=yes return ( m_scenarioName ); //## end TestScenario::getScenarioName%42084D3A0270.body } //## Operation: getScenarioNumber%4203252300A6 const int & TestScenario::getScenarioNumber () const { //## begin TestScenario::getScenarioNumber%4203252300A6.body preserve=yes return ( m_scenario ); //## end TestScenario::getScenarioNumber%4203252300A6.body } //## Operation: getTransactionCount%420890BF03BE const unsigned TestScenario::getTransactionCount () const { //## begin TestScenario::getTransactionCount%420890BF03BE.body preserve=yes return ( m_transaction.size() * m_repeatCount ); //## end TestScenario::getTransactionCount%420890BF03BE.body } //## Operation: getTransactionSpecification%420328E00043 TransactionSpecification& TestScenario::getTransactionSpecification (const int &transaction, const std::string &payloadStructureName) { //## begin TestScenario::getTransactionSpecification%420328E00043.body preserve=yes std::map< int, TransactionSpecification * >::const_iterator instance = m_transaction.find( transaction ); if ( instance != m_transaction.end() ) { return ( *instance->second ); } else { TransactionSpecification * object = 0; try { object = new TransactionSpecification( transaction, payloadStructureName, *this ); m_orderedTransactionCollection.push_back( object ); if ( m_transaction.insert( std::map< int, TransactionSpecification * >::value_type( transaction, object ) ).second ) { return ( *object ); } else { MTHROW( std::runtime_error, \ "Cannot add transaction \"" \ << transaction \ << "\" to scenario " \ << m_scenario \ << '.' ); } } catch ( ... ) { delete object; object = 0; throw; } } //## end TestScenario::getTransactionSpecification%420328E00043.body } //## Operation: getVariable%425B47F50012 DefinedVariable& TestScenario::getVariable (const std::string &variableName) { //## begin TestScenario::getVariable%425B47F50012.body preserve=yes std::map< std::string, DefinedVariable * >::const_iterator instance = m_variable.find( variableName ); if ( instance != m_variable.end() ) { return ( *instance->second ); } MTHROW( std::runtime_error, \ "Variable \"" \ << variableName \ << "\" is not defined." ); //## end TestScenario::getVariable%425B47F50012.body } //## Operation: isVariable%425B4B6A01C1 const bool TestScenario::isVariable (const std::string &symbol) const { //## begin TestScenario::isVariable%425B4B6A01C1.body preserve=yes return ( m_variable.find( symbol ) != m_variable.end() ); //## end TestScenario::isVariable%425B4B6A01C1.body } //## Operation: setBatchSize%42042CF100D5 const unsigned & TestScenario::setBatchSize (const unsigned &value) { //## begin TestScenario::setBatchSize%42042CF100D5.body preserve=yes return ( m_batchSize = value ); //## end TestScenario::setBatchSize%42042CF100D5.body } //## Operation: setRepeatCount%42042CF100E5 const unsigned & TestScenario::setRepeatCount (const unsigned &value) { //## begin TestScenario::setRepeatCount%42042CF100E5.body preserve=yes return ( m_repeatCount = value ); //## end TestScenario::setRepeatCount%42042CF100E5.body } //## Operation: setScenarioName%42084D300222 std::string & TestScenario::setScenarioName (const std::string &value) { //## begin TestScenario::setScenarioName%42084D300222.body preserve=yes return ( m_scenarioName = value ); //## end TestScenario::setScenarioName%42084D300222.body } // Additional Declarations //## begin TestScenario%42030C2C00B8.declarations preserve=yes //## end TestScenario%42030C2C00B8.declarations //## begin module%42030C2C00B8.epilog preserve=yes //## end module%42030C2C00B8.epilog