LArSoft  v10_04_05
Liquid Argon Software toolkit - https://larsoft.org/
testing::BasicEnvironmentConfiguration Struct Reference

Class holding a configuration for a test environment. More...

#include "unit_test_base.h"

Inheritance diagram for testing::BasicEnvironmentConfiguration:
testing::BasicGeometryEnvironmentConfiguration

Public Member Functions

 BasicEnvironmentConfiguration ()
 Default constructor; this is what is used in Boost unit test. More...
 
 BasicEnvironmentConfiguration (int argc, char **argv)
 Constructor: acquires parameters from the command line. More...
 
 BasicEnvironmentConfiguration (std::string name)
 Constructor; accepts the name as parameter. More...
 
 BasicEnvironmentConfiguration (int argc, char **argv, std::string name)
 
Access to configuration

Name of the application

std::string ApplicationName () const
 Path to the configuration file. More...
 
std::string ConfigurationPath () const
 Path to the configuration file. More...
 
std::string TesterParameterSetPath (std::string name) const
 FHiCL path for the configuration of the test algorithm. More...
 
std::string MainTesterParameterSetName () const
 Name of the test algorithm instance. More...
 
std::string MainTesterParameterSetPath () const
 FHiCL path for the configuration of the test algorithm. More...
 
std::string ServiceParameterSetPath (std::string name) const
 FHiCL path for the configuration of the service. More...
 
std::string DefaultTesterConfiguration (std::string tester_name) const
 A string describing default parameter set to configure specified test. More...
 
std::string DefaultServiceConfiguration (std::string service_name) const
 A string describing the default parameter set to configure the test. More...
 
std::string DefaultConfiguration () const
 A string describing the full default parameter set. More...
 
std::string ExecutablePath () const
 Returns the name of the executable as started. More...
 
std::vector< std::string > const & EexcutableArguments () const
 Returns the list of non-Boost-test arguments on the command line. More...
 
Set configuration
void SetApplicationName (std::string name)
 Sets the name of the application. More...
 
void SetConfigurationPath (std::string path)
 Sets the path to the configuration file. More...
 
void SetMainTesterParameterSetName (std::string name)
 Sets the FHiCL name for the configuration of the test algorithm. More...
 
void SetTesterParameterSetPath (std::string test_name, std::string path)
 Sets the FHiCL path for the configuration of a test algorithm. More...
 
void SetMainTesterParameterSetPath (std::string path)
 Sets the FHiCL path for the configuration of the main test algorithm. More...
 
void SetServiceParameterSetPath (std::string service_name, std::string path)
 Sets the FHiCL path for the configuration of a test algorithm. More...
 
void AddDefaultServiceConfiguration (std::string service_name, std::string service_cfg)
 Adds a default configuration for the specified service. More...
 
void AddDefaultTesterConfiguration (std::string tester_name, std::string tester_cfg)
 Adds a default configuration for the specified tester. More...
 
void AddDefaultTesterConfiguration (std::string tester_cfg)
 Adds a default configuration for the main tester. More...
 

Protected Types

using ConfigurationMap_t = std::map< std::string, std::string >
 
using PathMap_t = std::map< std::string, std::string >
 

Protected Member Functions

void ParseCommandLine (int argc, char **argv)
 Extracts arguments from the command line, uses first one as config path. More...
 
void DefaultInit ()
 Initialize with some default values. More...
 
std::string BuildDefaultServiceConfiguration () const
 A string describing the full default parameter set. More...
 
std::string BuildDefaultTestConfiguration () const
 A string describing the full default parameter set. More...
 
std::string BuildDefaultConfiguration () const
 A string describing the full default parameter set. More...
 

Static Protected Member Functions

static std::string DefaultApplicationName ()
 Returns the default test name. More...
 
static std::string BuildServiceConfiguration (ConfigurationMap_t const &services)
 A string with the service section from service parameter sets. More...
 
static std::string BuildTestConfiguration (ConfigurationMap_t const &analyzers)
 A string with the physics section from analyzer parameter sets. More...
 
static std::string BuildConfiguration (ConfigurationMap_t const &services, ConfigurationMap_t const &modules)
 A string describing the full default parameter set. More...
 

Protected Attributes

std::string appl_name
 name of the application More...
 
std::string config_path
 configuration file path More...
 
std::string main_test_name
 name of main test algorithm More...
 
std::string main_test_path
 path of main test algorithm configuration More...
 
