mirror of
https://github.com/FairRootGroup/FairMQ.git
synced 2025-10-13 00:31:14 +00:00
Sync test for FairMQ SDK v1.4.8
This commit is contained in:
commit
7a8ba5fe8b
18
CMakeLists.txt
Normal file
18
CMakeLists.txt
Normal file
|
@ -0,0 +1,18 @@
|
|||
cmake_minimum_required(VERSION 3.11 FATAL_ERROR)
|
||||
cmake_policy(VERSION 3.11...3.15)
|
||||
|
||||
project(sdk_tester VERSION 1 LANGUAGES CXX)
|
||||
|
||||
find_package(FairMQ COMPONENTS sdk REQUIRED QUIET)
|
||||
foreach(dep IN LISTS FairMQ_PACKAGE_DEPENDENCIES)
|
||||
if(FairMQ_${dep}_COMPONENTS)
|
||||
find_package(${dep} ${FairMQ_${dep}_VERSION} COMPONENTS ${FairMQ_${dep}_COMPONENTS} QUIET)
|
||||
else()
|
||||
find_package(${dep} ${FairMQ_${dep}_VERSION} QUIET)
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
configure_file(main.cpp.in ${CMAKE_BINARY_DIR}/main.cpp @ONLY)
|
||||
add_executable(tester ${CMAKE_BINARY_DIR}/main.cpp)
|
||||
set_property(TARGET tester PROPERTY CXX_STANDARD 17)
|
||||
target_link_libraries(tester PRIVATE FairMQ::SDK FairLogger::FairLogger)
|
61
main.cpp.in
Normal file
61
main.cpp.in
Normal file
|
@ -0,0 +1,61 @@
|
|||
#include <cstdlib>
|
||||
#include <fairlogger/Logger.h>
|
||||
#include <fairmq/SDK.h>
|
||||
#include <fairmq/Version.h>
|
||||
#include <string>
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
fair::Logger::SetConsoleSeverity("debug");
|
||||
|
||||
// workaround https://github.com/FairRootGroup/DDS/issues/24
|
||||
std::string path(std::getenv("PATH"));
|
||||
path = std::string("@FairMQ_BINDIR@:") + path;
|
||||
setenv("PATH", path.c_str(), 1);
|
||||
|
||||
LOG(debug) << "FairMQ " << FAIRMQ_GIT_VERSION << " build "
|
||||
<< FAIRMQ_BUILD_TYPE;
|
||||
|
||||
fair::mq::sdk::DDSEnvironment ddsEnv;
|
||||
LOG(debug) << ddsEnv;
|
||||
|
||||
fair::mq::sdk::DDSSession ddsSession(ddsEnv);
|
||||
ddsSession.StopOnDestruction();
|
||||
LOG(debug) << ddsSession;
|
||||
|
||||
fair::mq::sdk::DDSTopology ddsTopo(
|
||||
"@FairMQ_DATADIR@/ex-dds-topology-infinite.xml", ddsEnv);
|
||||
LOG(debug) << ddsTopo;
|
||||
|
||||
ddsSession.SubmitAgents(ddsTopo.GetNumRequiredAgents());
|
||||
|
||||
ddsSession.ActivateTopology(ddsTopo);
|
||||
|
||||
for (const auto &ddsAgent : ddsSession.RequestAgentInfo()) {
|
||||
LOG(debug) << ddsAgent;
|
||||
}
|
||||
|
||||
fair::mq::sdk::Topology fairmqTopo(ddsTopo, ddsSession);
|
||||
|
||||
using fair::mq::sdk::TopologyTransition;
|
||||
for (auto transition :
|
||||
{TopologyTransition::InitDevice, TopologyTransition::CompleteInit,
|
||||
TopologyTransition::Bind, TopologyTransition::Connect,
|
||||
TopologyTransition::InitTask, TopologyTransition::Run,
|
||||
TopologyTransition::Stop, TopologyTransition::ResetTask,
|
||||
TopologyTransition::ResetDevice, TopologyTransition::End}) {
|
||||
auto [ec, states] =
|
||||
fairmqTopo.ChangeState(transition, std::chrono::milliseconds(300));
|
||||
if (!ec) {
|
||||
// End transition does not yet wait for devices to acknowledge in v1.4.8
|
||||
if (transition != TopologyTransition::End) {
|
||||
LOG(info) << states.size() << " devices transitioned to "
|
||||
<< fair::mq::sdk::AggregateState(states);
|
||||
}
|
||||
} else {
|
||||
LOG(error) << ec;
|
||||
return ec.value();
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue
Block a user