parallel/testsuite/tests-to-run/parallel-local-100s.sh
2016-11-05 18:58:46 +01:00

79 lines
2.1 KiB
Bash

#!/bin/bash
# Simple jobs that never fails
# Each should be taking >100s and be possible to run in parallel
# I.e.: No race conditions, no logins
# tmpdir with > 5 GB available
TMP5G=${TMP5G:-/dev/shm}
export TMP5G
rm -f /tmp/*.{tmx,pac,arg,all,log,swp,loa,ssh,df,pip,tmb,chr,tms,par}
par_retries_unreachable() {
echo '### Test of --retries on unreachable host'
seq 2 | stdout parallel -k --retries 2 -v -S 4.3.2.1,: echo
}
par_outside_file_handle_limit() {
echo "### Test Force outside the file handle limit, 2009-02-17 Gave fork error"
(echo echo Start; seq 1 20000 | perl -pe 's/^/true /'; echo echo end) |
stdout parallel -uj 0 | egrep -v 'processes took|adjusting' |
perl -pe 's/\d\d\d/999/'
}
par_over_4GB() {
echo '### Test if we can deal with output > 4 GB'
echo |
nice parallel --tmpdir $TMP5G -q perl -e '$a="x"x1000000;for(0..4300){print $a}' |
nice md5sum
}
measure() {
# Input:
# $1 = iterations
# $2 = sleep 1 sec for every $2
seq $1 | ramusage parallel -u sleep '{= $_=$_%'$2'?0:1 =}'
}
export -f measure
no_mem_leak() {
# Return false if leaking
max1000=$(parallel measure {} 100000 ::: 1000 1000 1000 1000 1000 1000 1000 1000 |
sort -n | tail -n 1)
min30000=$(parallel measure {} 100000 ::: 30000 30000 30000 |
sort -n | head -n 1)
if [ $max1000 -gt $min30000 ] ; then
# Make sure there are a few sleeps
max1000=$(parallel measure {} 100 ::: 1000 1000 1000 1000 1000 1000 1000 1000 |
sort -n | tail -n 1)
min30000=$(parallel measure {} 100 ::: 30000 30000 30000 |
sort -n | head -n 1)
if [ $max1000 -gt $min30000 ] ; then
echo $max1000 -gt $min30000 = no leak
return 0
else
echo not $max1000 -gt $min30000 = possible leak
return 1
fi
else
echo not $max1000 -gt $min30000 = possible leak
return 1
fi
}
export -f no_mem_leak
par_mem_leak() {
echo "### test for mem leak"
if no_mem_leak >/dev/null ; then
echo no mem leak detected
else
echo possible mem leak;
fi
}
export -f $(compgen -A function | grep par_)
compgen -A function | grep par_ | sort | parallel -vj0 -k --tag --joblog /tmp/jl-`basename $0` '{} 2>&1'