Bug 16933 - Update documentation/help file.
[koha.git] / misc / load_testing / benchmark_staff.pl
index ba659c9..56085c8 100644 (file)
@@ -18,6 +18,8 @@ use Data::Dumper;
 use HTTP::Cookies;
 use C4::Context;
 use C4::Debug;
+use C4::Members qw ( GetMember );
+use URI::Escape;
 
 my ($help, $steps, $baseurl, $max_tries, $user, $password,$short_print);
 GetOptions(
@@ -40,10 +42,10 @@ my $short_psec="|-\n|ON\n";
 
 if ($help || !$baseurl || !$user || !$password) {
     print <<EOF
-This script runs a benchmark of the staff interface. It benchmark 6 different pages:
+This script runs a benchmark of the staff interface. It benchmarks 6 different pages:
 \t1- the staff main page
 \t2- the catalog detail page, with a random biblionumber
-\t3- the catalog search page, using a term retrieved from one of the 10 first title/author in the database
+\t3- the catalog search page, using a term retrieved from one of the 10 first titles/authors in the database
 \t4- the patron detail page, with a random borrowernumber
 \t5- the patron search page, searching for "Jean"
 \t6- the circulation itself, doing check-out and check-in of random items to random patrons
@@ -75,15 +77,22 @@ my $cookie_jar = HTTP::Cookies->new();
 my $cookie;
 $ua->cookie_jar($cookie_jar);
 my $resp = $ua->post( "$baseurl"."/svc/authentication" , {userid =>$user, password => $password} );
-if( $resp->is_success ) {
+if( $resp->is_success and $resp->content =~ m|<status>ok</status>| ) {
     $cookie_jar->extract_cookies( $resp );
     $cookie = $cookie_jar->as_string;
     unless ($short_print) {
         print "Authentication successful\n";
         print "Auth:\n $resp->content" if $debug;
     }
+} elsif ( $resp->is_success ) {
+    die "Authentication failure: bad login/password";
+} else {
+    die "Authentication failure: \n\t" . $resp->status_line;
 }
 
+die "You cannot use the database administrator account to launch this script"
+    unless defined C4::Members::GetMember(userid => $user);
+
 # remove some unnecessary garbage from the cookie
 $cookie =~ s/ path_spec; discard; version=0//;
 $cookie =~ s/Set-Cookie3: //;
@@ -116,8 +125,8 @@ $sth->execute;
 my ($title,$author);
 my @searchwords;
 while (($title,$author)=$sth->fetchrow) {
-    push @searchwords,split / /, $author;
-    push @searchwords,split / /, $title;
+    push @searchwords,split / /, $author//'';
+    push @searchwords,split / /, $title//'';
 }
 
 $sth = $dbh->prepare("select max(itemnumber) from items");
@@ -130,7 +139,7 @@ unless ($short_print) {
     print "--------------\n";
     print "Koha STAFF benchmarking utility\n";
     print "--------------\n";
-    print "Benchmarking with $max_tries occurences of each operation and $concurrency concurrent sessions \n";
+    print "Benchmarking with $max_tries occurrences of each operation and $concurrency concurrent sessions \n";
 }
 #
 # the global benchmark we do at the end...
@@ -241,7 +250,7 @@ if ($steps=~ /4/) {
     my $b2 = HTTPD::Bench::ApacheBench->new;
     $b2->concurrency( $concurrency );
     unless ($short_print) {
-        print "Step 5: patron detail page         ";
+        print "Step 4: patron detail page         ";
     }
     my $run2 = HTTPD::Bench::ApacheBench::Run->new
         ({ urls => \@borrowers,
@@ -324,7 +333,7 @@ if ($steps=~ /6/) {
         until ($rand_barcode) {
             my $rand_itemnumber = int(rand($itemnumber_max)+1);
             $sth->execute($rand_itemnumber);
-            ($rand_barcode) = $sth->fetchrow();
+            ($rand_barcode) = uri_escape_utf8($sth->fetchrow());
         }
         push @issues,"$baseurl/circ/circulation.pl?borrowernumber=$rand_borrowernumber&barcode=$rand_barcode&issueconfirmed=1";
         push @returns,"$baseurl/circ/returns.pl?barcode=$rand_barcode";