blob: e0c6bb35ac38c46b4bcf0ce6cf585fba7cd05378 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
--- testsuite 2015-02-11 17:19:21.654646439 -0800
+++ testsuite 2015-02-11 17:15:03.810653032 -0800
@@ -4669,6 +4669,73 @@
fi
exec 6<&-
wait
+elif test $at_jobs -ne 1 &&
+ test "$IS_WIN32" = "yes"; then
+ # FIFO job dispatcher.
+ trap 'at_pids=
+ for at_pid in `jobs -p`; do
+ at_pids="$at_pids $at_job_group$at_pid"
+ done
+ if test -n "$at_pids"; then
+ at_sig=TSTP
+ test "${TMOUT+set}" = set && at_sig=STOP
+ kill -$at_sig $at_pids 2>/dev/null
+ fi
+ kill -STOP $$
+ test -z "$at_pids" || kill -CONT $at_pids 2>/dev/null' TSTP
+
+ echo
+ # Turn jobs into a list of numbers, starting from 1.
+ running_jobs="`pwd`/tests/jobdispatcher"
+ mkdir -p $running_jobs
+ at_joblist=`$as_echo "$at_groups" | sed -n 1,${at_jobs}p`
+
+ set X $at_joblist
+ shift
+ for at_group in $at_groups; do
+ $at_job_control_on 2>/dev/null
+ (
+ # Start one test group.
+ $at_job_control_off
+ touch $running_jobs/$at_group
+ trap 'set +x; set +e
+ trap "" PIPE
+ echo stop > "$at_stop_file"
+ rm -f $running_jobs/$at_group
+ as_fn_exit 141' PIPE
+ at_fn_group_prepare
+ if cd "$at_group_dir" &&
+ at_fn_test $at_group &&
+ . "$at_test_source"
+ then :; else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unable to parse test group: $at_group" >&5
+$as_echo "$as_me: WARNING: unable to parse test group: $at_group" >&2;}
+ at_failed=:
+ fi
+ rm -f $running_jobs/$at_group
+ at_fn_group_postprocess
+ ) &
+ $at_job_control_off
+ shift # Consume one token.
+ if test $# -gt 0; then :; else
+ while [ "`ls -l $running_jobs 2>/dev/null | wc -l`" -gt "$at_jobs" ]; do
+ sleep 0.1
+ done
+ set x $*
+ fi
+ test -f "$at_stop_file" && break
+ done
+ # Read back the remaining ($at_jobs - 1) tokens.
+ set X $at_joblist
+ shift
+ if test $# -gt 0; then
+ shift
+ while [ "`ls -l $running_jobs | wc -l`" -gt 1 ]; do
+ sleep 0.1
+ done
+ fi
+ rmdir $running_jobs
+ wait
else
# Run serially, avoid forks and other potential surprises.
for at_group in $at_groups; do
|