Search in sources :

Example 1 with ManagedWordSetResource

use of org.apache.solr.rest.schema.analysis.ManagedWordSetResource in project lucene-solr by apache.

the class TestRestManager method testManagedResourceRegistrationAndInitialization.

/**
   * Test RestManager initialization and handling of registered ManagedResources. 
   */
@Test
@Ignore
public void testManagedResourceRegistrationAndInitialization() throws Exception {
    // first, we need to register some ManagedResources, which is done with the registry
    // provided by the SolrResourceLoader
    SolrResourceLoader loader = new SolrResourceLoader(Paths.get("./"));
    RestManager.Registry registry = loader.getManagedResourceRegistry();
    assertNotNull("Expected a non-null RestManager.Registry from the SolrResourceLoader!", registry);
    String resourceId = "/config/test/foo";
    registry.registerManagedResource(resourceId, ManagedWordSetResource.class, new MockAnalysisComponent());
    // verify the two different components can register the same ManagedResource in the registry
    registry.registerManagedResource(resourceId, ManagedWordSetResource.class, new MockAnalysisComponent());
    // verify we can register another resource under a different resourceId
    registry.registerManagedResource("/config/test/foo2", ManagedWordSetResource.class, new MockAnalysisComponent());
    ignoreException("REST API path .* already registered to instances of ");
    String failureMessage = "Should not be able to register a different" + " ManagedResource implementation for {}";
    // of ManagedResource implementation under the same resourceId
    try {
        registry.registerManagedResource(resourceId, BogusManagedResource.class, new MockAnalysisComponent());
        fail(String.format(Locale.ROOT, failureMessage, resourceId));
    } catch (SolrException solrExc) {
    // expected output
    }
    resetExceptionIgnores();
    ignoreException("is a reserved endpoint used by the Solr REST API!");
    failureMessage = "Should not be able to register reserved endpoint {}";
    // verify that already-spoken-for REST API endpoints can't be registered
    Set<String> reservedEndpoints = registry.getReservedEndpoints();
    assertTrue(reservedEndpoints.size() > 2);
    assertTrue(reservedEndpoints.contains(RestManager.SCHEMA_BASE_PATH + RestManager.MANAGED_ENDPOINT));
    for (String endpoint : reservedEndpoints) {
        try {
            registry.registerManagedResource(endpoint, BogusManagedResource.class, new MockAnalysisComponent());
            fail(String.format(Locale.ROOT, failureMessage, endpoint));
        } catch (SolrException solrExc) {
        // expected output
        }
        // also try to register already-spoken-for REST API endpoints with a child segment
        endpoint += "/kid";
        try {
            registry.registerManagedResource(endpoint, BogusManagedResource.class, new MockAnalysisComponent());
            fail(String.format(Locale.ROOT, failureMessage, endpoint));
        } catch (SolrException solrExc) {
        // expected output
        }
    }
    resetExceptionIgnores();
    NamedList<String> initArgs = new NamedList<>();
    RestManager restManager = new RestManager();
    restManager.init(loader, initArgs, new ManagedResourceStorage.InMemoryStorageIO());
    ManagedResource res = restManager.getManagedResource(resourceId);
    assertTrue(res instanceof ManagedWordSetResource);
    assertEquals(res.getResourceId(), resourceId);
    // exception if it isn't registered
    restManager.getManagedResource("/config/test/foo2");
}
Also used : NamedList(org.apache.solr.common.util.NamedList) SolrResourceLoader(org.apache.solr.core.SolrResourceLoader) SolrException(org.apache.solr.common.SolrException) ManagedWordSetResource(org.apache.solr.rest.schema.analysis.ManagedWordSetResource) Ignore(org.junit.Ignore) Test(org.junit.Test)

Aggregations

SolrException (org.apache.solr.common.SolrException)1 NamedList (org.apache.solr.common.util.NamedList)1 SolrResourceLoader (org.apache.solr.core.SolrResourceLoader)1 ManagedWordSetResource (org.apache.solr.rest.schema.analysis.ManagedWordSetResource)1 Ignore (org.junit.Ignore)1 Test (org.junit.Test)1