Java Mailing List Archive

http://www.gg3721.com/

Home » Hibernate Commits List »

[hibernate-commits] Hibernate SVN: r14963 - in search/trunk:
 src/test/org/hibernate/search/test and 1 other directory.

hibernate-commits

2008-07-22


Author LoginPost Reply
Author: navssurtani
Date: 2008-07-22 06:24:20 -0400 (Tue, 22 Jul 2008)
New Revision: 14963

Added:
 search/trunk/src/test/org/hibernate/search/test/LocalCacheTest.java
 search/trunk/src/test/org/hibernate/search/test/Person.java
Modified:
 search/trunk/ivy.xml
Log:
Wrote test for JBoss Cache Searchable.

Modified: search/trunk/ivy.xml
===================================================================
--- search/trunk/ivy.xml  2008-07-21 20:08:07 UTC (rev 14962)
+++ search/trunk/ivy.xml  2008-07-22 10:24:20 UTC (rev 14963)
@@(protected) @@
<ivy-module version="1.3"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation=
-            "http://www.jayasoft.org/misc/ivy/ivy.xsd">
-   <info organisation="org.hibernate" module="search"/>
-   <configurations>
-     <conf name="default" description="Core module dependencies"/>
-     <conf name="test" visibility="private" description="Dependencies needed for testing purposes"/>
-   </configurations>
-   <publications>
-     <artifact name="hibernate-search" conf="default"/>
-   </publications>
-   <dependencies>
-    
-     <!-- compile time dependencies -->
-     <dependency name="ejb3-persistence" rev="1.0.2.GA" conf="default->default"/>
-     <dependency name="commons-annotations" rev="3.1.0.CR1" conf="default->default"/>
-     <dependency org="org.slf4j" name="slf4j-api" rev="1.4.2" conf="default->default"/>    
-     <dependency org="org.hibernate" name="hibernate-core" rev="3.3.0.CR1" conf="default->default"/>
-     <dependency org="javax.transaction" name="jta" rev="1.1" conf="default->default"/>
-     <dependency org="org.apache.lucene" name="lucene-core" rev="2.3.2" conf="default->default"/>
-     <dependency org="javax.jms" name="jms" rev="1.1" conf="default->default"/> <!-- optional -->
-     <dependency org="javax.annotation" name="jsr250-api" rev="1.0" conf="default->default"/> <!-- optional -->
-     <dependency org="org.hibernate.apache.lucene.solr" name="apache-solr-analyzer" rev="1.2.0" conf="default->default"/> <!-- optional -->
+             "http://www.jayasoft.org/misc/ivy/ivy.xsd">
+  <info organisation="org.hibernate" module="search"/>
+  <configurations>
+    <conf name="default" description="Core module dependencies"/>
+    <conf name="test" visibility="private" description="Dependencies needed for testing purposes"/>
+  </configurations>
+  <publications>
+    <artifact name="hibernate-search" conf="default"/>
+  </publications>
+  <dependencies>

-     <!-- transitive dependencies -->
-     <dependency org="antlr" name="antlr" rev="2.7.6" conf="test->default"/>
-     <dependency org="commons-collections" name="commons-collections" rev="3.1" conf="test->default"/>
-     <dependency org="dom4j" name="dom4j" rev="1.6.1" conf="test->default"/>
+    <!-- compile time dependencies -->
+    <dependency name="ejb3-persistence" rev="1.0.2.GA" conf="default->default"/>
+    <dependency name="commons-annotations" rev="3.1.0.CR1" conf="default->default"/>
+    <dependency org="org.slf4j" name="slf4j-api" rev="1.4.2" conf="default->default"/>
+    <dependency org="org.hibernate" name="hibernate-core" rev="3.3.0.CR1" conf="default->default"/>
+    <dependency org="javax.transaction" name="jta" rev="1.1" conf="default->default"/>
+    <dependency org="org.apache.lucene" name="lucene-core" rev="2.3.2" conf="default->default"/>
+    <dependency org="javax.jms" name="jms" rev="1.1" conf="default->default"/>
+    <!-- optional -->
+    <dependency org="javax.annotation" name="jsr250-api" rev="1.0" conf="default->default"/>
+    <!-- optional -->
+    <dependency org="org.hibernate.apache.lucene.solr" name="apache-solr-analyzer" rev="1.2.0"
+            conf="default->default"/>
+    <!-- optional -->

