diff --git a/fairmq/options/FairMQProgOptions.cxx b/fairmq/options/FairMQProgOptions.cxx index 98183b0a..1d7b28a1 100644 --- a/fairmq/options/FairMQProgOptions.cxx +++ b/fairmq/options/FairMQProgOptions.cxx @@ -30,6 +30,8 @@ FairMQProgOptions::FairMQProgOptions() , fChannelInfo() , fMQKeyMap() { + InitOptionDescription(); + ParseDefaults(fCmdLineOptions); } FairMQProgOptions::~FairMQProgOptions() @@ -50,8 +52,6 @@ int FairMQProgOptions::ParseAll(const vector& cmdLineArgs, bool allowUnr int FairMQProgOptions::ParseAll(const int argc, char const* const* argv, bool allowUnregistered) { - InitOptionDescription(); - if (FairProgOptions::ParseCmdLine(argc, argv, fCmdLineOptions, fVarMap, allowUnregistered)) { // ParseCmdLine returns 0 if no immediate switches found. diff --git a/fairmq/options/FairProgOptions.cxx b/fairmq/options/FairProgOptions.cxx index e3bec096..cf730df0 100644 --- a/fairmq/options/FairProgOptions.cxx +++ b/fairmq/options/FairProgOptions.cxx @@ -16,6 +16,7 @@ #include #include +#include using namespace std; @@ -87,6 +88,21 @@ int FairProgOptions::ParseCmdLine(const int argc, char const* const* argv, const return ParseCmdLine(argc, argv, desc, fVarMap, allowUnregistered); } +void FairProgOptions::ParseDefaults(const po::options_description& desc) +{ + vector emptyArgs; + emptyArgs.push_back("dummy"); + + vector argv(emptyArgs.size()); + + transform(emptyArgs.begin(), emptyArgs.end(), argv.begin(), [](const string& str) + { + return str.c_str(); + }); + + po::store(po::parse_command_line(argv.size(), const_cast(argv.data()), desc), fVarMap); +} + int FairProgOptions::PrintOptions() { // Method to overload. diff --git a/fairmq/options/FairProgOptions.h b/fairmq/options/FairProgOptions.h index d5e8a1e1..0fb09e93 100644 --- a/fairmq/options/FairProgOptions.h +++ b/fairmq/options/FairProgOptions.h @@ -161,6 +161,7 @@ class FairProgOptions // boost prog options parsers int ParseCmdLine(const int argc, char const* const* argv, const po::options_description& desc, po::variables_map& varmap, bool allowUnregistered = false); int ParseCmdLine(const int argc, char const* const* argv, const po::options_description& desc, bool allowUnregistered = false); + void ParseDefaults(const po::options_description& desc); virtual int ParseAll(const int argc, char const* const* argv, bool allowUnregistered = false) = 0;// TODO change return type to bool and propagate to executable diff --git a/fairmq/test/message_resize/_message_resize.cxx b/fairmq/test/message_resize/_message_resize.cxx index 2a4bc0e8..eb9ef611 100644 --- a/fairmq/test/message_resize/_message_resize.cxx +++ b/fairmq/test/message_resize/_message_resize.cxx @@ -27,8 +27,6 @@ auto RunPushPullWithMsgResize(string transport, string address) -> void { FairMQProgOptions config; config.SetValue("session", to_string(session)); - config.SetValue("io-threads", 1); - config.SetValue("shm-segment-size", 20000000); auto factory = FairMQTransportFactory::CreateTransportFactory(transport, fair::mq::tools::Uuid(), &config); diff --git a/fairmq/test/protocols/_push_pull_multipart.cxx b/fairmq/test/protocols/_push_pull_multipart.cxx index 8c3f5b91..a4269586 100644 --- a/fairmq/test/protocols/_push_pull_multipart.cxx +++ b/fairmq/test/protocols/_push_pull_multipart.cxx @@ -31,8 +31,6 @@ auto RunSingleThreadedMultipart(string transport, string address) -> void { FairMQProgOptions config; config.SetValue("session", std::to_string(session)); - config.SetValue("io-threads", 1); - config.SetValue("shm-segment-size", 20000000); auto factory = FairMQTransportFactory::CreateTransportFactory(transport, fair::mq::tools::Uuid(), &config); auto push = FairMQChannel{"Push", "push", factory}; ASSERT_TRUE(push.Bind(address));