summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xgs/toolbin/apitest.pl113
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;
+ }
+ }
+}
+