Merge branch 'master' into trash_context_and_headers
This commit is contained in:
commit
5374bd8e34
|
@ -372,6 +372,7 @@ class BuildPlugin implements Plugin<Project> {
|
|||
systemProperty 'tests.artifact', project.name
|
||||
systemProperty 'tests.task', path
|
||||
systemProperty 'tests.security.manager', 'true'
|
||||
systemProperty 'jna.nosys', 'true'
|
||||
// default test sysprop values
|
||||
systemProperty 'tests.ifNoTests', 'fail'
|
||||
systemProperty 'es.logger.level', 'WARN'
|
||||
|
|
|
@ -41,6 +41,7 @@ public class StandaloneTestPlugin implements Plugin<Project> {
|
|||
]
|
||||
RandomizedTestingTask test = project.tasks.create(testOptions)
|
||||
test.configure(BuildPlugin.commonTestConfig(project))
|
||||
BuildPlugin.configureCompile(project)
|
||||
test.classpath = project.sourceSets.test.runtimeClasspath
|
||||
test.testClassesDir project.sourceSets.test.output.classesDir
|
||||
test.mustRunAfter(project.precommit)
|
||||
|
|
|
@ -30,8 +30,9 @@ final class AutoExpandReplicas {
|
|||
// the value we recognize in the "max" position to mean all the nodes
|
||||
private static final String ALL_NODES_VALUE = "all";
|
||||
public static final Setting<AutoExpandReplicas> SETTING = new Setting<>(IndexMetaData.SETTING_AUTO_EXPAND_REPLICAS, "false", (value) -> {
|
||||
final int min;
|
||||
final int max;
|
||||
// TODO change the following back to be final, https://github.com/elastic/elasticsearch/issues/16097
|
||||
int min;
|
||||
int max;
|
||||
if (Booleans.parseBoolean(value, true) == false) {
|
||||
return new AutoExpandReplicas(0, 0, false);
|
||||
}
|
||||
|
|
|
@ -51,6 +51,7 @@ import java.util.ArrayList;
|
|||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Map;
|
||||
import java.util.function.Function;
|
||||
|
||||
import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertAcked;
|
||||
import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertHitCount;
|
||||
|
@ -93,7 +94,7 @@ public class TribeIT extends ESIntegTestCase {
|
|||
|
||||
};
|
||||
cluster2 = new InternalTestCluster(InternalTestCluster.configuredNodeMode(), randomLong(), createTempDir(), 2, 2,
|
||||
Strings.randomBase64UUID(getRandom()), nodeConfigurationSource, 0, false, SECOND_CLUSTER_NODE_PREFIX, Collections.emptyList());
|
||||
Strings.randomBase64UUID(getRandom()), nodeConfigurationSource, 0, false, SECOND_CLUSTER_NODE_PREFIX, Collections.emptyList(), Function.identity());
|
||||
|
||||
cluster2.beforeTest(getRandom(), 0.1);
|
||||
cluster2.ensureAtLeastNumDataNodes(2);
|
||||
|
|
|
@ -28,7 +28,9 @@ import org.elasticsearch.env.Environment;
|
|||
import org.elasticsearch.node.internal.InternalSettingsPreparer;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
|
@ -115,9 +117,9 @@ public class CliToolTests extends CliToolTestCase {
|
|||
public void testMultiCommand() {
|
||||
Terminal terminal = new MockTerminal();
|
||||
int count = randomIntBetween(2, 7);
|
||||
final AtomicReference<Boolean>[] executed = new AtomicReference[count];
|
||||
for (int i = 0; i < executed.length; i++) {
|
||||
executed[i] = new AtomicReference<>(false);
|
||||
List<AtomicReference<Boolean>> executed = new ArrayList<>(count);
|
||||
for (int i = 0; i < count; i++) {
|
||||
executed.add(new AtomicReference<>(false));
|
||||
}
|
||||
NamedCommand[] cmds = new NamedCommand[count];
|
||||
for (int i = 0; i < count; i++) {
|
||||
|
@ -125,7 +127,7 @@ public class CliToolTests extends CliToolTestCase {
|
|||
cmds[i] = new NamedCommand("cmd" + index, terminal) {
|
||||
@Override
|
||||
public CliTool.ExitStatus execute(Settings settings, Environment env) throws Exception {
|
||||
executed[index].set(true);
|
||||
executed.get(index).set(true);
|
||||
return OK;
|
||||
}
|
||||
};
|
||||
|
@ -134,17 +136,17 @@ public class CliToolTests extends CliToolTestCase {
|
|||
int cmdIndex = randomIntBetween(0, count-1);
|
||||
CliTool.ExitStatus status = tool.execute("cmd" + cmdIndex);
|
||||
assertThat(status, is(OK));
|
||||
for (int i = 0; i < executed.length; i++) {
|
||||
assertThat(executed[i].get(), is(i == cmdIndex));
|
||||
for (int i = 0; i < count; i++) {
|
||||
assertThat(executed.get(i).get(), is(i == cmdIndex));
|
||||
}
|
||||
}
|
||||
|
||||
public void testMultiCommandUnknownCommand() {
|
||||
Terminal terminal = new MockTerminal();
|
||||
int count = randomIntBetween(2, 7);
|
||||
final AtomicReference<Boolean>[] executed = new AtomicReference[count];
|
||||
for (int i = 0; i < executed.length; i++) {
|
||||
executed[i] = new AtomicReference<>(false);
|
||||
List<AtomicReference<Boolean>> executed = new ArrayList<>(count);
|
||||
for (int i = 0; i < count; i++) {
|
||||
executed.add(new AtomicReference<>(false));
|
||||
}
|
||||
NamedCommand[] cmds = new NamedCommand[count];
|
||||
for (int i = 0; i < count; i++) {
|
||||
|
@ -152,7 +154,7 @@ public class CliToolTests extends CliToolTestCase {
|
|||
cmds[i] = new NamedCommand("cmd" + index, terminal) {
|
||||
@Override
|
||||
public CliTool.ExitStatus execute(Settings settings, Environment env) throws Exception {
|
||||
executed[index].set(true);
|
||||
executed.get(index).set(true);
|
||||
return OK;
|
||||
}
|
||||
};
|
||||
|
@ -160,8 +162,8 @@ public class CliToolTests extends CliToolTestCase {
|
|||
MultiCmdTool tool = new MultiCmdTool("tool", terminal, cmds);
|
||||
CliTool.ExitStatus status = tool.execute("cmd" + count); // "cmd" + count doesn't exist
|
||||
assertThat(status, is(CliTool.ExitStatus.USAGE));
|
||||
for (int i = 0; i < executed.length; i++) {
|
||||
assertThat(executed[i].get(), is(false));
|
||||
for (int i = 0; i < count; i++) {
|
||||
assertThat(executed.get(i).get(), is(false));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1803,7 +1803,16 @@ public abstract class ESIntegTestCase extends ESTestCase {
|
|||
|
||||
return new InternalTestCluster(nodeMode, seed, createTempDir(), minNumDataNodes, maxNumDataNodes,
|
||||
InternalTestCluster.clusterName(scope.name(), seed) + "-cluster", nodeConfigurationSource, getNumClientNodes(),
|
||||
InternalTestCluster.DEFAULT_ENABLE_HTTP_PIPELINING, nodePrefix, mockPlugins);
|
||||
InternalTestCluster.DEFAULT_ENABLE_HTTP_PIPELINING, nodePrefix, mockPlugins, getClientWrapper());
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a function that allows to wrap / filter all clients that are exposed by the test cluster. This is useful
|
||||
* for debugging or request / response pre and post processing. It also allows to intercept all calls done by the test
|
||||
* framework. By default this method returns an identity function {@link Function#identity()}.
|
||||
*/
|
||||
protected Function<Client,Client> getClientWrapper() {
|
||||
return Function.identity();
|
||||
}
|
||||
|
||||
/** Return the mock plugins the cluster should use */
|
||||
|
|
|
@ -115,6 +115,7 @@ import java.util.concurrent.Future;
|
|||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.function.Function;
|
||||
import java.util.function.Predicate;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
@ -145,8 +146,6 @@ public final class InternalTestCluster extends TestCluster {
|
|||
|
||||
private final ESLogger logger = Loggers.getLogger(getClass());
|
||||
|
||||
static NodeConfigurationSource DEFAULT_SETTINGS_SOURCE = NodeConfigurationSource.EMPTY;
|
||||
|
||||
/**
|
||||
* A node level setting that holds a per node random seed that is consistent across node restarts
|
||||
*/
|
||||
|
@ -222,14 +221,16 @@ public final class InternalTestCluster extends TestCluster {
|
|||
|
||||
private ServiceDisruptionScheme activeDisruptionScheme;
|
||||
private String nodeMode;
|
||||
private Function<Client, Client> clientWrapper;
|
||||
|
||||
public InternalTestCluster(String nodeMode, long clusterSeed, Path baseDir,
|
||||
int minNumDataNodes, int maxNumDataNodes, String clusterName, NodeConfigurationSource nodeConfigurationSource, int numClientNodes,
|
||||
boolean enableHttpPipelining, String nodePrefix, Collection<Class<? extends Plugin>> mockPlugins) {
|
||||
boolean enableHttpPipelining, String nodePrefix, Collection<Class<? extends Plugin>> mockPlugins, Function<Client, Client> clientWrapper) {
|
||||
super(clusterSeed);
|
||||
if ("network".equals(nodeMode) == false && "local".equals(nodeMode) == false) {
|
||||
throw new IllegalArgumentException("Unknown nodeMode: " + nodeMode);
|
||||
}
|
||||
this.clientWrapper = clientWrapper;
|
||||
this.nodeMode = nodeMode;
|
||||
this.baseDir = baseDir;
|
||||
this.clusterName = clusterName;
|
||||
|
@ -799,20 +800,20 @@ public final class InternalTestCluster extends TestCluster {
|
|||
}
|
||||
|
||||
private Client getOrBuildNodeClient() {
|
||||
if (nodeClient != null) {
|
||||
return nodeClient;
|
||||
if (nodeClient == null) {
|
||||
nodeClient = node.client();
|
||||
}
|
||||
return nodeClient = node.client();
|
||||
return clientWrapper.apply(nodeClient);
|
||||
}
|
||||
|
||||
private Client getOrBuildTransportClient() {
|
||||
if (transportClient != null) {
|
||||
return transportClient;
|
||||
if (transportClient == null) {
|
||||
/* no sniff client for now - doesn't work will all tests since it might throw NoNodeAvailableException if nodes are shut down.
|
||||
* we first need support of transportClientRatio as annotations or so
|
||||
*/
|
||||
transportClient = new TransportClientFactory(false, nodeConfigurationSource.transportClientSettings(), baseDir, nodeMode, nodeConfigurationSource.transportClientPlugins()).client(node, clusterName);
|
||||
}
|
||||
/* no sniff client for now - doesn't work will all tests since it might throw NoNodeAvailableException if nodes are shut down.
|
||||
* we first need support of transportClientRatio as annotations or so
|
||||
*/
|
||||
return transportClient = new TransportClientFactory(false, nodeConfigurationSource.transportClientSettings(), baseDir, nodeMode, nodeConfigurationSource.transportClientPlugins()).client(node, clusterName);
|
||||
return clientWrapper.apply(transportClient);
|
||||
}
|
||||
|
||||
void resetClient() throws IOException {
|
||||
|
|
|
@ -34,6 +34,7 @@ import java.util.Iterator;
|
|||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
import java.util.Set;
|
||||
import java.util.function.Function;
|
||||
|
||||
import static org.hamcrest.Matchers.equalTo;
|
||||
import static org.hamcrest.Matchers.hasEntry;
|
||||
|
@ -56,8 +57,8 @@ public class InternalTestClusterTests extends ESTestCase {
|
|||
String nodePrefix = randomRealisticUnicodeOfCodepointLengthBetween(1, 10);
|
||||
|
||||
Path baseDir = createTempDir();
|
||||
InternalTestCluster cluster0 = new InternalTestCluster("local", clusterSeed, baseDir, minNumDataNodes, maxNumDataNodes, clusterName, nodeConfigurationSource, numClientNodes, enableHttpPipelining, nodePrefix, Collections.emptyList());
|
||||
InternalTestCluster cluster1 = new InternalTestCluster("local", clusterSeed, baseDir, minNumDataNodes, maxNumDataNodes, clusterName, nodeConfigurationSource, numClientNodes, enableHttpPipelining, nodePrefix, Collections.emptyList());
|
||||
InternalTestCluster cluster0 = new InternalTestCluster("local", clusterSeed, baseDir, minNumDataNodes, maxNumDataNodes, clusterName, nodeConfigurationSource, numClientNodes, enableHttpPipelining, nodePrefix, Collections.emptyList(), Function.identity());
|
||||
InternalTestCluster cluster1 = new InternalTestCluster("local", clusterSeed, baseDir, minNumDataNodes, maxNumDataNodes, clusterName, nodeConfigurationSource, numClientNodes, enableHttpPipelining, nodePrefix, Collections.emptyList(), Function.identity());
|
||||
// TODO: this is not ideal - we should have a way to make sure ports are initialized in the same way
|
||||
assertClusters(cluster0, cluster1, false);
|
||||
|
||||
|
@ -114,8 +115,8 @@ public class InternalTestClusterTests extends ESTestCase {
|
|||
String nodePrefix = "foobar";
|
||||
|
||||
Path baseDir = createTempDir();
|
||||
InternalTestCluster cluster0 = new InternalTestCluster("local", clusterSeed, baseDir, minNumDataNodes, maxNumDataNodes, clusterName1, nodeConfigurationSource, numClientNodes, enableHttpPipelining, nodePrefix, Collections.emptyList());
|
||||
InternalTestCluster cluster1 = new InternalTestCluster("local", clusterSeed, baseDir, minNumDataNodes, maxNumDataNodes, clusterName2, nodeConfigurationSource, numClientNodes, enableHttpPipelining, nodePrefix, Collections.emptyList());
|
||||
InternalTestCluster cluster0 = new InternalTestCluster("local", clusterSeed, baseDir, minNumDataNodes, maxNumDataNodes, clusterName1, nodeConfigurationSource, numClientNodes, enableHttpPipelining, nodePrefix, Collections.emptyList(), Function.identity());
|
||||
InternalTestCluster cluster1 = new InternalTestCluster("local", clusterSeed, baseDir, minNumDataNodes, maxNumDataNodes, clusterName2, nodeConfigurationSource, numClientNodes, enableHttpPipelining, nodePrefix, Collections.emptyList(), Function.identity());
|
||||
|
||||
assertClusters(cluster0, cluster1, false);
|
||||
long seed = randomLong();
|
||||
|
|
Loading…
Reference in New Issue