Here's the pipe torture test, revised to actually check the output
from subprocesses and generate the various "ok ..." message.
Seems to work fine on Linux also, so I'm leaving off any "if ($^O eq 'VMS')"
conditionals.
To any non-VMSer's, think this would be useful in the general test suite?
--- vms_pipe_torture.t-orig Tue Apr 23 22:23:22 2002
+++ vms_pipe_torture.t Thu Apr 25 09:17:38 2002
@@ -0,0 +1,803 @@
+#! perl
+# test lots of tough i/o piping cases
+#
+# There are three main processes involved, running this same script file:
+#
+# perl vms_pipe_torture.t (no arguments) -> grandma, conducts test
+# perl vms_pipe_torture.t parent test# -> runs tests, subproc of grandma
+# perl vms_pipe_torture.t child ..params.. -> source/sinks data, subproc of parent
+#
+#
+$| = 1;
+$status = lc(shift(@ARGV));
+$grandma = $status eq '';
+$parent = $status eq 'parent';
+$child = $status eq 'child';
+
+if ($grandma) {
+ print "1..13\n";
+ $index = 0;
+ $laststream = ' ';
+ $MUST = {};
+ $COULDBE = {};
+
+#
+# read the "what it should be" data, store in per-test and per-stream
+# structures
+#
+ while (<DATA>) {
+ chomp;
+ s/\s+$//;
+ $stream = substr($_,0,1);
+ $line = substr($_,1);
+ if ($stream eq ' ') {
+ if ($line =~ /^#TEST(\d+):/) {
+ $test = $1;
+ $index = 0;
+ $MUST->{$test} = [];
+ $COULDBE->{$test} = [];
+ }
+ $MUST->{$test}->[$index++] = $line;
+ } else {
+ if ($laststream eq ' ') {
+ $MUST->{$test}->[$index] = undef;
+ $COULDBE->{$test}->[$index] = [];
+ $COULDBE->{$test}->[$index]->[1] = [];
+ $COULDBE->{$test}->[$index]->[2] = [];
+ }
+ if (!defined($COULDBE->{$test}->[$index]->[$stream])) {
+ $COULDBE->{$test}->[$index]->[$stream] = [];
+ }
+ push(@{$COULDBE->{$test}->[$index]->[$stream]},$line);
+ }
+ $laststream = $stream;
+ }
+
+#
+# do the tests
+#
+ for ($test = 1; $test <= 13; $test++) {
+ open(S,"$^X $0 parent $test 2>&1 |") || die("unable to open parent");
+ $ok = 1;
+ $j = 0;
+ $jmax = $#{$MUST->{$test}};
+ while (<S>) {
+ chomp;
+ s/\s+$//;
+ if (/^#TEST(\d+):/) {
+ $title = $';
+ }
+
+ if ($j > $jmax) {
+ print "# unexpected: $_\n";
+ $ok = 0;
+ next;
+ }
+ if (!defined($MUST->{$test}->[$j])) {
+ if (!defined($COULDBE->{$test}->[$j]->[1]->[0]) &&
+ !defined($COULDBE->{$test}->[$j]->[2]->[0])) {
+ $j++;
+ } else {
+ if ($_ eq $COULDBE->{$test}->[$j]->[1]->[0]) {
+ shift(@{$COULDBE->{$test}->[$j]->[1]});
+ } elsif ($_ eq $COULDBE->{$test}->[$j]->[2]->[0]) {
+ shift(@{$COULDBE->{$test}->[$j]->[2]});
+ } else {
+ print "# Got: '$_'\n";
+ print "# Expected1: '$COULDBE->{$test}->[$j]->[1]->[0]'\n";
+ print "# Expected2: '$COULDBE->{$test}->[$j]->[2]->[0]'\n";
+ $ok = 0;
+ }
+ }
+ next;
+ } else {
+ if ($_ ne $MUST->{$test}->[$j]) {
+ print "# Got: '$_'\n";
+ print "# Expected: '$MUST->{$test}->[$j]'\n";
+ $ok = 0;
+ }
+ $j++;
+ }
+ }
+ print ''.($ok? 'ok ' : 'not ok ').$test." \t#".$title."\n";
+ close(S);
+ }
+}
+
+if ($parent) {
+ $ENV{'PERL_MBX_SIZE'} = 6000;
+ $test = shift(@ARGV);
+####################################################
+#
+# child write tests
+#
+#
+#
+ if ($test == 1) {
+ print "#TEST1: child exits after we close ... should see 10 writes, then 10
+reads\n";
+
+ $pid = open(B,"$^X $0 child test1 write 0 10 10|") || die("unable to open
+child/test1");
+ sleep(5);
+ while (<B>) {
+ print "parent read from child: $_";
+ }
+ close(B);
+ waitpid $pid,0;
+ }
+#
+#
+ if ($test == 2) {
+ print "#TEST2: child exits before we start reading ... should see 10 writes,
+10 reads \n";
+
+ open(B,"$^X $0 child test2 write 0 10 0|") || die("unable to open
+child/test2");
+ sleep(5);
+ while (<B>) {
+ print "parent read from child: $_";
+ }
+ close(B);
+ }
+#
+#
+ if ($test == 3) {
+ print "#TEST3: child writes 10, we read 5 and close ... should see 10
+writes, 5 reads \n";
+
+ $pid = open(B,"$^X $0 child test3 write 0 10 5|") || die("unable to open
+child/test3");
+ $j = 0;
+ while (defined($_ = <B>) && $j++ < 5) {
+ print "parent read from child: $_";
+ }
+ close(B);
+ waitpid $pid,0;
+ }
+#
+#
+ if ($test == 4) {
+ print "#TEST4: child writes 10 and exits before we read 5 and close ...
+should see 10 writes 5 reads\n";
+ $pid = open(B,"$^X $0 child test4 write 0 10 0|") || die("unable to open
+child/test4");
+ sleep(5);
+ $j = 0;
+ while (defined($_ = <B>) && $j++ < 5) {
+ print "parent read from child: $_";
+ }
+ close(B);
+ waitpid $pid,0;
+ }
+#
+#
+ if ($test == 5) {
+ print "#TEST5: child writes 5, we read 10 and close ... should see 5 writes,
+5 reads, 5 EOFs read\n";
+ $pid = open(B,"$^X $0 child test5 write 0 5 0|") || die("unable to open
+child/test5");
+ sleep(5);
+ $j = 0;
+ for ($j = 1; $j <= 10; $j++) {
+ $x = <B>;
+ chomp $x;
+ $x = '<EOF>' unless defined($x);
+ print "parent read from child: $x\n";
+ }
+ close(B);
+ waitpid $pid,0;
+ }
+#
+#
+ if ($test == 6) {
+ print "#TEST6: fill mbx before close occurs ... should see ~ 10 writes, then
+read/write mixed to get all 20\n";
+ {
+ local $ENV{'PERL_MBX_SIZE'} = 128;
+
+ open(B,"$^X $0 child test6 write 0 20 0|") || die("unable to open
+child/test6");
+ sleep(5);
+ while (<B>) {
+ print "parent read from child: $_";
+ }
+ close(B);
+ }
+ }
+####################################################
+#
+# child read tests
+#
+
+ if ($test == 7) {
+ print "#TEST7: close write pipe on child while reading, should see 5
+writes, 5 reads+EOF \n";
+ $pid = open(B,"|$^X $0 child test7 read 0 10 0") || die("unable to open
+child/test7");
+ sleep(5);
+ for ($j = 0; $j < 5; $j++) {
+ print STDERR "this is parent, writing line $j/5 to child/test7\n";
+ print B "this is parent, writing line $j/5 to child/test7\n";
+ }
+ close(B);
+ waitpid $pid,0;
+ }
+#
+#
+ if ($test == 8) {
+ print "#TEST8: close write pipe before child starts reading, should see 5
+writes, 5 reads+EOF\n";
+ $pid = open(B,"|$^X $0 child test8 read 5 10 0") || die("unable to open
+child/test8");
+ for ($j = 1; $j <= 5; $j++) {
+ print STDERR "this is parent, writing line $j/5 to child/test8\n";
+ print B "this is parent, writing line $j/5 to child/test8\n";
+ }
+ close(B);
+ waitpid $pid,0;
+ }
+#
+#
+ if ($test == 9) {
+ print "#TEST9: child exits before writes begin, should see 5 writes\n";
+ open(B,"|$^X $0 child test9 read 0 0 0") || die("unable to open child/test9");
+ sleep(5);
+ for ($j = 0; $j < 5; $j++) {
+ print STDERR "this is parent, writing line $j/5 to exited child/test9\n";
+ print B "this is parent, writing line $j/5 to exited child/test9\n";
+ }
+ close(B);
+ }
+#
+#
+ if ($test == 10) {
+ print "#TEST10: child exits during writes, should see 5 writes+ 5 reads,
+mixed\n";
+ open(B,"|$^X $0 child test10 read 0 5 0") || die("unable to open
+child/test10");
+ sleep(5);
+ for ($j = 0; $j < 10; $j++) {
+ print STDERR "this is parent, writing line $j/5 to child/test10\n";
+ print B "this is parent, writing line $j/5 to child/test10\n";
+ }
+ close(B);
+ }
+
+#
+# test of EOF on filled mbx ... close on filled mbx
+# ...should see N writes (N = 5..19, one message per set)
+# follwed by N reads+EOF
+#
+ if ($test == 11) {
+ local $ENV{'PERL_MBX_SIZE'} = 256;
+ print "#TEST11: EOF on filled mbx, close on filled mbx\n";
+
+ for ($nwrites = 5; $nwrites < 20; $nwrites++) {
+ print "TEST11: should see $nwrites writes, $nwrites reads+EOF\n";
+ $pid = open(B,"|$^X $0 child test11 read 5 20 0") || die("unable to open
+child/test11");
+ print STDERR "parent filling test11 mbx with $nwrites.......\n";
+ for ($j = 1; $j <= $nwrites; $j++) {
+ print B "parent filling test11 mbx with ($j/$nwrites).......\n";
+ }
+ close(B);
+ waitpid $pid,0;
+ }
+ }
+#
+# test of EOF on filled mbx ... child exits
+# .. should see N writes (N=5..19, one msg per set)
+# followed by 1 reads
+#
+ if ($test == 12) {
+ print "#TEST12: test of EOF on filled mbx when child exits\n";
+ local $ENV{'PERL_MBX_SIZE'} = 256;
+ for ($nwrites = 5; $nwrites < 20; $nwrites++) {
+ print "TEST12-$nwrites: should see one msg from child per set of
+writes\n";
+ $pid = open(B,"|$^X $0 child test12 read 5 1 0") || die("unable to open
+child/test12");
+ print STDERR "parent filling test12 mbx with $nwrites.......\n";
+ for ($j = 1; $j <= $nwrites; $j++) {
+ print B "parent filling test12 mbx with ($j/$nwrites).......\n";
+ }
+ close(B);
+ waitpid $pid,0;
+ }
+ }
+
+#
+# test of EOFs when child just keeps reading after we close
+# ... should see 5 writes then 5 reads+EOF
+#
+ if ($test == 13) {
+ print "#TEST13: test of EOFs when child reads after close, should see 5
+writes then 5 reads+EOF\n";
+
+ $pid = open(B,"|$^X $0 child test13 readall 10 10 0") || die("unable to open
+child/test13");
+ sleep(5);
+ for ($j = 0; $j < 5; $j++) {
+ print STDERR "this is parent, writing line $j/5 to child/test13\n";
+ print B "this is parent, writing line $j/5 to child/test13\n";
+ }
+ close(B);
+ waitpid $pid,0;
+ }
+
+ if ($test < 1 || $test > 13) {
+ print "unknown test requested: '$test'\n";
+ }
+}
+
+if ($child) {
+ $name = shift(@ARGV);
+ $mode = lc(shift(@ARGV));
+ $presleep = shift(@ARGV);
+ $nops = shift(@ARGV);
+ $postsleep = shift(@ARGV);
+
+ sleep($presleep) if $presleep > 0;
+
+ for ($j = 1; $j <= $nops; $j++) {
+ if ($mode eq 'read' || $mode eq 'readall') {
+ $x = <STDIN>;
+ if (!defined($x)) {
+ print STDERR "$name read ($j/$nops): <EOF>\n";
+ last unless $mode eq 'readall';
+ next;
+ }
+ chomp $x;
+ print STDERR "$name read ($j/$nops): $x\n";
+ } elsif ($mode eq 'write') {
+ print STDERR "$name writing ($j/$nops)......................\n";
+ print "$name writing ($j/$nops)......................\n";
+ }
+ }
+
+ sleep($postsleep) if $postsleep > 0;
+}
+__DATA__
+ #TEST1: child exits after we close ... should see 10 writes, then 10 reads
+ test1 writing (1/10)......................
+ test1 writing (2/10)......................
+ test1 writing (3/10)......................
+ test1 writing (4/10)......................
+ test1 writing (5/10)......................
+ test1 writing (6/10)......................
+ test1 writing (7/10)......................
+ test1 writing (8/10)......................
+ test1 writing (9/10)......................
+ test1 writing (10/10)......................
+ parent read from child: test1 writing (1/10)......................
+ parent read from child: test1 writing (2/10)......................
+ parent read from child: test1 writing (3/10)......................
+ parent read from child: test1 writing (4/10)......................
+ parent read from child: test1 writing (5/10)......................
+ parent read from child: test1 writing (6/10)......................
+ parent read from child: test1 writing (7/10)......................
+ parent read from child: test1 writing (8/10)......................
+ parent read from child: test1 writing (9/10)......................
+ parent read from child: test1 writing (10/10)......................
+ #TEST2: child exits before we start reading ... should see 10 writes, 10 reads
+ test2 writing (1/10)......................
+ test2 writing (2/10)......................
+ test2 writing (3/10)......................
+ test2 writing (4/10)......................
+ test2 writing (5/10)......................
+ test2 writing (6/10)......................
+ test2 writing (7/10)......................
+ test2 writing (8/10)......................
+ test2 writing (9/10)......................
+ test2 writing (10/10)......................
+ parent read from child: test2 writing (1/10)......................
+ parent read from child: test2 writing (2/10)......................
+ parent read from child: test2 writing (3/10)......................
+ parent read from child: test2 writing (4/10)......................
+ parent read from child: test2 writing (5/10)......................
+ parent read from child: test2 writing (6/10)......................
+ parent read from child: test2 writing (7/10)......................
+ parent read from child: test2 writing (8/10)......................
+ parent read from child: test2 writing (9/10)......................
+ parent read from child: test2 writing (10/10)......................
+ #TEST3: child writes 10, we read 5 and close ... should see 10 writes, 5 reads
+1test3 writing (1/10)......................
+2parent read from child: test3 writing (1/10)......................
+1test3 writing (2/10)......................
+2parent read from child: test3 writing (2/10)......................
+1test3 writing (3/10)......................
+2parent read from child: test3 writing (3/10)......................
+1test3 writing (4/10)......................
+2parent read from child: test3 writing (4/10)......................
+1test3 writing (5/10)......................
+2parent read from child: test3 writing (5/10)......................
+1test3 writing (6/10)......................
+1test3 writing (7/10)......................
+1test3 writing (8/10)......................
+1test3 writing (9/10)......................
+1test3 writing (10/10)......................
+ #TEST4: child writes 10 and exits before we read 5 and close ... should see 10
+writes 5 reads
+ test4 writing (1/10)......................
+ test4 writing (2/10)......................
+ test4 writing (3/10)......................
+ test4 writing (4/10)......................
+ test4 writing (5/10)......................
+ test4 writing (6/10)......................
+ test4 writing (7/10)......................
+ test4 writing (8/10)......................
+ test4 writing (9/10)......................
+ test4 writing (10/10)......................
+ parent read from child: test4 writing (1/10)......................
+ parent read from child: test4 writing (2/10)......................
+ parent read from child: test4 writing (3/10)......................
+ parent read from child: test4 writing (4/10)......................
+ parent read from child: test4 writing (5/10)......................
+ #TEST5: child writes 5, we read 10 and close ... should see 5 writes, 5 reads, 5
+EOFs read
+ test5 writing (1/5)......................
+ test5 writing (2/5)......................
+ test5 writing (3/5)......................
+ test5 writing (4/5)......................
+ test5 writing (5/5)......................
+ parent read from child: test5 writing (1/5)......................
+ parent read from child: test5 writing (2/5)......................
+ parent read from child: test5 writing (3/5)......................
+ parent read from child: test5 writing (4/5)......................
+ parent read from child: test5 writing (5/5)......................
+ parent read from child: <EOF>
+ parent read from child: <EOF>
+ parent read from child: <EOF>
+ parent read from child: <EOF>
+ parent read from child: <EOF>
+ #TEST6: fill mbx before close occurs ... should see ~ 10 writes, then read/write
+mixed to get all 20
+1test6 writing (1/20)......................
+1test6 writing (2/20)......................
+1test6 writing (3/20)......................
+1test6 writing (4/20)......................
+1test6 writing (5/20)......................
+1test6 writing (6/20)......................
+2parent read from child: test6 writing (1/20)......................
+1test6 writing (7/20)......................
+2parent read from child: test6 writing (2/20)......................
+1test6 writing (8/20)......................
+2parent read from child: test6 writing (3/20)......................
+1test6 writing (9/20)......................
+2parent read from child: test6 writing (4/20)......................
+1test6 writing (10/20)......................
+2parent read from child: test6 writing (5/20)......................
+1test6 writing (11/20)......................
+2parent read from child: test6 writing (6/20)......................
+1test6 writing (12/20)......................
+2parent read from child: test6 writing (7/20)......................
+2parent read from child: test6 writing (8/20)......................
+1test6 writing (13/20)......................
+2parent read from child: test6 writing (9/20)......................
+1test6 writing (14/20)......................
+2parent read from child: test6 writing (10/20)......................
+1test6 writing (15/20)......................
+2parent read from child: test6 writing (11/20)......................
+1test6 writing (16/20)......................
+2parent read from child: test6 writing (12/20)......................
+1test6 writing (17/20)......................
+2parent read from child: test6 writing (13/20)......................
+2parent read from child: test6 writing (14/20)......................
+1test6 writing (18/20)......................
+2parent read from child: test6 writing (15/20)......................
+1test6 writing (19/20)......................
+2parent read from child: test6 writing (16/20)......................
+1test6 writing (20/20)......................
+2parent read from child: test6 writing (17/20)......................
+2parent read from child: test6 writing (18/20)......................
+2parent read from child: test6 writing (19/20)......................
+2parent read from child: test6 writing (20/20)......................
+ #TEST7: close write pipe on child while reading, should see 5 writes, 5 reads+EOF
+2this is parent, writing line 0/5 to child/test7
+2this is parent, writing line 1/5 to child/test7
+2this is parent, writing line 2/5 to child/test7
+2this is parent, writing line 3/5 to child/test7
+2this is parent, writing line 4/5 to child/test7
+1test7 read (1/10): this is parent, writing line 0/5 to child/test7
+1test7 read (2/10): this is parent, writing line 1/5 to child/test7
+1test7 read (3/10): this is parent, writing line 2/5 to child/test7
+1test7 read (4/10): this is parent, writing line 3/5 to child/test7
+1test7 read (5/10): this is parent, writing line 4/5 to child/test7
+1test7 read (6/10): <EOF>
+ #TEST8: close write pipe before child starts reading, should see 5 writes, 5
+reads+EOF
+ this is parent, writing line 1/5 to child/test8
+ this is parent, writing line 2/5 to child/test8
+ this is parent, writing line 3/5 to child/test8
+ this is parent, writing line 4/5 to child/test8
+ this is parent, writing line 5/5 to child/test8
+ test8 read (1/10): this is parent, writing line 1/5 to child/test8
+ test8 read (2/10): this is parent, writing line 2/5 to child/test8
+ test8 read (3/10): this is parent, writing line 3/5 to child/test8
+ test8 read (4/10): this is parent, writing line 4/5 to child/test8
+ test8 read (5/10): this is parent, writing line 5/5 to child/test8
+ test8 read (6/10): <EOF>
+ #TEST9: child exits before writes begin, should see 5 writes
+ this is parent, writing line 0/5 to exited child/test9
+ this is parent, writing line 1/5 to exited child/test9
+ this is parent, writing line 2/5 to exited child/test9
+ this is parent, writing line 3/5 to exited child/test9
+ this is parent, writing line 4/5 to exited child/test9
+ #TEST10: child exits during writes, should see 5 writes+ 5 reads, mixed
+1this is parent, writing line 0/5 to child/test10
+1this is parent, writing line 1/5 to child/test10
+1this is parent, writing line 2/5 to child/test10
+1this is parent, writing line 3/5 to child/test10
+1this is parent, writing line 4/5 to child/test10
+1this is parent, writing line 5/5 to child/test10
+1this is parent, writing line 6/5 to child/test10
+1this is parent, writing line 7/5 to child/test10
+1this is parent, writing line 8/5 to child/test10
+1this is parent, writing line 9/5 to child/test10
+2test10 read (1/5): this is parent, writing line 0/5 to child/test10
+2test10 read (2/5): this is parent, writing line 1/5 to child/test10
+2test10 read (3/5): this is parent, writing line 2/5 to child/test10
+2test10 read (4/5): this is parent, writing line 3/5 to child/test10
+2test10 read (5/5): this is parent, writing line 4/5 to child/test10
+ #TEST11: EOF on filled mbx, close on filled mbx
+ TEST11: should see 5 writes, 5 reads+EOF
+ parent filling test11 mbx with 5.......
+ test11 read (1/20): parent filling test11 mbx with (1/5).......
+ test11 read (2/20): parent filling test11 mbx with (2/5).......
+ test11 read (3/20): parent filling test11 mbx with (3/5).......
+ test11 read (4/20): parent filling test11 mbx with (4/5).......
+ test11 read (5/20): parent filling test11 mbx with (5/5).......
+ test11 read (6/20): <EOF>
+ TEST11: should see 6 writes, 6 reads+EOF
+ parent filling test11 mbx with 6.......
+ test11 read (1/20): parent filling test11 mbx with (1/6).......
+ test11 read (2/20): parent filling test11 mbx with (2/6).......
+ test11 read (3/20): parent filling test11 mbx with (3/6).......
+ test11 read (4/20): parent filling test11 mbx with (4/6).......
+ test11 read (5/20): parent filling test11 mbx with (5/6).......
+ test11 read (6/20): parent filling test11 mbx with (6/6).......
+ test11 read (7/20): <EOF>
+ TEST11: should see 7 writes, 7 reads+EOF
+ parent filling test11 mbx with 7.......
+ test11 read (1/20): parent filling test11 mbx with (1/7).......
+ test11 read (2/20): parent filling test11 mbx with (2/7).......
+ test11 read (3/20): parent filling test11 mbx with (3/7).......
+ test11 read (4/20): parent filling test11 mbx with (4/7).......
+ test11 read (5/20): parent filling test11 mbx with (5/7).......
+ test11 read (6/20): parent filling test11 mbx with (6/7).......
+ test11 read (7/20): parent filling test11 mbx with (7/7).......
+ test11 read (8/20): <EOF>
+ TEST11: should see 8 writes, 8 reads+EOF
+ parent filling test11 mbx with 8.......
+ test11 read (1/20): parent filling test11 mbx with (1/8).......
+ test11 read (2/20): parent filling test11 mbx with (2/8).......
+ test11 read (3/20): parent filling test11 mbx with (3/8).......
+ test11 read (4/20): parent filling test11 mbx with (4/8).......
+ test11 read (5/20): parent filling test11 mbx with (5/8).......
+ test11 read (6/20): parent filling test11 mbx with (6/8).......
+ test11 read (7/20): parent filling test11 mbx with (7/8).......
+ test11 read (8/20): parent filling test11 mbx with (8/8).......
+ test11 read (9/20): <EOF>
+ TEST11: should see 9 writes, 9 reads+EOF
+ parent filling test11 mbx with 9.......
+ test11 read (1/20): parent filling test11 mbx with (1/9).......
+ test11 read (2/20): parent filling test11 mbx with (2/9).......
+ test11 read (3/20): parent filling test11 mbx with (3/9).......
+ test11 read (4/20): parent filling test11 mbx with (4/9).......
+ test11 read (5/20): parent filling test11 mbx with (5/9).......
+ test11 read (6/20): parent filling test11 mbx with (6/9).......
+ test11 read (7/20): parent filling test11 mbx with (7/9).......
+ test11 read (8/20): parent filling test11 mbx with (8/9).......
+ test11 read (9/20): parent filling test11 mbx with (9/9).......
+ test11 read (10/20): <EOF>
+ TEST11: should see 10 writes, 10 reads+EOF
+ parent filling test11 mbx with 10.......
+ test11 read (1/20): parent filling test11 mbx with (1/10).......
+ test11 read (2/20): parent filling test11 mbx with (2/10).......
+ test11 read (3/20): parent filling test11 mbx with (3/10).......
+ test11 read (4/20): parent filling test11 mbx with (4/10).......
+ test11 read (5/20): parent filling test11 mbx with (5/10).......
+ test11 read (6/20): parent filling test11 mbx with (6/10).......
+ test11 read (7/20): parent filling test11 mbx with (7/10).......
+ test11 read (8/20): parent filling test11 mbx with (8/10).......
+ test11 read (9/20): parent filling test11 mbx with (9/10).......
+ test11 read (10/20): parent filling test11 mbx with (10/10).......
+ test11 read (11/20): <EOF>
+ TEST11: should see 11 writes, 11 reads+EOF
+ parent filling test11 mbx with 11.......
+ test11 read (1/20): parent filling test11 mbx with (1/11).......
+ test11 read (2/20): parent filling test11 mbx with (2/11).......
+ test11 read (3/20): parent filling test11 mbx with (3/11).......
+ test11 read (4/20): parent filling test11 mbx with (4/11).......
+ test11 read (5/20): parent filling test11 mbx with (5/11).......
+ test11 read (6/20): parent filling test11 mbx with (6/11).......
+ test11 read (7/20): parent filling test11 mbx with (7/11).......
+ test11 read (8/20): parent filling test11 mbx with (8/11).......
+ test11 read (9/20): parent filling test11 mbx with (9/11).......
+ test11 read (10/20): parent filling test11 mbx with (10/11).......
+ test11 read (11/20): parent filling test11 mbx with (11/11).......
+ test11 read (12/20): <EOF>
+ TEST11: should see 12 writes, 12 reads+EOF
+ parent filling test11 mbx with 12.......
+ test11 read (1/20): parent filling test11 mbx with (1/12).......
+ test11 read (2/20): parent filling test11 mbx with (2/12).......
+ test11 read (3/20): parent filling test11 mbx with (3/12).......
+ test11 read (4/20): parent filling test11 mbx with (4/12).......
+ test11 read (5/20): parent filling test11 mbx with (5/12).......
+ test11 read (6/20): parent filling test11 mbx with (6/12).......
+ test11 read (7/20): parent filling test11 mbx with (7/12).......
+ test11 read (8/20): parent filling test11 mbx with (8/12).......
+ test11 read (9/20): parent filling test11 mbx with (9/12).......
+ test11 read (10/20): parent filling test11 mbx with (10/12).......
+ test11 read (11/20): parent filling test11 mbx with (11/12).......
+ test11 read (12/20): parent filling test11 mbx with (12/12).......
+ test11 read (13/20): <EOF>
+ TEST11: should see 13 writes, 13 reads+EOF
+ parent filling test11 mbx with 13.......
+ test11 read (1/20): parent filling test11 mbx with (1/13).......
+ test11 read (2/20): parent filling test11 mbx with (2/13).......
+ test11 read (3/20): parent filling test11 mbx with (3/13).......
+ test11 read (4/20): parent filling test11 mbx with (4/13).......
+ test11 read (5/20): parent filling test11 mbx with (5/13).......
+ test11 read (6/20): parent filling test11 mbx with (6/13).......
+ test11 read (7/20): parent filling test11 mbx with (7/13).......
+ test11 read (8/20): parent filling test11 mbx with (8/13).......
+ test11 read (9/20): parent filling test11 mbx with (9/13).......
+ test11 read (10/20): parent filling test11 mbx with (10/13).......
+ test11 read (11/20): parent filling test11 mbx with (11/13).......
+ test11 read (12/20): parent filling test11 mbx with (12/13).......
+ test11 read (13/20): parent filling test11 mbx with (13/13).......
+ test11 read (14/20): <EOF>
+ TEST11: should see 14 writes, 14 reads+EOF
+ parent filling test11 mbx with 14.......
+ test11 read (1/20): parent filling test11 mbx with (1/14).......
+ test11 read (2/20): parent filling test11 mbx with (2/14).......
+ test11 read (3/20): parent filling test11 mbx with (3/14).......
+ test11 read (4/20): parent filling test11 mbx with (4/14).......
+ test11 read (5/20): parent filling test11 mbx with (5/14).......
+ test11 read (6/20): parent filling test11 mbx with (6/14).......
+ test11 read (7/20): parent filling test11 mbx with (7/14).......
+ test11 read (8/20): parent filling test11 mbx with (8/14).......
+ test11 read (9/20): parent filling test11 mbx with (9/14).......
+ test11 read (10/20): parent filling test11 mbx with (10/14).......
+ test11 read (11/20): parent filling test11 mbx with (11/14).......
+ test11 read (12/20): parent filling test11 mbx with (12/14).......
+ test11 read (13/20): parent filling test11 mbx with (13/14).......
+ test11 read (14/20): parent filling test11 mbx with (14/14).......
+ test11 read (15/20): <EOF>
+ TEST11: should see 15 writes, 15 reads+EOF
+ parent filling test11 mbx with 15.......
+ test11 read (1/20): parent filling test11 mbx with (1/15).......
+ test11 read (2/20): parent filling test11 mbx with (2/15).......
+ test11 read (3/20): parent filling test11 mbx with (3/15).......
+ test11 read (4/20): parent filling test11 mbx with (4/15).......
+ test11 read (5/20): parent filling test11 mbx with (5/15).......
+ test11 read (6/20): parent filling test11 mbx with (6/15).......
+ test11 read (7/20): parent filling test11 mbx with (7/15).......
+ test11 read (8/20): parent filling test11 mbx with (8/15).......
+ test11 read (9/20): parent filling test11 mbx with (9/15).......
+ test11 read (10/20): parent filling test11 mbx with (10/15).......
+ test11 read (11/20): parent filling test11 mbx with (11/15).......
+ test11 read (12/20): parent filling test11 mbx with (12/15).......
+ test11 read (13/20): parent filling test11 mbx with (13/15).......
+ test11 read (14/20): parent filling test11 mbx with (14/15).......
+ test11 read (15/20): parent filling test11 mbx with (15/15).......
+ test11 read (16/20): <EOF>
+ TEST11: should see 16 writes, 16 reads+EOF
+ parent filling test11 mbx with 16.......
+ test11 read (1/20): parent filling test11 mbx with (1/16).......
+ test11 read (2/20): parent filling test11 mbx with (2/16).......
+ test11 read (3/20): parent filling test11 mbx with (3/16).......
+ test11 read (4/20): parent filling test11 mbx with (4/16).......
+ test11 read (5/20): parent filling test11 mbx with (5/16).......
+ test11 read (6/20): parent filling test11 mbx with (6/16).......
+ test11 read (7/20): parent filling test11 mbx with (7/16).......
+ test11 read (8/20): parent filling test11 mbx with (8/16).......
+ test11 read (9/20): parent filling test11 mbx with (9/16).......
+ test11 read (10/20): parent filling test11 mbx with (10/16).......
+ test11 read (11/20): parent filling test11 mbx with (11/16).......
+ test11 read (12/20): parent filling test11 mbx with (12/16).......
+ test11 read (13/20): parent filling test11 mbx with (13/16).......
+ test11 read (14/20): parent filling test11 mbx with (14/16).......
+ test11 read (15/20): parent filling test11 mbx with (15/16).......
+ test11 read (16/20): parent filling test11 mbx with (16/16).......
+ test11 read (17/20): <EOF>
+ TEST11: should see 17 writes, 17 reads+EOF
+ parent filling test11 mbx with 17.......
+ test11 read (1/20): parent filling test11 mbx with (1/17).......
+ test11 read (2/20): parent filling test11 mbx with (2/17).......
+ test11 read (3/20): parent filling test11 mbx with (3/17).......
+ test11 read (4/20): parent filling test11 mbx with (4/17).......
+ test11 read (5/20): parent filling test11 mbx with (5/17).......
+ test11 read (6/20): parent filling test11 mbx with (6/17).......
+ test11 read (7/20): parent filling test11 mbx with (7/17).......
+ test11 read (8/20): parent filling test11 mbx with (8/17).......
+ test11 read (9/20): parent filling test11 mbx with (9/17).......
+ test11 read (10/20): parent filling test11 mbx with (10/17).......
+ test11 read (11/20): parent filling test11 mbx with (11/17).......
+ test11 read (12/20): parent filling test11 mbx with (12/17).......
+ test11 read (13/20): parent filling test11 mbx with (13/17).......
+ test11 read (14/20): parent filling test11 mbx with (14/17).......
+ test11 read (15/20): parent filling test11 mbx with (15/17).......
+ test11 read (16/20): parent filling test11 mbx with (16/17).......
+ test11 read (17/20): parent filling test11 mbx with (17/17).......
+ test11 read (18/20): <EOF>
+ TEST11: should see 18 writes, 18 reads+EOF
+ parent filling test11 mbx with 18.......
+ test11 read (1/20): parent filling test11 mbx with (1/18).......
+ test11 read (2/20): parent filling test11 mbx with (2/18).......
+ test11 read (3/20): parent filling test11 mbx with (3/18).......
+ test11 read (4/20): parent filling test11 mbx with (4/18).......
+ test11 read (5/20): parent filling test11 mbx with (5/18).......
+ test11 read (6/20): parent filling test11 mbx with (6/18).......
+ test11 read (7/20): parent filling test11 mbx with (7/18).......
+ test11 read (8/20): parent filling test11 mbx with (8/18).......
+ test11 read (9/20): parent filling test11 mbx with (9/18).......
+ test11 read (10/20): parent filling test11 mbx with (10/18).......
+ test11 read (11/20): parent filling test11 mbx with (11/18).......
+ test11 read (12/20): parent filling test11 mbx with (12/18).......
+ test11 read (13/20): parent filling test11 mbx with (13/18).......
+ test11 read (14/20): parent filling test11 mbx with (14/18).......
+ test11 read (15/20): parent filling test11 mbx with (15/18).......
+ test11 read (16/20): parent filling test11 mbx with (16/18).......
+ test11 read (17/20): parent filling test11 mbx with (17/18).......
+ test11 read (18/20): parent filling test11 mbx with (18/18).......
+ test11 read (19/20): <EOF>
+ TEST11: should see 19 writes, 19 reads+EOF
+ parent filling test11 mbx with 19.......
+ test11 read (1/20): parent filling test11 mbx with (1/19).......
+ test11 read (2/20): parent filling test11 mbx with (2/19).......
+ test11 read (3/20): parent filling test11 mbx with (3/19).......
+ test11 read (4/20): parent filling test11 mbx with (4/19).......
+ test11 read (5/20): parent filling test11 mbx with (5/19).......
+ test11 read (6/20): parent filling test11 mbx with (6/19).......
+ test11 read (7/20): parent filling test11 mbx with (7/19).......
+ test11 read (8/20): parent filling test11 mbx with (8/19).......
+ test11 read (9/20): parent filling test11 mbx with (9/19).......
+ test11 read (10/20): parent filling test11 mbx with (10/19).......
+ test11 read (11/20): parent filling test11 mbx with (11/19).......
+ test11 read (12/20): parent filling test11 mbx with (12/19).......
+ test11 read (13/20): parent filling test11 mbx with (13/19).......
+ test11 read (14/20): parent filling test11 mbx with (14/19).......
+ test11 read (15/20): parent filling test11 mbx with (15/19).......
+ test11 read (16/20): parent filling test11 mbx with (16/19).......
+ test11 read (17/20): parent filling test11 mbx with (17/19).......
+ test11 read (18/20): parent filling test11 mbx with (18/19).......
+ test11 read (19/20): parent filling test11 mbx with (19/19).......
+ test11 read (20/20): <EOF>
+ #TEST12: test of EOF on filled mbx when child exits
+ TEST12-5: should see one msg from child per set of writes
+ parent filling test12 mbx with 5.......
+ test12 read (1/1): parent filling test12 mbx with (1/5).......
+ TEST12-6: should see one msg from child per set of writes
+ parent filling test12 mbx with 6.......
+ test12 read (1/1): parent filling test12 mbx with (1/6).......
+ TEST12-7: should see one msg from child per set of writes
+ parent filling test12 mbx with 7.......
+ test12 read (1/1): parent filling test12 mbx with (1/7).......
+ TEST12-8: should see one msg from child per set of writes
+ parent filling test12 mbx with 8.......
+ test12 read (1/1): parent filling test12 mbx with (1/8).......
+ TEST12-9: should see one msg from child per set of writes
+ parent filling test12 mbx with 9.......
+ test12 read (1/1): parent filling test12 mbx with (1/9).......
+ TEST12-10: should see one msg from child per set of writes
+ parent filling test12 mbx with 10.......
+ test12 read (1/1): parent filling test12 mbx with (1/10).......
+ TEST12-11: should see one msg from child per set of writes
+ parent filling test12 mbx with 11.......
+ test12 read (1/1): parent filling test12 mbx with (1/11).......
+ TEST12-12: should see one msg from child per set of writes
+ parent filling test12 mbx with 12.......
+ test12 read (1/1): parent filling test12 mbx with (1/12).......
+ TEST12-13: should see one msg from child per set of writes
+ parent filling test12 mbx with 13.......
+ test12 read (1/1): parent filling test12 mbx with (1/13).......
+ TEST12-14: should see one msg from child per set of writes
+ parent filling test12 mbx with 14.......
+ test12 read (1/1): parent filling test12 mbx with (1/14).......
+ TEST12-15: should see one msg from child per set of writes
+ parent filling test12 mbx with 15.......
+ test12 read (1/1): parent filling test12 mbx with (1/15).......
+ TEST12-16: should see one msg from child per set of writes
+ parent filling test12 mbx with 16.......
+ test12 read (1/1): parent filling test12 mbx with (1/16).......
+ TEST12-17: should see one msg from child per set of writes
+ parent filling test12 mbx with 17.......
+ test12 read (1/1): parent filling test12 mbx with (1/17).......
+ TEST12-18: should see one msg from child per set of writes
+ parent filling test12 mbx with 18.......
+ test12 read (1/1): parent filling test12 mbx with (1/18).......
+ TEST12-19: should see one msg from child per set of writes
+ parent filling test12 mbx with 19.......
+ test12 read (1/1): parent filling test12 mbx with (1/19).......
+ #TEST13: test of EOFs when child reads after close, should see 5 writes then 5
+reads+EOF
+ this is parent, writing line 0/5 to child/test13
+ this is parent, writing line 1/5 to child/test13
+ this is parent, writing line 2/5 to child/test13
+ this is parent, writing line 3/5 to child/test13
+ this is parent, writing line 4/5 to child/test13
+ test13 read (1/10): this is parent, writing line 0/5 to child/test13
+ test13 read (2/10): this is parent, writing line 1/5 to child/test13
+ test13 read (3/10): this is parent, writing line 2/5 to child/test13
+ test13 read (4/10): this is parent, writing line 3/5 to child/test13
+ test13 read (5/10): this is parent, writing line 4/5 to child/test13
+ test13 read (6/10): <EOF>
+ test13 read (7/10): <EOF>
+ test13 read (8/10): <EOF>
+ test13 read (9/10): <EOF>
+ test13 read (10/10): <EOF>
--
Drexel University \V --Chuck Lane
======]---------->--------*------------<-------[===========
(215) 895-1545 _/ \ Particle Physics
FAX: (215) 895-5934 /\ /~~~~~~~~~~~ [EMAIL PROTECTED]