FairMQ Examples cleanup

- Rename Tutorial3 MQ files for uniform naming.
  - Add search for dylib in FindDDS.cmake (OSX).
  - Add more detail to the DDS example readme.
  - MQ Example 3 (DDS): choose network interface via command line option.
  - Give FairMQ examples their own CMakeLists.txt for clarity.
  - Remove C++11 checks in Tutorial3 from the code (they are now in CMake).
  - Add Serializer for device properties (FairMQDevice::ListProperties()).
This commit is contained in:
Alexey Rybalchenko
2015-09-29 11:07:27 +02:00
committed by Mohammad Al-Turany
parent a75486f3ec
commit 19afacb504
26 changed files with 746 additions and 220 deletions

View File

@@ -7,54 +7,34 @@
################################################################################
configure_file(${CMAKE_SOURCE_DIR}/fairmq/options/ProgOptionTest/macro/bsampler-sink.json ${CMAKE_BINARY_DIR}/bin/config/bsampler-sink.json)
configure_file(${CMAKE_SOURCE_DIR}/fairmq/examples/1-sampler-sink/ex1-sampler-sink.json ${CMAKE_BINARY_DIR}/bin/config/ex1-sampler-sink.json)
configure_file(${CMAKE_SOURCE_DIR}/fairmq/examples/2-sampler-processor-sink/ex2-sampler-processor-sink.json ${CMAKE_BINARY_DIR}/bin/config/ex2-sampler-processor-sink.json)
configure_file(${CMAKE_SOURCE_DIR}/fairmq/examples/3-dds/ex3-devices.json ${CMAKE_BINARY_DIR}/bin/config/ex3-devices.json)
configure_file(${CMAKE_SOURCE_DIR}/fairmq/examples/3-dds/ex3-dds-topology.xml ${CMAKE_BINARY_DIR}/bin/config/ex3-dds-topology.xml)
configure_file(${CMAKE_SOURCE_DIR}/fairmq/examples/3-dds/ex3-dds-hosts.cfg ${CMAKE_BINARY_DIR}/bin/config/ex3-dds-hosts.cfg COPYONLY)
configure_file(${CMAKE_SOURCE_DIR}/fairmq/examples/4-copypush/ex4-copypush.json ${CMAKE_BINARY_DIR}/bin/config/ex4-copypush.json)
configure_file(${CMAKE_SOURCE_DIR}/fairmq/test/test-fairmq-push-pull.sh.in ${CMAKE_BINARY_DIR}/fairmq/test/test-fairmq-push-pull.sh)
configure_file(${CMAKE_SOURCE_DIR}/fairmq/test/test-fairmq-pub-sub.sh.in ${CMAKE_BINARY_DIR}/fairmq/test/test-fairmq-pub-sub.sh)
configure_file(${CMAKE_SOURCE_DIR}/fairmq/test/test-fairmq-req-rep.sh.in ${CMAKE_BINARY_DIR}/fairmq/test/test-fairmq-req-rep.sh)
add_subdirectory(logger)
add_subdirectory(examples/1-sampler-sink)
add_subdirectory(examples/2-sampler-processor-sink)
If(DDS_FOUND)
add_subdirectory(examples/3-dds)
EndIf(DDS_FOUND)
add_subdirectory(examples/4-copypush)
add_subdirectory(examples/5-req-rep)
add_subdirectory(test)
Set(INCLUDE_DIRECTORIES
${CMAKE_SOURCE_DIR}/fairmq
${CMAKE_SOURCE_DIR}/fairmq/devices
${CMAKE_SOURCE_DIR}/fairmq/tools
${CMAKE_SOURCE_DIR}/fairmq/options
${CMAKE_SOURCE_DIR}/fairmq/logger
${CMAKE_SOURCE_DIR}/fairmq/examples/1-sampler-sink
${CMAKE_SOURCE_DIR}/fairmq/examples/2-sampler-processor-sink
${CMAKE_SOURCE_DIR}/fairmq/examples/4-copypush
${CMAKE_SOURCE_DIR}/fairmq/examples/5-req-rep
${CMAKE_SOURCE_DIR}/fairmq/test/push-pull
${CMAKE_SOURCE_DIR}/fairmq/test/pub-sub
${CMAKE_SOURCE_DIR}/fairmq/test/req-rep
${CMAKE_SOURCE_DIR}/fairmq/zeromq
${CMAKE_CURRENT_BINARY_DIR}
)
if(DDS_FOUND)
add_definitions(-DENABLE_DDS)
Set(INCLUDE_DIRECTORIES
${INCLUDE_DIRECTORIES}
${CMAKE_SOURCE_DIR}/fairmq/examples/3-dds
)
endif(DDS_FOUND)
Set(SYSTEM_INCLUDE_DIRECTORIES
${Boost_INCLUDE_DIR}
${ZMQ_INCLUDE_DIR}
)
If(DDS_FOUND)
Set(SYSTEM_INCLUDE_DIRECTORIES
${SYSTEM_INCLUDE_DIRECTORIES}
${DDS_INCLUDE_DIR}
)
EndIf(DDS_FOUND)
If(PROTOBUF_FOUND)
Set(INCLUDE_DIRECTORIES
${INCLUDE_DIRECTORIES}
@@ -74,16 +54,7 @@ If(NANOMSG_FOUND)
)
Set(SYSTEM_INCLUDE_DIRECTORIES
${SYSTEM_INCLUDE_DIRECTORIES}
${NANOMSG_LIBRARY_SHARED}
)
Else(NANOMSG_FOUND)
Set(INCLUDE_DIRECTORIES
${INCLUDE_DIRECTORIES}
${CMAKE_SOURCE_DIR}/fairmq/zeromq
)
Set(SYSTEM_INCLUDE_DIRECTORIES
${SYSTEM_INCLUDE_DIRECTORIES}
${ZMQ_INCLUDE_DIR}
${NANOMSG_INCLUDE_DIR}
)
EndIf(NANOMSG_FOUND)
@@ -94,16 +65,15 @@ Set(LINK_DIRECTORIES
${Boost_LIBRARY_DIRS}
)
if(DDS_FOUND)
set(LINK_DIRECTORIES
${LINK_DIRECTORIES}
${DDS_LIBRARY_DIR}
)
endif(DDS_FOUND)
Link_Directories(${LINK_DIRECTORIES})
set(SRCS
Set(SRCS
"zeromq/FairMQTransportFactoryZMQ.cxx"
"zeromq/FairMQMessageZMQ.cxx"
"zeromq/FairMQSocketZMQ.cxx"
"zeromq/FairMQPollerZMQ.cxx"
"zeromq/FairMQContextZMQ.cxx"
"FairMQLogger.cxx"
"FairMQConfigurable.cxx"
"FairMQStateMachine.cxx"
@@ -124,39 +94,9 @@ set(SRCS
"options/FairProgOptions.cxx"
"options/FairMQProgOptions.cxx"
"options/FairMQParser.cxx"
"examples/1-sampler-sink/FairMQExample1Sampler.cxx"
"examples/1-sampler-sink/FairMQExample1Sink.cxx"
"examples/2-sampler-processor-sink/FairMQExample2Sampler.cxx"
"examples/2-sampler-processor-sink/FairMQExample2Processor.cxx"
"examples/2-sampler-processor-sink/FairMQExample2Sink.cxx"
"examples/4-copypush/FairMQExample4Sampler.cxx"
"examples/4-copypush/FairMQExample4Sink.cxx"
"examples/5-req-rep/FairMQExample5Client.cxx"
"examples/5-req-rep/FairMQExample5Server.cxx"
"test/push-pull/FairMQTestPush.cxx"
"test/push-pull/FairMQTestPull.cxx"
"test/pub-sub/FairMQTestPub.cxx"
"test/pub-sub/FairMQTestSub.cxx"
"test/req-rep/FairMQTestReq.cxx"
"test/req-rep/FairMQTestRep.cxx"
)
if(DDS_FOUND)
set(SRCS
${SRCS}
"examples/3-dds/FairMQExample3Sampler.cxx"
"examples/3-dds/FairMQExample3Processor.cxx"
"examples/3-dds/FairMQExample3Sink.cxx"
)
set(DEPENDENCIES
${DEPENDENCIES}
dds-key-value-lib
)
endif(DDS_FOUND)
if(PROTOBUF_FOUND)
If(PROTOBUF_FOUND)
# following source files are only for protobuf tests and are not essential part of FairMQ
# add_custom_command(
# OUTPUT
@@ -175,38 +115,25 @@ if(PROTOBUF_FOUND)
# "prototest/FairMQBinSink.cxx"
# "prototest/FairMQProtoSink.cxx"
# )
set(DEPENDENCIES
Set(DEPENDENCIES
${DEPENDENCIES}
${PROTOBUF_LIBRARY}
)
endif(PROTOBUF_FOUND)
Endif(PROTOBUF_FOUND)
if(NANOMSG_FOUND)
set(SRCS
If(NANOMSG_FOUND)
Set(SRCS
${SRCS}
"nanomsg/FairMQTransportFactoryNN.cxx"
"nanomsg/FairMQMessageNN.cxx"
"nanomsg/FairMQSocketNN.cxx"
"nanomsg/FairMQPollerNN.cxx"
)
set(DEPENDENCIES
Set(DEPENDENCIES
${DEPENDENCIES}
${NANOMSG_LIBRARY_SHARED}
)
else(NANOMSG_FOUND)
set(SRCS
${SRCS}
"zeromq/FairMQTransportFactoryZMQ.cxx"
"zeromq/FairMQMessageZMQ.cxx"
"zeromq/FairMQSocketZMQ.cxx"
"zeromq/FairMQPollerZMQ.cxx"
"zeromq/FairMQContextZMQ.cxx"
)
set(DEPENDENCIES
${DEPENDENCIES}
${ZMQ_LIBRARY_SHARED}
)
endif(NANOMSG_FOUND)
EndIf(NANOMSG_FOUND)
# to copy src that are header-only files (e.g. c++ template) for FairRoot external installation
# manual install (globbing add not recommended)
@@ -217,10 +144,11 @@ Set(FAIRMQHEADERS
devices/GenericFileSink.h
tools/FairMQTools.h
)
install(FILES ${FAIRMQHEADERS} DESTINATION include)
Install(FILES ${FAIRMQHEADERS} DESTINATION include)
set(DEPENDENCIES
Set(DEPENDENCIES
${DEPENDENCIES}
${ZMQ_LIBRARY_SHARED}
boost_thread
fairmq_logger
boost_timer
@@ -232,43 +160,19 @@ set(DEPENDENCIES
boost_exception
)
set(LIBRARY_NAME FairMQ)
Set(LIBRARY_NAME FairMQ)
GENERATE_LIBRARY()
set(Exe_Names
Set(Exe_Names
bsampler
sink
buffer
splitter
merger
proxy
ex1-sampler
ex1-sink
ex2-sampler
ex2-processor
ex2-sink
ex4-sampler
ex4-sink
ex5-client
ex5-server
test-fairmq-push
test-fairmq-pull
test-fairmq-pub
test-fairmq-sub
test-fairmq-req
test-fairmq-rep
)
if(DDS_FOUND)
set(Exe_Names
${Exe_Names}
ex3-sampler-dds
ex3-processor-dds
ex3-sink-dds
)
endif(DDS_FOUND)
# following executables are only for protobuf tests and are not essential part of FairMQ
# if(PROTOBUF_FOUND)
# set(Exe_Names
@@ -280,39 +184,15 @@ endif(DDS_FOUND)
# )
# endif(PROTOBUF_FOUND)
set(Exe_Source
Set(Exe_Source
run/runBenchmarkSampler.cxx
run/runSink.cxx
run/runBuffer.cxx
run/runSplitter.cxx
run/runMerger.cxx
run/runProxy.cxx
examples/1-sampler-sink/runExample1Sampler.cxx
examples/1-sampler-sink/runExample1Sink.cxx
examples/2-sampler-processor-sink/runExample2Sampler.cxx
examples/2-sampler-processor-sink/runExample2Processor.cxx
examples/2-sampler-processor-sink/runExample2Sink.cxx
examples/4-copypush/runExample4Sampler.cxx
examples/4-copypush/runExample4Sink.cxx
examples/5-req-rep/runExample5Client.cxx
examples/5-req-rep/runExample5Server.cxx
test/push-pull/runTestPush.cxx
test/push-pull/runTestPull.cxx
test/pub-sub/runTestPub.cxx
test/pub-sub/runTestSub.cxx
test/req-rep/runTestReq.cxx
test/req-rep/runTestRep.cxx
)
if(DDS_FOUND)
set(Exe_Source
${Exe_Source}
examples/3-dds/runExample3Sampler.cxx
examples/3-dds/runExample3Processor.cxx
examples/3-dds/runExample3Sink.cxx
)
endif(DDS_FOUND)
# following source files are only for protobuf tests and are not essential part of FairMQ
# if(PROTOBUF_FOUND)
# set(Exe_Source
@@ -330,20 +210,8 @@ math(EXPR _length ${_length}-1)
ForEach(_file RANGE 0 ${_length})
list(GET Exe_Names ${_file} _name)
list(GET Exe_Source ${_file} _src)
set(EXE_NAME ${_name})
set(SRCS ${_src})
set(DEPENDENCIES FairMQ)
Set(EXE_NAME ${_name})
Set(SRCS ${_src})
Set(DEPENDENCIES FairMQ)
GENERATE_EXECUTABLE()
EndForEach(_file RANGE 0 ${_length})
add_test(NAME run_fairmq_push_pull COMMAND ${CMAKE_BINARY_DIR}/fairmq/test/test-fairmq-push-pull.sh)
set_tests_properties(run_fairmq_push_pull PROPERTIES TIMEOUT "30")
set_tests_properties(run_fairmq_push_pull PROPERTIES PASS_REGULAR_EXPRESSION "PUSH-PULL test successfull")
add_test(NAME run_fairmq_pub_sub COMMAND ${CMAKE_BINARY_DIR}/fairmq/test/test-fairmq-pub-sub.sh)
set_tests_properties(run_fairmq_pub_sub PROPERTIES TIMEOUT "30")
set_tests_properties(run_fairmq_pub_sub PROPERTIES PASS_REGULAR_EXPRESSION "PUB-SUB test successfull")
add_test(NAME run_fairmq_req_rep COMMAND ${CMAKE_BINARY_DIR}/fairmq/test/test-fairmq-req-rep.sh)
set_tests_properties(run_fairmq_req_rep PROPERTIES TIMEOUT "30")
set_tests_properties(run_fairmq_req_rep PROPERTIES PASS_REGULAR_EXPRESSION "REQ-REP test successfull")