123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600 |
- #!/bin/bash
- source common.sh
- # default values
- g_product_name="wave521c"
- test_exec="./w5_enc_test"
- wiki_log_file="./log/enc_confluence.log"
- enable_random=0;
- txt_param_switch=0;
- secondary_axi_def=3 # bit0 : LF, bit1 : BIT
- build_stream=0
- cfg_dir=./cfg
- ref_dir=.
- yuv_base_path=./yuv
- if [ "${OS}" = "Windows_NT" ]; then
- ref_c_exec=./hevc_enc.exe
- else
- ref_c_exec=./hevc_enc
- fi
- cframe_c_exec=./cframe
- codec=hevc
- simulation="false"
- ACLK_MIN_2000T=6
- BCLK_MIN_2000T=6
- CCLK_MIN_2000T=6
- ACLK_AVC_MAX_2000T=15
- BCLK_AVC_MAX_2000T=15
- CCLK_AVC_MAX_2000T=15
- ACLK_HEVC_MAX_2000T=8
- BCLK_HEVC_MAX_2000T=8
- CCLK_HEVC_MAX_2000T=8
- ACLK_MIN_HAPS=1000 #min:300
- BCLK_MIN_HAPS=1000
- CCLK_MIN_HAPS=1000
- ACLK_MAX_HAPS=5000
- BCLK_MAX_HAPS=5000
- CCLK_MAX_HAPS=5000
- ACLK_MIN_VU440=5000 #min:300
- BCLK_MIN_VU440=5000
- CCLK_MIN_VU440=5000
- ACLK_MAX_VU440=50000
- BCLK_MAX_VU440=50000
- CCLK_MAX_VU440=50000
- RET_SUCCESS=0
- RET_HANGUP=2
- function help {
- echo ""
- echo "-------------------------------------------------------------------------------"
- echo "Chips&Media conformance Tool v2.0"
- echo "All copyright reserved by Chips&Media"
- echo "-------------------------------------------------------------------------------"
- echo "$0 OPTION streamlist_file"
- echo "-h help"
- echo "-c codec. default: hevc"
- echo " valid codec list: avc, hevc"
- echo "--yuv-dir input yuv directory"
- echo "--ref-dir ref-c directory"
- echo "--bin-dir ref-c directory"
- echo "--enable-random [optional] generate random opton"
- echo "--build-stream Just generate golden stream with Ref-C."
- }
- OPTSTRING="-o hwn:c:"
- OPTSTRING="${OPTSTRING} -l jump-stream:,bsmode:,enable-random,md5-dir:"
- OPTSTRING="${OPTSTRING},yuv-dir:,build-stream,ref-dir:,wiki:,n:,cfg-dir:,bin-dir:,"
- OPTS=`getopt $OPTSTRING -- "$@"`
- if [ $? != 0 ]; then
- exit 1;
- fi
- eval set -- "$OPTS"
- while true; do
- case "$1" in
- -h)
- help
- exit 0
- shift;;
- -n)
- g_frame_num="-n $2"
- if [ "$2" = "" ]; then
- frame_num_refc=""
- else
- frame_num_refc="-f $2"
- fi
- shift 2;;
- -c)
- codec=$(echo $2 | tr '[:upper:]' '[:lower:]')
- shift 2;;
- --bin-dir)
- bin_dir_user=$2
- shift 2;;
- --enable-random)
- enable_random=1
- shift;;
- --yuv-dir)
- yuv_dir_user=$2
- shift 2;;
- --cfg-dir)
- cfg_dir_user=$2
- shift 2;;
- --ref-dir)
- ref_dir=$2
- shift 2;;
- --build-stream)
- build_stream=1;
- shift;;
- --wiki)
- wiki_log_file=$2
- shift 2;;
- --)
- shift
- break;;
- esac
- done
- shift $(($OPTIND - 1))
- case "${codec}" in
- "hevc") g_codec_index=12;;
- "avc") g_codec_index=0
- ref_c_exec=./avc_enc
- ;;
- *)
- echo "unsupported codec: ${codec}"
- help
- exit 1
- ;;
- esac
- if [ ! -z $yuv_dir_user ]; then
- yuv_dir="$yuv_dir_user"
- yuv_base_path="$yuv_dir_user"
- fi
- if [ ! -z $cfg_dir_user ]; then
- cfg_dir="$cfg_dir_user"
- fi
- if [ ! -z $bin_dir_user ]; then
- bin_dir="$bin_dir_user"
- fi
- ################################################################################
- # Get param from target text file #
- ################################################################################
- input_param_name=TestRunnerParamWave521CEnc.txt
- if [ -f $input_param_name ] && [ $enable_random == 0 ]; then
- echo "read $input_param_name"
- while read line; do
- # remove right comment
- line=$(echo $line | tr -d '\n')
- line=$(echo $line | tr -d '\r')
- line="${line%%\#*}"
- attr=$(echo $line | cut -d'=' -f1)
- attr=$(echo $attr | tr -d ' ')
- if [ "$attr" == "enable-cbcrInterleave" ]; then
- value=$(echo $line | cut -d '=' -f3)
- else
- value=$(echo $line | cut -d'=' -f2)
- fi
- if [ "$attr" != "MODE_COMP" ]; then
- value=$(echo $value | tr -d ' ')
- fi
- case "$attr" in
- default) default_opt="$value";;
- product) g_product_name="$value";;
- core) g_num_cores_temp="$value"
- g_multi_vcore=1;;
- secondary-axi) secondary_axi_temp="$value";;
- enable-cbcrInterleave) nv21_temp="$value";;
- enable_nv21) nv21_temp="$value";;
- yuv_src_mode) g_yuv_mode_temp="$value";;
- srcFormat) srcFormat_temp="$value";;
- stream-endian) stream_endian_temp="$value";;
- source-endian) source_endian_temp="$value";;
- frame-endian) frame_endian_temp="$value";;
- bsmode) bsmode_temp="$value";;
- rotAngle) rotAngle_temp="$value";;
- mirDir) mirDir_temp="$value";;
- lowLatencyMode) g_lowLatencyMode_temp="$value";;
- cframe) g_cframe_temp="$value";;
- cframelossless) g_cframelossless_temp="$value";;
- cframetx16y) g_cframetx16y_temp="$value";;
- cframetx16c) g_cframetx16c_temp="$value";;
- cframe_422) g_cframe_422_temp="$value";;
- MODE_COMP_ENCODED) MODE_COMP_ENCODED_temp="$value";;
- sfs) g_subFrameSync_temp="$value";;
- ring) g_ringBuffer_temp="$value";;
- n) g_frame_num="-n $value"
- if [ "$value" = "0" ]; then
- frame_num_refc=""
- else
- frame_num_refc="-f $value"
- fi;;
- txt-param) txt_param_switch=1;;
- *) ;;
- esac
- done < $input_param_name
- else
- if [ ! -f "$input_param_name" ]; then
- echo " $input_param_name file doesn't exist";
- fi
- fi
- streamset_path=$1
- echo "streamset_path=$1"
- streamset_file=`basename ${streamset_path}`
- if [ ! -f "${streamset_path}" ]; then
- echo "No such file: ${streamset_path}"
- exit 1
- fi
- ################################################################################
- # calculate stream number #
- ################################################################################
- stream_file_array=()
- index=0
- num_of_streams=0
- while read line || [ -n "$line" ]; do
- line=$(echo $line | tr -d '\n')
- line=$(echo $line | tr -d '\r')
- line=${line#*( )} # remove front whitespace
- line=$(echo $line | cut -d' ' -f1)
- firstchar=${line:0:1}
- case "$firstchar" in
- "@") break;; # exit flag
- "#") continue;; # comment
- ";") continue;; # comment
- "") continue;; # comment
- *)
- esac
- stream_file_array[$index]="$line"
- index=$(($index + 1))
- done < ${streamset_path}
- num_of_streams=${#stream_file_array[@]}
- #echo ${stream_file_array[@]}
- count=1
- success_count=0
- failure_count=0
- remain_count=${num_of_streams}
- basedir=${basedir//\/} # remove last delimeter
- mkdir -p temp
- mkdir -p output
- mkdir -p log/encoder_conformance
- conf_log_path="log/encoder_conformance/${streamset_file}_r${g_revision}.log"
- conf_err_log_path="log/encoder_conformance/${streamset_file}_error_r${g_revision}.log"
- temp_log_path="./temp/temp.log"
- # truncate contents of log file
- echo "" > $conf_log_path
- echo "" > $conf_err_log_path
- echo "" > $temp_log_path
- beginTime=$(date +%s%N)
- ################################################################################
- # read cfg file. #
- ################################################################################
- force_reset=0
- for line in ${stream_file_array[@]}; do
- cfg_path="${cfg_dir}/${line}"
- cfg_base_path=$(dirname $line)
- cfg_base_name=$(basename $line)
- if [ "$cfg_base_path" == "" ]; then
- cfg_base_path="."
- fi
- test_param=""
- if [ ! -f ${cfg_path} ]; then
- echo "cfg not exist, cfg_path=$cfg_path" >> $conf_err_log_path
- echo "[RESULT] FAILURE" >> $conf_err_log_path
- count=$(($count + 1))
- failure_count=$(($failure_count + 1))
- remain_count=$(($remain_count - 1))
- continue
- fi
- read_cfg $cfg_path
- #default value
- MODE_COMP_ENCODED_temp=1 #MODE_COMP_ENCODED(bit_stream)
- if [ "$haps" = "1" ]; then
- ACLK_MIN=${ACLK_MIN_HAPS}
- BCLK_MIN=${BCLK_MIN_HAPS}
- CCLK_MIN=${CCLK_MIN_HAPS}
- ACLK_MAX=${ACLK_MAX_HAPS}
- BCLK_MAX=${BCLK_MAX_HAPS}
- CCLK_MAX=${CCLK_MAX_HAPS}
- KHz_clock=1
- elif [ "board" == "vu440" ] || [ "board" == "haps" ]; then
- ACLK_MIN=${ACLK_MIN_VU440}
- BCLK_MIN=${BCLK_MIN_VU440}
- CCLK_MIN=${CCLK_MIN_VU440}
- ACLK_MAX=${ACLK_MAX_VU440}
- BCLK_MAX=${BCLK_MAX_VU440}
- CCLK_MAX=${CCLK_MAX_VU440}
- KHz_clock=1
- else
- ACLK_MIN=${ACLK_MIN_2000T}
- BCLK_MIN=${BCLK_MIN_2000T}
- CCLK_MIN=${CCLK_MIN_2000T}
- if [ "$g_codec_index" = "12" ]; then #hevc
- ACLK_MAX=${ACLK_HEVC_MAX_2000T}
- BCLK_MAX=${BCLK_HEVC_MAX_2000T}
- CCLK_MAX=${CCLK_HEVC_MAX_2000T}
- else
- ACLK_MAX=${ACLK_AVC_MAX_2000T}
- BCLK_MAX=${BCLK_AVC_MAX_2000T}
- CCLK_MAX=${CCLK_AVC_MAX_2000T}
- fi
- fi
- if [ $enable_random == 1 ] && [ $txt_param_switch == 0 ]; then
- get_random_param 0 $g_product_name
- else
- get_default_param 0 $g_product_name
- fi
- g_secondary_axi=$(($g_secondary_axi >> 1))
- ################################################################################
- # check minimum size with rotation #
- ################################################################################
- if [ "$g_product_name" = "wave521c_dual" ]; then
- g_rotAngle=0
- g_mirDir=0
- fi
- if [ "$g_rotAngle" == "90" ] || [ "$g_rotAngle" == "270" ]; then
- if [ "$cfg_height" -lt "256" ] || [ "$cfg_width" -lt "128" ]; then
- echo "width=$cfg_width, height=$cfg_height rot=$g_rotAngle"
- echo "[ERR] Not support src_width < 128 || src_height < 256 with 90, 270 degree rotation"
- echo "[ERR] change rotAngle value to 0"
- g_rotAngle=0
- fi
- fi
- ################################################################################
- # check dual_core condition
- ################################################################################
- if [ "$g_ringBuffer" == "1" ] || [ "$g_ringBuffer" == "2" ]; then
- if [ $cfg_WaveFrontSynchro != 0 ]; then
- echo "========================================================"
- echo "disable ringBuffer(WaveFrontSynchro & ringbuffer enabled. not supported)"
- echo "========================================================"
- g_ringBuffer=0
- fi
- fi
- ################################################################################
- # make argv parameter #
- ################################################################################
- #reset after hangup
- backup=$g_fpga_reset
- if [ $force_reset -eq 1 ]; then
- g_fpga_reset=1
- force_reset=0
- fi
- #make argc & argv parameter
- build_test_param 0
- g_fpga_reset=$backup
- test_param="${test_param} $g_func_ret_str"
- if [ "$g_rotAngle" == "0" ] && [ "$g_mirDir" == "0" ]; then rot_arg=0
- elif [ "$g_rotAngle" == "180" ] && [ "$g_mirDir" == "3" ]; then rot_arg=0
- elif [ "$g_rotAngle" == "90" ] && [ "$g_mirDir" == "0" ]; then rot_arg=1
- elif [ "$g_rotAngle" == "270" ] && [ "$g_mirDir" == "3" ]; then rot_arg=1
- elif [ "$g_rotAngle" == "180" ] && [ "$g_mirDir" == "0" ]; then rot_arg=2
- elif [ "$g_rotAngle" == "0" ] && [ "$g_mirDir" == "3" ]; then rot_arg=2
- elif [ "$g_rotAngle" == "270" ] && [ "$g_mirDir" == "0" ]; then rot_arg=3
- elif [ "$g_rotAngle" == "90" ] && [ "$g_mirDir" == "3" ]; then rot_arg=3
- elif [ "$g_rotAngle" == "0" ] && [ "$g_mirDir" == "2" ]; then rot_arg=6
- elif [ "$g_rotAngle" == "180" ] && [ "$g_mirDir" == "1" ]; then rot_arg=6
- elif [ "$g_rotAngle" == "90" ] && [ "$g_mirDir" == "2" ]; then rot_arg=7
- elif [ "$g_rotAngle" == "270" ] && [ "$g_mirDir" == "1" ]; then rot_arg=7
- elif [ "$g_rotAngle" == "180" ] && [ "$g_mirDir" == "2" ]; then rot_arg=4
- elif [ "$g_rotAngle" == "0" ] && [ "$g_mirDir" == "1" ]; then rot_arg=4
- elif [ "$g_rotAngle" == "270" ] && [ "$g_mirDir" == "2" ]; then rot_arg=5
- elif [ "$g_rotAngle" == "90" ] && [ "$g_mirDir" == "1" ]; then rot_arg=5
- fi
- output_filename="$(basename $line).bin"
- test_param="${test_param} --output=$output_filename --cfgFileName=$cfg_path"
- #ifdef SUPPORT_LOOK_AHEAD_RC
- if [[ "$cfg_path" == *"larc"* ]]; then
- #set cfgFileName_larc_pass1
- cfg_path_pass1=`echo ${cfg_path} | sed 's/pass2/pass1/'`
- test_param="${test_param} --cfgFileName_larc_pass1=$cfg_path_pass1"
- fi
- #endif
- test_param="${test_param} $g_frame_num"
-
- yuv_path="${yuv_dir}/${cfg_InputFile}"
- file_name=${cfg_BitstreamFile%.*}
- file_ext=${cfg_BitstreamFile##*.}
-
- ref_stream_path="${ref_dir}/${cfg_base_path}/${file_name}_${rot_arg}.${file_ext}"
- if [ "$simulation" == "true" ]; then
- test_param="${test_param} --input=${yuv_path}"
- fi
- #ifdef SUPPORT_LOOK_AHEAD_RC
- if [[ "$cfg_path" == *"larc"* ]]; then
- test_param="${test_param} --input_larc_pass1=${larc_pass1_input_param}"
- fi
- #endif
- test_param="${test_param} --ref_stream_path=${ref_stream_path}"
- ################################################################################
- # print information #
- ################################################################################
- log_conf "--------------------------------------------------------------------------------" ${temp_log_path}
- log_conf "[${count}/${num_of_streams}] ${cfg_path}" ${temp_log_path}
- log_conf "--------------------------------------------------------------------------------" ${temp_log_path}
- log_conf "yuv_path : $yuv_path" $temp_log_path
- log_conf "ref_stream_path : $ref_stream_path" $temp_log_path
- log_conf "width X Height : $cfg_width X $cfg_height" $temp_log_path
- log_conf "BitstreamFile : $cfg_BitstreamFile" $temp_log_path
- log_conf "-------------------------------------------" $temp_log_path
- log_conf "RANDOM TEST : ${ON_OFF[$enable_random]}" $temp_log_path
- log_conf "SEC AXI : ${g_secondary_axi}, 0x01:RDO, 0x02:LF" $temp_log_path
- log_conf "BITSTREAM MODE : ${ENC_WAVE_BSMODE_NAME[$g_ringBuffer]}" $temp_log_path
- log_conf "Endian : ${g_stream_endian}, ${g_frame_endian}, ${g_source_endian}" $temp_log_path
- log_conf "Standard : ${CODEC_NAME[$g_codec_index]}" $temp_log_path
- if [ "$g_cframe" == "1" ]; then
- log_conf "Input Format : CFRAME " $temp_log_path
- log_conf " lossless : $g_cframelossless " $temp_log_path
- log_conf " tx16 y : $g_cframetx16y" $temp_log_path
- log_conf " tx16 c : $g_cframetx16c" $temp_log_path
- log_conf " 422 : $g_cframe_422" $temp_log_path
- elif [ "$g_packedFormat" == "1" ]; then
- log_conf "Input Format : (${g_packedFormat})YUYV" $temp_log_path
- elif [ "$g_packedFormat" == "2" ]; then
- log_conf "Input Format : (${g_packedFormat})YVYU" $temp_log_path
- elif [ "$g_packedFormat" == "3" ]; then
- log_conf "Input Format : (${g_packedFormat})UYVY" $temp_log_path
- elif [ "$g_packedFormat" == "4" ]; then
- log_conf "Input Format : (${g_packedFormat})VYUY" $temp_log_path
- elif [ $g_cbcr_interleave -eq 1 ]; then
- if [ "$g_enable_nv21" == "0" ] || [ "$g_enable_nv21" == "1" ]; then
- log_conf "Input Format : cbcrInterleave nv21=${g_enable_nv21}" $temp_log_path
- fi
- else
- log_conf "Input Format : 420 Planar" $temp_log_path
- fi
- log_conf "srcFormat : ${SRC_FORMAT_NAME[$g_srcFormat]}" $temp_log_path
- log_conf "Rotation : ${g_rotAngle}" $temp_log_path
- if [ "$g_mirDir" == "0" ]; then
- log_conf "Mirror : (${g_mirDir})NONE" $temp_log_path
- elif [ "$g_mirDir" == "1" ]; then
- log_conf "Mirror : (${g_mirDir})Vertical" $temp_log_path
- elif [ "$g_mirDir" == "2" ]; then
- log_conf "Mirror : (${g_mirDir})Horizontal" $temp_log_path
- else
- log_conf "Mirror : (${g_mirDir})Vert-Horz" $temp_log_path
- fi
- log_conf "rot_arg : $rot_arg" $temp_log_path
- log_conf "LOW LATENCY : ${g_lowLatencyMode}, 0x01:interrupt, 0x02:fast bitstream-packing" $temp_log_path
- log_conf "--------------------------------------------------------------------------------" $temp_log_path
- ################################################################################
- # make ref-prebuilt stream #
- ################################################################################
- if [ ! -f "$ref_stream_path" ] || [ $build_stream -eq 1 ]; then
- ref_stream_base_dir=$(dirname $ref_stream_path)
- if [ ! -d "$ref_stream_base_dir" ]; then
- mkdir -p "$ref_stream_base_dir"
- chmod 755 "$ref_stream_base_dir"
- echo "CREATE REF-STREAM DIR: $ref_stream_base_dir"
- fi
- if [ "$g_num_cores" == "2" ]; then
- REF_C_EXEC_PARAM="-c $cfg_path -p ${yuv_base_path}/ -b temp.bin $extra_param $frame_num_refc --NumCores=2"
- else
- REF_C_EXEC_PARAM="-c $cfg_path -p ${yuv_base_path}/ -b temp.bin $extra_param $frame_num_refc"
- fi
- rm -rf temp.bin || echo ignore_err
- echo "$ref_c_exec $REF_C_EXEC_PARAM"
- result=0
- $ref_c_exec $REF_C_EXEC_PARAM || result=1
- if [ "$result" != "0" ]; then
- echo "ref-c error"
- remain_count=$(($remain_count - 1))
- count=$(($count + 1))
- continue
- fi
- if [ -s temp.bin ]; then
- echo "cp -v temp.bin $ref_stream_path"
- cp -v temp.bin $ref_stream_path
- fi
- if [ $build_stream -eq 1 ]; then
- remain_count=$(($remain_count - 1))
- count=$(($count + 1))
- continue
- fi
- fi
- ################################################################################
- # run Test #
- ################################################################################
- result=0
- test_param_print=$test_param
- log_conf "$test_exec $test_param_print" $temp_log_path
- cat $temp_log_path >> $conf_log_path
- test_exec_param="$test_exec $test_param"
- result=0
- if [ "$simulation" == "true" ]; then
- test_exec_param="$test_exec_param $g_w_param $g_fsdb_param $g_ius_param --TestRunner=1"
- set -o pipefail; $test_exec_param 2>&1 | tee -a $conf_log_path || result=1
- else
- $test_exec_param || result=$?
- fi
- if [ $result -eq $RET_HANGUP ]; then
- force_reset=1
- fi
- if [ "$result" == "0" ]; then
- log_conf "[RESULT] SUCCESS" $conf_log_path
- success_count=$(($success_count + 1))
- else
- cat ./ErrorLog.txt >> $conf_log_path
- log_conf "[RESULT] FAILURE" $conf_log_path
- failure_count=$(($failure_count + 1))
- cat $temp_log_path >> $conf_err_log_path
- cat ./ErrorLog.txt >> $conf_err_log_path
- echo "[RESULT] FAILURE" >> $conf_err_log_path
- if [ $result -eq 10 ]; then
- echo "Abnormal exit!!!"
- break
- fi
- fi
- remain_count=$(($remain_count - 1))
- count=$(($count + 1))
- # clear temp log
- echo ${cfg_path}
- echo "" > $temp_log_path
- done
- endTime=$(date +%s%N)
- elapsed=$((($endTime - $beginTime) / 1000000000))
- elapsedH=$(($elapsed / 3600))
- elapsedS=$(($elapsed % 60))
- elapsedM=$(((($elapsed - $elapsedS) / 60) % 60))
- if [ "$((elapsedS / 10))" == "0" ]; then elapsedS="0${elapsedS}" ;fi
- if [ "$((elapsedM / 10))" == "0" ]; then elapsedM="0${elapsedM}" ;fi
- if [ "$((elapsedH / 10))" == "0" ]; then elapsedH="0${elapsedH}" ;fi
- if [ $elapsed -le 30 ]; then
- time_hms="{color:red}*${elapsedH}:${elapsedM}:${elapsedS}*{color}"
- else
- time_hms="${elapsedH}:${elapsedM}:${elapsedS}"
- fi
- log_filename=$(basename $conf_log_path)
- log_err_filename=$(basename $conf_err_log_path)
- if [ $failure_count == 0 ] && [ $num_of_streams != 0 ]; then
- pass=${PASS}
- rm $conf_err_log_path
- log_err_filename=""
- else
- pass=${FAIL}
- fi
- wiki_log="| $streamset_file | $num_of_streams | $success_count | $failure_count | $remain_count | $log_filename | ${log_err_filename} | $pass | $time_hms | | | |"
- echo $wiki_log
- echo "$wiki_log" >> $wiki_log_file
- if [ "$num_of_streams" == "0" ]; then
- echo "num_of_streams: $num_of_streams = exit 1"
- exit 1
- fi
- exit $failure_count
-
|