2 # Do NOT use bash; it cannot handle constructing variables in while loops.
6 #----------------------------------------------------------------------------------
8 # Copyright (c) 2018-2019 AT&T Intellectual Property.
10 # Licensed under the Apache License, Version 2.0 (the "License");
11 # you may not use this file except in compliance with the License.
12 # You may obtain a copy of the License at
14 # http://www.apache.org/licenses/LICENSE-2.0
16 # Unless required by applicable law or agreed to in writing, software
17 # distributed under the License is distributed on an "AS IS" BASIS,
18 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19 # See the License for the specific language governing permissions and
20 # limitations under the License.
22 #---------------------------------------------------------------------------------
25 # ----------------------------------------------------------------------
26 # Mnemonic: run_replay.sh
27 # Abstract: Simple script to make starting the replay binary easier.
29 # /var/lib/mc/listener -- directory for fifos
31 # The input file can be supplied with -f and if omitted then
32 # standard intput is assumed. This should allow the following
33 # when run in a docker container:
34 # docker run --rm -i -v /tmp/replay_fifos:/var/lib/mc/listener run_replay.sh <data-file
36 # Date: 20 November 2019
37 # Author: E. Scott Daniels
38 # ----------------------------------------------------------------------
41 fifo_dir=/var/lib/mc/listener
42 data="" # stdin by default
51 -f) data="$2"; shift;;
52 -d) fifo_dir=$2; shift;;
54 -g) gate="$2"; shift;;
55 -m) mtype_list="$2"; shift;;
58 *) echo "$1 is not a recognised option"
59 echo "usage: $0 [-d fifo-dir] [-D seconds] [-f data-file] [-g gate-file] [-m mtype-list] [-p]"
60 echo " -p causes FIFOs to be pre-allocated"
61 echo " -m supplies a comma separated list of message types to preopen FIFOs for"
62 echo " if -p is given and -m is omitted, the input file is examined to determine message types"
63 echo " -D seconds will cause a delay of the specified number of seconds before starting the replay"
64 echo " -g file will cause the script to wait for file to appear before starting the replay"
65 echo " if both -D and -g are used, the delay happens after the gate file is found"
75 if [[ -z $mtype_list ]]
79 echo "error: cannot determine a mtype list from stdin:"
80 echo " -p given with out a list (-m) and input file set to default to stdin (missing -f)"
84 rdc_extract $data 0 | sort -u | while read t
86 mtype_list="$mtype_list$t "
93 for t in ${mtype_list//,/ }
95 name=$( printf "MT_%09d" t )
96 echo "making FIFO: $name"
97 mkfifo -m 664 $name 2>/dev/null # if these are there, don't natter on about them
101 ls MT_* | wc -l | read found
102 if (( count != found ))
104 echo "warn: after pre-create, expected $count FIFOs, but found only $found"
113 echo "abort: cannot find data file: $data"
122 echo "waiting for gate file to appear: $gate"
135 echo "pausing $delay seconds before starting rdc_display..."
139 echo "starting rdc_replay"
140 rdc_replay -d $fifo_dir $data