Itamar,

I tried to solve this by subclassing, but it is probably impossible. Eg. method 
getNumBufferedDocuments() uses
docWriter, which is declared private in IndexWriter, so I cannot access it.
I can't see any solution except declaring testing methods public (or at least 
protected) in original IndexWriter

Borek

> -----Original Message-----
> From: Kostka Bořivoj [mailto:kos...@tovek.cz]
> Sent: Tuesday, August 17, 2010 3:39 PM
> To: clucene-developers@lists.sourceforge.net
> Subject: Re: [CLucene-dev] IndexWriter's private methods for tests
> 
> OK, I understand your idea now. The problem is only segmentsInfos, so I will 
> change it
> to exported (it can be changed in the future, if we decide so).
> 
> If we hit more/many exporting issues we could consider special DLL build with 
> more
> exports for testing purposes rather than link statically.
> Anyway, tt will be best, if we have both static libs and dll build for 
> cl_test.
> 
> Borek
> 
> > -----Original Message-----
> > From: Itamar Syn-Hershko [mailto:ita...@code972.com]
> > Sent: Tuesday, August 17, 2010 1:34 PM
> > To: clucene-developers@lists.sourceforge.net
> > Subject: Re: [CLucene-dev] IndexWriter's private methods for tests
> >
> > We definitely need to port all tests.
> >
> > What I meant with subclassing is to remove the functions that aren't
> > used currently, and have a IndexWriterForTests class in cl_test which
> > will implement those functions instead. From what I recall none of these
> > functions are used anywhere, so removing them from the core isn't an
> > issue. If any of them is indeed used, well, since it is used for things
> > other than testing we do need it there (and as such it should be made
> > protected / public, based on where it is being called from in tests).
> >
> > If you'll hit many exporting issues with cl_test you can make cl_test
> > link statically to cl_core (and also cl_shared). That is better than
> > exporting new stuff that is better left internal.
> >
> > Itamar.
> >
> > On 17/8/2010 11:35 AM, Kostka Bořivoj wrote:
> > > Itamar,
> > >
> > > Perhaps I'm wrong, but I think subclassing isn't (easy) solution:
> > >
> > > Related IndexWriter's methods are private, not protected, so I cannot 
> > > call them
> even
> > from subclass.
> > > I also cannot copy the code, as segmentsInfos methods are used inside, and
> > segmentInfos class is not exported so I'm not able to link.
> > >
> > > Maybe protected will be good trade-off(?)
> > >
> > > If methods remain private, I have to remove a lot of checks from tests. I 
> > > can do that,
> > of course, but I'm not sure if such test are still usefull.
> > >
> > > And the last point - if methods remain private, we should simply remove 
> > > them as a
> > whole, because it is just a chunk of dead code.
> > >
> > > Borek
> > >
> > >
> > >> -----Original Message-----
> > >> From: Itamar Syn-Hershko [mailto:ita...@code972.com]
> > >> Sent: Monday, August 16, 2010 10:47 PM
> > >> To: clucene-developers@lists.sourceforge.net
> > >> Subject: Re: [CLucene-dev] IndexWriter's private methods for tests
> > >>
> > >> Borek,
> > >>
> > >> I had answered this in Jun 24th [1][2]. We pretty much agreed
> > >> "friend"ing won't do much good.
> > >>
> > >> I'd still prefer exposing this code only in the test suite and not in
> > >> core, since it is only being used there - this can be achieved easily by
> > >> subclassing. No reason to have them in core if all they are used for is
> > >> tests, and I wouldn't want to add more compile switches...
> > >>
> > >> Itamar.
> > >>
> > >> [1] 
> > >> http://permalink.gmane.org/gmane.comp.jakarta.lucene.clucene.devel/3484
> > >> [2] The whole discussion:
> > >> http://comments.gmane.org/gmane.comp.jakarta.lucene.clucene.devel/3472
> > >>
> > >> On 16/8/2010 4:00 PM, Kostka Bořivoj wrote:
> > >>
> > >>> In tests I'm porting following set of methods from IndexWriter is used:
> > >>>
> > >>>     //for test purposes
> > >>>     int32_t getDocCount(int32_t i);
> > >>>     int32_t getNumBufferedDocuments();
> > >>>     int32_t getSegmentCount();
> > >>>     int32_t getBufferedDeleteTermsSize();
> > >>>     int32_t getNumBufferedDeleteTerms();
> > >>>     SegmentInfo* newestSegment();
> > >>>
> > >>> The problem is all methods are marked private. In JLucene methods are 
> > >>> without
> > >>>
> > >> public/private definition,
> > >>
> > >>> so they are accessible from classes in same package (and test are in 
> > >>> same
> > >>>
> > >> package).
> > >>
> > >>> Such thing is not possible in C++, so I think methods should be changed 
> > >>> to
> public.
> > >>>
> > >> Otherwise tests cannot
> > >>
> > >>> be ported.
> > >>>
> > >>> Any other opinion?
> > >>>
> > >>> Borek
> > >>>
> > >>>
> > >>>
> > >>>
> > >>>
> > >>>
> > >>>
> > >>>
> > >>>
> > >>>
> > >>> ------------------------------------------------------------------------------
> > >>> This SF.net email is sponsored by
> > >>>
> > >>> Make an app they can't live without
> > >>> Enter the BlackBerry Developer Challenge
> > >>> http://p.sf.net/sfu/RIM-dev2dev
> > >>> _______________________________________________
> > >>> CLucene-developers mailing list
> > >>> CLucene-developers@lists.sourceforge.net
> > >>> https://lists.sourceforge.net/lists/listinfo/clucene-developers
> > >>>
> > >>>
> > >>>
> > >>>
> > >> ------------------------------------------------------------------------------
> > >> This SF.net email is sponsored by
> > >>
> > >> Make an app they can't live without
> > >> Enter the BlackBerry Developer Challenge
> > >> http://p.sf.net/sfu/RIM-dev2dev
> > >> _______________________________________________
> > >> CLucene-developers mailing list
> > >> CLucene-developers@lists.sourceforge.net
> > >> https://lists.sourceforge.net/lists/listinfo/clucene-developers
> > >>
> > > ------------------------------------------------------------------------------
> > > This SF.net email is sponsored by
> > >
> > > Make an app they can't live without
> > > Enter the BlackBerry Developer Challenge
> > > http://p.sf.net/sfu/RIM-dev2dev
> > > _______________________________________________
> > > CLucene-developers mailing list
> > > CLucene-developers@lists.sourceforge.net
> > > https://lists.sourceforge.net/lists/listinfo/clucene-developers
> > >
> >
> > ------------------------------------------------------------------------------
> > This SF.net email is sponsored by
> >
> > Make an app they can't live without
> > Enter the BlackBerry Developer Challenge
> > http://p.sf.net/sfu/RIM-dev2dev
> > _______________________________________________
> > CLucene-developers mailing list
> > CLucene-developers@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/clucene-developers
> ------------------------------------------------------------------------------
> This SF.net email is sponsored by
> 
> Make an app they can't live without
> Enter the BlackBerry Developer Challenge
> http://p.sf.net/sfu/RIM-dev2dev
> _______________________________________________
> CLucene-developers mailing list
> CLucene-developers@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/clucene-developers
------------------------------------------------------------------------------
This SF.net email is sponsored by 

Make an app they can't live without
Enter the BlackBerry Developer Challenge
http://p.sf.net/sfu/RIM-dev2dev 
_______________________________________________
CLucene-developers mailing list
CLucene-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/clucene-developers

Reply via email to