org.apache.solr.util
Class TestHarness

java.lang.Object
  extended by org.apache.solr.util.TestHarness

public class TestHarness
extends Object

This class provides a simple harness that may be useful when writing testcases.

This class lives in the tests-framework source tree (and not in the test source tree), so that it will be included with even the most minimal solr distribution, in order to encourage plugin writers to create unit tests for their plugins.


Nested Class Summary
 class TestHarness.LocalRequestFactory
          A Factory that generates LocalSolrQueryRequest objects using a specified set of default options.
 
Field Summary
protected  org.apache.solr.core.CoreContainer container
           
 org.apache.solr.handler.UpdateRequestHandler updater
           
 
Constructor Summary
TestHarness(String dataDirectory)
          Assumes "solrconfig.xml" is the config file to use, and "schema.xml" is the schema path to use.
TestHarness(String coreName, org.apache.solr.core.CoreContainer.Initializer init)
           
TestHarness(String dataDirectory, org.apache.solr.core.SolrConfig solrConfig, org.apache.solr.schema.IndexSchema indexSchema)
           
TestHarness(String dataDirectory, org.apache.solr.core.SolrConfig solrConfig, String schemaFile)
           
TestHarness(String dataDirectory, String schemaFile)
          Assumes "solrconfig.xml" is the config file to use.
TestHarness(String dataDirectory, String configFile, String schemaFile)
           
 
Method Summary
 String checkUpdateStatus(String xml, String code)
          Validates that an "update" (add, commit or optimize) results in success.
 void close()
          Shuts down and frees any resources
static String commit(String... args)
          Helper that returns an <commit> String with optional key/val pairs.
static org.apache.solr.core.SolrConfig createConfig(String confFile)
           
static String deleteById(String id, String... args)
          Generates a delete by id xml string
static String deleteByQuery(String q, String... args)
          Generates a delete by query xml string
 org.apache.solr.core.SolrCore getCore()
           
 org.apache.solr.core.CoreContainer getCoreContainer()
           
 TestHarness.LocalRequestFactory getRequestFactory(String qtype, int start, int limit)
           
 TestHarness.LocalRequestFactory getRequestFactory(String qtype, int start, int limit, Map<String,String> args)
           
 TestHarness.LocalRequestFactory getRequestFactory(String qtype, int start, int limit, String... args)
          0 and Even numbered args are keys, Odd numbered args are values.
static StringBuffer makeSimpleDoc(String... fieldsAndValues)
          A helper that creates an xml <doc> containing all of the fields and values specified
static String optimize(String... args)
          Helper that returns an <optimize> String with optional key/val pairs.
 String query(org.apache.solr.request.SolrQueryRequest req)
          Processes a "query" using a user constructed SolrQueryRequest
 String query(String handler, org.apache.solr.request.SolrQueryRequest req)
          Processes a "query" using a user constructed SolrQueryRequest, and closes the request at the end.
 org.apache.solr.response.SolrQueryResponse queryAndResponse(String handler, org.apache.solr.request.SolrQueryRequest req)
          It is the users responsibility to close the request object when done with it.
 String update(String xml)
          Processes an "update" (add, commit or optimize) and returns the response as a String.
 String validateErrorUpdate(String xml)
          Validates that an "update" (add, commit or optimize) results in success.
 String validateQuery(org.apache.solr.request.SolrQueryRequest req, String... tests)
          Validates a "query" response against an array of XPath test strings
 String validateUpdate(String xml)
          Validates that an "update" (add, commit or optimize) results in success.
 String validateXPath(String xml, String... tests)
          A helper method which valides a String against an array of XPath test strings.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

container

protected org.apache.solr.core.CoreContainer container

updater

public org.apache.solr.handler.UpdateRequestHandler updater
Constructor Detail

TestHarness

public TestHarness(String dataDirectory)
Assumes "solrconfig.xml" is the config file to use, and "schema.xml" is the schema path to use.

Parameters:
dataDirectory - path for index data, will not be cleaned up

TestHarness

public TestHarness(String dataDirectory,
                   String schemaFile)
Assumes "solrconfig.xml" is the config file to use.

Parameters:
dataDirectory - path for index data, will not be cleaned up
schemaFile - path of schema file

TestHarness

public TestHarness(String dataDirectory,
                   String configFile,
                   String schemaFile)
Parameters:
dataDirectory - path for index data, will not be cleaned up
configFile - solrconfig filename
schemaFile - schema filename

TestHarness

public TestHarness(String dataDirectory,
                   org.apache.solr.core.SolrConfig solrConfig,
                   String schemaFile)
Parameters:
dataDirectory - path for index data, will not be cleaned up
solrConfig - solronfig instance
schemaFile - schema filename

TestHarness

public TestHarness(String dataDirectory,
                   org.apache.solr.core.SolrConfig solrConfig,
                   org.apache.solr.schema.IndexSchema indexSchema)
Parameters:
dataDirectory - path for index data, will not be cleaned up
solrConfig - solrconfig instance
indexSchema - schema instance

TestHarness

public TestHarness(String coreName,
                   org.apache.solr.core.CoreContainer.Initializer init)