ConfigurationMap_t services_default_cfg
 Configuration of all the services. More...
 
ConfigurationMap_t analyzers_default_cfg
 Configuration of all the analyzer modules. More...
 
PathMap_t test_paths
 Set of paths for tester configuration. More...
 
PathMap_t service_paths
 Set of paths for service configuration. More...
 

Private Attributes

details::CommandLineArguments arguments
 command line arguments More...
 

Detailed Description

Class holding a configuration for a test environment.


This class needs to be fully constructed by the default constructor in order to be useful as Boost unit test fixture. It is supposed to be passed as a template parameter to another class that can store an instance of it and extract configuration information from it.

Definition at line 124 of file unit_test_base.h.

Member Typedef Documentation

using testing::BasicEnvironmentConfiguration::ConfigurationMap_t = std::map<std::string, std::string>
protected

Definition at line 260 of file unit_test_base.h.

using testing::BasicEnvironmentConfiguration::PathMap_t = std::map<std::string, std::string>
protected

Definition at line 261 of file unit_test_base.h.

Constructor & Destructor Documentation

testing::BasicEnvironmentConfiguration::BasicEnvironmentConfiguration ( )
inline

Default constructor; this is what is used in Boost unit test.

Definition at line 127 of file unit_test_base.h.

127 { DefaultInit(); }
void DefaultInit()
Initialize with some default values.
testing::BasicEnvironmentConfiguration::BasicEnvironmentConfiguration ( int  argc,
char **  argv 
)
inline

Constructor: acquires parameters from the command line.

Definition at line 130 of file unit_test_base.h.

131  {
132  ParseCommandLine(argc, argv);
133  }
void ParseCommandLine(int argc, char **argv)
Extracts arguments from the command line, uses first one as config path.
BasicEnvironmentConfiguration()
Default constructor; this is what is used in Boost unit test.
testing::BasicEnvironmentConfiguration::BasicEnvironmentConfiguration ( std::string  name)
inline

Constructor; accepts the name as parameter.

Definition at line 136 of file unit_test_base.h.

References mf::SetApplicationName().

137  {
138  SetApplicationName(name);
139  }
void SetApplicationName(std::string name)
Sets the name of the application.
BasicEnvironmentConfiguration()
Default constructor; this is what is used in Boost unit test.
testing::BasicEnvironmentConfiguration::BasicEnvironmentConfiguration ( int  argc,
char **  argv,
std::string  name 
)
inline

Definition at line 141 of file unit_test_base.h.

References mf::SetApplicationName().

142  : BasicEnvironmentConfiguration(argc, argv)
143  {
144  SetApplicationName(name);
145  }
void SetApplicationName(std::string name)
Sets the name of the application.
BasicEnvironmentConfiguration()
Default constructor; this is what is used in Boost unit test.

Member Function Documentation

void testing::BasicEnvironmentConfiguration::AddDefaultServiceConfiguration ( std::string  service_name,
std::string  service_cfg 
)
inline

Adds a default configuration for the specified service.

Definition at line 237 of file unit_test_base.h.

Referenced by testing::BasicGeometryEnvironmentConfiguration::SetDefaultGeometryConfiguration().

238  {
239  services_default_cfg[service_name] = service_cfg;
240  }
ConfigurationMap_t services_default_cfg
Configuration of all the services.
void testing::BasicEnvironmentConfiguration::AddDefaultTesterConfiguration ( std::string  tester_name,
std::string  tester_cfg 
)
inline

Adds a default configuration for the specified tester.

Definition at line 243 of file unit_test_base.h.

244  {
245  analyzers_default_cfg[tester_name] = tester_cfg;
246  }
ConfigurationMap_t analyzers_default_cfg
Configuration of all the analyzer modules.
void testing::BasicEnvironmentConfiguration::AddDefaultTesterConfiguration ( std::string  tester_cfg)
inline

Adds a default configuration for the main tester.

Definition at line 249 of file unit_test_base.h.

References util::empty().

250  {
252  throw std::logic_error("Request adding configuration of non-existent main tester");
253  }
255  }
std::string MainTesterParameterSetName() const
Name of the test algorithm instance.
void AddDefaultTesterConfiguration(std::string tester_name, std::string tester_cfg)
Adds a default configuration for the specified tester.
decltype(auto) constexpr empty(T &&obj)
ADL-aware version of std::empty.
Definition: StdUtils.h:109
std::string testing::BasicEnvironmentConfiguration::ApplicationName ( ) const
inline

