Skip to content

Commit

Permalink
Add testing constructor for PluginsService
Browse files Browse the repository at this point in the history
Signed-off-by: Craig Perkins <[email protected]>
  • Loading branch information
cwperks committed Jan 21, 2025
1 parent 07df814 commit df48c29
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 36 deletions.
37 changes: 37 additions & 0 deletions server/src/main/java/org/opensearch/plugins/PluginsService.java
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,43 @@ public List<String> getPluginSettingsFilter() {
return plugins.stream().flatMap(p -> p.v2().getSettingsFilter().stream()).collect(Collectors.toList());
}

/**
* Constructs a new PluginService
* @param settings The settings of the system
* @param modulesDirectory The directory modules exist in, or null if modules should not be loaded from the filesystem
* @param pluginsDirectory The directory plugins exist in, or null if plugins should not be loaded from the filesystem
* @param classpathPlugins Plugins that exist in the classpath which should be loaded
*/
public PluginsService(
Settings settings,
Path modulesDirectory,
Path pluginsDirectory,
Collection<Class<? extends Plugin>> classpathPlugins
) {
// Used for testing
this(
settings,
null,
modulesDirectory,
pluginsDirectory,
classpathPlugins.stream()
.map(
p -> new PluginInfo(
p.getName(),
"classpath plugin",
"NA",
Version.CURRENT,
"1.8",
p.getName(),
null,
Collections.emptyList(),
false
)
)
.collect(Collectors.toList())
);
}

/**
* Constructs a new PluginService
* @param settings The settings of the system
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,6 @@
import java.net.URL;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
Expand Down Expand Up @@ -101,23 +100,7 @@ public Settings additionalSettings() {
public static class FilterablePlugin extends Plugin implements ScriptPlugin {}

static PluginsService newPluginsService(Settings settings, Class<? extends Plugin>... classpathPlugins) {
Collection<PluginInfo> pluginInfos = new ArrayList<>();
for (Class<? extends Plugin> plugin : classpathPlugins) {
pluginInfos.add(
new PluginInfo(
plugin.getName(),
"classpath plugin",
"NA",
Version.CURRENT,
"1.8",
plugin.getName(),
null,
Collections.emptyList(),
false
)
);
}
return new PluginsService(settings, null, null, TestEnvironment.newEnvironment(settings).pluginsDir(), pluginInfos);
return new PluginsService(settings, null, TestEnvironment.newEnvironment(settings).pluginsDir(), Arrays.asList(classpathPlugins));
}

public void testAdditionalSettings() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,6 @@
import org.opensearch.node.InternalSettingsPreparer;
import org.opensearch.plugins.MapperPlugin;
import org.opensearch.plugins.Plugin;
import org.opensearch.plugins.PluginInfo;
import org.opensearch.plugins.PluginsService;
import org.opensearch.plugins.ScriptPlugin;
import org.opensearch.plugins.SearchPlugin;
Expand Down Expand Up @@ -390,23 +389,7 @@ private static class ServiceHolder implements Closeable {
throw new AssertionError("node.name must be set");
});
PluginsService pluginsService;
Collection<PluginInfo> pluginInfos = new ArrayList<>();
for (Class<? extends Plugin> plugin : plugins) {
pluginInfos.add(
new PluginInfo(
plugin.getName(),
"classpath plugin",
"NA",
Version.CURRENT,
"1.8",
plugin.getName(),
null,
Collections.emptyList(),
false
)
);
}
pluginsService = new PluginsService(nodeSettings, null, env.modulesDir(), env.pluginsDir(), pluginInfos);
pluginsService = new PluginsService(nodeSettings, env.modulesDir(), env.pluginsDir(), plugins);

client = (Client) Proxy.newProxyInstance(Client.class.getClassLoader(), new Class[] { Client.class }, clientInvocationHandler);
ScriptModule scriptModule = createScriptModule(pluginsService.filterPlugins(ScriptPlugin.class));
Expand Down

0 comments on commit df48c29

Please sign in to comment.