package com.redhat.satellite.search.index.tests;
import com.redhat.satellite.search.index.IndexManager;
import com.redhat.satellite.search.index.IndexingException;
import com.redhat.satellite.search.index.Result;
import com.redhat.satellite.search.index.QueryParseException;
import com.redhat.satellite.search.index.builder.BuilderFactory;
import com.redhat.satellite.search.index.builder.DocumentBuilder;
import com.redhat.satellite.search.index.builder.PackageDocumentBuilder;
import com.redhat.satellite.search.tests.BaseTestCase;
import com.redhat.satellite.search.tests.TestUtil;
import com.redhat.satellite.search.config.Configuration;
import org.apache.lucene.document.Document;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class IndexManagerTest extends BaseTestCase {
private IndexManager indexManager;
public void setUp() throws Exception {
super.setUp();
indexManager = (IndexManager)
container.getComponentInstance(IndexManager.class);
}
public void testIndexing() throws IndexingException {
String index = "foo";
Long objectId = new Long(123);
Map<String, String> meta = new HashMap<String, String>();
meta.put("name", "foo");
meta.put("desc", "A really nice foo");
meta.put("size", "12345");
meta.put("dateCreated", "7/13/2007");
DocumentBuilder pdb = new PackageDocumentBuilder();
Document doc = pdb.buildDocument(objectId, meta);
indexManager.addToIndex(index, doc, "en");
}
public void testQuerying()
throws IndexingException, QueryParseException {
String index = "foo";
Long objectId = new Long(123);
Map<String, String> meta = new HashMap<String, String>();
meta.put("name", "foo");
meta.put("desc", "A really nice foo");
meta.put("size", "12345");
meta.put("dateCreated", "7/13/2007");
DocumentBuilder pdb = new PackageDocumentBuilder();
Document doc = pdb.buildDocument(objectId, meta);
indexManager.addToIndex(index, doc, "en");
List<Result> results = indexManager.search(index, "name:foo", "en");
assertTrue(results.size() >= 1);
results = indexManager.search(index, "desc:really", "en");
assertTrue(results.size() >= 1);
}
public void StillNeedsWork_testQueryDocs()
throws IOException, IndexingException, QueryParseException {
Configuration config = TestUtil.makeConfiguration();
config.setString("search.index_work_dir", "/var/lib/rhn/search/indexes/");
IndexManager indexMgr = new IndexManager(config);
//
// TODO: Revisit how docs data gets injected for testing.
// Currently relying on docs data to already exist for now.
//
System.out.println("We are expecting nutch to have been run previously, " +
"and the index files to be copied to "+ config.getString("search.index_work_dir") +
BuilderFactory.DOCS_TYPE);
String index = BuilderFactory.DOCS_TYPE;
String query = new String("redhat");
List<Result> results = indexMgr.search(index, query, "en");
System.out.println("Number of results returned is " + results.size());
assertTrue(results.size() >= 1);
}
@SuppressWarnings("unchecked")
@Override
protected Class[] getComponentClasses() {
return TestUtil.buildComponentsList(IndexManager.class);
}
}