blob: 80809fe0fa22ca58264120292f70c4af2eb0a210 [file] [log] [blame]
#!/bin/bash
# ============LICENSE_START===============================================
# Copyright (C) 2021-2023 Nordix Foundation. All rights reserved.
# ========================================================================
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ============LICENSE_END=================================================
#
# This script format http endpoint stats generated by test scripts
print_usage() {
echo "Usage: format_endpoint_stats <log-base-dir> <app-id> <app-description> [tc-id]+ "
}
SUMMARYFILE=""
SUMMARYFILE_TMP=""
update_summary() {
input=$@
inputarr=(${input// / })
inputp=${inputarr[3]}
inputn=${inputarr[4]}
inputposarr=(${inputp//\// })
inputnegarr=(${inputn//\// })
> $SUMMARYFILE_TMP
found=0
while read -r line; do
linearr=(${line// / })
linep=${linearr[3]}
linen=${linearr[4]}
lineposarr=(${linep//\// })
linenegarr=(${linen//\// })
if [[ ${linearr[1]} == ${inputarr[1]} ]] && [[ ${linearr[2]} == ${inputarr[2]} ]]; then
let lineposarr[0]=lineposarr[0]+inputposarr[0]
let lineposarr[1]=lineposarr[1]+inputposarr[1]
let linenegarr[0]=linenegarr[0]+inputnegarr[0]
let linenegarr[1]=linenegarr[1]+inputnegarr[1]
found=1
fi
printf '%-2s %-10s %-45s %-16s %-16s' "#" "${linearr[1]}" "${linearr[2]}" "${lineposarr[0]}/${lineposarr[1]}" "${linenegarr[0]}/${linenegarr[1]}" >> $SUMMARYFILE_TMP
echo "" >> $SUMMARYFILE_TMP
done < $SUMMARYFILE
if [ $found -eq 0 ]; then
printf '%-2s %-10s %-45s %-16s %-16s' "#" "${inputarr[1]}" "${inputarr[2]}" "${inputposarr[0]}/${inputposarr[1]}" "${inputnegarr[0]}/${inputnegarr[1]}" >> $SUMMARYFILE_TMP
echo "" >> $SUMMARYFILE_TMP
fi
cp $SUMMARYFILE_TMP $SUMMARYFILE
}
if [ $# -lt 4 ]; then
print_usage
exit 1
fi
BASE_DIR=$1
if [ ! -d $BASE_DIR ]; then
print_usage
echo "<log-base-dir> $BASE_DIR does not exist or is not a dir"
exit 1
fi
SUMMARYFILE=$BASE_DIR/endpoint_summary.log
rm $SUMMARYFILE
touch $SUMMARYFILE
SUMMARYFILE_TMP=$BASE_DIR/endpoint_summary_tmp.log
TC_FAIL=0
shift
APP_ID=$1
shift
echo ""
echo "==================================================="
echo "Functional test cases for $1"
echo "Report date: $(date)"
echo "==================================================="
echo
shift
while [ $# -gt 0 ]; do
FTC_DIR=$BASE_DIR/$1
if [ ! -d $FTC_DIR ]; then
echo "Dir $FTC_DIR does not exist"
exit 1
fi
IMAGE_INFO_FILE=$FTC_DIR/imageinfo_$APP_ID".log"
if [ -f $IMAGE_INFO_FILE ]; then
echo "=== Testscript: $1 ==="
echo "Slogan: "$(cat $FTC_DIR/endpoint_tc_slogan.log)
echo "Image: "$(cat $IMAGE_INFO_FILE)
image_name=$(< $IMAGE_INFO_FILE)
image_sha=$( docker inspect --format='{{.RepoDigests}}' $image_name) 2> /dev/null
echo "Sha: $image_sha"
echo "Test start: $(cat $FTC_DIR/endpoint_tc_start.log)"
echo "Test end: $(cat $FTC_DIR/endpoint_tc_end.log)"
echo
TC_RES_FILE=$FTC_DIR/.result$1.txt
if [ -f "$TC_RES_FILE" ]; then
TC_RESULT=$(< "$TC_RES_FILE")
if [ $TC_RESULT -ne 0 ]; then
echo " !!!!! TESTCASE FAILED !!!!!"
let TC_FAIL=TC_FAIL+1
fi
fi
echo "=== Results: positive=2XX http status, negative=non 2XX http status - (ok/total)==="
echo "Method Endpoint Positive Negative"
grep --no-filename "#" $FTC_DIR/endpoint_$APP_ID* | cut -c 4-
for filename in $FTC_DIR/endpoint_$APP_ID* ; do
filedata=$(< $filename)
update_summary $filedata
done
echo "==============================="
echo
else
echo "=== No stats collected by Testscript $1 ==="
echo ""
fi
shift
done
echo "Summary of all testscripts"
if [ $TC_FAIL -ne 0 ]; then
echo " !!!!! ONE OR MORE TESTCASE(S) FAILED - CHECK INDIVIDUAL TEST RESULT!!!!!"
fi
echo "=== Results: positive=2XX http status, negative=non 2XX http status - (ok/total)==="
echo "Method Endpoint Positive Negative"
cat $SUMMARYFILE | cut -c 4-
echo "-- end of test report -- "
exit 0