From 38e86c3557c969d0ea466f0914b7441bf0cfe037 Mon Sep 17 00:00:00 2001 From: Daniel Widdis Date: Tue, 10 Sep 2024 12:30:58 -0700 Subject: [PATCH] Use a single thread executor to restore existing default behavior Signed-off-by: Daniel Widdis --- .../plugin/NeuralSearchTests.java | 43 ++++++++++++++----- 1 file changed, 33 insertions(+), 10 deletions(-) diff --git a/src/test/java/org/opensearch/neuralsearch/plugin/NeuralSearchTests.java b/src/test/java/org/opensearch/neuralsearch/plugin/NeuralSearchTests.java index ebc06d018..e9e10e77a 100644 --- a/src/test/java/org/opensearch/neuralsearch/plugin/NeuralSearchTests.java +++ b/src/test/java/org/opensearch/neuralsearch/plugin/NeuralSearchTests.java @@ -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; @@ -42,6 +45,7 @@ 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 { @@ -49,9 +53,14 @@ public class NeuralSearchTests extends OpenSearchQueryTestCase { @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() { @@ -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 components = plugin.createComponents( + null, + clusterService, + threadPool, + null, + null, + null, + null, + null, + null, + null, + null + ); + + assertEquals(1, components.size()); } public void testQuerySpecs() { @@ -118,7 +141,7 @@ public void testProcessors() { public void testSearchPhaseResultsProcessors() { Map> searchPhaseResultsProcessors = plugin - .getSearchPhaseResultsProcessors(parameters); + .getSearchPhaseResultsProcessors(searchParameters); assertNotNull(searchPhaseResultsProcessors); assertEquals(1, searchPhaseResultsProcessors.size()); assertTrue(searchPhaseResultsProcessors.containsKey("normalization-processor")); @@ -136,7 +159,7 @@ public void testGetSettings() { public void testRequestProcessors() { Map> processors = plugin.getRequestProcessors( - parameters + searchParameters ); assertNotNull(processors); assertNotNull(processors.get(NeuralQueryEnricherProcessor.TYPE)); @@ -144,7 +167,7 @@ public void testRequestProcessors() { } public void testResponseProcessors() { - Map> processors = plugin.getResponseProcessors(parameters); + Map> processors = plugin.getResponseProcessors(searchParameters); assertNotNull(processors); assertNotNull(processors.get(RerankProcessor.TYPE)); }