Class TestHarness


  • public class TestHarness
    extends BaseTestHarness
    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.

    • Field Detail

      • coreName

        public String coreName
      • container

        protected volatile org.apache.solr.core.CoreContainer container
      • updater

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

      • TestHarness

        public TestHarness​(String coreName,
                           String dataDirectory,
                           org.apache.solr.core.SolrConfig solrConfig,
                           String schemaFile)
        Parameters:
        coreName - to initialize
        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,
                           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,
                           String dataDir,
                           String solrConfig,
                           String indexSchema)
        Parameters:
        coreName - to initialize
        dataDir - path for index data, will not be cleaned up
        solrConfig - solrconfig resource name
        indexSchema - schema resource name
      • TestHarness

        public TestHarness​(String coreName,
                           String dataDir,
                           org.apache.solr.core.SolrConfig solrConfig,
                           org.apache.solr.schema.IndexSchema indexSchema)
      • TestHarness

        public TestHarness​(Path solrHome,
                           String solrXml)
        Create a TestHarness using a specific solr home directory and solr xml
        Parameters:
        solrHome - the solr home directory
        solrXml - the text of a solrxml
      • TestHarness

        public TestHarness​(org.apache.solr.core.NodeConfig nodeConfig)
      • TestHarness

        public TestHarness​(org.apache.solr.core.NodeConfig config,
                           org.apache.solr.core.CoresLocator coresLocator)
        Create a TestHarness using a specific config
        Parameters:
        config - the ConfigSolr to use
    • Method Detail

      • createConfig

        public static org.apache.solr.core.SolrConfig createConfig​(Path solrHome,
                                                                   String coreName,
                                                                   String confFile)
        Creates a SolrConfig object for the specified coreName assuming it follows the basic conventions of being a relative path in the solrHome dir. (ie: ${solrHome}/${coreName}/conf/${confFile}
      • buildTestNodeConfig

        public static org.apache.solr.core.NodeConfig buildTestNodeConfig​(Path solrHome)
      • getCoreContainer

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

        public org.apache.solr.core.SolrCore getCore()
        Gets a core that does not have its refcount incremented (i.e. there is no need to close when done). This is not MT safe in conjunction with reloads!
      • getCoreInc

        public org.apache.solr.core.SolrCore getCoreInc()
        Gets the core with its reference count incremented. You must call core.close() when done!
      • update

        public String update​(String xml)
        Processes an "update" (add, commit or optimize) and returns the response as a String.
        Specified by:
        update in class BaseTestHarness
        Parameters:
        xml - The XML of the update
        Returns:
        The XML response to the update
      • validateQuery

        public String validateQuery​(org.apache.solr.request.SolrQueryRequest req,
                                    String... tests)
                             throws 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 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 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
      • close

        public void close()
        Shuts down and frees any resources