diff options
Diffstat (limited to 'gs/toolbin/apitest.pl')
-rwxr-xr-x | gs/toolbin/apitest.pl | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/gs/toolbin/apitest.pl b/gs/toolbin/apitest.pl new file mode 100755 index 000000000..ed7cbd6c9 --- /dev/null +++ b/gs/toolbin/apitest.pl @@ -0,0 +1,113 @@ +#!/usr/bin/perl + +use strict; +use warnings; +use File::Find; + +my @testdirs=("/home/marcos/cluster/tests","/home/marcos/cluster/tests_private"); +my @devices = ("pdfwrite", "ps2write", "ppmraw"); +my @testfiles = (); +sub process_file { + if (!-f $_) { + return; + } + if ($_ =~ m/\.pdf$/) { + push @testfiles, $_; + } + if ($_ =~ m/\.ps$/) { + push @testfiles, $_; + } + if ($_ =~ m/\.PS$/) { + push @testfiles, $_; + } +} + +find({ wanted=>\&process_file, no_chdir => 1}, @testdirs); + +sub system_bash($) { + my $cmd = shift; + my @args = ( "bash", "-c", $cmd); + my $rc = system(@args); + + if ($rc == -1) { + print "Failed to execute: $!\n"; + } + elsif ($rc & 127) { + if ($rc == 2) { + die "You keel me!"; + } + printf "child died with signal %d, %s coredump\n", ($? & 127), ($? & 128) ? 'with' : 'without'; + } + return $rc; +} + +foreach my $testfile (@testfiles) { + foreach my $dev (@devices) { + + printf("$testfile to $dev\n"); + `rm -f outfile.* stdout.* stderr.*`; + + my $rc = system_bash("./bin/apitest -sDEVICE=$dev -o outfile.%d. -r72 $testfile"); + if ($rc) { + printf("Failed with return code $rc\n"); + next; + } + + my $grep = "-av BOGOSITY10000"; + if ($testfile =~ m/.pdf$/) { + $grep = '-av "\(/ID\|uuid\|CreationDate\|ModDate\|CreateDate\)"'; + } + if ($testfile =~ m/.ps$/) { + $grep = "-av CreationDate"; + } + if ($testfile =~ m/.PS$/) { + $grep = "-av CreationDate"; + } + + my $fail = 0; + for (my $page=1; -e "outfile.$page.0"; $page++) { + my $diffcount=0; + for (my $thrd=1; -e "outfile.$page.$thrd"; $thrd++) { + my $cmd = "diff -q <( grep $grep outfile.$page.0 ) <( grep $grep outfile.$page.$thrd )"; + my $diff1=system_bash($cmd); + if ($diff1) { + $diffcount++; + } + } + if ($diffcount) { + printf("Page $page differs $diffcount times\n"); + $fail = 1; + } + } + if ($fail) { + next; + } + + my $diffcount=0; + for (my $thrd=1; -e "stdout.$thrd"; $thrd++) { + my $cmd = "diff -q <( grep -av Loading stdout.0) <( grep -av Loading stdout.1)"; + my $diff1=system_bash($cmd); + if ($diff1) { + $diffcount++; + } + } + if ($diffcount) { + printf("Stdout differs $diffcount times\n"); + next; + } + + $diffcount=0; + for (my $thrd=1; -e "stderr.$thrd"; $thrd++) { + my $cmd = "diff -q stderr.0 stderr.1"; + my $diff1=system_bash($cmd); + if ($diff1) { + $diffcount++; + } + } + if ($diffcount) { + printf("Stderr differs $diffcount times\n"); + next; + } + } +} + |