Path to the configuration file.

Definition at line 150 of file unit_test_base.h.

150 { return appl_name; }
std::string appl_name
name of the application
static std::string testing::BasicEnvironmentConfiguration::BuildConfiguration ( ConfigurationMap_t const &  services,
ConfigurationMap_t const &  modules 
)
inlinestaticprotected

A string describing the full default parameter set.

Definition at line 362 of file unit_test_base.h.

364  {
365  std::string cfg;
366  cfg += BuildServiceConfiguration(services);
367  cfg += BuildTestConfiguration(modules);
368  return cfg;
369  } // BuildConfiguration()
static std::string BuildServiceConfiguration(ConfigurationMap_t const &services)
A string with the service section from service parameter sets.
static std::string BuildTestConfiguration(ConfigurationMap_t const &analyzers)
A string with the physics section from analyzer parameter sets.
std::string testing::BasicEnvironmentConfiguration::BuildDefaultConfiguration ( ) const
inlineprotected

A string describing the full default parameter set.

Definition at line 325 of file unit_test_base.h.

326  {
328  }
ConfigurationMap_t services_default_cfg
Configuration of all the services.
static std::string BuildConfiguration(ConfigurationMap_t const &services, ConfigurationMap_t const &modules)
A string describing the full default parameter set.
ConfigurationMap_t analyzers_default_cfg
Configuration of all the analyzer modules.
std::string testing::BasicEnvironmentConfiguration::BuildDefaultServiceConfiguration ( ) const
inlineprotected

A string describing the full default parameter set.

Definition at line 313 of file unit_test_base.h.

314  {
316  }
ConfigurationMap_t services_default_cfg
Configuration of all the services.
static std::string BuildServiceConfiguration(ConfigurationMap_t const &services)
A string with the service section from service parameter sets.
std::string testing::BasicEnvironmentConfiguration::BuildDefaultTestConfiguration ( ) const
inlineprotected

A string describing the full default parameter set.

Definition at line 319 of file unit_test_base.h.

320  {
322  }
static std::string BuildTestConfiguration(ConfigurationMap_t const &analyzers)
A string with the physics section from analyzer parameter sets.
ConfigurationMap_t analyzers_default_cfg
Configuration of all the analyzer modules.
static std::string testing::BasicEnvironmentConfiguration::BuildServiceConfiguration ( ConfigurationMap_t const &  services)
inlinestaticprotected

A string with the service section from service parameter sets.

Definition at line 331 of file unit_test_base.h.

332  {
333  std::string cfg;
334  cfg += "\nservices: {";
335  for (auto const& service_info : services) {
336  cfg += "\n " + service_info.first + ": {";
337  cfg += "\n" + service_info.second;
338  cfg += "\n } # " + service_info.first;
339  } // for services
340  cfg += "\n} # services"
341  "\n";
342  return cfg;
343  } // BuildServiceConfiguration()
static std::string testing::BasicEnvironmentConfiguration::BuildTestConfiguration ( ConfigurationMap_t const &  analyzers)
inlinestaticprotected

A string with the physics section from analyzer parameter sets.

Definition at line 346 of file unit_test_base.h.

347  {
348  std::string cfg;
349  cfg += "\nphysics: {"
350  "\n analyzers: {";
351  for (auto const& module_info : analyzers) {
352  cfg += "\n " + module_info.first + ": {";
353  cfg += "\n" + module_info.second;
354  cfg += "\n } # " + module_info.first;
355  } // for analyzers
356  cfg += "\n } # analyzers"
357  "\n} # physics";
358  return cfg;
359  } // BuildServiceConfiguration()
std::string testing::BasicEnvironmentConfiguration::ConfigurationPath ( ) const
inline

Path to the configuration file.

Definition at line 153 of file unit_test_base.h.

153 { return config_path; }
std::string config_path
configuration file path
static std::string testing::BasicEnvironmentConfiguration::DefaultApplicationName ( )
inlinestaticprotected

Returns the default test name.

Definition at line 269 of file unit_test_base.h.

269 { return "Test"; }
std::string testing::BasicEnvironmentConfiguration::DefaultConfiguration ( ) const
inline

A string describing the full default parameter set.

Definition at line 193 of file unit_test_base.h.

193 { return BuildDefaultConfiguration(); }
std::string BuildDefaultConfiguration() const
A string describing the full default parameter set.
void testing::BasicEnvironmentConfiguration::DefaultInit ( )
inlineprotected

