3 #----------------------------------------------------------------------------------
5 # Copyright (c) 2018-2019 AT&T Intellectual Property.
7 # Licensed under the Apache License, Version 2.0 (the "License");
8 # you may not use this file except in compliance with the License.
9 # You may obtain a copy of the License at
11 # http://www.apache.org/licenses/LICENSE-2.0
13 # Unless required by applicable law or agreed to in writing, software
14 # distributed under the License is distributed on an "AS IS" BASIS,
15 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 # See the License for the specific language governing permissions and
17 # limitations under the License.
19 #---------------------------------------------------------------------------------
22 # ----------------------------------------------------------------------
24 # Abstract: Simple script to attempt to verify that the mc_listener is
25 # capable of running. This will start a listener and a sender
26 # and then will cat a few lines from one of the FIFOs.
27 # This script is designed to run using the geneated runtime
28 # image; in other words, it expects to find the binaries
29 # in /playpen/bin if that directory exists. If it does not it
30 # assumes the current working directory is where the binaries
33 # Date: 26 August 2019
34 # Author: E. Scott Daniels
35 # ----------------------------------------------------------------------
37 # set the various sleep values based on long test or short test
38 function set_wait_values {
41 export MCL_RDC_FREQ=13 # file cycle after 13s
54 # run sender at a 2 msg/sec rate (500000 musec delay)
55 # sender sends msg types 0-6 and the route table in /tmp
56 # will direct them to the listener. We also need to switch
57 # the RT listen port so there is no collision with the listen
61 echo "starting sender"
62 RMR_SEED_RT=/tmp/local.rt RMR_RTG_SVC=9989 $bin_dir/sender 43086 10000 >/tmp/sender.log 2>&1 &
66 echo "stopping sender $spid"
70 function run_listener {
71 echo "starting listener"
72 $bin_dir/mc_listener $ext_hdr -r 1 -d $fifo_dir >/tmp/listen.log 2>&1 &
76 echo "stopping listener $lpid"
80 # run a pipe reader for one message type
82 echo "starting pipe reader $1 $max_flag"
84 $bin_dir/pipe_reader $ext_hdr $max_flag -m $1 -d $fifo_dir >/tmp/pr.$1.log 2>&1 &
89 echo "stopping pipe reader $ppid"
93 # generate a dummy route table that the sender needs
95 cat <<endKat >/tmp/local.rt
97 mse | 0 | -1 | localhost:4560
98 mse | 1 | -1 | localhost:4560
99 mse | 2 | -1 | localhost:4560
100 mse | 3 | -1 | localhost:4560
101 mse | 4 | -1 | localhost:4560
102 mse | 5 | -1 | localhost:4560
103 mse | 6 | -1 | localhost:4560
104 mse | 7 | -1 | localhost:4560
105 mse | 8 | -1 | localhost:4560
106 mse | 9 | -1 | localhost:4560
111 # ---- run everything ---------------------------------------------------
113 si="" # if -s given then we add this to sender/listener to run SI95 versions
114 ext_hdr="" # run with extended header enabled (-e turns extended off)
125 *) echo "$1 is not a recognised option"
134 if [[ -d /playpen/bin ]] # designed to run in the container, but this allows unit test by jenkins to drive too
136 bin_dir=/playpen/${si}bin
143 if (( ! raw_capture )) # -n set, turn off capture
145 export MCL_RDC_ENABLE=0
148 if [[ -d /data/final ]] # assume if we find data that final directory goes here
150 echo "### found /data/final using that as final directory"
151 export MCL_RDC_FINAL=/data/final
154 if [[ -d /data/stage ]]
156 echo "### found /data/staging using that as stage directory"
157 export MCL_RDC_STAGE=/data/stage
159 final_dir=${MCL_RDC_FINAL:-/tmp/rdc/final}
160 stage_dir=${MCL_RDC_STAGE:-/tmp/rdc/stage}
163 mkdir -p $fifo_dir # redirect fifos so we don't depend on mount
165 gen_rt # generate a dummy route table
169 # the sender will send types 0-8 inclusive; we only start 7 readers to
170 # endure listener doesn't hang on pipes without a reader
174 run_pr $p & # all but last have no max read
179 sleep 1 # let the readers settle
182 sleep $main_wait # long enough for all functions to finish w/o having to risk a wait hanging
183 echo "all functions stopped; looking at logs"
187 echo "[INFO] ---- mc_lisener log follwos --------------------------"
189 echo "[INFO] ------------------------------------------------------"
193 # ---------- validation -------------------------------------------------
197 # logs should be > 0 in size
198 echo "----- logs ---------"
201 # pipe reader log files 1-6 should have 'stand up and cheer' messages
202 # pipe reader log for MT 0 will likley be empty as sender sends only
203 # one of those and buffer not likely flushed. So, we only check 1-6
207 if [[ ! -s /tmp/pr.$l.log ]]
209 echo "[FAIL] log $l was empty"
212 if ! grep -q -i "stand up and cheer" /tmp/pr.$l.log
214 echo "[FAIL] pipe reader log did not have any valid messages: /tmp/pr.$l.log"
222 echo "[OK] All logs seem good"
225 nfifos=$( ls /tmp/fifos/MT_* | wc -l )
228 echo "didn't find enough fifos"
232 echo "[OK] Found expected fifos"
235 if (( raw_capture )) # not an error if not capturing
237 if [[ -d $stage_dir ]]
239 echo "[OK] Found staging direcory ($stage_dir)"
243 echo "[FAIL] No staging directory found ($stage_dir)"
247 if [[ -d $final_dir ]]
249 echo "[OK] Found final direcory ($final_dir)"
252 if (( long_test )) # look for files in final dir to ensure roll
254 found=$( ls $final_dir/MC* | wc -l )
257 echo "[OK] Found $found files in final directory ($final_dir)"
259 echo "[FAIL] Did not find any files in the final directory ($final_dir)"
265 echo "[FAIL] No final directory found"
271 echo "[FAIL] $errors errors noticed"