/
githubmirror
/
libgcrypt
Обзор
Документация
Войти
/
githubmirror
/
libgcrypt
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
tests/basic_all_hwfeature_combinations.sh
111 строк
3 KB
Jussi Kivilinna
basic_all_hwfeature_combinations.sh: use $njobs to limit parallel tasks
10 апр 2018, 22:14
10 апр 2018, 22:14
5e01705
Код
Авторство
О чём код?
#!/bin/bash # Run basic tests with all HW feature combinations # Copyright 2017 Jussi Kivilinna <jussi.kivilinna@iki.fi> # # This file is free software; as a special exception the author gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # # This file is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # # Use BINEXT to set executable extension # For example for Windows executables: BINEXT=.exe if [ "x$BINEXT" != "x" ] && [ -e "tests/version$BINEXT" ]; then binext="$BINEXT" else binext="" fi # Use BINPRE to set executable prefix # For example to run Windows executable with WINE: BINPRE="wine " if [ "x$BINPRE" != "x" ]; then binpre="$BINPRE" else binpre="" fi # Use NJOBS to define number of parallel tasks if [ "x$NJOBS" != "x" ]; then njobs="$NJOBS" else # default to cpu count ncpus=$(nproc --all) if [ "x@cpus" != "x" ]; then njobs=$ncpus else # could not get cpu count, use 4 parallel tasks instead njobs=4 fi fi get_supported_hwfeatures() { $binpre "tests/version$binext" 2>&1 | \ grep "hwflist" | \ sed -e 's/hwflist://' -e 's/:/ /g' -e 's/\x0d/\x0a/g' } hwfs=($(get_supported_hwfeatures)) retcodes=() optslist=() echo "Total HW-feature combinations: $((1<<${#hwfs[@]}))" for ((cbits=0; cbits < (1<<${#hwfs[@]}); cbits++)); do for ((mask=0; mask < ${#hwfs[@]}; mask++)); do match=$(((1<<mask) & cbits)) if [ "x$match" != "x0" ]; then echo -n "--disable-hwf ${hwfs[$mask]} " fi done echo "" done | sort | ( # Run all combinations nbasic=0 nwait=0 failed=0 output="" while read opts; do currn=$nbasic curr_jobs=($(jobs -p)) while [ "${#curr_jobs[@]}" -ge "$njobs" ]; do # Wait for one job to complete wait ${retcodes[$nwait]} retval=$? if [ "x$retval" != "x0" ]; then output="$output\nERROR: HWF disable failed: [${optslist[$nwait]}]" failed=1 else output="$output\nSUCCESS: HWF disable OK: [${optslist[$nwait]}]" fi nwait=$((nwait+1)) curr_jobs=($(jobs -p)) if [ $failed != 0 ]; then break fi done if [ $failed != 0 ]; then break fi nbasic=$((nbasic+1)) echo "[$nbasic/$((1<<${#hwfs[@]}))] Basic test with '$opts'" optslist[$currn]="$opts" nice nice $binpre "tests/basic$binext" $opts & retcodes[$currn]=$! done # Fetch remaining return codes for ((; nwait < nbasic; nwait++)); do # Wait for one job to complete wait ${retcodes[$nwait]} retval=$? if [ "x$retval" != "x0" ]; then output="$output\nERROR: HWF disable failed: [${optslist[$nwait]}]" failed=1 else output="$output\nSUCCESS: HWF disable OK: [${optslist[$nwait]}]" fi done echo -e "$output" exit $failed )