Initialize with some default values.

Definition at line 289 of file unit_test_base.h.

References mf::SetApplicationName().

290  {
293  // a destination which will react to all messages from DEBUG up:
295  R"(
296  debugModules: [ '*' ]
297  destinations : {
298  stdout: {
299  type: cout
300  threshold: DEBUG
301  categories: {
302  default: {
303  limit: -1
304  }
305  } // categories
306  } // stdout
307  statistics: {type:cout}
308  } // destinations
309  )");
310  } // DefaultInit()
void SetApplicationName(std::string name)
Sets the name of the application.
void SetMainTesterParameterSetName(std::string name)
Sets the FHiCL name for the configuration of the test algorithm.
static std::string DefaultApplicationName()
Returns the default test name.
void AddDefaultServiceConfiguration(std::string service_name, std::string service_cfg)
Adds a default configuration for the specified service.
std::string testing::BasicEnvironmentConfiguration::DefaultServiceConfiguration ( std::string  service_name) const
inline

A string describing the default parameter set to configure the test.

Definition at line 187 of file unit_test_base.h.

Referenced by testing::BasicGeometryEnvironmentConfiguration::DefaultGeometryConfiguration().

188  {
189  return services_default_cfg.at(service_name);
190  }
ConfigurationMap_t services_default_cfg
Configuration of all the services.
std::string testing::BasicEnvironmentConfiguration::DefaultTesterConfiguration ( std::string  tester_name) const
inline

A string describing default parameter set to configure specified test.

Definition at line 181 of file unit_test_base.h.

182  {
183  return analyzers_default_cfg.at(tester_name);
184  }
ConfigurationMap_t analyzers_default_cfg
Configuration of all the analyzer modules.
std::vector<std::string> const& testing::BasicEnvironmentConfiguration::EexcutableArguments ( ) const
inline

Returns the list of non-Boost-test arguments on the command line.

Definition at line 199 of file unit_test_base.h.

199 { return arguments.Arguments(); }
details::CommandLineArguments arguments
command line arguments
std::vector< std::string > const & Arguments() const
Returns the list of non-Boost-test arguments on the command line.
std::string testing::BasicEnvironmentConfiguration::ExecutablePath ( ) const
inline

Returns the name of the executable as started.

Definition at line 196 of file unit_test_base.h.

196 { return arguments.Executable(); }
details::CommandLineArguments arguments
command line arguments
std::string Executable() const
Returns the name of the executable as started.
std::string testing::BasicEnvironmentConfiguration::MainTesterParameterSetName ( ) const
inline

Name of the test algorithm instance.

Definition at line 163 of file unit_test_base.h.

163 { return main_test_name; }
std::string main_test_name
name of main test algorithm
std::string testing::BasicEnvironmentConfiguration::MainTesterParameterSetPath ( ) const
inline

FHiCL path for the configuration of the test algorithm.

Definition at line 166 of file unit_test_base.h.

167  {
168  return MainTesterParameterSetName().empty() ?
169  "" :
171  }
std::string TesterParameterSetPath(std::string name) const
FHiCL path for the configuration of the test algorithm.
std::string MainTesterParameterSetName() const
Name of the test algorithm instance.
void testing::BasicEnvironmentConfiguration::ParseCommandLine ( int  argc,
char **  argv 
)
inlineprotected

Extracts arguments from the command line, uses first one as config path.

Definition at line 282 of file unit_test_base.h.

283  {
284  arguments.ParseArguments(argc, argv);
285  if (arguments.hasArgument(0)) SetConfigurationPath(arguments.Argument(0)); // first argument
286  }
void ParseArguments(int argc, char **argv)
Parses arguments.
details::CommandLineArguments arguments
command line arguments
bool hasArgument(size_t iArg) const
Returns whether we have arguments up to the iArg-th (0-based)
std::string const & Argument(size_t iArg) const
Returns the value of the iArg-th (0-based; no range check!)
void SetConfigurationPath(std::string path)
Sets the path to the configuration file.
std::string testing::BasicEnvironmentConfiguration::ServiceParameterSetPath ( std::string  name) const
inline

FHiCL path for the configuration of the service.

Definition at line 174 of file unit_test_base.h.

Referenced by testing::BasicGeometryEnvironmentConfiguration::GeometryParameterSetPath().

