Koha OAI server has been done in one unique .pl file because there wasn't any object model or rules in the Koha project when it has been coded. Its classes must be modularized : putting each class in a separate file in a Koha::OAI namespace.
Created attachment 43045 [details] [review] Bug 14939 Modularize OAI Server existing classes Koha OAI server has been done in one unique .pl file because there wasn't any object model or rules in the Koha project when it has been coded. This patch modularized existing classes, putting each class in a separate file in Koha::OAI namespace.
Created attachment 43072 [details] [review] Bug 14939 Modularize OAI Server existing classes Koha OAI server has been done in one unique .pl file because there wasn't any object model or rules in the Koha project when it has been coded. This patch modularized existing classes, putting each class in a separate file in Koha::OAI namespace.
Failing QA because of insufficient testing.
(In reply to Olli-Antti Kivilahti from comment #3) > Failing QA because of insufficient testing. I disagree. It's modularizing not refactoring. The existing classes are split from oai.pl into individual .pm files, one per class. It doesn't change a line of code. So coding a full UT for OAI server would be awesome, I can't disagree, but it isn't a requirement for this patch.
Created attachment 44355 [details] [review] Bug 14939 Modularize OAI Server existing classes Koha OAI server has been done in one unique .pl file because there wasn't any object model or rules in the Koha project when it has been coded. This patch modularized existing classes, putting each class in a separate file in Koha::OAI::Server namespace. UT begining.
Redefining naming in order not to overlap with bug 10662.
Created attachment 44371 [details] [review] Bug 14939 Modularize OAI Server existing classes Koha OAI server has been done in one unique .pl file because there wasn't any object model or rules in the Koha project when it has been coded. This patch modularized existing classes, putting each class in a separate file in Koha::OAI::Server namespace. UT begining.
Created attachment 44438 [details] [review] Bug 14939 Modularize OAI Server existing classes Koha OAI server has been done in one unique .pl file because there wasn't any object model or rules in the Koha project when it has been coded. This patch modularized existing classes, putting each class in a separate file in Koha::OAI::Server namespace. UT begining.
Hi Frederick Test Unit fail because module missing Capture::Tiny I think you need to include in C4::Installer::PerlDependencies and debian/control (libcapture-tiny-perl) Regards
> Test Unit fail because module missing Capture::Tiny Thanks Hector. I add it!
Created attachment 44866 [details] [review] Bug 14939 Modularize OAI Server existing classes Koha OAI server has been done in one unique .pl file because there wasn't any object model or rules in the Koha project when it has been coded. This patch modularized existing classes, putting each class in a separate file in Koha::OAI::Server namespace. UT begining. Add new dependency: Capture::Tiny
Sorry Frédéric But I got: # Failed test 'ListMetadataFormats' # at t/db_dependent/OAI/Server.t line 84. # got: '<?xml version="1.0" encoding="UTF-8"?> # # <OAI-PMH xmlns='http://www.openarchives.org/OAI/2.0/' xsi:schemaLocation='http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'><responseDate>2015-11-15T00:11:11Z</responseDate><request>http://localhost</request><ListMetadataFormats><metadataFormat><metadataPrefix>oai_dc</metadataPrefix><schema>http://www.openarchives.org/OAI/2.0/oai_dc.xsd</schema><metadataNamespace>http://www.openarchives.org/OAI/2.0/oai_dc/</metadataNamespace></metadataFormat><metadataFormat><metadataPrefix>marcxml</metadataPrefix><schema>http://www.loc.gov/MARC21/slim http://www.loc.gov/ standards/marcxml/schema/MARC21slim.xsd</schema><metadataNamespace>http://www.loc.gov/MARC21/slim http://www.loc.gov/ standards/marcxml/schema/MARC21slim</metadataNamespace></metadataFormat></ListMetadataFormats></OAI-PMH>' # expected: '<?xml version="1.0" encoding="UTF-8"?> # # <OAI-PMH xmlns='http://www.openarchives.org/OAI/2.0/' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd'><responseDate>2015-11-15T00:11:11Z</responseDate><request>http://localhost</request><ListMetadataFormats><metadataFormat><metadataPrefix>oai_dc</metadataPrefix><schema>http://www.openarchives.org/OAI/2.0/oai_dc.xsd</schema><metadataNamespace>http://www.openarchives.org/OAI/2.0/oai_dc/</metadataNamespace></metadataFormat><metadataFormat><metadataPrefix>marcxml</metadataPrefix><schema>http://www.loc.gov/MARC21/slim http://www.loc.gov/ standards/marcxml/schema/MARC21slim.xsd</schema><metadataNamespace>http://www.loc.gov/MARC21/slim http://www.loc.gov/ standards/marcxml/schema/MARC21slim</metadataNamespace></metadataFormat></ListMetadataFormats></OAI-PMH>' # Failed test 'ListIdentifiers without metadaPrefix argument' # at t/db_dependent/OAI/Server.t line 96. # got: '<?xml version="1.0" encoding="UTF-8"?> # # <OAI-PMH xsi:schemaLocation='http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd' xmlns='http://www.openarchives.org/OAI/2.0/' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'><responseDate>2015-11-15T00:11:11Z</responseDate><request>http://localhost</request><error code='badArgument'>Required argument 'metadataPrefix' was undefined</error></OAI-PMH>' # expected: '<?xml version="1.0" encoding="UTF-8"?> # # <OAI-PMH xmlns='http://www.openarchives.org/OAI/2.0/' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd'><responseDate>2015-11-15T00:11:11Z</responseDate><request>http://localhost</request><error code='badArgument'>Required argument 'metadataPrefix' was undefined</error></OAI-PMH>' # Looks like you failed 2 tests of 13. Also i noticed that this happen when you got OAI-PMH:AutoUpdateSets to "Disable", if you enable all works succefully. I play with cgi-bin/koha/oai.pl?verb=GetRecord&identifier=KOHA-OAI-TEST:1&metadataPrefix=marcxml And is working succefully
Another thing that i could see is: in debian/control when a library is placed, goes in two places and you put it in one. I don't know much about that, tell me if I'm wrong
Thanks Hector for testing. Two responses: (1) UT don't work for you because you may use a MARC21 DB. I've tested with Unimarc. I have to change the UT to be marcflavour agnostic. (2) Debian packaging: I will remove my debian/control modification, and let the packaging manager (Robin Sheat) add the correct info.
Failing tests seem to be due to HTTP::OAI version variation. Which version do you use? You can get it with: perl -MHTTP::OAI -e 'print $HTTP::OAI::VERSION, "\n"'
I have 3.27 I don't know why fail me in my laptop with Debian Jessie. In my work does not fail with Dian wheezy, both Distros have the same version (<https://packages.debian.org/jessie/libhttp-oai-perl>) Maybe I did something wrong. Well I will sign-off.
Created attachment 44875 [details] [review] [SIGNED-OFF]Bug 14939 Modularize OAI Server existing classes Koha OAI server has been done in one unique .pl file because there wasn't any object model or rules in the Koha project when it has been coded. This patch modularized existing classes, putting each class in a separate file in Koha::OAI::Server namespace. UT begining. Add new dependency: Capture::Tiny Signed-off-by: Hector Castro <hector.hecaxmmx@gmail.com> OAI server moduralized succefully
Created attachment 44904 [details] [review] Bug 14939 Modularize OAI Server existing classes Koha OAI server has been done in one unique .pl file because there wasn't any object model or rules in the Koha project when it has been coded. This patch modularized existing classes, putting each class in a separate file in Koha::OAI::Server namespace. UT begining. Add new dependency: Capture::Tiny Signed-off-by: Hector Castro <hector.hecaxmmx@gmail.com> OAI server moduralized succefully
(In reply to Héctor Eduardo Castro Avalos from comment #16) > I don't know why fail me in my laptop with Debian Jessie. In my work does > not fail with Dian wheezy, both Distros have the same version > (<https://packages.debian.org/jessie/libhttp-oai-perl>) I've reproduced your UT error on a Jessie box. I've fixed it, and reattached your signed path, with the corrected UT. Please confirm it also works for you on Jessie.
Created attachment 44913 [details] [review] Bug 14939 Modularize OAI Server existing classes Koha OAI server has been done in one unique .pl file because there wasn't any object model or rules in the Koha project when it has been coded. This patch modularized existing classes, putting each class in a separate file in Koha::OAI::Server namespace. UT begining. Add new dependency: Capture::Tiny Signed-off-by: Hector Castro <hector.hecaxmmx@gmail.com> OAI server moduralized succefully
Created attachment 44914 [details] [review] Bug 14939 Modularize OAI Server existing classes Koha OAI server has been done in one unique .pl file because there wasn't any object model or rules in the Koha project when it has been coded. This patch modularized existing classes, putting each class in a separate file in Koha::OAI::Server namespace. UT begining. Add new dependency: Capture::Tiny Signed-off-by: Hector Castro <hector.hecaxmmx@gmail.com> OAI server moduralized succefully
Created attachment 44915 [details] [review] [SIGNED-OFF]Bug 14939: Modularize OAI Server existing classes Koha OAI server has been done in one unique .pl file because there wasn't any object model or rules in the Koha project when it has been coded. This patch modularized existing classes, putting each class in a separate file in Koha::OAI::Server namespace. UT begining. Add new dependency: Capture::Tiny Signed-off-by: Hector Castro <hector.hecaxmmx@gmail.com> OAI server moduralized succefully Works for Debian Jessie
Comment on attachment 44915 [details] [review] [SIGNED-OFF]Bug 14939: Modularize OAI Server existing classes Review of attachment 44915 [details] [review]: ----------------------------------------------------------------- ::: C4/Installer/PerlDependencies.pm @@ +777,4 @@ > 'required' => '0', > 'min_ver' => '0.28', > }, > + 'Capture::Tiny' => { Is this really mandatory? The module has some known bugs (https://github.com/dagolden/Capture-Tiny/issues). One is "Capture::Tiny breaks under FCGI" and is not comforting. ::: opac/oai.pl @@ +1,3 @@ > #!/usr/bin/perl > > +# Copyright Tamil s.a.r.l. 2008-2015 Why did you remove BibLibre's copyright?
FAIL Koha/OAI/Server/Identify.pm FAIL critic Package declaration must match filename at line 18, column 1. Correct the filename or package statement. FAIL Koha/OAI/Server/Repository.pm FAIL critic Code before strictures are enabled at line 20, column 11. See page 429 of PBP. FAIL spelling tranformed ==> transformed choosed ==> chose, chosen FAIL valid Can't locate package HTTP::OAI::Encapsulation for @HTTP::OAI::Error::ISA FAIL opac/oai.pl FAIL valid Can't locate package HTTP::OAI::Encapsulation for @HTTP::OAI::Error::ISA Should I install libhttp-oai-perl?
After installing libhttp-oai-perl: FAIL opac/oai.pl FAIL valid Can't locate package HTTP::OAI::SAX::Base for @HTTP::OAI::Error::ISA Can't locate package HTTP::OAI::MemberMixin for @HTTP::OAI::Error::ISA
(In reply to Jonathan Druart from comment #23) > Comment on attachment 44915 [details] [review] [review] > [SIGNED-OFF]Bug 14939: Modularize OAI Server existing classes > > Review of attachment 44915 [details] [review] [review]: > ----------------------------------------------------------------- > > ::: C4/Installer/PerlDependencies.pm > @@ +777,4 @@ > > 'required' => '0', > > 'min_ver' => '0.28', > > }, > > + 'Capture::Tiny' => { > > Is this really mandatory? Is is used in tests to capture STDOUT. Do you have something to suggest to do the same thing without this module? > ::: opac/oai.pl > @@ +1,3 @@ > > #!/usr/bin/perl > > > > +# Copyright Tamil s.a.r.l. 2008-2015 > > Why did you remove BibLibre's copyright? Not intentional, even if Tamil copyright on this code deserves to come back. I wrote OAI server back in time, and Tamil copyright disappeared without being noticed by sharp eyes as yours.
Created attachment 45320 [details] [review] Bug 14939 Modularize OAI Server existing classes Koha OAI server has been done in one unique .pl file because there wasn't any object model or rules in the Koha project when it has been coded. This patch modularized existing classes, putting each class in a separate file in Koha::OAI::Server namespace. UT begining. Add new dependency: Capture::Tiny
Jonathan, I've rebased the patch on master, and fixed perlcritic test errors, and copyright stuff. I'm open to any proposal to replace Tiny::Capture.
The tests does not pass: t/db_dependent/OAI/Server.t .. 1/13 Can't call method "start_element" on an undefined value at /usr/share/perl5/HTTP/OAI/Verb.pm line 53. (In reply to Frédéric Demians from comment #26) > > > +# Copyright Tamil s.a.r.l. 2008-2015 > > > > Why did you remove BibLibre's copyright? > > Not intentional, even if Tamil copyright on this code deserves to come back. > I > wrote OAI server back in time, and Tamil copyright disappeared without being > noticed by sharp eyes as yours. The idea wasn't to remove the Tamil copyright line, but reintroduce BibLibre one's :)
> The tests does not pass: > t/db_dependent/OAI/Server.t .. 1/13 Can't call method "start_element" on an > undefined value at /usr/share/perl5/HTTP/OAI/Verb.pm line 53. I don't get this? What is you test environment?
(In reply to Jonathan Druart from comment #29) > The tests does not pass: > t/db_dependent/OAI/Server.t .. 1/13 Can't call method "start_element" on an > undefined value at /usr/share/perl5/HTTP/OAI/Verb.pm line 53. In Debian this doesn't fail prove -v t/db_dependent/OAI/Server.t t/db_dependent/OAI/Server.t .. 1..13 ok 1 - use Koha::OAI::Server::DeletedRecord; ok 2 - use Koha::OAI::Server::Description; ok 3 - use Koha::OAI::Server::GetRecord; ok 4 - use Koha::OAI::Server::Identify; ok 5 - use Koha::OAI::Server::ListIdentifiers; ok 6 - use Koha::OAI::Server::ListMetadataFormats; ok 7 - use Koha::OAI::Server::ListRecords; ok 8 - use Koha::OAI::Server::ListSets; ok 9 - use Koha::OAI::Server::Record; ok 10 - use Koha::OAI::Server::Repository; ok 11 - use Koha::OAI::Server::ResumptionToken; ok 12 - ListMetadataFormats ok 13 - ListIdentifiers without metadaPrefix argument ok All tests successful. Files=1, Tests=13, 8 wallclock secs ( 0.03 usr 0.01 sys + 1.06 cusr 0.08 csys = 1.18 CPU) Result: PASS
(In reply to Jonathan Druart from comment #29) > The tests does not pass: > t/db_dependent/OAI/Server.t .. 1/13 Can't call method "start_element" on an > undefined value at /usr/share/perl5/HTTP/OAI/Verb.pm line 53. See: https://rt.cpan.org/Public/Bug/Display.html?id=102010
(In reply to Frédéric Demians from comment #32) > (In reply to Jonathan Druart from comment #29) > > The tests does not pass: > > t/db_dependent/OAI/Server.t .. 1/13 Can't call method "start_element" on an > > undefined value at /usr/share/perl5/HTTP/OAI/Verb.pm line 53. > > See: > > https://rt.cpan.org/Public/Bug/Display.html?id=102010 Are you sure about that? As Héctor pointed out, it looks like the version in Wheezy and Jessie is the same: https://packages.debian.org/wheezy/libhttp-oai-perl https://packages.debian.org/jessie/libhttp-oai-perl As I pointed out on https://rt.cpan.org/Public/Bug/Display.html?id=102010, someone had force installed 4.03 on the openSUSE machine I was on, and it failed miserably. It worked fine when I downgraded back to 3.28, but Debian should be using 3.27-1 for both Wheezy and Jessie which should be fine... It does appear that someone has recently done some work to add 4.03 into Debian: https://anonscm.debian.org/cgit/pkg-perl/packages/libhttp-oai-perl.git/ Both Debian Stretch (ie testing) and Debian Sid (ie unstable) are using 4.03-1 which at a glance looks like it doesn't include any fix for that CPAN ticket, so all use of HTTP::OAI would break...: https://packages.debian.org/stretch/libhttp-oai-perl https://packages.debian.org/sid/libhttp-oai-perl -- Héctor: What version of Debian are you using? Jonathan: What version of Debian are you using? Frédéric: What OS/version are you using?
Frédéric: I noticed on https://rt.cpan.org/Public/Bug/Display.html?id=102010 that you asked if there was anything you could do to fix the problem. I'm guessing that HTTP::OAI itself isn't maintained so well anymore on CPAN, but you could report a bug in Debian perhaps: https://www.debian.org/Bugs/ Robin reported a bug in the idzebra-2.0 package earlier in the year but didn't have much success: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=777515. Although I think that's because the package maintainer didn't see it or isn't active anymore. In the case of HTTP::OAI, it seems that the maintainer gregor herrmann is fairly active: https://anonscm.debian.org/cgit/pkg-perl/packages/libhttp-oai-perl.git/, so it might be worth contacting him as well, even if the problems are just in Debian Testing and Debian Unstable... It would be great if someone could confirm for sure that there are problems in Debian Jessie, although I think Robin has been using Jessie for a while and he was doing quite a bit with HTTP::OAI this year so I would've thought he'd notice an issue during that time...
(In reply to David Cook from comment #33) > Héctor: What version of Debian are you using? > Jonathan: What version of Debian are you using? > Frédéric: What OS/version are you using? Hi David I applied the patch in both Jessie and Wheezy and test passed successfully, maybe fail with Ubuntu. I Enabled OAI-PMH and play with: cgi-bin/koha/oai.pl?verb=GetRecord&identifier=KOHA-OAI-TEST:1&metadataPrefix=marcxml cgi-bin/koha/oai.pl?verb=GetRecord&identifier=KOHA-OAI-TEST:1&metadataPrefix=oai_dc And works well.
(In reply to Héctor Eduardo Castro Avalos from comment #35) > (In reply to David Cook from comment #33) > > > Héctor: What version of Debian are you using? > > Jonathan: What version of Debian are you using? > > Frédéric: What OS/version are you using? > > Hi David > > I applied the patch in both Jessie and Wheezy and test passed successfully, > maybe fail with Ubuntu. > It looks like Ubuntu 15.10 Wily has the 4.03-1 version, but 14.04 has 3.27-1. http://packages.ubuntu.com/wily/libhttp-oai-perl
I confirm that Jessie/Wheezy package 3.2x version. Jonathan who reported the issue should use a CPAN installed version of HTTP::OAI. I've also have reported the bug on Github: https://github.com/timbrody/perl-oai-lib But no response yet. We may give a phone call to Tim Brody...
(In reply to Frédéric Demians from comment #37) > I confirm that Jessie/Wheezy package 3.2x version. Jonathan who reported the > issue should use a CPAN installed version of HTTP::OAI. > > I've also have reported the bug on Github: > > https://github.com/timbrody/perl-oai-lib > > But no response yet. We may give a phone call to Tim Brody... So sorry, I was using testing! Indeed it's 3.27 on my Jessie box.
(In reply to Jonathan Druart from comment #38) > So sorry, I was using testing! > Indeed it's 3.27 on my Jessie box. And does it work? Are tests passing? If so, Héctor could re-sign-off the attached patch, which is supposed to fix test failings you pointed out. It remains that HTTP::OAI v4 is a time bomb...
(In reply to Frédéric Demians from comment #39) > (In reply to Jonathan Druart from comment #38) > > > So sorry, I was using testing! > > Indeed it's 3.27 on my Jessie box. > > And does it work? Are tests passing? If so, Héctor could re-sign-off the > attached patch, which is supposed to fix test failings you pointed out. Yes, all tests pass.
Created attachment 45386 [details] [review] [SIGNED-OFF]Bug 14939: Modularize OAI Server existing classes Koha OAI server has been done in one unique .pl file because there wasn't any object model or rules in the Koha project when it has been coded. This patch modularized existing classes, putting each class in a separate file in Koha::OAI::Server namespace. UT begining. Add new dependency: Capture::Tiny Signed-off-by: Hector Castro <hector.hecaxmmx@gmail.com> OAI server moduralized succefully. Works for Debian Jessie and Wheezy. Test pass successfully
(In reply to Frédéric Demians from comment #39) > It remains that HTTP::OAI v4 is a time bomb... Indeed it does. I would hope that it wouldn't get into the next stable release of Debian... that they'd notice it fails in Debian Testing and thus continue with the existing stable version, but you never know... Ubuntu 15.10 Wily was released in October, and it has 4.x, so there is a popular Debian-based OS there with a bad HTTP::OAI package it seems http://packages.ubuntu.com/wily/libhttp-oai-perl. I haven't tested it though as I don't have a Ubuntu 15.10 install at hand... (Interesting that Robin Sheat is listed as a maintainer... also listed as a maintainer at https://packages.debian.org/source/jessie/libhttp-oai-perl although he's no longer involved with Koha...)
(In reply to Frédéric Demians from comment #37) > But no response yet. We may give a phone call to Tim Brody... That would be great. I'd love to know if he's still maintaining the project, or if he's open to someone taking it over. Not that I'm necessarily volunteering but it would be good to know.
Created attachment 45567 [details] [review] Bug 14939: Remove the Capture::Tiny dependency It's possible to redirect the std output to a variable, it will avoid to add this new dependency.
(In reply to Frédéric Demians from comment #28) > I'm open to any proposal to replace Tiny::Capture. What about this last patch?
Created attachment 45577 [details] [review] Bug 14939: Remove the Capture::Tiny dependency It's possible to redirect the std output to a variable, it will avoid to add this new dependency. Signed-off-by: Frédéric Demians <f.demians@tamil.fr> OK. + code factorisation with a function call.
Thanks for the solution.
Created attachment 45602 [details] [review] Bug 14939: Modularize OAI Server existing classes Koha OAI server has been done in one unique .pl file because there wasn't any object model or rules in the Koha project when it has been coded. This patch modularized existing classes, putting each class in a separate file in Koha::OAI::Server namespace. UT begining. Add new dependency: Capture::Tiny Signed-off-by: Hector Castro <hector.hecaxmmx@gmail.com> OAI server moduralized succefully. Works for Debian Jessie and Wheezy. Test pass successfully Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Created attachment 45603 [details] [review] Bug 14939: Remove the Capture::Tiny dependency It's possible to redirect the std output to a variable, it will avoid to add this new dependency. Signed-off-by: Frédéric Demians <f.demians@tamil.fr> OK. + code factorisation with a function call. Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Nice job Frédéric!
Pushed to master, thanks Frédéric!
Comment on attachment 45602 [details] [review] Bug 14939: Modularize OAI Server existing classes Review of attachment 45602 [details] [review]: ----------------------------------------------------------------- ::: Koha/OAI/Server/ListRecords.pm @@ +42,5 @@ > + $set = GetOAISetBySpec($token->{'set'}); > + } > + my $max = $repository->{koha_max_count}; > + my $sql = " > + (SELECT biblioitems.biblionumber, biblioitems.timestamp, marcxml We have this... @@ +49,5 @@ > + $sql .= " JOIN oai_sets_biblios ON biblioitems.biblionumber = oai_sets_biblios.biblionumber " if defined $set; > + $sql .= " WHERE timestamp >= ? AND timestamp <= ? "; > + $sql .= " AND oai_sets_biblios.set_id = ? " if defined $set; > + $sql .= ") UNION > + (SELECT deletedbiblio.biblionumber, null as marcxml, timestamp FROM deletedbiblio"; then this (marcxml and timestamp inverted) @@ +67,5 @@ > + $sth->execute( @bind_params ); > + > + my $count = 0; > + my $format = $args{metadataPrefix} || $token->{metadata_prefix}; > + while ( my ($biblionumber, $timestamp) = $sth->fetchrow ) { And finally this. Should not we remove marcxml (as it's unused)?
(In reply to Jonathan Druart from comment #52) > Should not we remove marcxml (as it's unused)? Maybe. Could you take a look at bug 15108? It improves greatly SQL queries generated by Koha OAI Server, and so performances. You could QA it :-)