summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorFrederic Lecaille <flecaille@haproxy.com>2018-12-13 22:15:05 +0100
committerWilly Tarreau <w@1wt.eu>2018-12-14 06:50:45 +0100
commitd4f36e3eaa727d11b7976149da8d8a41f695f8b3 (patch)
treed2e79cbc003d5b92f52641b8ded5071822502389 /scripts
parent44d59146a6c00c73f3095eed820f5f792fca4ac1 (diff)
downloadhaproxy-d4f36e3eaa727d11b7976149da8d8a41f695f8b3.tar.gz
REGTEST: Reg testing improvements.
Add a new target to the Makefile named "reg-tests-help" to have an idea about how to run the reg tests from haproxy Makefile. Handle list of levels and lists of level range passed to make with LEVEL variable. New supported syntax: LEVEL=1,4 make reg-tests LEVEL=1-2,5-6 make reg-tests Add two new levels 5 and 6. 5 is for broken script, 6 for experimental scripts. Signed-off-by: Frédéric Lécaille <flecaille@haproxy.com>
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/run-regtests.sh91
1 files changed, 81 insertions, 10 deletions
diff --git a/scripts/run-regtests.sh b/scripts/run-regtests.sh
index 3034e3630..3ed38062a 100755
--- a/scripts/run-regtests.sh
+++ b/scripts/run-regtests.sh
@@ -40,10 +40,85 @@ if [ "$1" = "--help" ]; then
Configure environment variables to set the haproxy and varnishtest binaries to use
setenv HAPROXY_PROGRAM /usr/local/sbin/haproxy
setenv VARNISHTEST_PROGRAM /usr/local/bin/varnishtest
+ or
+ export HAPROXY_PROGRAM=/usr/local/sbin/haproxy
+ export VARNISHTEST_PROGRAM=/usr/local/bin/varnishtest
EOF
return
fi
+add_range_to_test_list()
+{
+ level0="*.vtc"
+ level1="h*.vtc"
+ level2="s*.vtc"
+ level3="l*.vtc"
+ level4="b*.vtc"
+ level5="k*.vtc"
+ level6="e*.vtc"
+
+ new_range=$(echo $1 | tr '-' ' ')
+ non_digit=$(echo $new_range | grep '[^0-9 ]')
+ if [ -n "$non_digit" ] ; then
+ return
+ fi
+ if [ "$new_range" = "$1" ] ; then
+ if [ $1 -gt 6 ] ; then
+ return
+ fi
+ eval echo '$'level$1
+ return
+ fi
+ if [ -z "$new_range" ] ; then
+ return
+ fi
+ list=
+ for l in $(seq $new_range) ; do
+ if [ -n "l" ] ; then
+ if [ -z "$list" ] ; then
+ list="$(eval echo '$'level${l})"
+ else
+ list="$list $(eval echo '$'level${l})"
+ fi
+ fi
+ done
+
+ echo $list
+}
+
+
+build_test_list()
+{
+ # Remove any spacing character
+ LEVEL="$(echo $LEVEL | tr -d ' ')"
+ # Replave any comma character by a space character
+ LEVEL="$(echo $LEVEL | tr ',' ' ')"
+ list=
+ for range in $LEVEL ; do
+ if [ -z "$list" ] ; then
+ list=$(add_range_to_test_list $range)
+ else
+ list="$list $(add_range_to_test_list $range)"
+ fi
+ done
+
+ echo $list
+}
+
+build_find_expr()
+{
+ expr=
+ for i in $@; do
+ if [ -z "$expr" ] ; then
+ expr="-name \"$i\""
+ else
+ expr="$expr -o -name \"$i\""
+ fi
+ done
+
+ echo $expr
+}
+
_startswith() {
_str="$1"
_sub="$2"
@@ -53,18 +128,14 @@ _startswith() {
_findtests() {
set -f
LEVEL=${LEVEL:-0};
- EXPR='*.vtc'
- if [ $LEVEL = 1 ] ; then
- EXPR='h*.vtc';
- elif [ $LEVEL = 2 ] ; then
- EXPR='s*.vtc';
- elif [ $LEVEL = 3 ] ; then
- EXPR='l*.vtc';
- elif [ $LEVEL = 4 ] ; then
- EXPR='b*.vtc';
+ list=$(build_test_list "$LEVEL")
+ if [ -z "$list" ] ; then
+ echo "Invalid level specification '"$LEVEL"' or no file was found."
+ exit 1
fi
+ EXPR=$(build_find_expr $list)
- for i in $( find "$1" -name "$EXPR" ); do
+ for i in $( find "$1" $(eval echo $EXPR) ); do
skiptest=
require_version="$(sed -ne 's/^#REQUIRE_VERSION=//p' "$i")"
require_version_below="$(sed -ne 's/^#REQUIRE_VERSION_BELOW=//p' "$i")"