#!/usr/bin/perl # # This is a validation script which runs "wget" commands and check # the expecting result if OK # # These tests can also be intercatively played using a Web Browser # (see the test*/*html files) # use File::Basename; # -------------------- # 0-Configure the test: # -------------------- #$HTTPD_CONF = "`apxs -q SYSCONFDIR`/httpd.conf"; #@PG_CONFLIST = `grep ParmguardConfFile $HTTPD_CONF`; #$PG_CONF = ""; # #for ( $i = 0 ; $i < scalar(@PG_CONFLIST) ; $i++ ) { # if ($PG_CONFLIST[$i] =~ /^ParmguardConfFile/) { # ($dummy,$PG_CONF) = split(/ /,$PG_CONFLIST[$i]); # $PG_CONF =~ s/"//g; # break; # } #} # #if ($PG_CONF eq "") { # print "No Configuration File found in $HTTPD_CONF\n"; # exit(1); #} #print "The active Configuration File is: $PG_CONF\n"; # #$PG_CONF2 = dirname($PG_CONF); #$PG_CONF2 = basename($PG_CONF2,""); # $PLAYED = 0; $FAILED = 0; $SUCCESS = 0; # -------------------------------------- # 1-Requests handled by "test1/conf.xml": # -------------------------------------- #if ($PG_CONF2 eq "test1") { $PG_CONF2 = "test1"; print "Active Script is: $PG_CONF2\n"; &Check("$PG_CONF2/test.html",200); &Check("$PG_CONF2/test.html?",200); &Check("$PG_CONF2/test.html?=",200); &Check("$PG_CONF2/test.html?price=",506); &Check("$PG_CONF2/test.html?price=10",200); &Check("$PG_CONF2/test.html?price=ab",506); &Check("$PG_CONF2/test.html?price=10ab",506); &Check("$PG_CONF2/test.html?price=-100",506); &Check("$PG_CONF2/test.html?price=999999",506); &Check("$PG_CONF2/test.html?price=99%26currency=Euros",200); &Check("$PG_CONF2/test.html?price=99%26currency=Yen",506); &Check("$PG_CONF2/test.html?price=999999999%26currency=Yen",506); &Check("$PG_CONF2/test.html?dummy=any",200); &Check("$PG_CONF2/test-pass.html?dummy=any",200); #} # -------------------------------------- # 2-Requests handled by "test2/conf.xml": # -------------------------------------- #if ($PG_CONF2 eq "test2") { $PG_CONF2 = "test2"; print "Active Script is: $PG_CONF2\n"; &Check("$PG_CONF2/test.html",200); &Check("$PG_CONF2/test.html?",200); &Check("$PG_CONF2/test.html?=",500); &Check("$PG_CONF2/test.html?price=",500); &Check("$PG_CONF2/test.html?price=10",200); &Check("$PG_CONF2/test.html?price=ab",500); &Check("$PG_CONF2/test.html?price=10ab",500); &Check("$PG_CONF2/test.html?price=-100",500); &Check("$PG_CONF2/test.html?price=999999",500); &Check("$PG_CONF2/test.html?price=99%26currency=Euros",200); &Check("$PG_CONF2/test.html?price=99%26currency=Yen",500); &Check("$PG_CONF2/test.html?price=999999999%26currency=Yen",500); &Check("$PG_CONF2/test.html?dummy=any",500); &Check("$PG_CONF2/test-pass.html?dummy=any",500); #} # -------------------------------------- # 3-Requests handled by "test3/conf.xml": # -------------------------------------- #if ($PG_CONF2 eq "test3") { $PG_CONF2 = "test3"; print "Active Script is: $PG_CONF2\n"; &Check("$PG_CONF2/test.php",200); &Check("$PG_CONF2/test.php?",200); &Check("$PG_CONF2/test.php?=",200); &Check("$PG_CONF2/test.php?price=",200); &Check("$PG_CONF2/test.php?price=10",200); &Check("$PG_CONF2/test.php?price=ab",200); &Check("$PG_CONF2/test.php?price=10ab",200); &Check("$PG_CONF2/test.php?price=-100",200); &Check("$PG_CONF2/test.php?price=999999",200); &Check("$PG_CONF2/test.php?price=99%26currency=Euros",200); &Check("$PG_CONF2/test.php?price=99%26currency=Yen",200); &Check("$PG_CONF2/test.php?price=999999999%26currency=Yen",200); &Check("$PG_CONF2/test.php?dummy=any",200); &Check("$PG_CONF2/test-pass.php?dummy=any",200); #} # -------------------------------------- # 4-Requests handled by "sampleconf.xml": # -------------------------------------- #if ($PG_CONF2 eq "test4") { $PG_CONF2 = "test4"; print "Active Script is: $PG_CONF2\n"; &Check("$PG_CONF2/test.html",200); #} # ------------- # 99-Statistics: # ------------- print "============================\n"; print "Played tests : $PLAYED\n"; print "Succesfull tests: $SUCCESS\n"; print "Failed Tests : $FAILED\n"; print "============================\n"; # ------------------------------------------------- # Test function # ------------------------------------------------- sub Check { my ($url,$expected) = @_; $PLAYED++; # Change the root URL here: $ROOT = "http://localhost/parmguard/test"; print "Test $ROOT/$url: "; open(FD,"wget -S -O /dev/null $ROOT/$url 2>&1 |"); while (<FD>) { @cols = split(/ /,$_); if ($cols[1] eq "1") { close(FD); if ($cols[3] eq $expected) { print "OK: obtained=".$cols[3]."\n"; $SUCCESS++; return; } print "FAILED: expected status=$expected, obtained=".$cols[3]."\n"; $FAILED++; return; } } print "NO RESULT (INTERNAL PROBLEM !)\n"; close(FD); $FAILED++; } # EOF