175  {
176  auto iPath = service_paths.find(name);
177  return (iPath == service_paths.end()) ? ("services." + name) : iPath->second;
178  } // ServiceParameterSetPath()
PathMap_t service_paths
Set of paths for service configuration.
void testing::BasicEnvironmentConfiguration::SetApplicationName ( std::string  name)
inline

Sets the name of the application.

Definition at line 207 of file unit_test_base.h.

207 { appl_name = name; }
std::string appl_name
name of the application
void testing::BasicEnvironmentConfiguration::SetConfigurationPath ( std::string  path)
inline

Sets the path to the configuration file.

Definition at line 210 of file unit_test_base.h.

210 { config_path = path; }
std::string config_path
configuration file path
void testing::BasicEnvironmentConfiguration::SetMainTesterParameterSetName ( std::string  name)
inline

Sets the FHiCL name for the configuration of the test algorithm.

Definition at line 213 of file unit_test_base.h.

213 { main_test_name = name; }
std::string main_test_name
name of main test algorithm
void testing::BasicEnvironmentConfiguration::SetMainTesterParameterSetPath ( std::string  path)
inline

Sets the FHiCL path for the configuration of the main test algorithm.

Definition at line 222 of file unit_test_base.h.

References util::empty().

223  {
225  throw std::logic_error("Request setting configuration of non-existent main tester");
226  }
228  }
std::string MainTesterParameterSetName() const
Name of the test algorithm instance.
void SetTesterParameterSetPath(std::string test_name, std::string path)
Sets the FHiCL path for the configuration of a test algorithm.
decltype(auto) constexpr empty(T &&obj)
ADL-aware version of std::empty.
Definition: StdUtils.h:109
void testing::BasicEnvironmentConfiguration::SetServiceParameterSetPath ( std::string  service_name,
std::string  path 
)
inline

Sets the FHiCL path for the configuration of a test algorithm.

Definition at line 231 of file unit_test_base.h.

Referenced by testing::BasicGeometryEnvironmentConfiguration::SetGeometryParameterSetPath().

232  {
233  service_paths[service_name] = path;
234  }
PathMap_t service_paths
Set of paths for service configuration.
void testing::BasicEnvironmentConfiguration::SetTesterParameterSetPath ( std::string  test_name,
std::string  path 
)
inline

Sets the FHiCL path for the configuration of a test algorithm.

Definition at line 216 of file unit_test_base.h.

217  {
218  test_paths[test_name] = path;
219  }
PathMap_t test_paths
Set of paths for tester configuration.
std::string testing::BasicEnvironmentConfiguration::TesterParameterSetPath ( std::string  name) const
inline

FHiCL path for the configuration of the test algorithm.

Definition at line 156 of file unit_test_base.h.

157  {
158  auto iPath = test_paths.find(name);
159  return (iPath == test_paths.end()) ? ("physics.analyzers." + name) : iPath->second;
160  }
PathMap_t test_paths
Set of paths for tester configuration.

Member Data Documentation

ConfigurationMap_t testing::BasicEnvironmentConfiguration::analyzers_default_cfg
protected

Configuration of all the analyzer modules.

Definition at line 274 of file unit_test_base.h.

std::string testing::BasicEnvironmentConfiguration::appl_name
protected

name of the application

Definition at line 263 of file unit_test_base.h.

details::CommandLineArguments testing::BasicEnvironmentConfiguration::arguments
private

command line arguments

Definition at line 372 of file unit_test_base.h.

std::string testing::BasicEnvironmentConfiguration::config_path
protected

configuration file path

Definition at line 264 of file unit_test_base.h.

std::string testing::BasicEnvironmentConfiguration::main_test_name
protected

name of main test algorithm

Definition at line 265 of file unit_test_base.h.

std::string testing::BasicEnvironmentConfiguration::main_test_path
protected

path of main test algorithm configuration

Definition at line 266 of file unit_test_base.h.

PathMap_t testing::BasicEnvironmentConfiguration::service_paths
protected

Set of paths for service configuration.

Definition at line 279 of file unit_test_base.h.

ConfigurationMap_t testing::BasicEnvironmentConfiguration::services_default_cfg
protected

Configuration of all the services.

Definition at line 272 of file unit_test_base.h.

PathMap_t testing::BasicEnvironmentConfiguration::test_paths
protected

Set of paths for tester configuration.

Definition at line 277 of file unit_test_base.h.


The documentation for this struct was generated from the following file: