diff --git a/examples/1-1/CMakeLists.txt b/examples/1-1/CMakeLists.txt index e53196a0..9e2ac2f6 100644 --- a/examples/1-1/CMakeLists.txt +++ b/examples/1-1/CMakeLists.txt @@ -23,10 +23,10 @@ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/fairmq-start-ex-1-1.sh.in ${CMAKE_CUR configure_file(${CMAKE_CURRENT_SOURCE_DIR}/test-ex-1-1.sh.in ${CMAKE_CURRENT_BINARY_DIR}/test-ex-1-1.sh) add_test(NAME Example.1-1.zeromq COMMAND ${CMAKE_CURRENT_BINARY_DIR}/test-ex-1-1.sh zeromq) -set_tests_properties(Example.1-1.zeromq PROPERTIES TIMEOUT "30" PASS_REGULAR_EXPRESSION "Received: ") +set_tests_properties(Example.1-1.zeromq PROPERTIES TIMEOUT "30") add_test(NAME Example.1-1.shmem COMMAND ${CMAKE_CURRENT_BINARY_DIR}/test-ex-1-1.sh shmem) -set_tests_properties(Example.1-1.shmem PROPERTIES TIMEOUT "30" PASS_REGULAR_EXPRESSION "Received: ") +set_tests_properties(Example.1-1.shmem PROPERTIES TIMEOUT "30") # install diff --git a/examples/1-1/test-ex-1-1.sh.in b/examples/1-1/test-ex-1-1.sh.in index 4c17af3c..7976fa4e 100755 --- a/examples/1-1/test-ex-1-1.sh.in +++ b/examples/1-1/test-ex-1-1.sh.in @@ -1,5 +1,7 @@ #!/bin/bash +set -e + export FAIRMQ_PATH=@FAIRMQ_BIN_DIR@ transport="zeromq" @@ -13,7 +15,7 @@ chan="data" chanAddr="/tmp/fmq_$session""_""$chan""_""$transport" # setup a trap to kill everything if the test fails/timeouts -trap 'kill -TERM $SAMPLER_PID; kill -TERM $SINK_PID; wait $SAMPLER_PID; wait $SINK_PID; rm $chanAddr' TERM +trap 'set +e; kill -TERM $SAMPLER_PID; kill -TERM $SINK_PID; wait $SAMPLER_PID; wait $SINK_PID; rm $chanAddr; exit 0' TERM SAMPLER="fairmq-ex-1-1-sampler" SAMPLER+=" --id sampler1" @@ -44,4 +46,6 @@ SINK_PID=$! wait $SAMPLER_PID wait $SINK_PID +set +e rm $chanAddr +exit 0 diff --git a/examples/1-n-1/CMakeLists.txt b/examples/1-n-1/CMakeLists.txt index 985a09ec..e1693d3b 100644 --- a/examples/1-n-1/CMakeLists.txt +++ b/examples/1-n-1/CMakeLists.txt @@ -29,10 +29,10 @@ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/ex-1-n-1.json ${CMAKE_CURRENT_BINARY_ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/test-ex-1-n-1.sh.in ${CMAKE_CURRENT_BINARY_DIR}/test-ex-1-n-1.sh) add_test(NAME Example.1-n-1.zeromq COMMAND ${CMAKE_CURRENT_BINARY_DIR}/test-ex-1-n-1.sh zeromq) -set_tests_properties(Example.1-n-1.zeromq PROPERTIES TIMEOUT "30" PASS_REGULAR_EXPRESSION "Received: ") +set_tests_properties(Example.1-n-1.zeromq PROPERTIES TIMEOUT "30") add_test(NAME Example.1-n-1.shmem COMMAND ${CMAKE_CURRENT_BINARY_DIR}/test-ex-1-n-1.sh shmem) -set_tests_properties(Example.1-n-1.shmem PROPERTIES TIMEOUT "30" PASS_REGULAR_EXPRESSION "Received: ") +set_tests_properties(Example.1-n-1.shmem PROPERTIES TIMEOUT "30") # install diff --git a/examples/1-n-1/test-ex-1-n-1.sh.in b/examples/1-n-1/test-ex-1-n-1.sh.in index f5052005..f3388114 100755 --- a/examples/1-n-1/test-ex-1-n-1.sh.in +++ b/examples/1-n-1/test-ex-1-n-1.sh.in @@ -1,5 +1,7 @@ #!/bin/bash +set -e + export FAIRMQ_PATH=@FAIRMQ_BIN_DIR@ transport="zeromq" @@ -15,7 +17,7 @@ chan1Addr="/tmp/fmq_$session""_""$chan1""_""$transport" chan2Addr="/tmp/fmq_$session""_""$chan2""_""$transport" # setup a trap to kill everything if the test fails/timeouts -trap 'kill -TERM $SAMPLER_PID; kill -TERM $SINK_PID; kill -TERM $PROCESSOR1_PID; kill -TERM $PROCESSOR2_PID; wait $SAMPLER_PID; wait $SINK_PID; wait $PROCESSOR1_PID; wait $PROCESSOR2_PID; rm $chan1Addr; rm $chan2Addr' TERM +trap 'set +e; kill -TERM $SAMPLER_PID; kill -TERM $SINK_PID; kill -TERM $PROCESSOR1_PID; kill -TERM $PROCESSOR2_PID; wait $SAMPLER_PID; wait $SINK_PID; wait $PROCESSOR1_PID; wait $PROCESSOR2_PID; rm $chan1Addr; rm $chan2Addr; exit 0' TERM SAMPLER="fairmq-ex-1-n-1-sampler" SAMPLER+=" --id sampler1" @@ -81,4 +83,6 @@ kill -SIGINT $PROCESSOR2_PID wait $PROCESSOR1_PID wait $PROCESSOR2_PID +set +e rm $chan1Addr; rm $chan2Addr +exit 0 diff --git a/examples/builtin-devices/CMakeLists.txt b/examples/builtin-devices/CMakeLists.txt index b4365b79..b62c3ea2 100644 --- a/examples/builtin-devices/CMakeLists.txt +++ b/examples/builtin-devices/CMakeLists.txt @@ -15,16 +15,16 @@ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/fairmq-start-ex-builtin-devices.sh.in configure_file(${CMAKE_CURRENT_SOURCE_DIR}/test-ex-builtin-devices.sh.in ${CMAKE_CURRENT_BINARY_DIR}/test-ex-builtin-devices.sh) add_test(NAME Example.BuiltinDevices.zeromq COMMAND ${CMAKE_CURRENT_BINARY_DIR}/test-ex-builtin-devices.sh zeromq) -set_tests_properties(Example.BuiltinDevices.zeromq PROPERTIES TIMEOUT "30" PASS_REGULAR_EXPRESSION "Configured maximum number of iterations reached") +set_tests_properties(Example.BuiltinDevices.zeromq PROPERTIES TIMEOUT "30") add_test(NAME Example.BuiltinDevices.shmem COMMAND ${CMAKE_CURRENT_BINARY_DIR}/test-ex-builtin-devices.sh shmem) -set_tests_properties(Example.BuiltinDevices.shmem PROPERTIES TIMEOUT "30" PASS_REGULAR_EXPRESSION "Configured maximum number of iterations reached") +set_tests_properties(Example.BuiltinDevices.shmem PROPERTIES TIMEOUT "30") add_test(NAME Example.BuiltinDevices.multipart.zeromq COMMAND ${CMAKE_CURRENT_BINARY_DIR}/test-ex-builtin-devices.sh zeromq true 2) -set_tests_properties(Example.BuiltinDevices.multipart.zeromq PROPERTIES TIMEOUT "30" PASS_REGULAR_EXPRESSION "Configured maximum number of iterations reached") +set_tests_properties(Example.BuiltinDevices.multipart.zeromq PROPERTIES TIMEOUT "30") add_test(NAME Example.BuiltinDevices.multipart.shmem COMMAND ${CMAKE_CURRENT_BINARY_DIR}/test-ex-builtin-devices.sh shmem true 2) -set_tests_properties(Example.BuiltinDevices.multipart.shmem PROPERTIES TIMEOUT "30" PASS_REGULAR_EXPRESSION "Configured maximum number of iterations reached") +set_tests_properties(Example.BuiltinDevices.multipart.shmem PROPERTIES TIMEOUT "30") # install diff --git a/examples/builtin-devices/test-ex-builtin-devices.sh.in b/examples/builtin-devices/test-ex-builtin-devices.sh.in index 9f465917..feb7ee65 100755 --- a/examples/builtin-devices/test-ex-builtin-devices.sh.in +++ b/examples/builtin-devices/test-ex-builtin-devices.sh.in @@ -1,5 +1,7 @@ #!/bin/bash +set -e + export FAIRMQ_PATH=@FAIRMQ_BIN_DIR@ transport="zeromq" @@ -33,7 +35,7 @@ chan4Addr="/tmp/fmq_$session""_""$chan4""_""$transport" chan5Addr="/tmp/fmq_$session""_""$chan5""_""$transport" # setup a trap to kill everything if the test fails/timeouts -trap 'kill -TERM $SAMPLER_PID; kill -TERM $SPLITTER_PID; kill -TERM $PROXY1_PID; kill -TERM $PROXY2_PID; kill -TERM $MERGER_PID; kill -TERM $MULTIPLIER_PID; kill -TERM $SINK_PID; rm $chan1Addr; rm $chan2Addr1; rm $chan2Addr2; rm $chan3Addr1; rm $chan3Addr2; rm $chan4Addr; rm $chan5Addr' TERM +trap 'set +e; kill -TERM $SAMPLER_PID; kill -TERM $SPLITTER_PID; kill -TERM $PROXY1_PID; kill -TERM $PROXY2_PID; kill -TERM $MERGER_PID; kill -TERM $MULTIPLIER_PID; kill -TERM $SINK_PID; rm $chan1Addr; rm $chan2Addr1; rm $chan2Addr2; rm $chan3Addr1; rm $chan3Addr2; rm $chan4Addr; rm $chan5Addr; exit 0' TERM SAMPLER="fairmq-bsampler" SAMPLER+=" --id bsampler1" @@ -165,4 +167,6 @@ wait $PROXY2_PID wait $MERGER_PID wait $MULTIPLIER_PID +set +e rm $chan1Addr; rm $chan2Addr1; rm $chan2Addr2; rm $chan3Addr1; rm $chan3Addr2; rm $chan4Addr; rm $chan5Addr +exit 0 diff --git a/examples/copypush/CMakeLists.txt b/examples/copypush/CMakeLists.txt index b2b4efcf..d7623c2c 100644 --- a/examples/copypush/CMakeLists.txt +++ b/examples/copypush/CMakeLists.txt @@ -24,10 +24,10 @@ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/fairmq-start-ex-copypush.sh.in ${CMAK configure_file(${CMAKE_CURRENT_SOURCE_DIR}/test-ex-copypush.sh.in ${CMAKE_CURRENT_BINARY_DIR}/test-ex-copypush.sh) add_test(NAME Example.CopyPush.zeromq COMMAND ${CMAKE_CURRENT_BINARY_DIR}/test-ex-copypush.sh zeromq) -set_tests_properties(Example.CopyPush.zeromq PROPERTIES TIMEOUT "30" PASS_REGULAR_EXPRESSION "Received message: ") +set_tests_properties(Example.CopyPush.zeromq PROPERTIES TIMEOUT "30") add_test(NAME Example.CopyPush.shmem COMMAND ${CMAKE_CURRENT_BINARY_DIR}/test-ex-copypush.sh shmem) -set_tests_properties(Example.CopyPush.shmem PROPERTIES TIMEOUT "30" PASS_REGULAR_EXPRESSION "Received message: ") +set_tests_properties(Example.CopyPush.shmem PROPERTIES TIMEOUT "30") # install diff --git a/examples/copypush/test-ex-copypush.sh.in b/examples/copypush/test-ex-copypush.sh.in index 5eff932f..29e4f7d5 100755 --- a/examples/copypush/test-ex-copypush.sh.in +++ b/examples/copypush/test-ex-copypush.sh.in @@ -1,5 +1,7 @@ #!/bin/bash +set -e + export FAIRMQ_PATH=@FAIRMQ_BIN_DIR@ transport="zeromq" @@ -14,7 +16,7 @@ chanAddr1="/tmp/fmq_$session""_""$chan""_1""_""$transport" chanAddr2="/tmp/fmq_$session""_""$chan""_2""_""$transport" # setup a trap to kill everything if the test fails/timeouts -trap 'kill -TERM $SAMPLER_PID; kill -TERM $SINK1_PID; kill -TERM $SINK2_PID; wait $SAMPLER_PID; wait $SINK1_PID; wait $SINK2_PID; rm $chanAddr1; rm $chanAddr2' TERM +trap 'set +e; kill -TERM $SAMPLER_PID; kill -TERM $SINK1_PID; kill -TERM $SINK2_PID; wait $SAMPLER_PID; wait $SINK1_PID; wait $SINK2_PID; rm $chanAddr1; rm $chanAddr2; exit 0' TERM SAMPLER="fairmq-ex-copypush-sampler" SAMPLER+=" --id sampler1" @@ -60,4 +62,6 @@ wait $SAMPLER_PID wait $SINK1_PID wait $SINK2_PID +set +e rm $chanAddr1; rm $chanAddr2 +exit 0 diff --git a/examples/multipart/CMakeLists.txt b/examples/multipart/CMakeLists.txt index 834ccdfb..163da69f 100644 --- a/examples/multipart/CMakeLists.txt +++ b/examples/multipart/CMakeLists.txt @@ -23,14 +23,14 @@ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/fairmq-start-ex-multipart.sh.in ${CMA configure_file(${CMAKE_CURRENT_SOURCE_DIR}/test-ex-multipart.sh.in ${CMAKE_CURRENT_BINARY_DIR}/test-ex-multipart.sh) add_test(NAME Example.Multipart.zeromq COMMAND ${CMAKE_CURRENT_BINARY_DIR}/test-ex-multipart.sh zeromq) -set_tests_properties(Example.Multipart.zeromq PROPERTIES TIMEOUT "30" PASS_REGULAR_EXPRESSION "Received message with 7 parts") +set_tests_properties(Example.Multipart.zeromq PROPERTIES TIMEOUT "30") add_test(NAME Example.Multipart.shmem COMMAND ${CMAKE_CURRENT_BINARY_DIR}/test-ex-multipart.sh shmem) -set_tests_properties(Example.Multipart.shmem PROPERTIES TIMEOUT "30" PASS_REGULAR_EXPRESSION "Received message with 7 parts") +set_tests_properties(Example.Multipart.shmem PROPERTIES TIMEOUT "30") if(BUILD_OFI_TRANSPORT) add_test(NAME Example.Multipart.ofi COMMAND ${CMAKE_CURRENT_BINARY_DIR}/test-ex-multipart.sh ofi) - set_tests_properties(Example.Multipart.ofi PROPERTIES TIMEOUT "30" PASS_REGULAR_EXPRESSION "Received message with 7 parts") + set_tests_properties(Example.Multipart.ofi PROPERTIES TIMEOUT "30") endif() # install diff --git a/examples/multipart/sink.cxx b/examples/multipart/sink.cxx index 6c32c503..bde0277e 100644 --- a/examples/multipart/sink.cxx +++ b/examples/multipart/sink.cxx @@ -24,6 +24,10 @@ struct Sink : fair::mq::Device { LOG(info) << "Received message with " << parts.Size() << " parts"; + if (parts.Size() != 7) { + throw std::runtime_error("Number of received parts != 7"); + } + example_multipart::Header header; header.stopFlag = (static_cast(parts.At(0)->GetData()))->stopFlag; diff --git a/examples/multipart/test-ex-multipart.sh.in b/examples/multipart/test-ex-multipart.sh.in index b4c98035..36865246 100755 --- a/examples/multipart/test-ex-multipart.sh.in +++ b/examples/multipart/test-ex-multipart.sh.in @@ -1,5 +1,7 @@ #!/bin/bash +set -e + export FAIRMQ_PATH=@FAIRMQ_BIN_DIR@ transport="zeromq" @@ -19,7 +21,7 @@ else fi # setup a trap to kill everything if the test fails/timeouts -trap 'kill -TERM $SAMPLER_PID; kill -TERM $SINK_PID; wait $SAMPLER_PID; wait $SINK_PID; rm $chanIpcFile' TERM +trap 'set +e; kill -TERM $SAMPLER_PID; kill -TERM $SINK_PID; wait $SAMPLER_PID; wait $SINK_PID; rm $chanIpcFile; exit 0' TERM SAMPLER="fairmq-ex-multipart-sampler" SAMPLER+=" --id sampler1" @@ -47,4 +49,6 @@ SINK_PID=$! wait $SAMPLER_PID wait $SINK_PID +set +e rm $chanIpcFile +exit 0 diff --git a/examples/multiple-channels/CMakeLists.txt b/examples/multiple-channels/CMakeLists.txt index b93ed684..9879b711 100644 --- a/examples/multiple-channels/CMakeLists.txt +++ b/examples/multiple-channels/CMakeLists.txt @@ -26,7 +26,7 @@ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/fairmq-start-ex-multiple-channels.sh. configure_file(${CMAKE_CURRENT_SOURCE_DIR}/test-ex-multiple-channels.sh.in ${CMAKE_CURRENT_BINARY_DIR}/test-ex-multiple-channels.sh) add_test(NAME Example.MultipleChannels.zeromq COMMAND ${CMAKE_CURRENT_BINARY_DIR}/test-ex-multiple-channels.sh zeromq) -set_tests_properties(Example.MultipleChannels.zeromq PROPERTIES TIMEOUT "30" PASS_REGULAR_EXPRESSION "Received messages from both sources.") +set_tests_properties(Example.MultipleChannels.zeromq PROPERTIES TIMEOUT "30") # install diff --git a/examples/multiple-channels/test-ex-multiple-channels.sh.in b/examples/multiple-channels/test-ex-multiple-channels.sh.in index 272a867a..e5c751ad 100755 --- a/examples/multiple-channels/test-ex-multiple-channels.sh.in +++ b/examples/multiple-channels/test-ex-multiple-channels.sh.in @@ -1,5 +1,7 @@ #!/bin/bash +set -e + export FAIRMQ_PATH=@FAIRMQ_BIN_DIR@ transport="zeromq" @@ -15,7 +17,7 @@ dataChanAddr="/tmp/fmq_$session""_""$dataChan""_""$transport" broadcastChanAddr="/tmp/fmq_$session""_""$broadcastChan""_""$transport" # setup a trap to kill everything if the test fails/timeouts -trap 'kill -TERM $SAMPLER_PID; kill -TERM $SINK_PID; kill -TERM $BROADCASTER_PID; wait $SAMPLER_PID; wait $SINK_PID; wait $BROADCASTER_PID; rm $dataChanAddr; rm $broadcastChanAddr' TERM +trap 'set +e; kill -TERM $SAMPLER_PID; kill -TERM $SINK_PID; kill -TERM $BROADCASTER_PID; wait $SAMPLER_PID; wait $SINK_PID; wait $BROADCASTER_PID; rm $dataChanAddr; rm $broadcastChanAddr; exit 0' TERM SINK="fairmq-ex-multiple-channels-sink" SINK+=" --id sink1" @@ -65,4 +67,6 @@ kill -SIGINT $BROADCASTER_PID # wait for broadcaster to finish wait $BROADCASTER_PID +set +e rm $dataChanAddr; rm $broadcastChanAddr +exit 0 diff --git a/examples/multiple-transports/CMakeLists.txt b/examples/multiple-transports/CMakeLists.txt index 0584e210..821af0e0 100644 --- a/examples/multiple-transports/CMakeLists.txt +++ b/examples/multiple-transports/CMakeLists.txt @@ -25,7 +25,7 @@ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/fairmq-start-ex-multiple-transports.s configure_file(${CMAKE_CURRENT_SOURCE_DIR}/test-ex-multiple-transports.sh.in ${CMAKE_CURRENT_BINARY_DIR}/test-ex-multiple-transports.sh) add_test(NAME Example.MultipleTransports COMMAND ${CMAKE_CURRENT_BINARY_DIR}/test-ex-multiple-transports.sh) -set_tests_properties(Example.MultipleTransports PROPERTIES TIMEOUT "30" PASS_REGULAR_EXPRESSION "Received messages from both sources.") +set_tests_properties(Example.MultipleTransports PROPERTIES TIMEOUT "30") # install diff --git a/examples/multiple-transports/sink.cxx b/examples/multiple-transports/sink.cxx index 4ff49da9..8a6f613b 100644 --- a/examples/multiple-transports/sink.cxx +++ b/examples/multiple-transports/sink.cxx @@ -9,6 +9,8 @@ #include #include +#include + namespace bpo = boost::program_options; struct Sink : fair::mq::Device @@ -32,7 +34,7 @@ struct Sink : fair::mq::Device // Creates a message using the transport of channel ack fair::mq::MessagePtr ack(NewMessageFor("ack", 0)); if (Send(ack, "ack") < 0) { - return false; + throw std::runtime_error("could not send an ack"); } // return true if want to be called again (otherwise go to IDLE state) diff --git a/examples/multiple-transports/test-ex-multiple-transports.sh.in b/examples/multiple-transports/test-ex-multiple-transports.sh.in index eb657002..3e53d797 100755 --- a/examples/multiple-transports/test-ex-multiple-transports.sh.in +++ b/examples/multiple-transports/test-ex-multiple-transports.sh.in @@ -1,5 +1,7 @@ #!/bin/bash +set -e + export FAIRMQ_PATH=@FAIRMQ_BIN_DIR@ session="$(@CMAKE_BINARY_DIR@/fairmq/fairmq-uuid-gen -h)" @@ -10,7 +12,7 @@ chan1Addr="/tmp/fmq_$session""_""$chan1" chan2Addr="/tmp/fmq_$session""_""$chan2" ackChanAddr="/tmp/fmq_$session""_""$ackChan" -trap 'kill -TERM $SAMPLER1_PID; kill -TERM $SAMPLER2_PID; kill -TERM $SINK_PID; wait $SAMPLER1_PID; wait $SAMPLER2_PID; wait $SINK_PID; @CMAKE_BINARY_DIR@/fairmq/fairmq-shmmonitor --cleanup --session $SESSION; rm $chan1Addr; rm $chan2Addr; rm $ackChanAddr' TERM +trap 'set +e; kill -TERM $SAMPLER1_PID; kill -TERM $SAMPLER2_PID; kill -TERM $SINK_PID; wait $SAMPLER1_PID; wait $SAMPLER2_PID; wait $SINK_PID; @CMAKE_BINARY_DIR@/fairmq/fairmq-shmmonitor --cleanup --session $SESSION; rm $chan1Addr; rm $chan2Addr; rm $ackChanAddr; exit 0' TERM SINK="fairmq-ex-multiple-transports-sink" SINK+=" --id sink1" @@ -55,4 +57,6 @@ wait $SAMPLER1_PID wait $SAMPLER2_PID wait $SINK_PID +set +e rm $chan1Addr; rm $chan2Addr; rm $ackChanAddr +exit 0 diff --git a/examples/region/CMakeLists.txt b/examples/region/CMakeLists.txt index 0f3b6aad..e175bf41 100644 --- a/examples/region/CMakeLists.txt +++ b/examples/region/CMakeLists.txt @@ -26,10 +26,10 @@ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/fairmq-start-ex-region.sh.in ${CMAKE_ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/test-ex-region.sh.in ${CMAKE_CURRENT_BINARY_DIR}/test-ex-region.sh) add_test(NAME Example.Region.zeromq COMMAND ${CMAKE_CURRENT_BINARY_DIR}/test-ex-region.sh zeromq) -set_tests_properties(Example.Region.zeromq PROPERTIES TIMEOUT "30" PASS_REGULAR_EXPRESSION "Received [0-9*] acks") +set_tests_properties(Example.Region.zeromq PROPERTIES TIMEOUT "30") add_test(NAME Example.Region.shmem COMMAND ${CMAKE_CURRENT_BINARY_DIR}/test-ex-region.sh shmem) -set_tests_properties(Example.Region.shmem PROPERTIES TIMEOUT "30" PASS_REGULAR_EXPRESSION "Received [0-9*] acks") +set_tests_properties(Example.Region.shmem PROPERTIES TIMEOUT "30") # install diff --git a/examples/region/sampler.cxx b/examples/region/sampler.cxx index a51cc86e..71e1d043 100644 --- a/examples/region/sampler.cxx +++ b/examples/region/sampler.cxx @@ -57,45 +57,48 @@ struct Sampler : fair::mq::Device )); } - bool ConditionalRun() override + void Run() override { - fair::mq::MessagePtr msg(NewMessageFor("data", // channel - 0, // sub-channel - fRegion, // region - fRegion->GetData(), // ptr within region - fMsgSize, // offset from ptr - nullptr // hint - )); + while (!NewStatePending()) { + fair::mq::MessagePtr msg(NewMessageFor("data", // channel + 0, // sub-channel + fRegion, // region + fRegion->GetData(), // ptr within region + fMsgSize, // offset from ptr + nullptr // hint + )); - // static_cast(fRegion->GetData())[3] = 97; - // LOG(info) << "check: " << static_cast(fRegion->GetData())[3]; - // std::this_thread::sleep_for(std::chrono::seconds(1)); - - std::lock_guard lock(fMtx); - ++fNumUnackedMsgs; - if (Send(msg, "data", 0) > 0) { - if (fMaxIterations > 0 && ++fNumIterations >= fMaxIterations) { - LOG(info) << "Configured maximum number of iterations reached. Leaving RUNNING state."; - return false; + std::lock_guard lock(fMtx); + ++fNumUnackedMsgs; + if (Send(msg, "data", 0) > 0) { + if (fMaxIterations > 0 && ++fNumIterations >= fMaxIterations) { + LOG(info) << "Configured maximum number of iterations reached. Stopping sending."; + break; + } } } - return true; + // wait for all acks to arrive + while (!NewStatePending()) { + { + std::lock_guard lock(fMtx); + if (fNumUnackedMsgs == 0) { + break; + } + } + std::this_thread::sleep_for(std::chrono::milliseconds(25)); + } + + if (fNumUnackedMsgs != 0) { + LOG(info) << "Done, still not acknowledged: " << fNumUnackedMsgs; + } else { + LOG(info) << "All acknowledgements received."; + } } void ResetTask() override { - // give some time for acks to be received - std::this_thread::sleep_for(std::chrono::milliseconds(250)); fRegion.reset(); - { - std::lock_guard lock(fMtx); - if (fNumUnackedMsgs != 0) { - LOG(info) << "Done, still not acknowledged: " << fNumUnackedMsgs; - } else { - LOG(info) << "All acknowledgements received."; - } - } GetChannel("data", 0).Transport()->UnsubscribeFromRegionEvents(); } diff --git a/examples/region/test-ex-region.sh.in b/examples/region/test-ex-region.sh.in index ee2da239..5d23a20b 100755 --- a/examples/region/test-ex-region.sh.in +++ b/examples/region/test-ex-region.sh.in @@ -1,5 +1,7 @@ #!/bin/bash +set -e + export FAIRMQ_PATH=@FAIRMQ_BIN_DIR@ transport="zeromq" @@ -14,7 +16,7 @@ chan="data" chanAddr="/tmp/fmq_$session""_""$chan""_""$transport" # setup a trap to kill everything if the test fails/timeouts -trap 'kill -TERM $SAMPLER_PID; kill -TERM $SINK_PID; wait $SAMPLER_PID; wait $SINK_PID; @CMAKE_BINARY_DIR@/fairmq/fairmq-shmmonitor --cleanup --session $SESSION; rm $chanAddr' TERM +trap 'set +e; kill -TERM $SAMPLER_PID; kill -TERM $SINK_PID; wait $SAMPLER_PID; wait $SINK_PID; @CMAKE_BINARY_DIR@/fairmq/fairmq-shmmonitor --cleanup --session $SESSION; rm $chanAddr; exit 0' TERM SAMPLER="fairmq-ex-region-sampler" SAMPLER+=" --id sampler1" @@ -48,4 +50,6 @@ SINK_PID=$! wait $SAMPLER_PID wait $SINK_PID +set +e rm $chanAddr +exit 0 diff --git a/examples/req-rep/CMakeLists.txt b/examples/req-rep/CMakeLists.txt index f5adc113..7ba051c9 100644 --- a/examples/req-rep/CMakeLists.txt +++ b/examples/req-rep/CMakeLists.txt @@ -24,10 +24,10 @@ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/fairmq-start-ex-req-rep.sh.in ${CMAKE configure_file(${CMAKE_CURRENT_SOURCE_DIR}/test-ex-req-rep.sh.in ${CMAKE_CURRENT_BINARY_DIR}/test-ex-req-rep.sh) add_test(NAME Example.ReqRep.zeromq COMMAND ${CMAKE_CURRENT_BINARY_DIR}/test-ex-req-rep.sh zeromq) -set_tests_properties(Example.ReqRep.zeromq PROPERTIES TIMEOUT "30" PASS_REGULAR_EXPRESSION "Received reply from server: ") +set_tests_properties(Example.ReqRep.zeromq PROPERTIES TIMEOUT "30") add_test(NAME Example.ReqRep.shmem COMMAND ${CMAKE_CURRENT_BINARY_DIR}/test-ex-req-rep.sh shmem) -set_tests_properties(Example.ReqRep.shmem PROPERTIES TIMEOUT "30" PASS_REGULAR_EXPRESSION "Received reply from server: ") +set_tests_properties(Example.ReqRep.shmem PROPERTIES TIMEOUT "30") # install diff --git a/examples/req-rep/test-ex-req-rep.sh.in b/examples/req-rep/test-ex-req-rep.sh.in index b1db7227..12708f2a 100755 --- a/examples/req-rep/test-ex-req-rep.sh.in +++ b/examples/req-rep/test-ex-req-rep.sh.in @@ -1,5 +1,7 @@ #!/bin/bash +set -e + export FAIRMQ_PATH=@FAIRMQ_BIN_DIR@ transport="zeromq" @@ -13,7 +15,7 @@ chan="data" chanAddr="/tmp/fmq_$session""_""$chan""_""$transport" # setup a trap to kill everything if the test fails/timeouts -trap 'kill -TERM $CLIENT_PID; kill -TERM $SERVER_PID; wait $CLIENT_PID; wait $SERVER_PID; rm $chanAddr' TERM +trap 'set +e; kill -TERM $CLIENT_PID; kill -TERM $SERVER_PID; wait $CLIENT_PID; wait $SERVER_PID; rm $chanAddr; exit 0' TERM CLIENT="fairmq-ex-req-rep-client" CLIENT+=" --id client" @@ -43,4 +45,6 @@ SERVER_PID=$! wait $CLIENT_PID wait $SERVER_PID +set +e rm $chanAddr +exit 0