]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
SCRIPT: run-regtests: avoid calling awk to compute the version
authorWilly Tarreau <w@1wt.eu>
Thu, 18 Nov 2021 14:32:16 +0000 (15:32 +0100)
committerWilly Tarreau <w@1wt.eu>
Thu, 18 Nov 2021 16:54:49 +0000 (17:54 +0100)
For each test, the version number is evaluated using a call to awk,
which can be slow to start depending on the versions and OS. This is
only needed for a printf() call to keep only leading digits of each
component, multiply them by 1000 and pad them to 3 digits, something
that's clearly doable in plain shell in a portable way. This is what
this patch does, and it saves yet another 400 ms here on the full
test sequence.

scripts/run-regtests.sh

index 1af935075e842ffaa67a8cbf0b073881607b81f7..5126efb3f29999ae31ecc8a3c003f199563bd386 100755 (executable)
@@ -301,8 +301,13 @@ _process() {
   done
 }
 
+# compute a version from up to 4 sub-version components, each multiplied
+# by a power of 1000, and padded left with 0, 1 or 2 zeroes.
 _version() {
-  echo "$@" | awk -F. '{ printf("%d%03d%03d%03d\012", $1,$2,$3,$4); }';
+  OLDIFS="$IFS"; IFS="."; set -- $*; IFS="$OLDIFS"
+  set -- ${1%%[!0-9]*} 000${2%%[!0-9]*} 000${3%%[!0-9]*} 000${4%%[!0-9]*}
+  prf2=${2%???}; prf3=${3%???}; prf4=${4%???}
+  echo ${1}${2#$prf2}${3#$prf3}${4#$prf4}
 }