The script used to regenerate all payload records after massive changes to libnftnl debug output formatting. Signed-off-by: Phil Sutter <phil@xxxxxx> --- tests/py/tools/regen_payloads.sh | 72 ++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100755 tests/py/tools/regen_payloads.sh diff --git a/tests/py/tools/regen_payloads.sh b/tests/py/tools/regen_payloads.sh new file mode 100755 index 0000000000000..ed937584d780b --- /dev/null +++ b/tests/py/tools/regen_payloads.sh @@ -0,0 +1,72 @@ +#!/bin/bash + +# update payload records in an automated fashion, trying to reduce diff sizes + + +# scan payloadfile and print record for cmd (if found) +find_payload() { # (payloadfile, cmd) + local found=false + + readarray -t pl <"$1" + for l in "${pl[@]}"; do + if [[ "$l" == "# "* ]]; then + $found && return + [[ "$l" == "$2" ]] && found=true + fi + $found && echo "$l" + done + $found || echo "Warning: Command '$2' not found in '$1'" >&2 +} + +cd $(dirname $0)/../ + +# make sure no stray output files get in the way +rm -f */*.got */*.gotgot + +# store payload records for later +# clear payload files to force regenerating (but leave them in place) +for pl in */*.payload*; do + [[ $pl == *.bak ]] && continue # ignore leftover .bak files + cp "$pl" "${pl}.bak" + echo >"$pl" +done + +# run the testsuite to create .got files +# pass -f to keep going despite missing payloads +./nft-test.py -f + +# restore old payload records +for plbak in */*.bak; do + cp "$plbak" "${plbak%.bak}" +done + +# sort created got files to match order in old payload records +for g in ${@:-*/*.got}; do + pl=${g%.got} + + [[ -f $g ]] || continue + [[ -f $pl ]] || continue + + readarray -t ploads <"$g" + readarray -t cmds <<< $(grep '^# ' $pl) + for cmd in "${cmds[@]}"; do + found=false + for l in "${ploads[@]}"; do + if [[ "$l" == "# "* ]]; then + $found && break + [[ "$l" == "$cmd" ]] && found=true + fi + $found && echo "$l" + done + $found || echo "Warning: Command '$cmd' not found in '$g'" >&2 + done >${g}got + + cp "${g}" "${g}.unsorted" + cp "${g}got" "${g}.sorted" + mv "${g}got" "${g}" +done + +# overwrite old payload records with new ones +for got in */*.got; do + mv "${got}" "${got%.got}" +done -- 2.33.0