-     <!-- test deps -->
-     <dependency name="annotations" rev="3.4.0.CR1" conf="test->default"/>
-     <dependency name="entitymanager" rev="3.4.0.CR1" conf="test->default"/>
-     <dependency org="cglib" name="cglib" rev="2.1_3" conf="test->default"/>
-     <dependency org="asm" name="asm" rev="1.5.3" conf="test->default"/>
-     <dependency org="asm" name="asm-attrs" rev="1.5.3" conf="test->default"/>
-     <dependency org="org.slf4j" name="slf4j-log4j12" rev="1.4.2" conf="test->default"/>
-     <dependency org="log4j" name="log4j" rev="1.2.14" conf="test->default"/>
-     <dependency org="junit" name="junit" rev="3.8.1" conf="test->default"/>
+    <!-- transitive dependencies -->
+    <dependency org="antlr" name="antlr" rev="2.7.6" conf="test->default"/>
+    <dependency org="commons-collections" name="commons-collections" rev="3.1" conf="test->default"/>
+    <dependency org="dom4j" name="dom4j" rev="1.6.1" conf="test->default"/>

-   </dependencies>
+    <!-- test deps -->
+    <dependency name="annotations" rev="3.4.0.CR1" conf="test->default"/>
+    <dependency name="entitymanager" rev="3.4.0.CR1" conf="test->default"/>
+    <dependency org="cglib" name="cglib" rev="2.1_3" conf="test->default"/>
+    <dependency org="asm" name="asm" rev="1.5.3" conf="test->default"/>
+    <dependency org="asm" name="asm-attrs" rev="1.5.3" conf="test->default"/>
+    <dependency org="org.slf4j" name="slf4j-log4j12" rev="1.4.2" conf="test->default"/>
+    <dependency org="log4j" name="log4j" rev="1.2.14" conf="test->default"/>
+    <dependency org="junit" name="junit" rev="3.8.1" conf="test->default"/>
+    <dependency org="org.jboss.cache" name="jbosscache-searchable" rev="0.1-Beta1" conf="test->default"/>
+    <dependency org="org.jboss.cache" name="jbosscache-core" rev="2.2.0.CR5" conf="test->default"/>
+    <dependency org="jgroups" name="jgroups" rev="2.6.3.GA" conf="test->default"/>
+
+  </dependencies>
</ivy-module>
\ No newline at end of file

