mirror of
https://github.com/FairRootGroup/FairMQ.git
synced 2025-10-13 00:31:14 +00:00
177 lines
5.9 KiB
Bash
Executable File
177 lines
5.9 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -e
|
|
|
|
export FAIRMQ_PATH=@FAIRMQ_BIN_DIR@
|
|
|
|
transport="zeromq"
|
|
multipart="false"
|
|
numParts="1"
|
|
|
|
if [[ $1 =~ ^[a-z]+$ ]]; then
|
|
transport=$1
|
|
fi
|
|
|
|
if [[ $2 =~ ^multipart$ ]]; then
|
|
multipart="true"
|
|
numParts=2
|
|
fi
|
|
|
|
session="$(@CMAKE_BINARY_DIR@/fairmq/fairmq-uuid-gen -h)"
|
|
chan1="data1"
|
|
chan2="data2"
|
|
chan3="data3"
|
|
chan4="data4"
|
|
chan5="data5"
|
|
chan1Addr="/tmp/fmq_$session""_""$chan1""_""$transport"
|
|
chan2Addr1="/tmp/fmq_$session""_""$chan2""_1""_""$transport"
|
|
chan2Addr2="/tmp/fmq_$session""_""$chan2""_2""_""$transport"
|
|
chan3Addr1="/tmp/fmq_$session""_""$chan3""_1""_""$transport"
|
|
chan3Addr2="/tmp/fmq_$session""_""$chan3""_2""_""$transport"
|
|
chan4Addr="/tmp/fmq_$session""_""$chan4""_""$transport"
|
|
chan5Addr="/tmp/fmq_$session""_""$chan5""_""$transport"
|
|
|
|
# setup a trap to kill everything if the test fails/timeouts
|
|
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"
|
|
SAMPLER+=" --session $SESSION"
|
|
SAMPLER+=" --transport $transport"
|
|
SAMPLER+=" --color false"
|
|
SAMPLER+=" --control static"
|
|
SAMPLER+=" --verbosity veryhigh"
|
|
SAMPLER+=" --shm-segment-size 100000000"
|
|
SAMPLER+=" --shm-monitor true"
|
|
SAMPLER+=" --severity debug"
|
|
SAMPLER+=" --msg-size 100000"
|
|
SAMPLER+=" --multipart $multipart"
|
|
SAMPLER+=" --num-parts $numParts"
|
|
SAMPLER+=" --msg-rate 1"
|
|
SAMPLER+=" --max-iterations 0"
|
|
SAMPLER+=" --out-channel $chan1"
|
|
SAMPLER+=" --channel-config name=$chan1,type=push,method=bind,sndBufSize=50,rcvBufSize=50,address=ipc://$chan1Addr"
|
|
@FAIRMQ_BIN_DIR@/$SAMPLER &
|
|
SAMPLER_PID=$!
|
|
|
|
SPLITTER="fairmq-splitter"
|
|
SPLITTER+=" --id splitter"
|
|
SPLITTER+=" --session $SESSION"
|
|
SPLITTER+=" --transport $transport"
|
|
SPLITTER+=" --color false"
|
|
SPLITTER+=" --control static"
|
|
SPLITTER+=" --verbosity veryhigh"
|
|
SPLITTER+=" --shm-segment-size 100000000"
|
|
SPLITTER+=" --shm-monitor true"
|
|
SPLITTER+=" --multipart $multipart"
|
|
SPLITTER+=" --in-channel $chan1"
|
|
SPLITTER+=" --out-channel $chan2"
|
|
SPLITTER+=" --channel-config name=$chan1,type=pull,method=connect,sndBufSize=50,rcvBufSize=50,address=ipc://$chan1Addr"
|
|
SPLITTER+=" name=$chan2,type=push,method=bind,sndBufSize=50,rcvBufSize=50,address=ipc://$chan2Addr1,address=ipc://$chan2Addr2"
|
|
@FAIRMQ_BIN_DIR@/$SPLITTER &
|
|
SPLITTER_PID=$!
|
|
|
|
PROXY1="fairmq-proxy"
|
|
PROXY1+=" --id proxy1"
|
|
PROXY1+=" --session $SESSION"
|
|
PROXY1+=" --transport $transport"
|
|
PROXY1+=" --color false"
|
|
PROXY1+=" --control static"
|
|
PROXY1+=" --verbosity veryhigh"
|
|
PROXY1+=" --shm-segment-size 100000000"
|
|
PROXY1+=" --shm-monitor true"
|
|
PROXY1+=" --multipart $multipart"
|
|
PROXY1+=" --in-channel $chan2"
|
|
PROXY1+=" --out-channel $chan3"
|
|
PROXY1+=" --channel-config name=$chan2,type=pull,method=connect,sndBufSize=50,rcvBufSize=50,address=ipc://$chan2Addr1"
|
|
PROXY1+=" name=$chan3,type=push,method=connect,sndBufSize=50,rcvBufSize=50,address=ipc://$chan3Addr1"
|
|
@FAIRMQ_BIN_DIR@/$PROXY1 &
|
|
PROXY1_PID=$!
|
|
|
|
PROXY2="fairmq-proxy"
|
|
PROXY2+=" --id proxy2"
|
|
PROXY2+=" --session $SESSION"
|
|
PROXY2+=" --transport $transport"
|
|
PROXY2+=" --color false"
|
|
PROXY2+=" --control static"
|
|
PROXY2+=" --verbosity veryhigh"
|
|
PROXY2+=" --shm-segment-size 100000000"
|
|
PROXY2+=" --shm-monitor true"
|
|
PROXY2+=" --multipart $multipart"
|
|
PROXY2+=" --in-channel $chan2"
|
|
PROXY2+=" --out-channel $chan3"
|
|
PROXY2+=" --channel-config name=$chan2,type=pull,method=connect,sndBufSize=50,rcvBufSize=50,address=ipc://$chan2Addr2"
|
|
PROXY2+=" name=$chan3,type=push,method=connect,sndBufSize=50,rcvBufSize=50,address=ipc://$chan3Addr2"
|
|
@FAIRMQ_BIN_DIR@/$PROXY2 &
|
|
PROXY2_PID=$!
|
|
|
|
MERGER="fairmq-merger"
|
|
MERGER+=" --id merger"
|
|
MERGER+=" --session $SESSION"
|
|
MERGER+=" --transport $transport"
|
|
MERGER+=" --color false"
|
|
MERGER+=" --control static"
|
|
MERGER+=" --verbosity veryhigh"
|
|
MERGER+=" --shm-segment-size 100000000"
|
|
MERGER+=" --shm-monitor true"
|
|
MERGER+=" --multipart $multipart"
|
|
MERGER+=" --in-channel $chan3"
|
|
MERGER+=" --out-channel $chan4"
|
|
MERGER+=" --channel-config name=$chan3,type=pull,method=bind,sndBufSize=50,rcvBufSize=50,address=ipc://$chan3Addr1,address=ipc://$chan3Addr2"
|
|
MERGER+=" name=$chan4,type=push,method=connect,sndBufSize=50,rcvBufSize=50,address=ipc://$chan4Addr"
|
|
@FAIRMQ_BIN_DIR@/$MERGER &
|
|
MERGER_PID=$!
|
|
|
|
MULTIPLIER="fairmq-multiplier"
|
|
MULTIPLIER+=" --id multiplier"
|
|
MULTIPLIER+=" --session $SESSION"
|
|
MULTIPLIER+=" --transport $transport"
|
|
MULTIPLIER+=" --color false"
|
|
MULTIPLIER+=" --control static"
|
|
MULTIPLIER+=" --verbosity veryhigh"
|
|
MULTIPLIER+=" --shm-segment-size 100000000"
|
|
MULTIPLIER+=" --shm-monitor true"
|
|
MULTIPLIER+=" --multipart $multipart"
|
|
MULTIPLIER+=" --in-channel $chan4"
|
|
MULTIPLIER+=" --out-channel $chan5"
|
|
MULTIPLIER+=" --channel-config name=$chan4,type=pull,method=bind,sndBufSize=50,rcvBufSize=50,address=ipc://$chan4Addr"
|
|
MULTIPLIER+=" name=$chan5,type=push,method=connect,sndBufSize=50,rcvBufSize=50,address=ipc://$chan5Addr,address=ipc://$chan5Addr"
|
|
@FAIRMQ_BIN_DIR@/$MULTIPLIER &
|
|
MULTIPLIER_PID=$!
|
|
|
|
SINK="fairmq-sink"
|
|
SINK+=" --id sink1"
|
|
SINK+=" --session $SESSION"
|
|
SINK+=" --transport $transport"
|
|
SINK+=" --color false"
|
|
SINK+=" --control static"
|
|
SINK+=" --verbosity veryhigh"
|
|
SINK+=" --severity debug"
|
|
SINK+=" --multipart $multipart"
|
|
SINK+=" --shm-monitor true"
|
|
SINK+=" --max-iterations 2"
|
|
SINK+=" --in-channel $chan5"
|
|
SINK+=" --channel-config name=$chan5,type=pull,method=bind,sndBufSize=50,rcvBufSize=50,address=ipc://$chan5Addr"
|
|
@FAIRMQ_BIN_DIR@/$SINK &
|
|
SINK_PID=$!
|
|
|
|
wait $SINK_PID
|
|
|
|
kill -SIGINT $SAMPLER_PID
|
|
kill -SIGINT $SPLITTER_PID
|
|
kill -SIGINT $PROXY1_PID
|
|
kill -SIGINT $PROXY2_PID
|
|
kill -SIGINT $MERGER_PID
|
|
kill -SIGINT $MULTIPLIER_PID
|
|
|
|
wait $SAMPLER_PID
|
|
wait $SPLITTER_PID
|
|
wait $PROXY1_PID
|
|
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
|