Class RestTestHarness

java.lang.Object
org.apache.solr.util.BaseTestHarness
org.apache.solr.util.RestTestHarness

public class RestTestHarness extends BaseTestHarness
Facilitates testing Solr's REST API via Jetty HttpClient. Immutable and cheap to construct.
  • Constructor Details

    • RestTestHarness

      public RestTestHarness(org.eclipse.jetty.client.HttpClient httpClient, URI baseUri)
      Creates a RestTestHarness for the given base URL using the provided HttpClient.
      Parameters:
      httpClient - The HttpClient to use for requests (not closed by this harness)
      baseUri - The base URI (e.g., "http://localhost:8983/solr/collection1")
  • Method Details

    • newWithUrl

      public RestTestHarness newWithUrl(String baseUrl)
      Creates a new instance for the specified URL, sharing the underlying HTTP client.
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • getBaseURL

      public String getBaseURL()
    • getBaseURI

      public URI getBaseURI()
    • getAdminURL

      public String getAdminURL()
    • query

      public String query(String request) throws IOException
      Processes a "query" using a URL path (with no context path) + optional query params, e.g. "/schema/fields?indent=off"
      Parameters:
      request - the URL path and optional query params
      Returns:
      The response to the query
      Throws:
      IOException - any exception in the response.
    • adminQuery

      public String adminQuery(String request) throws IOException
      Throws:
      IOException
    • head

      public int head(String request) throws IOException
      Processes a HEAD request using a URL path (with no context path) + optional query params and returns the status code.
      Parameters:
      request - The URL path and optional query params
      Returns:
      The HTTP status code
      Throws:
      IOException
    • put

      public String put(String request, String json) throws IOException
      Processes a PUT request using a URL path (with no context path) + optional query params, e.g. "/schema/fields/newfield", PUTs the given content, and returns the response content.
      Parameters:
      request - The URL path and optional query params
      json - The content to include with the PUT request
      Returns:
      The response to the PUT request
      Throws:
      IOException
    • delete

      public String delete(String request) throws IOException
      Processes a DELETE request using a URL path (with no context path) + optional query params, e.g. "/schema/analysis/protwords/english", and returns the response content.
      Parameters:
      request - the URL path and optional query params
      Returns:
      The response to the DELETE request
      Throws:
      IOException
    • post

      public String post(String request, String json) throws IOException
      Processes a POST request using a URL path (with no context path) + optional query params, e.g. "/schema/fields/newfield", PUTs the given content, and returns the response content.
      Parameters:
      request - The URL path and optional query params
      json - The content to include with the POST request
      Returns:
      The response to the POST request
      Throws:
      IOException
    • checkAdminResponseStatus

      public String checkAdminResponseStatus(String request, int code) throws Exception
      Throws:
      Exception
    • reload

      public void reload() throws Exception
      Reloads the first core listed in the response to the core admin handler STATUS command
      Specified by:
      reload in class BaseTestHarness
      Throws:
      Exception
    • 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
    • getHttpClient

      public org.eclipse.jetty.client.HttpClient getHttpClient()