Skip to content

Commit

Permalink
Use a single thread executor to restore existing default behavior
Browse files Browse the repository at this point in the history
Signed-off-by: Daniel Widdis <[email protected]>
  • Loading branch information
dbwiddis committed Sep 10, 2024
1 parent f11ba32 commit 38e86c3
Showing 1 changed file with 33 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,15 @@
*/
package org.opensearch.neuralsearch.plugin;

import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.concurrent.Executors;

import org.junit.Before;
import org.mockito.Mock;
Expand Down Expand Up @@ -42,16 +45,22 @@
import org.opensearch.search.query.QueryPhaseSearcher;
import org.opensearch.threadpool.ExecutorBuilder;
import org.opensearch.threadpool.FixedExecutorBuilder;
import org.opensearch.threadpool.ThreadPool;

public class NeuralSearchTests extends OpenSearchQueryTestCase {

private NeuralSearch plugin;

@Mock
private SearchPipelineService searchPipelineService;
private SearchPipelinePlugin.Parameters parameters;
private SearchPipelinePlugin.Parameters searchParameters;
@Mock
private IngestService ingestService;
private Processor.Parameters ingestParameters;
@Mock
private ClusterService clusterService;
@Mock
private ThreadPool threadPool;

@Before
public void setup() {
Expand All @@ -60,15 +69,29 @@ public void setup() {
plugin = new NeuralSearch();

when(searchPipelineService.getClusterService()).thenReturn(clusterService);
parameters = new SearchPipelinePlugin.Parameters(null, null, null, null, null, null, searchPipelineService, null, null, null);
searchParameters = new SearchPipelinePlugin.Parameters(null, null, null, null, null, null, searchPipelineService, null, null, null);
ingestParameters = new Processor.Parameters(null, null, null, null, null, null, ingestService, null, null, null);
when(threadPool.executor(anyString())).thenReturn(Executors.newSingleThreadExecutor());
}

public void testCreateComponents() {
// Empty method to explain why createComponents isn't covered by tests
//
// CreateComponents uses initialize() methods on three other classes which sets static class variables.
// This breaks the encapsulation of tests and produces unpredictable behavior in these other tests.
// It's possible to work around these limitations but not worth it just to cover some lines of code
// clientAccessor can not be null, and this is the only way to access it from this test
plugin.getProcessors(ingestParameters);
Collection<Object> components = plugin.createComponents(
null,
clusterService,
threadPool,
null,
null,
null,
null,
null,
null,
null,
null
);

assertEquals(1, components.size());
}

public void testQuerySpecs() {
Expand Down Expand Up @@ -118,7 +141,7 @@ public void testProcessors() {

public void testSearchPhaseResultsProcessors() {
Map<String, org.opensearch.search.pipeline.Processor.Factory<SearchPhaseResultsProcessor>> searchPhaseResultsProcessors = plugin
.getSearchPhaseResultsProcessors(parameters);
.getSearchPhaseResultsProcessors(searchParameters);
assertNotNull(searchPhaseResultsProcessors);
assertEquals(1, searchPhaseResultsProcessors.size());
assertTrue(searchPhaseResultsProcessors.containsKey("normalization-processor"));
Expand All @@ -136,15 +159,15 @@ public void testGetSettings() {

public void testRequestProcessors() {
Map<String, org.opensearch.search.pipeline.Processor.Factory<SearchRequestProcessor>> processors = plugin.getRequestProcessors(
parameters
searchParameters
);
assertNotNull(processors);
assertNotNull(processors.get(NeuralQueryEnricherProcessor.TYPE));
assertNotNull(processors.get(NeuralSparseTwoPhaseProcessor.TYPE));
}

public void testResponseProcessors() {
Map<String, Factory<SearchResponseProcessor>> processors = plugin.getResponseProcessors(parameters);
Map<String, Factory<SearchResponseProcessor>> processors = plugin.getResponseProcessors(searchParameters);
assertNotNull(processors);
assertNotNull(processors.get(RerankProcessor.TYPE));
}
Expand Down

0 comments on commit 38e86c3

Please sign in to comment.