lucene-solr-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mikhail Khludnev <mkhlud...@griddynamics.com>
Subject Re: testing with EmbeddedSolrServer
Date Tue, 01 Sep 2015 12:40:25 GMT
Endre,
Here is the problem. SolrTestCase4J already brings solr core/container and
a sort of server already orchestrated by a complex harness. Thus, adding
EmbeddedSS makes all things quite complicated, it's challenging to
understand which ones misbehaves. Giving that you need to debug DIH config
I can suggest you look at the short
org.apache.solr.handler.dataimport.TestNestedChildren and use it as a
sample to start from.


On Tue, Sep 1, 2015 at 11:54 AM, Moen Endre <endre.moen@imr.no> wrote:

> Mikhail,
>
> The purpose of using EmbeddedSolrServer is for testing, not for running as
> main().
>
> Is there a best practice for doing integration-testing of solr? Or of
> validating that queries to solr returns the expected result?
>
> E.g. I have this bit of production code:
> private String getStartAndStopDateIntersectsRange( Date beginDate, Date
> EndDate) {
> ...
>   dateQuery = "( (Start_Date:[* TO "+ endDate +"] AND
> Stop_Date:["+beginDate+" TO *])"+
>    " OR (Start_Date:[* TO "+ endDate +"] AND !Stop_Date:[* TO *])" +
>    " OR (!Start_Date:[* TO *] AND Stop_Date:["+beginDate+" TO *]) )";
> ..
> }
>
> And I would like to write a test-case that only returns the records that
> intersects a given daterange.
>
>
> Cheers
> Endre
>
>
>
>
> -----Original Message-----
> From: Mikhail Khludnev [mailto:mkhludnev@griddynamics.com]
> Sent: 31. august 2015 15:02
> To: solr-user
> Subject: Re: testing with EmbeddedSolrServer
>
> Endre,
>
> As I suggested before, consider to avoid test framework, just put all code
> interacting with EmbeddedSolrServer into main() method.
>
> On Mon, Aug 31, 2015 at 12:15 PM, Moen Endre <endre.moen@imr.no> wrote:
>
> > Hi Mikhail,
> >
> > Im trying to read 7-8 xml files of data that contain realistic data
> > from our production server. Then I would like to read this data into
> > EmbeddedSolrServer to test for edge cases for our custom date search.
> > The use of EmbeddedSolrServer is purely to separate the data testing
> > from any environment that might change over time.
> >
> > I would also like to avoid writing plumbing-code to import each field
> > from the xml since I already have a working DIH.
> >
> > I tried adding synchronous=true but it doesn’t look like it makes solr
> > complete the import before doing a search.
> >
> > Looking at the log it doesn’t seem process the import request:
> > [searcherExecutor-6-thread-1-processing-{core=nmdc}] DEBUG
> > o.apache.solr.core.SolrCore.Request - [nmdc] webapp=null path=null
> > params={q=static+firstSearcher+warming+in+solrconfig.xml&distrib=false
> > &event=firstSearcher}
> > ...
> > [TEST-TestSolrEmbeddedServer.testNodeConfigConstructor-seed#[41C3C11DE
> > 20DD5CE]] INFO  org.apache.solr.core.CoreContainer - registering core:
> > nmdc
> > 10:48:31.613
> > [TEST-TestSolrEmbeddedServer.testNodeConfigConstructor-seed#[41C3C11DE
> > 20DD5CE]] INFO  o.apache.solr.core.SolrCore.Request - [nmdc]
> > webapp=null
> > path=/dataimport2
> > params={qt=%2Fdataimport2&command=full-import%26clean%3Dtrue%26synchro
> > nous%3Dtrue}
> > status=0 QTime=1
> >
> > {responseHeader={status=0,QTime=1},initArgs={defaults={config=dih-conf
> > ig.xml}},command=full-import&clean=true&synchronous=true,status=idle,i
> > mportResponse=,statusMessages={}}
> > [TEST-TestSolrEmbeddedServer.testNodeConfigConstructor-seed#[41C3C11DE
> > 20DD5CE]] DEBUG o.apache.solr.core.SolrCore.Request - [nmdc]
> > webapp=null path=/select params={q=*%3A*}
> > [TEST-TestSolrEmbeddedServer.testNodeConfigConstructor-seed#[41C3C11DE
> > 20DD5CE]] DEBUG o.a.s.h.component.QueryComponent - process:
> > q=*:*&df=text&rows=10&echoParams=explicit
> > [searcherExecutor-6-thread-1-processing-{core=nmdc}] DEBUG
> > o.a.s.h.component.QueryComponent - process:
> > q=static+firstSearcher+warming+in+solrconfig.xml&distrib=false&df=text
> > &event=firstSearcher&rows=10&echoParams=explicit
> > [searcherExecutor-6-thread-1-processing-{core=nmdc}] DEBUG
> > o.a.s.search.stats.LocalStatsCache - ## GET
> > {q=static+firstSearcher+warming+in+solrconfig.xml&distrib=false&df=tex
> > t&event=firstSearcher&rows=10&echoParams=explicit}
> > [searcherExecutor-6-thread-1-processing-{core=nmdc}] INFO
> > o.apache.solr.core.SolrCore.Request - [nmdc] webapp=null path=null
> > params={q=static+firstSearcher+warming+in+solrconfig.xml&distrib=false
> > &event=firstSearcher}
> > hits=0 status=0 QTime=36
> > [searcherExecutor-6-thread-1-processing-{core=nmdc}] INFO
> > org.apache.solr.core.SolrCore - QuerySenderListener done.
> > [searcherExecutor-6-thread-1-processing-{core=nmdc}] INFO
> > org.apache.solr.core.SolrCore - [nmdc] Registered new searcher
> > Searcher@28be2785[nmdc]
> > main{ExitableDirectoryReader(UninvertingDirectoryReader())}
> > ...
> > [TEST-TestSolrEmbeddedServer.testNodeConfigConstructor-seed#[41C3C11DE
> > 20DD5CE]] INFO  org.apache.solr.update.SolrCoreState - Closing
> > SolrCoreState
> > [TEST-TestSolrEmbeddedServer.testNodeConfigConstructor-seed#[41C3C11DE
> > 20DD5CE]] INFO  o.a.solr.update.DefaultSolrCoreState - SolrCoreState
> > ref count has reached 0 - closing IndexWriter
> > [TEST-TestSolrEmbeddedServer.testNodeConfigConstructor-seed#[41C3C11DE
> > 20DD5CE]] INFO  o.a.solr.update.DefaultSolrCoreState - closing
> > IndexWriter with IndexWriterCloser
> > [TEST-TestSolrEmbeddedServer.testNodeConfigConstructor-seed#[41C3C11DE
> > 20DD5CE]] DEBUG o.apache.solr.update.SolrIndexWriter - Closing Writer
> > DirectUpdateHandler2
> >
> > Cheers
> > Endre
> >
> > -----Original Message-----
> > From: Mikhail Khludnev [mailto:mkhludnev@griddynamics.com]
> > Sent: 25. august 2015 19:43
> > To: solr-user
> > Subject: Re: testing with EmbeddedSolrServer
> >
> > Hello,
> >
> > I'm trying to guess what are you doing. It's not clear so far.
> > I found http://stackoverflow.com/questions/11951695/embedded-solr-dih
> > My conclusion, if you play with DIH and EmbeddedSolrServer you'd
> > better to avoid the third beast, you don't need to bother with tests.
> > I guess that main() is over while DIH runs in background thread. You
> > need to loop status command until import is over. or add
> > synchronous=true parameter to full-import command it should switch to
> synchronous mode:
> >
> > https://github.com/apache/lucene-solr/blob/trunk/solr/contrib/dataimpo
> > rthandler/src/java/org/apache/solr/handler/dataimport/DataImportHandle
> > r.java#L199
> >
> > Take care
> >
> >
> > On Tue, Aug 25, 2015 at 4:41 PM, Moen Endre <endre.moen@imr.no> wrote:
> >
> > > Is there an example of integration-testing with EmbeddedSolrServer
> > > that loads data from a data importhandler - then queries the data?
> > > Ive tried doing this based on
> > >
> org.apache.solr.client.solrj.embedded.TestEmbeddedSolrServerConstructors.
> > >
> > > But no data is being imported.  Here is the test-class ive tried:
> > > https://gist.github.com/emoen/5d0a28df91c4c1127238
> > >
> > > Ive also tried writing a test by extending AbstractSolrTestCase -
> > > but havnt got this working. Ive documented some of the log output here:
> > > http://stackoverflow.com/questions/32052642/solrcorestate-already-cl
> > > os
> > > ed-with-unit-test-using-embeddedsolrserver-v-5-2-1
> > >
> > > Should I extend AbstractSolrTestCase or SolrTestCaseJ4 when writing
> > tests?
> > >
> > > Cheers
> > > Endre
> > >
> >
> >
> >
> > --
> > Sincerely yours
> > Mikhail Khludnev
> > Principal Engineer,
> > Grid Dynamics
> >
> > <http://www.griddynamics.com>
> > <mkhludnev@griddynamics.com>
> >
>
>
>
> --
> Sincerely yours
> Mikhail Khludnev
> Principal Engineer,
> Grid Dynamics
>
> <http://www.griddynamics.com>
> <mkhludnev@griddynamics.com>
>



-- 
Sincerely yours
Mikhail Khludnev
Principal Engineer,
Grid Dynamics

<http://www.griddynamics.com>
<mkhludnev@griddynamics.com>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message