[Koha-patches] [PATCH] added reindexing routine to KohaTest

Galen Charlton galen.charlton at liblime.com
Wed Apr 30 22:45:42 CEST 2008


KohaTest->reindex_marc() does a full Zebra reindexing of
bib and authority records and clears zebraqueue.  It is
meant for use in test classes that do a lot of bib, authority,
and/or item record changes that would be slowed down by
waiting for zebraqueue_daemon.

Also adjusted list of tables that are automatically truncated.
---
 t/lib/KohaTest.pm |   48 +++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 45 insertions(+), 3 deletions(-)

diff --git a/t/lib/KohaTest.pm b/t/lib/KohaTest.pm
index 0a21b21..cb89d6b 100644
--- a/t/lib/KohaTest.pm
+++ b/t/lib/KohaTest.pm
@@ -15,6 +15,7 @@ use C4::Context;
 use C4::Items;
 use C4::Members;
 use C4::Search;
+use File::Temp qw/ tempdir /;
 
 # Since this is an abstract base class, this prevents these tests from
 # being run directly unless we're testing a subclass. It just makes
@@ -154,11 +155,8 @@ sub startup_15_truncate_tables : Test( startup => 1 ) {
                               deletedborrowers            
                               deleteditems                
                               ethnicity                   
-                              import_items                
-                              import_record_matches       
                               issues                      
                               issuingrules                
-                              items                       
                               labels                      
                               labels_profile              
                               matchchecks                 
@@ -393,4 +391,48 @@ sub add_biblios {
     
 }
 
+=head3 reindex_bibs
+
+Do a fast reindexing of all of the bib and authority
+records and mark all zebraqueue entries done.
+
+Useful for test routines that need to do a
+lot of indexing without having to wait for
+zebraqueue.
+
+In NoZebra model, this only marks zebraqueue
+done - the records should already be indexed.
+
+=cut
+
+sub reindex_marc {
+    my $self = shift;
+
+    # mark zebraqueue done regardless of the indexing mode
+    my $dbh = C4::Context->dbh();
+    $dbh->do("UPDATE zebraqueue SET done = 1 WHERE done = 0");
+
+    return if C4::Context->preference('NoZebra');
+
+    my $directory = tempdir(CLEANUP => 1);
+    foreach my $record_type qw(biblio authority) {
+        mkdir "$directory/$record_type";
+        my $sth = $dbh->prepare($record_type eq "biblio" ? "SELECT marc FROM biblioitems" : "SELECT marc FROM auth_header");
+        $sth->execute();
+        open OUT, ">:utf8", "$directory/$record_type/records";
+        while (my ($blob) = $sth->fetchrow_array) {
+            print OUT $blob;
+        }
+        close OUT;
+        my $zebra_server = "${record_type}server";
+        my $zebra_config  = C4::Context->zebraconfig($zebra_server)->{'config'};
+        my $zebra_db_dir  = C4::Context->zebraconfig($zebra_server)->{'directory'};
+        my $zebra_db = $record_type eq 'biblio' ? 'biblios' : 'authorities';
+        system "zebraidx -c $zebra_config -d $zebra_db -g iso2709 init > /dev/null 2>\&1";
+        system "zebraidx -c $zebra_config -d $zebra_db -g iso2709 update $directory/${record_type} > /dev/null 2>\&1";
+        system "zebraidx -c $zebra_config -d $zebra_db -g iso2709 commit > /dev/null 2>\&1";
+    }
+        
+}
+
 1;
-- 
1.5.5.rc0.16.g02b00




More information about the Koha-patches mailing list