[TEST] enable inline scripts on demand in bw comp tests

We currently have a single bw comp test (FunctionScoreBackwardCompatibilityTests) that requires inline scripts on.
After introducing fine-grained script settings, we moved the internal cluster to use the newer settings, but they are not supported by older nodes started as part of the bw comp tests. Moved script settings out of the default settings, so they won't be part of the ordinary settings when running bw comp tests.
Added logic in FunctionScoreBackwardCompatibilityTests to enable dynamic scripts using the proper setting, depending on the version of the node.
This commit is contained in:
javanna 2015-03-26 15:05:03 +01:00 committed by Luca Cavanna
parent d9628649a2
commit 18b02d58a4
4 changed files with 38 additions and 13 deletions

View File

@ -18,11 +18,14 @@
*/ */
package org.elasticsearch.search.functionscore; package org.elasticsearch.search.functionscore;
import org.elasticsearch.Version;
import org.elasticsearch.action.index.IndexRequestBuilder; import org.elasticsearch.action.index.IndexRequestBuilder;
import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.cluster.routing.allocation.decider.EnableAllocationDecider; import org.elasticsearch.cluster.routing.allocation.decider.EnableAllocationDecider;
import org.elasticsearch.common.geo.GeoPoint; import org.elasticsearch.common.geo.GeoPoint;
import org.elasticsearch.common.settings.ImmutableSettings; import org.elasticsearch.common.settings.ImmutableSettings;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.script.ScriptService;
import org.elasticsearch.test.ElasticsearchBackwardsCompatIntegrationTest; import org.elasticsearch.test.ElasticsearchBackwardsCompatIntegrationTest;
import org.junit.Test; import org.junit.Test;
@ -100,6 +103,24 @@ public class FunctionScoreBackwardCompatibilityTests extends ElasticsearchBackwa
logger.debug("done function_score while upgrading"); logger.debug("done function_score while upgrading");
} }
@Override
protected Settings nodeSettings(int nodeOrdinal) {
//enable scripting on the internal nodes
return ImmutableSettings.builder().put(super.nodeSettings(nodeOrdinal)).put("script.inline", "on").build();
}
@Override
protected Settings externalNodeSettings(int nodeOrdinal) {
//enable scripting on the external nodes using the proper setting depending on the bwc version
ImmutableSettings.Builder builder = ImmutableSettings.builder().put(super.externalNodeSettings(nodeOrdinal));
if (compatibilityVersion().before(Version.V_1_6_0)) {
builder.put(ScriptService.DISABLE_DYNAMIC_SCRIPTING_SETTING, false);
} else {
builder.put("script.inline", "on");
}
return builder.build();
}
private void checkFunctionScoreStillWorks(String... ids) throws ExecutionException, InterruptedException, IOException { private void checkFunctionScoreStillWorks(String... ids) throws ExecutionException, InterruptedException, IOException {
SearchResponse response = client().search( SearchResponse response = client().search(
searchRequest().source( searchRequest().source(

View File

@ -160,16 +160,7 @@ public abstract class ElasticsearchBackwardsCompatIntegrationTest extends Elasti
@Override @Override
protected Settings nodeSettings(int nodeOrdinal) { protected Settings nodeSettings(int nodeOrdinal) {
ImmutableSettings.Builder builder = ImmutableSettings.builder().put(requiredSettings()) return commonNodeSettings(nodeOrdinal);
.put(TransportModule.TRANSPORT_TYPE_KEY, NettyTransport.class.getName()) // run same transport / disco as external
.put(TransportModule.TRANSPORT_SERVICE_TYPE_KEY, TransportService.class.getName());
if (compatibilityVersion().before(Version.V_1_3_2)) {
// if we test against nodes before 1.3.2 we disable all the compression due to a known bug
// see #7210
builder.put(Transport.TransportSettings.TRANSPORT_TCP_COMPRESS, false)
.put(RecoverySettings.INDICES_RECOVERY_COMPRESS, false);
}
return builder.build();
} }
public void assertAllShardsOnNodes(String index, String pattern) { public void assertAllShardsOnNodes(String index, String pattern) {
@ -186,7 +177,20 @@ public abstract class ElasticsearchBackwardsCompatIntegrationTest extends Elasti
} }
} }
protected Settings commonNodeSettings(int nodeOrdinal) {
ImmutableSettings.Builder builder = ImmutableSettings.builder().put(requiredSettings())
.put(TransportModule.TRANSPORT_TYPE_KEY, NettyTransport.class.getName()) // run same transport / disco as external
.put(TransportModule.TRANSPORT_SERVICE_TYPE_KEY, TransportService.class.getName());
if (compatibilityVersion().before(Version.V_1_3_2)) {
// if we test against nodes before 1.3.2 we disable all the compression due to a known bug
// see #7210
builder.put(Transport.TransportSettings.TRANSPORT_TCP_COMPRESS, false)
.put(RecoverySettings.INDICES_RECOVERY_COMPRESS, false);
}
return builder.build();
}
protected Settings externalNodeSettings(int nodeOrdinal) { protected Settings externalNodeSettings(int nodeOrdinal) {
return addLoggerSettings(nodeSettings(nodeOrdinal)); return addLoggerSettings(commonNodeSettings(nodeOrdinal));
} }
} }

View File

@ -1613,6 +1613,8 @@ public abstract class ElasticsearchIntegrationTest extends ElasticsearchTestCase
// from failing on nodes without enough disk space // from failing on nodes without enough disk space
.put(DiskThresholdDecider.CLUSTER_ROUTING_ALLOCATION_LOW_DISK_WATERMARK, "1b") .put(DiskThresholdDecider.CLUSTER_ROUTING_ALLOCATION_LOW_DISK_WATERMARK, "1b")
.put(DiskThresholdDecider.CLUSTER_ROUTING_ALLOCATION_HIGH_DISK_WATERMARK, "1b") .put(DiskThresholdDecider.CLUSTER_ROUTING_ALLOCATION_HIGH_DISK_WATERMARK, "1b")
.put("script.indexed", "on")
.put("script.inline", "on")
.build(); .build();
} }

View File

@ -269,8 +269,6 @@ public final class InternalTestCluster extends TestCluster {
builder.put("http.port", basePort+101 + "-" + (basePort+200)); builder.put("http.port", basePort+101 + "-" + (basePort+200));
builder.put("config.ignore_system_properties", true); builder.put("config.ignore_system_properties", true);
builder.put("node.mode", NODE_MODE); builder.put("node.mode", NODE_MODE);
builder.put("script.indexed", "on");
builder.put("script.inline", "on");
builder.put("http.pipelining", enableHttpPipelining); builder.put("http.pipelining", enableHttpPipelining);
builder.put("plugins." + PluginsService.LOAD_PLUGIN_FROM_CLASSPATH, false); builder.put("plugins." + PluginsService.LOAD_PLUGIN_FROM_CLASSPATH, false);
builder.put(NodeEnvironment.SETTING_CUSTOM_DATA_PATH_ENABLED, true); builder.put(NodeEnvironment.SETTING_CUSTOM_DATA_PATH_ENABLED, true);