Added: search/trunk/src/test/org/hibernate/search/test/LocalCacheTest.java
===================================================================
--- search/trunk/src/test/org/hibernate/search/test/LocalCacheTest.java                  (rev 0)
+++ search/trunk/src/test/org/hibernate/search/test/LocalCacheTest.java  2008-07-22 10:24:20 UTC (rev 14963)
@@(protected) @@
+package org.hibernate.search.test;
+
+import org.apache.lucene.queryParser.QueryParser;
+import org.apache.lucene.queryParser.ParseException;
+import org.apache.lucene.search.Query;
+import org.apache.lucene.search.Sort;
+import org.apache.lucene.search.Filter;
+import org.apache.lucene.search.QueryWrapperFilter;
+import org.apache.lucene.analysis.standard.StandardAnalyzer;
+import java.util.List;
+import org.jboss.cache.Cache;
+import org.jboss.cache.DefaultCacheFactory;
+import org.jboss.cache.Fqn;
+import org.jboss.cache.search.CacheQuery;
+import org.jboss.cache.search.QueryResultIterator;
+import org.jboss.cache.search.SearchableCache;
+import org.jboss.cache.search.SearchableCacheFactory;
+
+import java.io.File;
+
+/**
+ * @author Navin Surtani - navin@(protected)
+ *
+ *
+ * Creates an instance of JBoss Cache Searchable and then searches through it. Creates instances of org.hibernate.search.test.Person.
+ *
+ */
+
+public class LocalCacheTest extends junit.framework.TestCase
+{
+  SearchableCache searchableCache;
+  Person person1;
+  Person person2;
+  Person person3;
+  Person person4;
+  Person person5;
+  QueryParser queryParser;
+  Query luceneQuery;
+  CacheQuery cacheQuery;
+  List found;
+  String key1 = "Navin";
+  String key2 = "BigGoat";
+  String key3 = "MiniGoat";
+
+  public void setUp()
+  {
+
+    //Create a searchable cache instance.
+    Cache coreCache = new DefaultCacheFactory().createCache();
+    searchableCache = new SearchableCacheFactory().createSearchableCache(coreCache, Person.class);
+
+    //Creates 3 person objects.
+    person1 = new Person();
+    person1.setName("Navin Surtani");
+    person1.setBlurb("Likes playing WoW");
+
+    person2 = new Person();
+    person2.setName("Big Goat");
+    person2.setBlurb("Eats grass");
+
+    person3 = new Person();
+    person3.setName("Mini Goat");
+    person3.setBlurb("Eats cheese");
+
+    person5 = new Person();
+    person5.setName("Smelly Cat");
+    person5.setBlurb("Eats fish");
+
+    //Put the 3 created objects in the searchableCache.
+    searchableCache.put(Fqn.fromString("/a/b/c"), key1, person1);
+    searchableCache.put(Fqn.fromString("/a/b/d"), key2, person2);
+    searchableCache.put(Fqn.fromString("/a/b/c"), key3, person3);
+
+  }
+
+  public void tearDown()
+  {
+    if (searchableCache != null) searchableCache.stop();
+     cleanUpIndexes();
+  }
+
+  public void testSimple() throws ParseException
+  {
+    queryParser = new QueryParser("blurb", new StandardAnalyzer());
+    luceneQuery = queryParser.parse("playing");
+
+    // As with JBoss Cache Searchable, we create a CacheQuery instance as opposed to a FullTextQuery.
+    cacheQuery = searchableCache.createQuery(luceneQuery);
+
+    found = cacheQuery.list();
+
+    assert found.size() == 1;
+    assert found.get(0).equals(person1);
+  }
+
+  public void testSimpleIterator() throws ParseException
+  {
+    queryParser = new QueryParser("blurb", new StandardAnalyzer());
+    luceneQuery = queryParser.parse("playing");
+    cacheQuery = searchableCache.createQuery(luceneQuery);
+
+    QueryResultIterator found = cacheQuery.iterator();
+
+    assert found.isFirst();
+    assert found.isLast();
+  }
+
+
+  public void testMultipleResults() throws ParseException
+  {
+
+    queryParser = new QueryParser("name", new StandardAnalyzer());
+
+    luceneQuery = queryParser.parse("goat");
+    cacheQuery = searchableCache.createQuery(luceneQuery);
+    found = cacheQuery.list();
+
+    assert found.size() == 2;
+    assert found.get(0) == person2;
+    assert found.get(1) == person3;
+
+  }
+
+  public void testModified() throws ParseException
+  {
+    queryParser = new QueryParser("blurb", new StandardAnalyzer());
+    luceneQuery = queryParser.parse("playing");
+    cacheQuery = searchableCache.createQuery(luceneQuery);
+
+    found = cacheQuery.list();
+
+    assert found.size() == 1;
+    assert found.get(0).equals(person1);
+
+    person1.setBlurb("Likes pizza");
+    searchableCache.put(Fqn.fromString("/a/b/c/"), key1, person1);
+
+    queryParser = new QueryParser("blurb", new StandardAnalyzer());
+    luceneQuery = queryParser.parse("pizza");
+    cacheQuery = searchableCache.createQuery(luceneQuery);
+
+    found = cacheQuery.list();
+
+    assert found.size() == 1;
+    assert found.get(0).equals(person1);
+  }
+
+  public void testAdded() throws ParseException
+  {
+    queryParser = new QueryParser("name", new StandardAnalyzer());
+
+    luceneQuery = queryParser.parse("Goat");
+    cacheQuery = searchableCache.createQuery(luceneQuery);
+    found = cacheQuery.list();
+
+    assert found.size() == 2 : "Size of list should be 2";
+    assert found.contains(person2);
+    assert found.contains(person3);
+    assert !found.contains(person4) : "This should not contain object person4";
+
+    person4 = new Person();
+    person4.setName("Mighty Goat");
+    person4.setBlurb("Also eats grass");
+
+    searchableCache.put(Fqn.fromString("/r/a/m/"), "Ram", person4);
+
+    luceneQuery = queryParser.parse("Goat");
+    cacheQuery = searchableCache.createQuery(luceneQuery);
+    found = cacheQuery.list();
+
+    assert found.size() == 3 : "Size of list should be 3";
+    assert found.contains(person2);
+    assert found.contains(person3);
+    assert found.contains(person4) : "This should now contain object person4";
+  }
+
+  public void testRemoved() throws ParseException
+  {
+    queryParser = new QueryParser("name", new StandardAnalyzer());
+
+    luceneQuery = queryParser.parse("Goat");
+    cacheQuery = searchableCache.createQuery(luceneQuery);
+    found = cacheQuery.list();
+
+    assert found.size() == 2;
+    assert found.contains(person2);
+    assert found.contains(person3) : "This should still contain object person3";
+
+    searchableCache.remove(Fqn.fromString("/a/b/c/"), key3);
+
+    luceneQuery = queryParser.parse("Goat");
+    cacheQuery = searchableCache.createQuery(luceneQuery);
+    found = cacheQuery.list();
+
+    assert found.size() == 1;
+    assert found.contains(person2);
+    assert !found.contains(person3) : "The search should not return person3";
+
+
+  }
+
+  public void testSetSort() throws ParseException
+  {
+    person2.setAge(35);
+    person3.setAge(12);
+
+    Sort sort = new Sort ("age");
+
+    queryParser = new QueryParser("name", new StandardAnalyzer());
+
+    luceneQuery = queryParser.parse("Goat");
+    cacheQuery = searchableCache.createQuery(luceneQuery);
+    found = cacheQuery.list();
+
+    assert found.size() == 2;
+
+    cacheQuery.setSort(sort);
+
+    found = cacheQuery.list();
+
+    assert found.size() == 2;
+    assert found.get(0).equals(person2);
+    assert found.get(1).equals(person3);
+  }
+
+  public void testSetFilter() throws ParseException
+  {
+    queryParser = new QueryParser("blurb", new StandardAnalyzer());
+    luceneQuery = queryParser.parse("goat");
+    Filter filter = new QueryWrapperFilter(luceneQuery);
+
+    cacheQuery = searchableCache.createQuery(luceneQuery);
+
+    cacheQuery.setFilter(filter);
+  }
+
+
+  private static void cleanUpIndexes()
+  {
+    Class[] knownClasses = {Person.class};
+    for (Class c : knownClasses)
+    {
+      String dirName = c.getName();
+      File file = new File(dirName);
+      if (file.exists())
+      {
+        recursiveDelete(file);
+      }
+    }
+  }
+
+  private static void recursiveDelete(File f)
+  {
+    if (f.isDirectory())
+    {
+      File[] files = f.listFiles();
+      for (File file : files) recursiveDelete(file);
+    }
+    else
+    {
+      f.delete();
+    }
+  }
+
+
+}

