r742 - trunk/wikitty-solr-impl/src/test/java/org/nuiton/wikitty/storage/solr
Author: echatellier Date: 2011-03-04 11:55:53 +0100 (Fri, 04 Mar 2011) New Revision: 742 Url: http://nuiton.org/repositories/revision/wikitty/742 Log: Add two new test (failing) about solr index. Modified: trunk/wikitty-solr-impl/src/test/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolrTest.java Modified: trunk/wikitty-solr-impl/src/test/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolrTest.java =================================================================== --- trunk/wikitty-solr-impl/src/test/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolrTest.java 2011-03-04 10:09:41 UTC (rev 741) +++ trunk/wikitty-solr-impl/src/test/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolrTest.java 2011-03-04 10:55:53 UTC (rev 742) @@ -26,25 +26,33 @@ package org.nuiton.wikitty.storage.solr; import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; import java.util.List; + import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.nuiton.wikitty.WikittyConfig; +import org.nuiton.wikitty.WikittyProxy; import org.nuiton.wikitty.entities.Wikitty; import org.nuiton.wikitty.entities.WikittyImpl; import org.nuiton.wikitty.entities.WikittyLabelImpl; +import org.nuiton.wikitty.entities.WikittyTreeNode; import org.nuiton.wikitty.entities.WikittyTreeNodeImpl; import org.nuiton.wikitty.entities.WikittyUserImpl; import org.nuiton.wikitty.search.Criteria; import org.nuiton.wikitty.search.PagedResult; import org.nuiton.wikitty.search.Search; import org.nuiton.wikitty.search.TreeNodeResult; +import org.nuiton.wikitty.search.operators.Element; +import org.nuiton.wikitty.services.WikittyEvent; /** - * + * Test for class {@link WikittySearchEngineSolr}. + * * @author poussin * @version $Revision$ * @@ -56,8 +64,10 @@ /** to use log facility, just put in your code: log.info(\"...\"); */ private static final Log log = LogFactory.getLog(WikittySearchEngineSolrTest.class); - protected WikittyServiceSolr ws =new WikittyServiceSolr(new WikittyConfig()); + protected WikittyServiceSolr ws = new WikittyServiceSolr(new WikittyConfig()); + protected WikittyProxy proxy = new WikittyProxy(ws); + @Before public void deleteAll() throws Exception { ws.clear(null); @@ -189,10 +199,118 @@ TreeNodeResult<String> children = ws.getSearchEngine().findAllChildrenCount( null, root.getId(), 1, true, null); - System.out.println(children); + if (log.isDebugEnabled()) { + log.debug("Children : " + children); + } + Assert.assertEquals(2, children.getChildCount()); Assert.assertEquals(5, children.getChild(node1.getId()).getAttCount()); Assert.assertEquals(4, children.getChild(node2.getId()).getAttCount()); } + /** + * Test que lors de la reindexation les noeuds indexés le sont + * correctement si leur attachement ne sont pas encore + * présent dans l'index. + * + * Stocke les attachements avant le noeud. + */ + @Test + public void testReindexWithAttachement() { + + // store attachement + Wikitty attach1 = new WikittyImpl("att1"); + Wikitty attach2 = new WikittyImpl("att2"); + Collection<Wikitty> toStore = new ArrayList<Wikitty>(); + toStore.add(attach1); + toStore.add(attach2); + ws.store(null, toStore, false); + + // store first node + Wikitty treeNode = new WikittyImpl(); + WikittyTreeNode treeNodeImpl = new WikittyTreeNodeImpl(treeNode); + treeNodeImpl.setName("root"); + treeNodeImpl.addAttachment(attach1.getId()); + treeNodeImpl.addAttachment(attach2.getId()); + ws.store(null, Collections.singleton(treeNode), false); + + // set resync + ws.syncSearchEngine(null); + + // search wikitty with attachement + Search query = Search.query(); + query.eq(Element.ELT_EXTENSION, WikittyTreeNodeImpl.EXT_WIKITTYTREENODE); + query.eq(WikittyTreeNode.FQ_FIELD_WIKITTYTREENODE_NAME, "root"); + PagedResult<Wikitty> results = proxy.findAllByCriteria(query.criteria()); + Assert.assertEquals(1, results.size()); + WikittyTreeNode resultTreeNode = new WikittyTreeNodeImpl(results.get(0)); + Assert.assertEquals(2, resultTreeNode.getAttachment().size()); + } + + /** + * Test que lors de la reindexation les noeuds indexés le sont + * correctement si leur attachement ne sont pas encore + * présent dans l'index. + * + * Stocke le noeud avant les attachements. + */ + @Test + public void testReindexWithAttachementOrdering() { + + // store first node + Wikitty treeNode = new WikittyImpl(); + WikittyTreeNode treeNodeImpl = new WikittyTreeNodeImpl(treeNode); + treeNodeImpl.setName("root"); + WikittyEvent event = ws.store(null, Collections.singleton(treeNode), false); + treeNode = event.getWikitties().get(treeNode.getId()); + + // store attachement + Wikitty attach1 = new WikittyImpl("att1"); + Wikitty attach2 = new WikittyImpl("att2"); + treeNodeImpl.addAttachment(attach1.getId()); + treeNodeImpl.addAttachment(attach2.getId()); + Collection<Wikitty> toStore = new ArrayList<Wikitty>(); + toStore.add(attach1); + toStore.add(attach2); + toStore.add(treeNode); + ws.store(null, toStore, false); + + // set resync + ws.syncSearchEngine(null); + + // search wikitty with attachement + Search query = Search.query(); + query.eq(Element.ELT_EXTENSION, WikittyTreeNodeImpl.EXT_WIKITTYTREENODE); + query.eq(WikittyTreeNode.FQ_FIELD_WIKITTYTREENODE_NAME, "root"); + PagedResult<Wikitty> results = proxy.findAllByCriteria(query.criteria()); + Assert.assertEquals(1, results.size()); + WikittyTreeNode resultTreeNode = new WikittyTreeNodeImpl(results.get(0)); + Assert.assertEquals(2, resultTreeNode.getAttachment().size()); + } + + /** + * Test que lorsqu'un document solr est supprimé, il l'est réelement + * car le proxy gere les retours null pour des documents qui n'existe + * plus dans le base, mais les recherches continue de les trouver. + */ + @Test + public void testSolrDeleteDocument() { + // store new wikitty + Wikitty toDeleteWikitty = new WikittyImpl("wikkitytodelete"); + ws.store(null, Collections.singleton(toDeleteWikitty), false); + // look for it + Search query = Search.query(); + query.eq(Element.ELT_ID, "wikkitytodelete"); + Assert.assertEquals(1, ws.findAllByCriteria(null, query.criteria()).getNumFound()); + Assert.assertEquals(1, proxy.findAllByCriteria(query.criteria()).getNumFound()); + + // delete it + ws.delete(null, Collections.singleton(toDeleteWikitty.getId())); + + // try to look for it after deletion + Search query2 = Search.query(); + query2.eq(Element.ELT_ID, "wikkitytodelete"); + Assert.assertEquals(0, proxy.findAllByCriteria(query2.criteria()).getNumFound()); + Assert.assertEquals(0, ws.findAllByCriteria(null, query2.criteria()).getNumFound()); + } }
participants (1)
-
echatellier@users.nuiton.org