mirror of
https://github.com/FairRootGroup/FairMQ.git
synced 2025-10-15 17:41:45 +00:00
FairMQ: Add static plugin mechanism
* Add skeleton for Take/ReleaseControl API * Add skeleton for control_static builtin plugin
This commit is contained in:
committed by
Mohammad Al-Turany
parent
17d7cd8ce4
commit
052ac8487d
@@ -37,11 +37,11 @@ auto control(shared_ptr<FairMQDevice> device) -> void
|
||||
}
|
||||
}
|
||||
|
||||
TEST(PluginManager, LoadPlugin)
|
||||
TEST(PluginManager, LoadPluginDynamic)
|
||||
{
|
||||
FairMQProgOptions config{};
|
||||
auto device = make_shared<FairMQDevice>();
|
||||
auto mgr = PluginManager{};
|
||||
auto device = make_shared<FairMQDevice>();
|
||||
mgr.EmplacePluginServices(&config, device);
|
||||
|
||||
mgr.PrependSearchPath("./lib");
|
||||
@@ -65,6 +65,31 @@ TEST(PluginManager, LoadPlugin)
|
||||
control(device);
|
||||
}
|
||||
|
||||
TEST(PluginManager, LoadPluginStatic)
|
||||
{
|
||||
FairMQProgOptions config{};
|
||||
auto mgr = PluginManager{};
|
||||
auto device = make_shared<FairMQDevice>();
|
||||
mgr.EmplacePluginServices(&config, device);
|
||||
|
||||
ASSERT_NO_THROW(mgr.LoadPlugin("s:control_static"));
|
||||
|
||||
ASSERT_NO_THROW(mgr.InstantiatePlugins());
|
||||
|
||||
// check order
|
||||
const auto expected = vector<string>{"control_static"};
|
||||
auto actual = vector<string>{};
|
||||
mgr.ForEachPlugin([&](Plugin& plugin){ actual.push_back(plugin.GetName()); });
|
||||
ASSERT_TRUE(actual == expected);
|
||||
|
||||
// program options
|
||||
auto count = 0;
|
||||
mgr.ForEachPluginProgOptions([&count](const options_description& d){ ++count; });
|
||||
ASSERT_EQ(count, 1);
|
||||
|
||||
control(device);
|
||||
}
|
||||
|
||||
TEST(PluginManager, Factory)
|
||||
{
|
||||
const auto args = vector<string>{"-l", "debug", "--help", "-S", ">/lib", "</home/user/lib", "/usr/local/lib", "/usr/lib"};
|
||||
|
@@ -8,10 +8,6 @@
|
||||
|
||||
#include <gtest/gtest.h>
|
||||
#include <fairmq/PluginManager.h>
|
||||
#include <FairMQDevice.h>
|
||||
#include <options/FairMQProgOptions.h>
|
||||
#include <FairMQLogger.h>
|
||||
#include <vector>
|
||||
|
||||
namespace
|
||||
{
|
||||
@@ -19,7 +15,7 @@ namespace
|
||||
using namespace fair::mq;
|
||||
using namespace std;
|
||||
|
||||
TEST(PluginManager, LoadPluginStatic)
|
||||
TEST(PluginManager, LoadPluginPrelinkedDynamic)
|
||||
{
|
||||
auto mgr = PluginManager{};
|
||||
|
Reference in New Issue
Block a user