Added: search/trunk/src/test/org/hibernate/search/test/Person.java
===================================================================
--- search/trunk/src/test/org/hibernate/search/test/Person.java                  (rev 0)
+++ search/trunk/src/test/org/hibernate/search/test/Person.java  2008-07-22 10:24:20 UTC (rev 14963)
@@(protected) @@
+package org.hibernate.search.test;
+
+import org.hibernate.search.annotations.*;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.io.Serializable;
+
+import java.io.Serializable;
+
+/**
+ * @author Navin Surtani - navin@(protected)
+ *
+ * This is the class that the LocalCacheTest will use to populate a searchable cache instance and then search the cache.
+ *
+ */
+@(protected)
+@(protected)
+public class Person implements Serializable
+{
+  private static final Log log = LogFactory.getLog(Person.class);
+
+
+  @Field(store = Store.YES)
+  private String name;
+  @Field (store = Store.YES)
+  private String blurb;
+  @Field (store = Store.YES, index = Index.UN_TOKENIZED )
+  private int age;
+
+  public String getName()
+  {
+    return name;
+  }
+
+  public void setName(String name)
+  {
+    this.name = name;
+  }
+
+  public String getBlurb()
+  {
+    return blurb;
+  }
+
+  public void setBlurb(String blurb)
+  {
+    this.blurb = blurb;
+  }
+
+  public int getAge()
+  {
+    return age;
+  }
+
+  public void setAge(int age)
+  {
+    this.age = age;
+  }
+
+  public boolean equals(Object o)
+  {
+    if (this == o) return true;
+    if (o == null || getClass() != o.getClass()) return false;
+
+    Person person = (Person) o;
+
+    if (blurb != null ? !blurb.equals(person.blurb) : person.blurb != null) return false;
+    if (name != null ? !name.equals(person.name) : person.name != null) return false;
+
+    return true;
+  }
+
+  public int hashCode()
+  {
+    int result;
+    result = (name != null ? name.hashCode() : 0);
+    result = 31 * result + (blurb != null ? blurb.hashCode() : 0);
+    return result;
+  }
+
+
+  public String toString()
+  {
+    return "Person{" +
+         "name='" + name + '\'' +
+         ", blurb='" + blurb + '\'' +
+         '}';
+  }
+}

_______________________________________________
hibernate-commits mailing list
hibernate-commits@(protected)
https://lists.jboss.org/mailman/listinfo/hibernate-commits
©2008 gg3721.com - Jax Systems, LLC, U.S.A.