|
@@ -0,0 +1,53 @@
|
|
|
+#!/bin/Shell
|
|
|
+
|
|
|
+setopt --verbose
|
|
|
+
|
|
|
+fail(msg) {
|
|
|
+ echo FAIL: $msg
|
|
|
+ exit 1
|
|
|
+}
|
|
|
+
|
|
|
+last_idx=''
|
|
|
+block_idx=0
|
|
|
+block() {
|
|
|
+ block_idx=$(expr 1 + $block_idx)
|
|
|
+ last_idx=$block_idx
|
|
|
+ mkfifo fifo$block_idx
|
|
|
+ cat fifo$block_idx&
|
|
|
+}
|
|
|
+
|
|
|
+unblock(idx) {
|
|
|
+ echo unblock $idx > fifo$idx
|
|
|
+ rm -f fifo$idx
|
|
|
+}
|
|
|
+
|
|
|
+assert_job_count(count) {
|
|
|
+ ecount=$(jobs | wc -l)
|
|
|
+ shift
|
|
|
+ if test $ecount -ne $count {
|
|
|
+ for $* {
|
|
|
+ unblock $it
|
|
|
+ }
|
|
|
+ fail "expected $ecount == $count"
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+block
|
|
|
+i=$last_idx
|
|
|
+
|
|
|
+assert_job_count 1 $i
|
|
|
+
|
|
|
+unblock $i
|
|
|
+wait
|
|
|
+
|
|
|
+block
|
|
|
+i=$last_idx
|
|
|
+block
|
|
|
+j=$last_idx
|
|
|
+
|
|
|
+assert_job_count 2 $i $j
|
|
|
+
|
|
|
+unblock $i
|
|
|
+unblock $j
|
|
|
+wait
|
|
|
+
|