Skip to content
Snippets Groups Projects
Commit b1a6c021 authored by Radovan Červený's avatar Radovan Červený
Browse files

simplified measurement provisioner xml structure

parent 10cf8904
No related branches found
No related tags found
1 merge request!15BP_cervera3 - automatic measurements, processing
...@@ -62,13 +62,16 @@ MeasurementProvisionerResults MeasurementProvisioner::runConfiguration ( const M ...@@ -62,13 +62,16 @@ MeasurementProvisionerResults MeasurementProvisioner::runConfiguration ( const M
} }
   
void MeasurementProvisioner::prepareEnvironment ( const MeasurementProvisionerConfiguration & cfg ) { void MeasurementProvisioner::prepareEnvironment ( const MeasurementProvisionerConfiguration & cfg ) {
list < string > binariesDirectoryExpansion = MPUtils::shellExpand ( cfg.binariesDirectory );
   
if ( binariesDirectoryExpansion.size ( ) != 1 ) const string & workingDirectory = cfg.environment.workingDirectory;
throw::exception::CommonException ( "MeasurementProvisioner: binaries directory: \"" + cfg.binariesDirectory + "\" expansion failed" );
   
if ( chdir ( binariesDirectoryExpansion.begin ( )->c_str ( ) ) != 0 ) list < string > workingDirectoryExpansion = MPUtils::shellExpand ( workingDirectory );
throw::exception::CommonException ( "MeasurementProvisioner: chdir to binaries directory: \"" + cfg.binariesDirectory + "\" failed" );
if ( workingDirectoryExpansion.size ( ) != 1 )
throw::exception::CommonException ( "MeasurementProvisioner: binaries directory: \"" + workingDirectory + "\" expansion failed" );
if ( chdir ( workingDirectoryExpansion.begin ( )->c_str ( ) ) != 0 )
throw::exception::CommonException ( "MeasurementProvisioner: chdir to binaries directory: \"" + workingDirectory + "\" failed" );
} }
   