Method Detail

createConfig

public static org.apache.solr.core.SolrConfig createConfig(String confFile)

getCoreContainer

public org.apache.solr.core.CoreContainer getCoreContainer()

getCore

public org.apache.solr.core.SolrCore getCore()

update

public String update(String xml)
Processes an "update" (add, commit or optimize) and returns the response as a String.

Parameters:
xml - The XML of the update
Returns:
The XML response to the update

validateUpdate

public String validateUpdate(String xml)
                      throws SAXException
Validates that an "update" (add, commit or optimize) results in success. :TODO: currently only deals with one add/doc at a time, this will need changed if/when SOLR-2 is resolved

Parameters:
xml - The XML of the update
Returns:
null if successful, otherwise the XML response to the update
Throws:
SAXException

validateErrorUpdate

public String validateErrorUpdate(String xml)
                           throws SAXException
Validates that an "update" (add, commit or optimize) results in success. :TODO: currently only deals with one add/doc at a time, this will need changed if/when SOLR-2 is resolved

Parameters:
xml - The XML of the update
Returns:
null if successful, otherwise the XML response to the update
Throws:
SAXException

checkUpdateStatus

public String checkUpdateStatus(String xml,
                                String code)
                         throws SAXException
Validates that an "update" (add, commit or optimize) results in success. :TODO: currently only deals with one add/doc at a time, this will need changed if/when SOLR-2 is resolved

Parameters:
xml - The XML of the update
Returns:
null if successful, otherwise the XML response to the update
Throws:
SAXException

validateQuery

public String validateQuery(org.apache.solr.request.SolrQueryRequest req,
                            String... tests)
                     throws IOException,
                            Exception
Validates a "query" response against an array of XPath test strings

Parameters:
req - the Query to process
Returns:
null if all good, otherwise the first test that fails.
Throws:
Exception - any exception in the response.
IOException - if there is a problem writing the XML
See Also:
LocalSolrQueryRequest

query

public String query(org.apache.solr.request.SolrQueryRequest req)
             throws IOException,
                    Exception
Processes a "query" using a user constructed SolrQueryRequest

Parameters:
req - the Query to process, will be closed.
Returns:
The XML response to the query
Throws:
Exception - any exception in the response.
IOException - if there is a problem writing the XML
See Also:
LocalSolrQueryRequest

query

public String query(String handler,
                    org.apache.solr.request.SolrQueryRequest req)
             throws IOException,
                    Exception
Processes a "query" using a user constructed SolrQueryRequest, and closes the request at the end.

Parameters:
handler - the name of the request handler to process the request
req - the Query to process, will be closed.
Returns:
The XML response to the query
Throws:
Exception - any exception in the response.
IOException - if there is a problem writing the XML
See Also:
LocalSolrQueryRequest

queryAndResponse

public org.apache.solr.response.SolrQueryResponse queryAndResponse(String handler,
                                                                   org.apache.solr.request.SolrQueryRequest req)
                                                            throws Exception
It is the users responsibility to close the request object when done with it. This method does not set/clear SolrRequestInfo

Throws:
Exception

validateXPath

public String validateXPath(String xml,
                            String... tests)
                     throws XPathExpressionException,
                            SAXException
A helper method which valides a String against an array of XPath test strings.

Parameters:
xml - The xml String to validate
tests - Array of XPath strings to test (in boolean mode) on the xml
Returns:
null if all good, otherwise the first test that fails.
Throws:
XPathExpressionException
SAXException

close

public void close()
Shuts down and frees any resources


makeSimpleDoc

public static StringBuffer makeSimpleDoc(String... fieldsAndValues)
A helper that creates an xml <doc> containing all of the fields and values specified

Parameters:
fieldsAndValues - 0 and Even numbered args are fields names odds are field values.

deleteByQuery

public static String deleteByQuery(String q,
                                   String... args)
Generates a delete by query xml string

Parameters:
q - Query that has not already been xml escaped
args - The attributes of the delete tag

deleteById

public static String deleteById(String id,
                                String... args)
Generates a delete by id xml string

Parameters:
id - ID that has not already been xml escaped
args - The attributes of the delete tag

optimize

public static String optimize(String... args)
Helper that returns an <optimize> String with optional key/val pairs.

Parameters:
args - 0 and Even numbered args are params, Odd numbered args are values.

commit

public static String commit(String... args)
Helper that returns an <commit> String with optional key/val pairs.

Parameters:
args - 0 and Even numbered args are params, Odd numbered args are values.

getRequestFactory

public TestHarness.LocalRequestFactory getRequestFactory(String qtype,
                                                         int start,
                                                         int limit)

getRequestFactory

public TestHarness.LocalRequestFactory getRequestFactory(String qtype,
                                                         int start,
                                                         int limit,
                                                         String... args)
0 and Even numbered args are keys, Odd numbered args are values.


getRequestFactory

public TestHarness.LocalRequestFactory getRequestFactory(String qtype,
                                                         int start,
                                                         int limit,
                                                         Map<String,String> args)


Copyright © 2000-2012 Apache Software Foundation. All Rights Reserved.