MPRPipelineResults MeasurementProvisioner::runPipeline ( const MPPipeline & pipeline, const MPSubstitutionMap & substitutionMap ) { MPRPipelineResults MeasurementProvisioner::runPipeline ( const MPPipeline & pipeline, const MPSubstitutionMap & substitutionMap ) {
......
...@@ -34,9 +34,12 @@ struct MPCPipelineCommand { ...@@ -34,9 +34,12 @@ struct MPCPipelineCommand {
   
using MPCPipeline = std::vector < MPCPipelineCommand >; using MPCPipeline = std::vector < MPCPipelineCommand >;
   
struct MeasurementProvisionerConfiguration { struct MPCEnvironment {
std::string binariesDirectory; std::string workingDirectory;
};
   
struct MeasurementProvisionerConfiguration {
MPCEnvironment environment;
std::vector < MPCInputBatch > inputBatches; std::vector < MPCInputBatch > inputBatches;
std::vector < MPCPipeline > pipelines; std::vector < MPCPipeline > pipelines;
}; };
......
...@@ -33,39 +33,37 @@ void MeasurementProvisionerConfigurationXml::parseMeasurementProvisioner ( Measu ...@@ -33,39 +33,37 @@ void MeasurementProvisionerConfigurationXml::parseMeasurementProvisioner ( Measu
   
string data = FromXMLParserHelper::getTokenData ( iter, Token::TokenType::START_ELEMENT ); string data = FromXMLParserHelper::getTokenData ( iter, Token::TokenType::START_ELEMENT );
   
if ( data == BINARIES_DIRECTORY_TAG ) { if ( data == ENVIRONMENT_TAG )
FromXMLParserHelper::popToken ( iter, Token::TokenType::START_ELEMENT, BINARIES_DIRECTORY_TAG ); parseEnvironment ( mpc, iter );
mpc.binariesDirectory = FromXMLParserHelper::popTokenData ( iter, Token::TokenType::CHARACTER ); else if ( data == INPUT_DATA_TAG )
FromXMLParserHelper::popToken ( iter, Token::TokenType::END_ELEMENT, BINARIES_DIRECTORY_TAG ); parseInputData ( mpc, iter );
} else if ( data == MEASUREMENT_PROVISION_TAG ) { else if ( data == PIPELINES_TAG )
parseMeasurementProvision ( mpc, iter ); parsePipelines ( mpc, iter );
} else { else
break; break;
}
} }
   
FromXMLParserHelper::popToken ( iter, Token::TokenType::END_ELEMENT, MEASUREMENT_PROVISIONER_TAG ); FromXMLParserHelper::popToken ( iter, Token::TokenType::END_ELEMENT, MEASUREMENT_PROVISIONER_TAG );
} }
   
void MeasurementProvisionerConfigurationXml::parseMeasurementProvision ( MeasurementProvisionerConfiguration & mpc, std::deque < sax::Token >::iterator & iter ) { void MeasurementProvisionerConfigurationXml::parseEnvironment ( MeasurementProvisionerConfiguration & mpc, std::deque < sax::Token >::iterator & iter ) {
FromXMLParserHelper::popToken ( iter, Token::TokenType::START_ELEMENT, MEASUREMENT_PROVISION_TAG ); FromXMLParserHelper::popToken ( iter, Token::TokenType::START_ELEMENT, ENVIRONMENT_TAG );
   
for ( ; ; ) { for ( ; ; ) {
if ( !FromXMLParserHelper::isTokenType ( iter, Token::TokenType::START_ELEMENT ) ) break; if ( !FromXMLParserHelper::isTokenType ( iter, Token::TokenType::START_ELEMENT ) ) break;
   
string data = FromXMLParserHelper::getTokenData ( iter, Token::TokenType::START_ELEMENT ); string data = FromXMLParserHelper::getTokenData ( iter, Token::TokenType::START_ELEMENT );
   
if ( data == INPUT_DATA_TAG ) if ( data == WORKING_DIRECTORY_TAG ) {
parseInputData ( mpc, iter ); FromXMLParserHelper::popToken ( iter, Token::TokenType::START_ELEMENT, WORKING_DIRECTORY_TAG );
else if ( data == PIPELINES_TAG ) mpc.environment.workingDirectory = FromXMLParserHelper::popTokenData ( iter, Token::TokenType::CHARACTER );
parsePipelines ( mpc, iter ); FromXMLParserHelper::popToken ( iter, Token::TokenType::END_ELEMENT, WORKING_DIRECTORY_TAG );
else if ( data == MEASUREMENT_CONFIGURATION_TAG ) } else {
parseMeasurementConfiguration ( mpc, iter );
else
break; break;
}
} }
   
FromXMLParserHelper::popToken ( iter, Token::TokenType::END_ELEMENT, MEASUREMENT_PROVISION_TAG ); FromXMLParserHelper::popToken ( iter, Token::TokenType::END_ELEMENT, ENVIRONMENT_TAG );
} }
   
void MeasurementProvisionerConfigurationXml::parseInputData ( MeasurementProvisionerConfiguration & mpc, std::deque < sax::Token >::iterator & iter ) { void MeasurementProvisionerConfigurationXml::parseInputData ( MeasurementProvisionerConfiguration & mpc, std::deque < sax::Token >::iterator & iter ) {
...@@ -246,9 +244,8 @@ void MeasurementProvisionerConfigurationXml::parseMeasurementConfiguration ( Mea ...@@ -246,9 +244,8 @@ void MeasurementProvisionerConfigurationXml::parseMeasurementConfiguration ( Mea
   
string MeasurementProvisionerConfigurationXml::MEASUREMENT_PROVISIONER_TAG = "MeasurementProvisioner"; string MeasurementProvisionerConfigurationXml::MEASUREMENT_PROVISIONER_TAG = "MeasurementProvisioner";
   
string MeasurementProvisionerConfigurationXml::BINARIES_DIRECTORY_TAG = "BinariesDirectory"; string MeasurementProvisionerConfigurationXml::ENVIRONMENT_TAG = "Environment";
string MeasurementProvisionerConfigurationXml::WORKING_DIRECTORY_TAG = "WorkingDirectory";
string MeasurementProvisionerConfigurationXml::MEASUREMENT_PROVISION_TAG = "MeasurementProvision";
   
string MeasurementProvisionerConfigurationXml::INPUT_DATA_TAG = "InputData"; string MeasurementProvisionerConfigurationXml::INPUT_DATA_TAG = "InputData";
string MeasurementProvisionerConfigurationXml::INPUT_DATA_BATCH_TAG = "InputBatch"; string MeasurementProvisionerConfigurationXml::INPUT_DATA_BATCH_TAG = "InputBatch";
......
...@@ -14,9 +14,8 @@ namespace provisioner { ...@@ -14,9 +14,8 @@ namespace provisioner {
class MeasurementProvisionerConfigurationXml { class MeasurementProvisionerConfigurationXml {
static std::string MEASUREMENT_PROVISIONER_TAG; static std::string MEASUREMENT_PROVISIONER_TAG;
   
static std::string BINARIES_DIRECTORY_TAG; static std::string ENVIRONMENT_TAG;
static std::string WORKING_DIRECTORY_TAG;
static std::string MEASUREMENT_PROVISION_TAG;
   
static std::string INPUT_DATA_TAG; static std::string INPUT_DATA_TAG;
static std::string INPUT_DATA_BATCH_TAG; static std::string INPUT_DATA_BATCH_TAG;
...@@ -38,7 +37,7 @@ class MeasurementProvisionerConfigurationXml { ...@@ -38,7 +37,7 @@ class MeasurementProvisionerConfigurationXml {
   
static void parseMeasurementProvisioner ( MeasurementProvisionerConfiguration &, std::deque < sax::Token >::iterator & ); static void parseMeasurementProvisioner ( MeasurementProvisionerConfiguration &, std::deque < sax::Token >::iterator & );
   
static void parseMeasurementProvision ( MeasurementProvisionerConfiguration &, std::deque < sax::Token >::iterator & ); static void parseEnvironment ( MeasurementProvisionerConfiguration &, std::deque < sax::Token >::iterator & );
   
static void parseInputData ( MeasurementProvisionerConfiguration &, std::deque < sax::Token >::iterator & ); static void parseInputData ( MeasurementProvisionerConfiguration &, std::deque < sax::Token >::iterator & );
static void parseInputBatch ( MeasurementProvisionerConfiguration &, std::deque < sax::Token >::iterator & ); static void parseInputBatch ( MeasurementProvisionerConfiguration &, std::deque < sax::Token >::iterator & );
......
<?xml version="1.0"?> <?xml version="1.0"?>
<MeasurementProvisioner> <MeasurementProvisioner>
<BinariesDirectory>~/repositories/automata-library/bin-debug</BinariesDirectory> <Environment>
<MeasurementProvision> <WorkingDirectory>~/repositories/automata-library/bin-debug</WorkingDirectory>
<InputData> </Environment>
<InputBatch> <InputData>
<Generator id="1">./arand2 -t ST --length 16384 --terminals 2</Generator> <InputBatch>
<Generator id="1">./arand2 -t ST --length 16384 --terminals 4</Generator> <Generator id="1">./arand2 -t ST --length 16384 --terminals 2</Generator>
<Generator id="1">./arand2 -t ST --length 16384 --terminals 26</Generator> <Generator id="1">./arand2 -t ST --length 16384 --terminals 4</Generator>
<Generator id="2">./arand2 -t SST --length 64 -i $1</Generator> <Generator id="1">./arand2 -t ST --length 16384 --terminals 26</Generator>
<Generator id="2">./arand2 -t SST --length 128 -i $1</Generator> <Generator id="2">./arand2 -t SST --length 64 -i $1</Generator>
<Generator id="2">./arand2 -t SST --length 256 -i $1</Generator> <Generator id="2">./arand2 -t SST --length 128 -i $1</Generator>
<Generator id="2">./arand2 -t SST --length 512 -i $1</Generator> <Generator id="2">./arand2 -t SST --length 256 -i $1</Generator>
</InputBatch> <Generator id="2">./arand2 -t SST --length 512 -i $1</Generator>
</InputData> </InputBatch>
<Pipelines> </InputData>
<Pipeline> <Pipelines>
<Command >./astringology2 -a exactFactorMatch -s $1 -p $2</Command> <Pipeline>
</Pipeline> <Command >./astringology2 -a exactFactorMatch -s $1 -p $2</Command>
<Pipeline> </Pipeline>
<Command >./astringology2 -a boyerMooreHorspool -s $1 -p $2</Command> <Pipeline>
</Pipeline> <Command >./astringology2 -a boyerMooreHorspool -s $1 -p $2</Command>
<Pipeline> </Pipeline>
<Command >./astringology2 -a reversedBoyerMooreHorspool -s $1 -p $2</Command> <Pipeline>
</Pipeline> <Command >./astringology2 -a reversedBoyerMooreHorspool -s $1 -p $2</Command>
<Pipeline> </Pipeline>
<Command >./astringology2 -a deadZoneUsingBadCharacterShift -s $1 -p $2</Command> <Pipeline>
</Pipeline> <Command >./astringology2 -a deadZoneUsingBadCharacterShift -s $1 -p $2</Command>
</Pipelines> </Pipeline>
<MeasurementConfiguration> </Pipelines>
<Engines>
<Engine>TIME</Engine>
<Engine>MEMORY</Engine>
<Engine>COUNTER</Engine>
</Engines>
</MeasurementConfiguration>
</MeasurementProvision>
</MeasurementProvisioner> </MeasurementProvisioner>
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment