Giter VIP home page Giter VIP logo

elasticsearch-cluster-runner's Introduction

Elasticsearch Cluster Runner Java CI with Maven

This project runs Elasticsearch cluster on one JVM instance for your development/testing easily. You can use Elasticsearch Cluster Runner as Embedded Elasticsearch in your application.

Version

Run on Your Application

Put elasticsearch-cluster-runner if using Maven:

<dependency>
    <groupId>org.codelibs</groupId>
    <artifactId>elasticsearch-cluster-runner</artifactId>
    <version>x.x.x.0</version>
</dependency>

and add Maven repository to pom.xml:

<repositories>
	<repository>
		<id>central</id>
		<url>https://repo1.maven.org/maven2</url>
		<releases>
			<enabled>true</enabled>
		</releases>
		<snapshots>
			<enabled>true</enabled>
		</snapshots>
	</repository>
	<repository>
		<id>codelibs.org</id>
		<name>CodeLibs Repository</name>
		<url>https://maven.codelibs.org/</url>
	</repository>
</repositories>

Start Cluster Runner

import static org.codelibs.elasticsearch.runner.ElasticsearchClusterRunner.newConfigs;
...
// create runner instance
ElasticsearchClusterRunner runner = new ElasticsearchClusterRunner();
// create ES nodes
runner.onBuild(new ElasticsearchClusterRunner.Builder() {
    @Override
    public void build(final int number, final Builder settingsBuilder) {
        // put elasticsearch settings
        // settingsBuilder.put("index.number_of_replicas", 0);
    }
}).build(newConfigs());

build(Configs) method configures/starts Clsuter Runner.

Stop Cluster Runner

// close runner
runner.close();

Clean up

// delete all files(config and index)
runner.clean();

Run on JUnit

Put elasticsearch-cluster-runner as test scope:

<dependency>
    <groupId>org.codelibs</groupId>
    <artifactId>elasticsearch-cluster-runner</artifactId>
    <version>x.x.x.0</version>
    <scope>test</scope>
</dependency>

and see ElasticsearchClusterRunnerTest.

Run as Standalone

Install Maven

Download and install Maven 3 from https://maven.apache.org/.

Clone This Project

git clone https://github.com/codelibs/elasticsearch-cluster-runner.git

Build This Project

mvn compile

Run/Stop Elasticsearch Cluster

Run Cluster

Run:

mvn exec:java 

The default cluster has 3 nodes and the root directory for Elasticsearch is es_home. Nodes use 9201-9203 port for HTTP and 9301-9303 port for Transport. If you want to change the number of node, Run:

mvn exec:java -Dexec.args="-basePath es_home -numOfNode 4"

Stop Cluster

Type Ctrl-c or kill the process.

elasticsearch-cluster-runner's People

Contributors

deka0106 avatar dependabot[bot] avatar keiichiw avatar marevol avatar mictech avatar muffix avatar noelalonso avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

elasticsearch-cluster-runner's Issues

NPE when running the container with 'disableESLogger()' config

Hello.
I'm using the following config:

ElasticsearchClusterRunner.Configs configs = ElasticsearchClusterRunner.newConfigs()
               .clusterName("es-test")
               .numOfNode(1)
               .disableESLogger()
               .printOnFailure();

but when I start the runner I get a NPE:

Caused by: java.lang.NullPointerException: Cannot invoke "org.elasticsearch.logging.internal.spi.LoggerFactory.getLogger(java.lang.Class)" because the return value of "org.elasticsearch.logging.internal.spi.LoggerFactory.provider()" is null
	at org.elasticsearch.logging.LogManager.getLogger(LogManager.java:35)
	at org.elasticsearch.plugins.scanners.ExtensibleFileReader.<clinit>(ExtensibleFileReader.java:24)

I see that in the class ElsticsearchClusterRunner al the line 465 we skip the config of the logger, so LoggerFactory.provider() will return null.

I use Elasictsearch 8.7.1 and elasticsearch-cluster-runner 8.7.1.0

Thanks in advance

cluster-runner 7.16.3 causes NPE, can't find plugin

2022-02-17 15:18:50,152 SUITE-MyTest-seed#[66F66F576B5EB0AF] ERROR Unable to locate plugin type for HeaderWarningAppender
2022-02-17 15:18:50,200 SUITE-MyTest-seed#[66F66F576B5EB0AF] ERROR Unable to locate plugin for HeaderWarningAppender
2022-02-17 15:18:50,200 SUITE-MyTest-seed#[66F66F576B5EB0AF] ERROR Unable to invoke factory method in class org.apache.logging.log4j.core.config.AppendersPlugin for element Appenders: java.lang.NullPointerException java.lang.NullPointerException
at org.apache.logging.log4j.core.config.plugins.visitors.PluginElementVisitor.visit(PluginElementVisitor.java:52)
at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.generateParameters(PluginBuilder.java:262)
at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:135)
at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:1120)
at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:1045)
at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:651)
at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:247)
at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:293)
at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:626)
at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:699)
at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:716)
at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:270)
at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:155)
at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:47)
at org.apache.logging.log4j.LogManager.getContext(LogManager.java:196)
at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:599)
at com.av.harness.elasticsearch.AbstractElasticsearchTestHarness.(AbstractElasticsearchTestHarness.java:46)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at com.carrotsearch.randomizedtesting.RandomizedRunner$2.run(RandomizedRunner.java:623)

2022-02-17 15:18:50,201 SUITE-MyTest-seed#[66F66F576B5EB0AF] ERROR Unable to locate appender "console" for logger config "root"
2022-02-17 15:18:50,201 SUITE-MyTest-seed#[66F66F576B5EB0AF] ERROR Unable to locate appender "header_warning" for logger config "org.elasticsearch.deprecation"

this is new behavior after changing from cluster runner 7.8.0 to 7.16.3.

Missing nori analyzer

i have sourc code pluginType org.test.plugin.analysis.TestPlugin

org.test.plugin.analysis.TestPlugin has the actual plugin source, so why not?

runner = new ElasticsearchClusterRunner();
        runner.onBuild(new ElasticsearchClusterRunner.Builder() {
            @Override
            public void build(final int number, final Settings.Builder settingsBuilder) {
                settingsBuilder.put("http.cors.enabled", true);
                settingsBuilder.put("http.cors.allow-origin", "*");
                settingsBuilder.put("discovery.type", "single-node");
                // settingsBuilder.putList("discovery.seed_hosts", "127.0.0.1:9301");
                // settingsBuilder.putList("cluster.initial_master_nodes", "127.0.0.1:9301");
            }
        }).build(new ElasticsearchClusterRunner.Configs().clusterName(clusterName).numOfNode(numOfNode).pluginTypes("org.test.plugin.analysis.TestPlugin"));

mappings.json

{
  "settings": {
    "index": {
      "analysis": {
        "tokenizer": {
          "korean_nori_tokenizer": {
            "type": "reloadable_nori_tokenizer",
            "decompound_mode": "discard"
          }
        },
        "analyzer": {
          "my_nori_analyzer": {
            "tokenizer": "korean_nori_tokenizer",
            "filter": [
              "my_nori_filter"
            ]
          }
        },
        "filter": {
          "my_nori_filter": {
            "type": "nori_part_of_speech",
            "stoptags": [
              "SP"
            ],
            "updateable": true
          }
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "test": {
        "type": "keyword",
        "fields": {
          "nori": {
            "search_analyzer": "my_nori_analyzer",
            "analyzer": "my_nori_analyzer",
            "type": "text"
          }
        }
      }
    }
  }
}
[2022-01-10T20:37:13,949][INFO ][o.e.p.PluginsService     ] loaded plugin [org.elasticsearch.analysis.common.CommonAnalysisPlugin]
[2022-01-10T20:37:13,950][INFO ][o.e.p.PluginsService     ] loaded plugin [org.elasticsearch.index.mapper.MapperExtrasPlugin]
[2022-01-10T20:37:13,950][INFO ][o.e.p.PluginsService     ] loaded plugin [org.elasticsearch.index.rankeval.RankEvalPlugin]
[2022-01-10T20:37:13,950][INFO ][o.e.p.PluginsService     ] loaded plugin [org.elasticsearch.index.reindex.ReindexPlugin]
[2022-01-10T20:37:13,950][INFO ][o.e.p.PluginsService     ] loaded plugin [org.elasticsearch.ingest.common.IngestCommonPlugin]
[2022-01-10T20:37:13,950][INFO ][o.e.p.PluginsService     ] loaded plugin [org.elasticsearch.ingest.useragent.IngestUserAgentPlugin]
[2022-01-10T20:37:13,951][INFO ][o.e.p.PluginsService     ] loaded plugin [org.elasticsearch.join.ParentJoinPlugin]
[2022-01-10T20:37:13,951][INFO ][o.e.p.PluginsService     ] loaded plugin [org.elasticsearch.painless.PainlessPlugin]
[2022-01-10T20:37:13,951][INFO ][o.e.p.PluginsService     ] loaded plugin [org.elasticsearch.percolator.PercolatorPlugin]
[2022-01-10T20:37:13,951][INFO ][o.e.p.PluginsService     ] loaded plugin [org.elasticsearch.plugin.analysis. TestPlugin]
[2022-01-10T20:37:13,952][INFO ][o.e.p.PluginsService     ] loaded plugin [org.elasticsearch.plugin.repository.url.URLRepositoryPlugin]
[2022-01-10T20:37:13,952][INFO ][o.e.p.PluginsService     ] loaded plugin [org.elasticsearch.script.expression.ExpressionPlugin]
[2022-01-10T20:37:13,952][INFO ][o.e.p.PluginsService     ] loaded plugin [org.elasticsearch.script.mustache.MustachePlugin]
[2022-01-10T20:37:13,952][INFO ][o.e.p.PluginsService     ] loaded plugin [org.elasticsearch.search.aggregations.matrix.MatrixAggregationPlugin]
[2022-01-10T20:37:13,952][INFO ][o.e.p.PluginsService     ] loaded plugin [org.elasticsearch.transport.Netty4Plugin]

unknown setting [index.mappings.properties.test.fields.nori.analyzer] please check that any required plugins are installed, or check the breaking changes documentation for removed settings
java.lang.IllegalArgumentException: unknown setting [index.mappings.properties.test.fields.nori.analyzer] please check that any required plugins are installed, or check the breaking changes documentation for removed settings
	at org.elasticsearch.common.settings.AbstractScopedSettings.validate(AbstractScopedSettings.java:544)
	at org.elasticsearch.common.settings.AbstractScopedSettings.validate(AbstractScopedSettings.java:489)
	at org.elasticsearch.common.settings.AbstractScopedSettings.validate(AbstractScopedSettings.java:460)
	at org.elasticsearch.common.settings.AbstractScopedSettings.validate(AbstractScopedSettings.java:431)
	at org.elasticsearch.cluster.metadata.MetadataCreateIndexService.normalizeRequestSetting(MetadataCreateIndexService.java:319)
	at org.elasticsearch.cluster.metadata.MetadataCreateIndexService.onlyCreateIndex(MetadataCreateIndexService.java:289)
	at org.elasticsearch.cluster.metadata.MetadataCreateIndexService.createIndex(MetadataCreateIndexService.java:271)
	at org.elasticsearch.action.admin.indices.create.TransportCreateIndexAction.masterOperation(TransportCreateIndexAction.java:86)
	at org.elasticsearch.action.admin.indices.create.TransportCreateIndexAction.masterOperation(TransportCreateIndexAction.java:41)
	at org.elasticsearch.action.support.master.TransportMasterNodeAction.masterOperation(TransportMasterNodeAction.java:99)
	at org.elasticsearch.action.support.master.TransportMasterNodeAction$AsyncSingleAction.lambda$doStart$3(TransportMasterNodeAction.java:166)
	at org.elasticsearch.action.ActionRunnable$2.doRun(ActionRunnable.java:73)
	at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37)
	at org.elasticsearch.common.util.concurrent.EsExecutors$DirectExecutorService.execute(EsExecutors.java:224)
	at org.elasticsearch.action.support.master.TransportMasterNodeAction$AsyncSingleAction.doStart(TransportMasterNodeAction.java:166)
	at org.elasticsearch.action.support.master.TransportMasterNodeAction.doExecute(TransportMasterNodeAction.java:115)
	at org.elasticsearch.action.support.master.TransportMasterNodeAction.doExecute(TransportMasterNodeAction.java:59)
	at org.elasticsearch.action.support.TransportAction$RequestFilterChain.proceed(TransportAction.java:179)
	at org.elasticsearch.action.support.TransportAction.execute(TransportAction.java:155)
	at org.elasticsearch.action.support.TransportAction.execute(TransportAction.java:83)
	at org.elasticsearch.client.node.NodeClient.executeLocally(NodeClient.java:86)
	at org.elasticsearch.client.node.NodeClient.doExecute(NodeClient.java:75)
	at org.elasticsearch.client.support.AbstractClient.execute(AbstractClient.java:412)
	at org.elasticsearch.client.support.AbstractClient.execute(AbstractClient.java:401)
	at org.elasticsearch.client.support.AbstractClient$IndicesAdmin.execute(AbstractClient.java:1286)
	at org.elasticsearch.action.ActionRequestBuilder.execute(ActionRequestBuilder.java:45)
	at org.codelibs.elasticsearch.runner.ElasticsearchClusterRunner.createIndex(ElasticsearchClusterRunner.java:821)
	at org.codelibs.elasticsearch.runner.ElasticsearchClusterRunner.createIndex(ElasticsearchClusterRunner.java:817)
	at org.elasticsearch.plugin.analyzerTest.ReloadableNoriTokenizerFactoryTest.test_basic(ReloadableNoriTokenizerFactoryTest.java:124)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:567)
	at junit.framework.TestCase.runTest(TestCase.java:176)
	at junit.framework.TestCase.runBare(TestCase.java:141)
	at junit.framework.TestResult$1.protect(TestResult.java:122)
	at junit.framework.TestResult.runProtected(TestResult.java:142)
	at junit.framework.TestResult.run(TestResult.java:125)
	at junit.framework.TestCase.run(TestCase.java:129)
	at junit.framework.TestSuite.runTest(TestSuite.java:252)
	at junit.framework.TestSuite.run(TestSuite.java:247)
	at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:86)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.runTestClass(JUnitTestClassExecutor.java:110)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:58)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:38)
	at org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestClassProcessor.processTestClass(AbstractJUnitTestClassProcessor.java:62)
	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:51)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:567)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
	at com.sun.proxy.$Proxy2.processTestClass(Unknown Source)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.processTestClass(TestWorker.java:118)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:567)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:182)
	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:164)
	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:412)
	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
	at java.base/java.lang.Thread.run(Thread.java:830)
	Suppressed: java.lang.IllegalArgumentException: unknown setting [index.mappings.properties.test.fields.nori.search_analyzer] please check that any required plugins are installed, or check the breaking changes documentation for removed settings
		... 72 more
	Suppressed: java.lang.IllegalArgumentException: unknown setting [index.mappings.properties.test.fields.nori.type] please check that any required plugins are installed, or check the breaking changes documentation for removed settings
		... 72 more
	Suppressed: java.lang.IllegalArgumentException: unknown setting [index.mappings.properties.test.type] please check that any required plugins are installed, or check the breaking changes documentation for removed settings
		... 72 more
	Suppressed: java.lang.IllegalArgumentException: unknown setting [index.settings.index.analysis.analyzer.my_nori_analyzer.filter] please check that any required plugins are installed, or check the breaking changes documentation for removed settings
		... 72 more
	Suppressed: java.lang.IllegalArgumentException: unknown setting [index.settings.index.analysis.analyzer.my_nori_analyzer.tokenizer] please check that any required plugins are installed, or check the breaking changes documentation for removed settings
		... 72 more
	Suppressed: java.lang.IllegalArgumentException: unknown setting [index.settings.index.analysis.filter.my_nori_filter.stoptags] please check that any required plugins are installed, or check the breaking changes documentation for removed settings
		... 72 more
	Suppressed: java.lang.IllegalArgumentException: unknown setting [index.settings.index.analysis.filter.my_nori_filter.type] please check that any required plugins are installed, or check the breaking changes documentation for removed settings
		... 72 more
	Suppressed: java.lang.IllegalArgumentException: unknown setting [index.settings.index.analysis.filter.my_nori_filter.updateable] please check that any required plugins are installed, or check the breaking changes documentation for removed settings
		... 72 more
	Suppressed: java.lang.IllegalArgumentException: unknown setting [index.settings.index.analysis.tokenizer.korean_nori_tokenizer.decompound_mode] please check that any required plugins are installed, or check the breaking changes documentation for removed settings
		... 72 more
	Suppressed: java.lang.IllegalArgumentException: unknown setting [index.settings.index.analysis.tokenizer.korean_nori_tokenizer.type] please check that any required plugins are installed, or check the breaking changes documentation for removed settings
		... 72 more
	Suppressed: java.lang.IllegalArgumentException: unknown setting [index.settings.index.analysis.tokenizer.korean_nori_tokenizer.user_dictionary] please check that any required plugins are installed, or check the breaking changes documentation for removed settings
		... 72 more

The plugin is actually loaded, but I keep getting an error

confPath is ignored for plugins

This directory is only used for generating Settings, but not Environment

                final Settings settings = buildNodeSettings(i + 1);
                final Node node = new ClusterRunnerNode(settings, pluginList);

It should be this instead to preserve the custom config directory:

                final Environment environment = buildNodeSettings(i + 1);
                final Node node = new ClusterRunnerNode(environment, pluginList);

Nodes created cannot ingest by default

As i understand since ES v7.x all nodes can ingest by default.
However, if I set index settings to a default pipeline, I get an exception "There are no nodes to ingest".

And if I try to set node settings for ingestion, i get the following exception:
"can not explicitly configure node roles and use legacy role setting [node.ingest]=[true]"

Is there a way to enable a node for ingesting pipelines?
Thanks!

All shards are placed to the first node

I used the default settings, so 3 nodes are created. After this command:

runner.createIndex("test_index", Settings.builder().build());

I see that the data/node_1/elasticsearch-cluster-runner/nodes/0/indices/test_index folder has all the shards folders, but data/node_2/elasticsearch-cluster-runner/nodes/0/ and data/node_2/elasticsearch-cluster-runner/nodes/0/ folders has no indices subfolder at all.

If I add these settings:

cluster.routing.allocation.total_shards_per_node: 1
index.number_of_shards: 3
index.number_of_replicas: 0

I get this exception:

org.codelibs.elasticsearch.runner.ClusterRunnerException: ensureYellow timed out, cluster state:

version: 5
state uuid: 0tU2XEO6SeagUQEIui6JRg
from_diff: false
meta data version: 3
nodes: 
   {Node 1}{HLJ9sxVTR2OlxA321H1n2Q}{127.0.0.1}{127.0.0.1:9301}{master=true}, local, master
routing_table (version 3):
-- index [test_index]
----shard_id [test_index][0]
--------[test_index][0], node[HLJ9sxVTR2OlxA321H1n2Q], [P], v[2], s[STARTED], a[id=ye9MxH2LRNeCif-c_G8-CQ]
----shard_id [test_index][1]
--------[test_index][1], node[null], [P], v[0], s[UNASSIGNED], unassigned_info[[reason=INDEX_CREATED], at[2016-06-17T09:28:15.461Z]]
----shard_id [test_index][2]
--------[test_index][2], node[null], [P], v[0], s[UNASSIGNED], unassigned_info[[reason=INDEX_CREATED], at[2016-06-17T09:28:15.461Z]]

routing_nodes:
-----node_id[HLJ9sxVTR2OlxA321H1n2Q][V]
--------[test_index][0], node[HLJ9sxVTR2OlxA321H1n2Q], [P], v[2], s[STARTED], a[id=ye9MxH2LRNeCif-c_G8-CQ]
---- unassigned
--------[test_index][1], node[null], [P], v[0], s[UNASSIGNED], unassigned_info[[reason=INDEX_CREATED], at[2016-06-17T09:28:15.461Z]]
--------[test_index][2], node[null], [P], v[0], s[UNASSIGNED], unassigned_info[[reason=INDEX_CREATED], at[2016-06-17T09:28:15.461Z]]

If I download Elasticsearch 2.3.3, run 3 nodes and add an index, all 3 shards are allocated evenly at 3 nodes.

I also tried to download elasticsearch-cluster-runner, update dependency to 2.3.3 and run the test with the updated version. The same bug.

Specifying jvm.options file

Just wondering if there is a way to specify the jvm.options file (or another way to set e.g Xms / Xmx), since the execute() method seems to look for the elasticsearch.yml and log4j2.properties, but not for the jvm.options file ? Thanks

Do not use log4j implementation classes to allows us use diferent logging engines.

Use elasticsearch-cluster-runner in spring boot application with slf4j bridge leads to exception on start

2021-05-19 13:36:16,408 ForkJoinPool.commonPool-worker-7 ERROR LogManager returned an instance of org.apache.logging.slf4j.SLF4JLoggerContextFactory which does not implement org.apache.logging.log4j.core.impl.Log4jContextFactory. Unable to initialize Log4j.

Please do not use log4j implementation classes directly (log4j-core dependency).

This error mention on #27 (comment) and on https://stackoverflow.com/questions/54036773/unable-to-initialize-log4j-slf4jloggercontextfactory

cannot access org.elasticsearch.action.admin.indices.mapping.put.PutMappingResponse

Hi,

I am using elastic search 6.5.4 and added below dependency in pom.xml

org.codelibs
elasticsearch-cluster-runner
5.5.2.0

As mentioned, I tried using the runner for my test cases. My Test case class has compile time error.
cannot access org.elasticsearch.action.admin.indices.mapping.put.PutMappingResponse.

Please let me know the solution.

Releases for latest 5.x versions missing

Hi there,

I had a look at the Maven repo linked in the README (it's actually an outdated link, PR incoming) and it seems that the latest version for Elastic 5.x is 5.6.10.0.

Elastic has since released versions 5.6.11 through 5.6.16. Would it be possible to get releases for the cluster runner for these versions or at least for the latest, 5.6.16? I'd like to update an Elastic plugin that uses the cluster runner for its tests.

java.lang.NoClassDefFoundError: org/elasticsearch/plugins/PluginType

error details:

/Users/lavender/Library/Java/JavaVirtualMachines/corretto-17.0.4.1/Contents/Home/bin/java -ea -Didea.test.cyclic.buffer.size=1048576 -javaagent:/Applications/IntelliJ IDEA CE.app/Contents/lib/idea_rt.jar=55946:/Applications/IntelliJ IDEA CE.app/Contents/bin -Dfile.encoding=UTF-8 -classpath /Users/lavender/.m2/repository/org/junit/platform/junit-platform-launcher/1.8.2/junit-platform-launcher-1.8.2.jar:/Users/lavender/.m2/repository/org/junit/vintage/junit-vintage-engine/5.8.2/junit-vintage-engine-5.8.2.jar:/Applications/IntelliJ IDEA CE.app/Contents/lib/idea_rt.jar:/Applications/IntelliJ IDEA CE.app/Contents/plugins/junit/lib/junit5-rt.jar:/Applications/IntelliJ IDEA CE.app/Contents/plugins/junit/lib/junit-rt.jar:/Users/lavender/Documents/zqf/javaLearning/code/estest/target/test-classes:/Users/lavender/Documents/zqf/javaLearning/code/estest/target/classes:/Users/lavender/.m2/repository/org/springframework/boot/spring-boot-starter-web/2.7.3/spring-boot-starter-web-2.7.3.jar:/Users/lavender/.m2/repository/org/springframework/boot/spring-boot-starter/2.7.3/spring-boot-starter-2.7.3.jar:/Users/lavender/.m2/repository/org/springframework/boot/spring-boot/2.7.3/spring-boot-2.7.3.jar:/Users/lavender/.m2/repository/org/springframework/boot/spring-boot-autoconfigure/2.7.3/spring-boot-autoconfigure-2.7.3.jar:/Users/lavender/.m2/repository/org/springframework/boot/spring-boot-starter-logging/2.7.3/spring-boot-starter-logging-2.7.3.jar:/Users/lavender/.m2/repository/ch/qos/logback/logback-classic/1.2.11/logback-classic-1.2.11.jar:/Users/lavender/.m2/repository/ch/qos/logback/logback-core/1.2.11/logback-core-1.2.11.jar:/Users/lavender/.m2/repository/org/apache/logging/log4j/log4j-to-slf4j/2.17.2/log4j-to-slf4j-2.17.2.jar:/Users/lavender/.m2/repository/org/slf4j/jul-to-slf4j/1.7.36/jul-to-slf4j-1.7.36.jar:/Users/lavender/.m2/repository/jakarta/annotation/jakarta.annotation-api/1.3.5/jakarta.annotation-api-1.3.5.jar:/Users/lavender/.m2/repository/org/yaml/snakeyaml/1.30/snakeyaml-1.30.jar:/Users/lavender/.m2/repository/org/springframework/boot/spring-boot-starter-json/2.7.3/spring-boot-starter-json-2.7.3.jar:/Users/lavender/.m2/repository/com/fasterxml/jackson/datatype/jackson-datatype-jdk8/2.13.3/jackson-datatype-jdk8-2.13.3.jar:/Users/lavender/.m2/repository/com/fasterxml/jackson/datatype/jackson-datatype-jsr310/2.13.3/jackson-datatype-jsr310-2.13.3.jar:/Users/lavender/.m2/repository/com/fasterxml/jackson/module/jackson-module-parameter-names/2.13.3/jackson-module-parameter-names-2.13.3.jar:/Users/lavender/.m2/repository/org/springframework/boot/spring-boot-starter-tomcat/2.7.3/spring-boot-starter-tomcat-2.7.3.jar:/Users/lavender/.m2/repository/org/apache/tomcat/embed/tomcat-embed-core/9.0.65/tomcat-embed-core-9.0.65.jar:/Users/lavender/.m2/repository/org/apache/tomcat/embed/tomcat-embed-el/9.0.65/tomcat-embed-el-9.0.65.jar:/Users/lavender/.m2/repository/org/apache/tomcat/embed/tomcat-embed-websocket/9.0.65/tomcat-embed-websocket-9.0.65.jar:/Users/lavender/.m2/repository/org/springframework/spring-web/5.3.22/spring-web-5.3.22.jar:/Users/lavender/.m2/repository/org/springframework/spring-beans/5.3.22/spring-beans-5.3.22.jar:/Users/lavender/.m2/repository/org/springframework/spring-webmvc/5.3.22/spring-webmvc-5.3.22.jar:/Users/lavender/.m2/repository/org/springframework/spring-aop/5.3.22/spring-aop-5.3.22.jar:/Users/lavender/.m2/repository/org/springframework/spring-expression/5.3.22/spring-expression-5.3.22.jar:/Users/lavender/.m2/repository/org/projectlombok/lombok/1.18.24/lombok-1.18.24.jar:/Users/lavender/.m2/repository/org/springdoc/springdoc-openapi-ui/1.6.4/springdoc-openapi-ui-1.6.4.jar:/Users/lavender/.m2/repository/org/springdoc/springdoc-openapi-webmvc-core/1.6.4/springdoc-openapi-webmvc-core-1.6.4.jar:/Users/lavender/.m2/repository/org/springdoc/springdoc-openapi-common/1.6.4/springdoc-openapi-common-1.6.4.jar:/Users/lavender/.m2/repository/io/swagger/core/v3/swagger-core/2.1.12/swagger-core-2.1.12.jar:/Users/lavender/.m2/repository/org/apache/commons/commons-lang3/3.12.0/commons-lang3-3.12.0.jar:/Users/lavender/.m2/repository/com/fasterxml/jackson/dataformat/jackson-dataformat-yaml/2.13.3/jackson-dataformat-yaml-2.13.3.jar:/Users/lavender/.m2/repository/io/swagger/core/v3/swagger-annotations/2.1.12/swagger-annotations-2.1.12.jar:/Users/lavender/.m2/repository/io/swagger/core/v3/swagger-models/2.1.12/swagger-models-2.1.12.jar:/Users/lavender/.m2/repository/jakarta/validation/jakarta.validation-api/2.0.2/jakarta.validation-api-2.0.2.jar:/Users/lavender/.m2/repository/org/webjars/swagger-ui/4.1.3/swagger-ui-4.1.3.jar:/Users/lavender/.m2/repository/org/webjars/webjars-locator-core/0.50/webjars-locator-core-0.50.jar:/Users/lavender/.m2/repository/io/github/classgraph/classgraph/4.8.138/classgraph-4.8.138.jar:/Users/lavender/.m2/repository/org/springframework/data/spring-data-elasticsearch/4.4.2/spring-data-elasticsearch-4.4.2.jar:/Users/lavender/.m2/repository/org/springframework/spring-context/5.3.22/spring-context-5.3.22.jar:/Users/lavender/.m2/repository/org/springframework/spring-tx/5.3.22/spring-tx-5.3.22.jar:/Users/lavender/.m2/repository/org/springframework/data/spring-data-commons/2.7.2/spring-data-commons-2.7.2.jar:/Users/lavender/.m2/repository/org/elasticsearch/client/elasticsearch-rest-high-level-client/7.17.4/elasticsearch-rest-high-level-client-7.17.4.jar:/Users/lavender/.m2/repository/org/elasticsearch/plugin/mapper-extras-client/7.17.4/mapper-extras-client-7.17.4.jar:/Users/lavender/.m2/repository/org/elasticsearch/plugin/parent-join-client/7.17.4/parent-join-client-7.17.4.jar:/Users/lavender/.m2/repository/org/elasticsearch/plugin/aggs-matrix-stats-client/7.17.4/aggs-matrix-stats-client-7.17.4.jar:/Users/lavender/.m2/repository/org/elasticsearch/plugin/rank-eval-client/7.17.4/rank-eval-client-7.17.4.jar:/Users/lavender/.m2/repository/org/elasticsearch/plugin/lang-mustache-client/7.17.4/lang-mustache-client-7.17.4.jar:/Users/lavender/.m2/repository/co/elastic/clients/elasticsearch-java/7.17.4/elasticsearch-java-7.17.4.jar:/Users/lavender/.m2/repository/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar:/Users/lavender/.m2/repository/jakarta/json/jakarta.json-api/1.1.6/jakarta.json-api-1.1.6.jar:/Users/lavender/.m2/repository/org/eclipse/parsson/parsson/1.0.0/parsson-1.0.0.jar:/Users/lavender/.m2/repository/org/elasticsearch/client/elasticsearch-rest-client/7.17.4/elasticsearch-rest-client-7.17.4.jar:/Users/lavender/.m2/repository/org/apache/httpcomponents/httpclient/4.5.13/httpclient-4.5.13.jar:/Users/lavender/.m2/repository/org/apache/httpcomponents/httpcore/4.4.15/httpcore-4.4.15.jar:/Users/lavender/.m2/repository/org/apache/httpcomponents/httpasyncclient/4.1.5/httpasyncclient-4.1.5.jar:/Users/lavender/.m2/repository/org/apache/httpcomponents/httpcore-nio/4.4.15/httpcore-nio-4.4.15.jar:/Users/lavender/.m2/repository/commons-codec/commons-codec/1.15/commons-codec-1.15.jar:/Users/lavender/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.13.3/jackson-core-2.13.3.jar:/Users/lavender/.m2/repository/org/slf4j/slf4j-api/1.7.36/slf4j-api-1.7.36.jar:/Users/lavender/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.13.3/jackson-databind-2.13.3.jar:/Users/lavender/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.13.3/jackson-annotations-2.13.3.jar:/Users/lavender/.m2/repository/org/elasticsearch/elasticsearch/8.4.0/elasticsearch-8.4.0.jar:/Users/lavender/.m2/repository/org/elasticsearch/elasticsearch-core/8.4.0/elasticsearch-core-8.4.0.jar:/Users/lavender/.m2/repository/org/elasticsearch/elasticsearch-logging/8.4.0/elasticsearch-logging-8.4.0.jar:/Users/lavender/.m2/repository/org/elasticsearch/elasticsearch-secure-sm/8.4.0/elasticsearch-secure-sm-8.4.0.jar:/Users/lavender/.m2/repository/org/elasticsearch/elasticsearch-x-content/8.4.0/elasticsearch-x-content-8.4.0.jar:/Users/lavender/.m2/repository/org/elasticsearch/elasticsearch-geo/8.4.0/elasticsearch-geo-8.4.0.jar:/Users/lavender/.m2/repository/org/elasticsearch/elasticsearch-lz4/8.4.0/elasticsearch-lz4-8.4.0.jar:/Users/lavender/.m2/repository/org/lz4/lz4-java/1.8.0/lz4-java-1.8.0.jar:/Users/lavender/.m2/repository/org/apache/lucene/lucene-core/9.3.0/lucene-core-9.3.0.jar:/Users/lavender/.m2/repository/org/apache/lucene/lucene-analysis-common/9.3.0/lucene-analysis-common-9.3.0.jar:/Users/lavender/.m2/repository/org/apache/lucene/lucene-backward-codecs/9.3.0/lucene-backward-codecs-9.3.0.jar:/Users/lavender/.m2/repository/org/apache/lucene/lucene-grouping/9.3.0/lucene-grouping-9.3.0.jar:/Users/lavender/.m2/repository/org/apache/lucene/lucene-highlighter/9.3.0/lucene-highlighter-9.3.0.jar:/Users/lavender/.m2/repository/org/apache/lucene/lucene-join/9.3.0/lucene-join-9.3.0.jar:/Users/lavender/.m2/repository/org/apache/lucene/lucene-memory/9.3.0/lucene-memory-9.3.0.jar:/Users/lavender/.m2/repository/org/apache/lucene/lucene-misc/9.3.0/lucene-misc-9.3.0.jar:/Users/lavender/.m2/repository/org/apache/lucene/lucene-queries/9.3.0/lucene-queries-9.3.0.jar:/Users/lavender/.m2/repository/org/apache/lucene/lucene-queryparser/9.3.0/lucene-queryparser-9.3.0.jar:/Users/lavender/.m2/repository/org/apache/lucene/lucene-sandbox/9.3.0/lucene-sandbox-9.3.0.jar:/Users/lavender/.m2/repository/org/apache/lucene/lucene-suggest/9.3.0/lucene-suggest-9.3.0.jar:/Users/lavender/.m2/repository/org/elasticsearch/elasticsearch-cli/8.4.0/elasticsearch-cli-8.4.0.jar:/Users/lavender/.m2/repository/net/sf/jopt-simple/jopt-simple/5.0.2/jopt-simple-5.0.2.jar:/Users/lavender/.m2/repository/com/tdunning/t-digest/3.2/t-digest-3.2.jar:/Users/lavender/.m2/repository/org/hdrhistogram/HdrHistogram/2.1.9/HdrHistogram-2.1.9.jar:/Users/lavender/.m2/repository/org/apache/logging/log4j/log4j-api/2.17.2/log4j-api-2.17.2.jar:/Users/lavender/.m2/repository/org/apache/logging/log4j/log4j-core/2.17.2/log4j-core-2.17.2.jar:/Users/lavender/.m2/repository/net/java/dev/jna/jna/5.10.0/jna-5.10.0.jar:/Users/lavender/.m2/repository/co/elastic/logging/log4j2-ecs-layout/1.2.0/log4j2-ecs-layout-1.2.0.jar:/Users/lavender/.m2/repository/co/elastic/logging/ecs-logging-core/1.2.0/ecs-logging-core-1.2.0.jar:/Users/lavender/.m2/repository/org/elasticsearch/elasticsearch-plugin-classloader/8.4.0/elasticsearch-plugin-classloader-8.4.0.jar:/Users/lavender/.m2/repository/com/carrotsearch/hppc/0.8.1/hppc-0.8.1.jar:/Users/lavender/.m2/repository/org/springframework/boot/spring-boot-starter-test/2.7.3/spring-boot-starter-test-2.7.3.jar:/Users/lavender/.m2/repository/org/springframework/boot/spring-boot-test/2.7.3/spring-boot-test-2.7.3.jar:/Users/lavender/.m2/repository/org/springframework/boot/spring-boot-test-autoconfigure/2.7.3/spring-boot-test-autoconfigure-2.7.3.jar:/Users/lavender/.m2/repository/com/jayway/jsonpath/json-path/2.7.0/json-path-2.7.0.jar:/Users/lavender/.m2/repository/net/minidev/json-smart/2.4.8/json-smart-2.4.8.jar:/Users/lavender/.m2/repository/net/minidev/accessors-smart/2.4.8/accessors-smart-2.4.8.jar:/Users/lavender/.m2/repository/jakarta/xml/bind/jakarta.xml.bind-api/2.3.3/jakarta.xml.bind-api-2.3.3.jar:/Users/lavender/.m2/repository/jakarta/activation/jakarta.activation-api/1.2.2/jakarta.activation-api-1.2.2.jar:/Users/lavender/.m2/repository/org/assertj/assertj-core/3.22.0/assertj-core-3.22.0.jar:/Users/lavender/.m2/repository/org/hamcrest/hamcrest/2.2/hamcrest-2.2.jar:/Users/lavender/.m2/repository/org/junit/jupiter/junit-jupiter/5.8.2/junit-jupiter-5.8.2.jar:/Users/lavender/.m2/repository/org/junit/jupiter/junit-jupiter-api/5.8.2/junit-jupiter-api-5.8.2.jar:/Users/lavender/.m2/repository/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar:/Users/lavender/.m2/repository/org/junit/platform/junit-platform-commons/1.8.2/junit-platform-commons-1.8.2.jar:/Users/lavender/.m2/repository/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.jar:/Users/lavender/.m2/repository/org/junit/jupiter/junit-jupiter-params/5.8.2/junit-jupiter-params-5.8.2.jar:/Users/lavender/.m2/repository/org/junit/jupiter/junit-jupiter-engine/5.8.2/junit-jupiter-engine-5.8.2.jar:/Users/lavender/.m2/repository/org/junit/platform/junit-platform-engine/1.8.2/junit-platform-engine-1.8.2.jar:/Users/lavender/.m2/repository/org/mockito/mockito-core/4.5.1/mockito-core-4.5.1.jar:/Users/lavender/.m2/repository/net/bytebuddy/byte-buddy/1.12.13/byte-buddy-1.12.13.jar:/Users/lavender/.m2/repository/net/bytebuddy/byte-buddy-agent/1.12.13/byte-buddy-agent-1.12.13.jar:/Users/lavender/.m2/repository/org/objenesis/objenesis/3.2/objenesis-3.2.jar:/Users/lavender/.m2/repository/org/mockito/mockito-junit-jupiter/4.5.1/mockito-junit-jupiter-4.5.1.jar:/Users/lavender/.m2/repository/org/skyscreamer/jsonassert/1.5.1/jsonassert-1.5.1.jar:/Users/lavender/.m2/repository/com/vaadin/external/google/android-json/0.0.20131108.vaadin1/android-json-0.0.20131108.vaadin1.jar:/Users/lavender/.m2/repository/org/springframework/spring-core/5.3.22/spring-core-5.3.22.jar:/Users/lavender/.m2/repository/org/springframework/spring-jcl/5.3.22/spring-jcl-5.3.22.jar:/Users/lavender/.m2/repository/org/springframework/spring-test/5.3.22/spring-test-5.3.22.jar:/Users/lavender/.m2/repository/org/xmlunit/xmlunit-core/2.9.0/xmlunit-core-2.9.0.jar:/Users/lavender/.m2/repository/org/codelibs/elasticsearch-cluster-runner/8.3.2.0/elasticsearch-cluster-runner-8.3.2.0.jar:/Users/lavender/.m2/repository/org/codelibs/elasticsearch/lib/lz4/8.3.2/lz4-8.3.2.jar:/Users/lavender/.m2/repository/org/codelibs/elasticsearch/lib/plugin-classloader/8.3.2/plugin-classloader-8.3.2.jar:/Users/lavender/.m2/repository/org/codelibs/elasticsearch/module/aggs-matrix-stats/8.3.2/aggs-matrix-stats-8.3.2.jar:/Users/lavender/.m2/repository/org/codelibs/elasticsearch/module/ingest-common/8.3.2/ingest-common-8.3.2.jar:/Users/lavender/.m2/repository/org/codelibs/elasticsearch/lib/dissect/8.3.2/dissect-8.3.2.jar:/Users/lavender/.m2/repository/org/codelibs/elasticsearch/lib/grok/8.3.2/grok-8.3.2.jar:/Users/lavender/.m2/repository/org/jruby/jcodings/jcodings/1.0.44/jcodings-1.0.44.jar:/Users/lavender/.m2/repository/org/jruby/joni/joni/2.1.29/joni-2.1.29.jar:/Users/lavender/.m2/repository/org/codelibs/elasticsearch/module/ingest-user-agent/8.3.2/ingest-user-agent-8.3.2.jar:/Users/lavender/.m2/repository/org/codelibs/elasticsearch/module/kibana/8.3.2/kibana-8.3.2.jar:/Users/lavender/.m2/repository/org/codelibs/elasticsearch/module/lang-expression/8.3.2/lang-expression-8.3.2.jar:/Users/lavender/.m2/repository/org/antlr/antlr4-runtime/4.5.1-1/antlr4-runtime-4.5.1-1.jar:/Users/lavender/.m2/repository/org/apache/lucene/lucene-expressions/9.2.0/lucene-expressions-9.2.0.jar:/Users/lavender/.m2/repository/org/apache/lucene/lucene-codecs/9.2.0/lucene-codecs-9.2.0.jar:/Users/lavender/.m2/repository/org/codelibs/elasticsearch/module/lang-mustache/8.3.2/lang-mustache-8.3.2.jar:/Users/lavender/.m2/repository/com/github/spullara/mustache/java/compiler/0.9.6/compiler-0.9.6.jar:/Users/lavender/.m2/repository/org/codelibs/elasticsearch/module/lang-painless/8.3.2/lang-painless-8.3.2.jar:/Users/lavender/.m2/repository/org/ow2/asm/asm/7.2/asm-7.2.jar:/Users/lavender/.m2/repository/org/ow2/asm/asm-analysis/7.2/asm-analysis-7.2.jar:/Users/lavender/.m2/repository/org/ow2/asm/asm-commons/7.2/asm-commons-7.2.jar:/Users/lavender/.m2/repository/org/ow2/asm/asm-tree/7.2/asm-tree-7.2.jar:/Users/lavender/.m2/repository/org/ow2/asm/asm-util/7.2/asm-util-7.2.jar:/Users/lavender/.m2/repository/org/codelibs/elasticsearch/module/legacy-geo/8.3.2/legacy-geo-8.3.2.jar:/Users/lavender/.m2/repository/org/apache/lucene/lucene-spatial-extras/9.2.0/lucene-spatial-extras-9.2.0.jar:/Users/lavender/.m2/repository/org/apache/lucene/lucene-spatial3d/9.2.0/lucene-spatial3d-9.2.0.jar:/Users/lavender/.m2/repository/io/sgr/s2-geometry-library-java/1.0.0/s2-geometry-library-java-1.0.0.jar:/Users/lavender/.m2/repository/org/codelibs/elasticsearch/module/mapper-extras/8.3.2/mapper-extras-8.3.2.jar:/Users/lavender/.m2/repository/org/codelibs/elasticsearch/module/parent-join/8.3.2/parent-join-8.3.2.jar:/Users/lavender/.m2/repository/org/codelibs/elasticsearch/module/percolator/8.3.2/percolator-8.3.2.jar:/Users/lavender/.m2/repository/org/codelibs/elasticsearch/module/rank-eval/8.3.2/rank-eval-8.3.2.jar:/Users/lavender/.m2/repository/org/codelibs/elasticsearch/module/reindex/8.3.2/reindex-8.3.2.jar:/Users/lavender/.m2/repository/commons-logging/commons-logging/1.1.3/commons-logging-1.1.3.jar:/Users/lavender/.m2/repository/org/codelibs/elasticsearch/lib/ssl-config/8.3.2/ssl-config-8.3.2.jar:/Users/lavender/.m2/repository/org/codelibs/elasticsearch/module/repository-gcs/8.3.2/repository-gcs-8.3.2.jar:/Users/lavender/.m2/repository/com/google/api/api-common/2.2.1/api-common-2.2.1.jar:/Users/lavender/.m2/repository/javax/annotation/javax.annotation-api/1.3.2/javax.annotation-api-1.3.2.jar:/Users/lavender/.m2/repository/com/google/auto/value/auto-value-annotations/1.9/auto-value-annotations-1.9.jar:/Users/lavender/.m2/repository/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar:/Users/lavender/.m2/repository/com/google/api/gax/2.0.0/gax-2.0.0.jar:/Users/lavender/.m2/repository/com/google/api/gax-httpjson/0.85.0/gax-httpjson-0.85.0.jar:/Users/lavender/.m2/repository/com/google/api-client/google-api-client/1.35.1/google-api-client-1.35.1.jar:/Users/lavender/.m2/repository/com/google/http-client/google-http-client-apache-v2/1.42.0/google-http-client-apache-v2-1.42.0.jar:/Users/lavender/.m2/repository/com/google/apis/google-api-services-storage/v1-rev20210127-1.32.1/google-api-services-storage-v1-rev20210127-1.32.1.jar:/Users/lavender/.m2/repository/com/google/auth/google-auth-library-credentials/1.0.0/google-auth-library-credentials-1.0.0.jar:/Users/lavender/.m2/repository/com/google/auth/google-auth-library-oauth2-http/1.0.0/google-auth-library-oauth2-http-1.0.0.jar:/Users/lavender/.m2/repository/com/google/cloud/google-cloud-core/2.0.2/google-cloud-core-2.0.2.jar:/Users/lavender/.m2/repository/com/google/cloud/google-cloud-core-http/2.0.2/google-cloud-core-http-2.0.2.jar:/Users/lavender/.m2/repository/com/google/cloud/google-cloud-storage/1.118.1/google-cloud-storage-1.118.1.jar:/Users/lavender/.m2/repository/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar:/Users/lavender/.m2/repository/org/checkerframework/checker-qual/3.8.0/checker-qual-3.8.0.jar:/Users/lavender/.m2/repository/com/google/errorprone/error_prone_annotations/2.8.1/error_prone_annotations-2.8.1.jar:/Users/lavender/.m2/repository/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3.jar:/Users/lavender/.m2/repository/com/google/http-client/google-http-client/1.39.2/google-http-client-1.39.2.jar:/Users/lavender/.m2/repository/com/google/http-client/google-http-client-appengine/1.39.2/google-http-client-appengine-1.39.2.jar:/Users/lavender/.m2/repository/com/google/http-client/google-http-client-gson/1.39.2/google-http-client-gson-1.39.2.jar:/Users/lavender/.m2/repository/com/google/http-client/google-http-client-jackson2/1.39.2/google-http-client-jackson2-1.39.2.jar:/Users/lavender/.m2/repository/com/google/oauth-client/google-oauth-client/1.34.1/google-oauth-client-1.34.1.jar:/Users/lavender/.m2/repository/io/grpc/grpc-context/1.39.0/grpc-context-1.39.0.jar:/Users/lavender/.m2/repository/com/google/code/gson/gson/2.9.1/gson-2.9.1.jar:/Users/lavender/.m2/repository/com/google/guava/guava/30.1.1-jre/guava-30.1.1-jre.jar:/Users/lavender/.m2/repository/org/apache/logging/log4j/log4j-1.2-api/2.17.2/log4j-1.2-api-2.17.2.jar:/Users/lavender/.m2/repository/io/opencensus/opencensus-api/0.28.0/opencensus-api-0.28.0.jar:/Users/lavender/.m2/repository/io/opencensus/opencensus-contrib-http-util/0.28.0/opencensus-contrib-http-util-0.28.0.jar:/Users/lavender/.m2/repository/com/google/protobuf/protobuf-java/3.21.1/protobuf-java-3.21.1.jar:/Users/lavender/.m2/repository/com/google/protobuf/protobuf-java-util/3.17.3/protobuf-java-util-3.17.3.jar:/Users/lavender/.m2/repository/com/google/api/grpc/proto-google-common-protos/2.3.2/proto-google-common-protos-2.3.2.jar:/Users/lavender/.m2/repository/com/google/api/grpc/proto-google-iam-v1/1.0.14/proto-google-iam-v1-1.0.14.jar:/Users/lavender/.m2/repository/org/threeten/threetenbp/1.5.1/threetenbp-1.5.1.jar:/Users/lavender/.m2/repository/org/codelibs/elasticsearch/module/repository-s3/8.3.2/repository-s3-8.3.2.jar:/Users/lavender/.m2/repository/com/amazonaws/aws-java-sdk-core/1.11.749/aws-java-sdk-core-1.11.749.jar:/Users/lavender/.m2/repository/software/amazon/ion/ion-java/1.0.2/ion-java-1.0.2.jar:/Users/lavender/.m2/repository/com/amazonaws/aws-java-sdk-s3/1.11.749/aws-java-sdk-s3-1.11.749.jar:/Users/lavender/.m2/repository/com/amazonaws/aws-java-sdk-kms/1.11.749/aws-java-sdk-kms-1.11.749.jar:/Users/lavender/.m2/repository/com/amazonaws/aws-java-sdk-sts/1.11.749/aws-java-sdk-sts-1.11.749.jar:/Users/lavender/.m2/repository/com/fasterxml/jackson/dataformat/jackson-dataformat-cbor/2.13.3/jackson-dataformat-cbor-2.13.3.jar:/Users/lavender/.m2/repository/javax/xml/bind/jaxb-api/2.3.1/jaxb-api-2.3.1.jar:/Users/lavender/.m2/repository/javax/activation/javax.activation-api/1.2.0/javax.activation-api-1.2.0.jar:/Users/lavender/.m2/repository/com/amazonaws/jmespath-java/1.11.749/jmespath-java-1.11.749.jar:/Users/lavender/.m2/repository/joda-time/joda-time/2.8.1/joda-time-2.8.1.jar:/Users/lavender/.m2/repository/org/codelibs/elasticsearch/module/repository-url/8.3.2/repository-url-8.3.2.jar:/Users/lavender/.m2/repository/org/codelibs/elasticsearch/module/runtime-fields-common/8.3.2/runtime-fields-common-8.3.2.jar:/Users/lavender/.m2/repository/org/codelibs/elasticsearch/module/scripting-painless-spi/8.3.2/scripting-painless-spi-8.3.2.jar:/Users/lavender/.m2/repository/org/codelibs/elasticsearch/module/transport-netty4/8.3.2/transport-netty4-8.3.2.jar:/Users/lavender/.m2/repository/io/netty/netty-buffer/4.1.79.Final/netty-buffer-4.1.79.Final.jar:/Users/lavender/.m2/repository/io/netty/netty-codec/4.1.79.Final/netty-codec-4.1.79.Final.jar:/Users/lavender/.m2/repository/io/netty/netty-codec-http/4.1.79.Final/netty-codec-http-4.1.79.Final.jar:/Users/lavender/.m2/repository/io/netty/netty-common/4.1.79.Final/netty-common-4.1.79.Final.jar:/Users/lavender/.m2/repository/io/netty/netty-handler/4.1.79.Final/netty-handler-4.1.79.Final.jar:/Users/lavender/.m2/repository/io/netty/netty-transport-native-unix-common/4.1.79.Final/netty-transport-native-unix-common-4.1.79.Final.jar:/Users/lavender/.m2/repository/io/netty/netty-resolver/4.1.79.Final/netty-resolver-4.1.79.Final.jar:/Users/lavender/.m2/repository/io/netty/netty-transport/4.1.79.Final/netty-transport-4.1.79.Final.jar:/Users/lavender/.m2/repository/args4j/args4j/2.33/args4j-2.33.jar:/Users/lavender/.m2/repository/org/codelibs/curl4j/1.2.4/curl4j-1.2.4.jar:/Users/lavender/.m2/repository/commons-io/commons-io/2.6/commons-io-2.6.jar:/Users/lavender/.m2/repository/org/locationtech/jts/jts-core/1.15.0/jts-core-1.15.0.jar:/Users/lavender/.m2/repository/org/locationtech/spatial4j/spatial4j/0.7/spatial4j-0.7.jar:/Users/lavender/.m2/repository/org/codelibs/elasticsearch/module/analysis-common/7.10.2/analysis-common-7.10.2.jar:/Users/lavender/.m2/repository/junit/junit/4.13.2/junit-4.13.2.jar:/Users/lavender/.m2/repository/org/hamcrest/hamcrest-core/2.2/hamcrest-core-2.2.jar com.intellij.rt.junit.JUnitStarter -ideVersion5 -junit5 com.example.estest.PersonControllerFunctionWithEmbeddedESClusterTests
21:18:45.505 [main] DEBUG codelibs.cluster.runner - org.elasticsearch.datastreams.DataStreamsPlugin is not found.
java.lang.ClassNotFoundException: org.elasticsearch.datastreams.DataStreamsPlugin
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
	at java.base/java.lang.Class.forName0(Native Method)
	at java.base/java.lang.Class.forName(Class.java:375)
	at org.codelibs.elasticsearch.runner.ElasticsearchClusterRunner.build(ElasticsearchClusterRunner.java:352)
	at org.codelibs.elasticsearch.runner.ElasticsearchClusterRunner.build(ElasticsearchClusterRunner.java:318)
	at com.example.estest.BaseIntegrationTest.clusterRunner(BaseIntegrationTest.java:35)
	at com.example.estest.BaseIntegrationTest.<clinit>(BaseIntegrationTest.java:21)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
	at org.junit.platform.commons.util.ReflectionUtils.newInstance(ReflectionUtils.java:550)
	at org.junit.jupiter.engine.execution.ConstructorInvocation.proceed(ConstructorInvocation.java:56)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
	at org.junit.jupiter.api.extension.InvocationInterceptor.interceptTestClassConstructor(InvocationInterceptor.java:73)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:77)
	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.invokeTestClassConstructor(ClassBasedTestDescriptor.java:355)
	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.instantiateTestClass(ClassBasedTestDescriptor.java:302)
	at org.junit.jupiter.engine.descriptor.ClassTestDescriptor.instantiateTestClass(ClassTestDescriptor.java:79)
	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.instantiateAndPostProcessTestInstance(ClassBasedTestDescriptor.java:280)
	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$testInstancesProvider$4(ClassBasedTestDescriptor.java:272)
	at java.base/java.util.Optional.orElseGet(Optional.java:364)
	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$testInstancesProvider$5(ClassBasedTestDescriptor.java:271)
	at org.junit.jupiter.engine.execution.TestInstancesProvider.getTestInstances(TestInstancesProvider.java:31)
	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$before$2(ClassBasedTestDescriptor.java:197)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.before(ClassBasedTestDescriptor.java:196)
	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.before(ClassBasedTestDescriptor.java:80)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:148)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
	at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
	at org.junit.platform.launcher.core.SessionPerRequestLauncher.execute(SessionPerRequestLauncher.java:53)
	at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:57)
	at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38)
	at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11)
	at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35)
	at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235)
	at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)
Base Path:    ./target/es
Num Of Node:  1
Node Name:      Node 1
HTTP Port:      9202
Data Directory: ./target/es/node_1/data
Log Directory:  ./target/es/node_1/logs
21:18:46.397 [main] INFO org.elasticsearch.node.Node - version[8.4.0], pid[95524], build[unknown/f56126089ca4db89b631901ad7cce0a8e10e2fe5/2022-08-19T19:23:42.954591481Z], OS[Mac OS X/12.3/x86_64], JVM[Amazon.com Inc./OpenJDK 64-Bit Server VM/17.0.4.1/17.0.4.1+9-LTS]
21:18:46.397 [main] INFO org.elasticsearch.node.Node - JVM home [/Users/lavender/Library/Java/JavaVirtualMachines/corretto-17.0.4.1/Contents/Home], using bundled JDK [false]
21:18:46.397 [main] INFO org.elasticsearch.node.Node - JVM arguments [-ea, -Didea.test.cyclic.buffer.size=1048576, -javaagent:/Applications/IntelliJ IDEA CE.app/Contents/lib/idea_rt.jar=55946:/Applications/IntelliJ IDEA CE.app/Contents/bin, -Dfile.encoding=UTF-8]
21:18:46.398 [main] DEBUG org.elasticsearch.node.Node - using config [/Users/lavender/Documents/zqf/javaLearning/code/estest/target/es/node_1/config], data [[/Users/lavender/Documents/zqf/javaLearning/code/estest/target/es/node_1/data]], logs [/Users/lavender/Documents/zqf/javaLearning/code/estest/target/es/node_1/logs], plugins [/Users/lavender/Documents/zqf/javaLearning/code/estest/target/es/node_1/plugins]
21:18:46.454 [main] INFO org.elasticsearch.plugins.PluginsService - no modules loaded
21:18:46.454 [main] INFO org.elasticsearch.plugins.PluginsService - no plugins loaded

Test ignored.

java.lang.NoClassDefFoundError: org/elasticsearch/plugins/PluginType

	at org.elasticsearch.plugins.ClusterRunnerPluginsService.<init>(ClusterRunnerPluginsService.java:57)
	at org.codelibs.elasticsearch.runner.ElasticsearchClusterRunner.lambda$execute$2(ElasticsearchClusterRunner.java:482)
	at org.elasticsearch.node.Node.<init>(Node.java:399)
	at org.codelibs.elasticsearch.runner.node.ClusterRunnerNode.<init>(ClusterRunnerNode.java:30)
	at org.codelibs.elasticsearch.runner.ElasticsearchClusterRunner.execute(ElasticsearchClusterRunner.java:481)
	at org.codelibs.elasticsearch.runner.ElasticsearchClusterRunner.build(ElasticsearchClusterRunner.java:377)
	at org.codelibs.elasticsearch.runner.ElasticsearchClusterRunner.build(ElasticsearchClusterRunner.java:318)
	at com.example.estest.BaseIntegrationTest.clusterRunner(BaseIntegrationTest.java:35)
	at com.example.estest.BaseIntegrationTest.<clinit>(BaseIntegrationTest.java:21)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
	at org.junit.platform.commons.util.ReflectionUtils.newInstance(ReflectionUtils.java:550)
	at org.junit.jupiter.engine.execution.ConstructorInvocation.proceed(ConstructorInvocation.java:56)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
	at org.junit.jupiter.api.extension.InvocationInterceptor.interceptTestClassConstructor(InvocationInterceptor.java:73)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:77)
	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.invokeTestClassConstructor(ClassBasedTestDescriptor.java:355)
	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.instantiateTestClass(ClassBasedTestDescriptor.java:302)
	at org.junit.jupiter.engine.descriptor.ClassTestDescriptor.instantiateTestClass(ClassTestDescriptor.java:79)
	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.instantiateAndPostProcessTestInstance(ClassBasedTestDescriptor.java:280)
	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$testInstancesProvider$4(ClassBasedTestDescriptor.java:272)
	at java.base/java.util.Optional.orElseGet(Optional.java:364)
	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$testInstancesProvider$5(ClassBasedTestDescriptor.java:271)
	at org.junit.jupiter.engine.execution.TestInstancesProvider.getTestInstances(TestInstancesProvider.java:31)
	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$before$2(ClassBasedTestDescriptor.java:197)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.before(ClassBasedTestDescriptor.java:196)
	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.before(ClassBasedTestDescriptor.java:80)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:148)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
	at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
	at org.junit.platform.launcher.core.SessionPerRequestLauncher.execute(SessionPerRequestLauncher.java:53)
	at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:57)
	at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38)
	at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11)
	at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35)
	at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235)
	at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)
Caused by: java.lang.ClassNotFoundException: org.elasticsearch.plugins.PluginType
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
	... 73 more


Process finished with exit code 255

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.7.3</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.example.estest</groupId>
	<artifactId>estest</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>esTest</name>
	<description>Elastic Search test project for Spring Boot</description>
	<properties>
		<java.version>1.8</java.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<version>1.18.24</version>
		</dependency>
		<dependency>
			<groupId>org.springdoc</groupId>
			<artifactId>springdoc-openapi-ui</artifactId>
			<version>1.6.4</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.data</groupId>
			<artifactId>spring-data-elasticsearch</artifactId>
		</dependency>
<!--		<dependency>-->
<!--			<groupId>org.elasticsearch.client</groupId>-->
<!--			<artifactId>elasticsearch-rest-high-level-client</artifactId>-->
<!--			<version>6.6.0</version>-->
<!--			<exclusions>-->
<!--				<exclusion>-->
<!--					<groupId>org.elasticsearch</groupId>-->
<!--					<artifactId>elasticsearch</artifactId>-->
<!--				</exclusion>-->
<!--			</exclusions>-->
<!--		</dependency>-->
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-databind</artifactId>
			<version>2.13.3</version>
		</dependency>
		<dependency>
			<groupId>org.elasticsearch</groupId>
			<artifactId>elasticsearch</artifactId>
			<version>8.4.0</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.codelibs</groupId>
			<artifactId>elasticsearch-cluster-runner</artifactId>
			<version>8.3.2.0</version>
			<scope>test</scope>
			<exclusions>
				<exclusion>
					<groupId>org.elasticsearch</groupId>
					<artifactId>elasticsearch</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>org.codelibs.elasticsearch.module</groupId>
			<artifactId>analysis-common</artifactId>
			<version>7.10.2</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

	<repositories>
		<repository>
			<id>central</id>
			<url>https://repo1.maven.org/maven2</url>
			<releases>
				<enabled>true</enabled>
			</releases>
			<snapshots>
				<enabled>true</enabled>
			</snapshots>
		</repository>
		<repository>
			<id>codelibs.org</id>
			<name>CodeLibs Repository</name>
			<url>https://maven.codelibs.org/</url>
		</repository>
	</repositories>

</project>

Performance problem in MacOS and JVMs newer than 8

Hi!

When moving from Java 8 to Java 17, we noticed a very big performance hit when indexing documents in a Mac. Taking this script as an example, the following are the numbers I got:

  • tag elasticsearch-cluster-runner-7.10.2.0, Java temurin-8.0.332+9, took 6 seconds
  • tag elasticsearch-cluster-runner-7.10.2.0, Java temurin-17.0.3+7, took 42 seconds
  • tag elasticsearch-cluster-runner-8.2.0.0, Java temurin-17.0.3+7, took 37 seconds

This was tested in a MacbookPro running OSX 12.3.1. I used asdf to change between Java versions, using the temurin distribution. The exact numbers are not important, it was just to show the magnitude of the slowdown. I also tested in some other Java versions, and I think the issue was also present.

However, I cannot replicate this problem in a Linux system: performance there seems to be the same whatever the vm I am using.

These numbers come from running elasticsearch-cluster-runner using something like git clean -dxf && mvn compile && mvn exec:java for each test.

Are you aware of any Mac/OSX specific issue that would cause this slowdown in a Mac?
Thanks!

latest version problem

I'm so glad I found this test tool that's really good for testing lucene! By the way
Runner version 8.10.2 doesn't seem to support Lucene 8.10.1!
It seems to be compatible with 8.7.0, can you please enable it?

Sonatype Nexus cannot mirror CodeLibs Maven repository

Trying to add a proxy for CodeLibs repository to our company's Sonatype Nexus results in this error in the log:

2023-07-06 11:29:21,777+0200 ERROR [qtp195033295-194986798] ad85560 org.sonatype.nexus.rest.NexusApplication - Unhandled exception or error intercepted
java.lang.StringIndexOutOfBoundsException: String index out of range: -6
        at java.lang.AbstractStringBuilder.substring(AbstractStringBuilder.java:935)
        at java.lang.StringBuilder.substring(StringBuilder.java:76)
        at org.sonatype.nexus.plugins.rrb.parsers.HtmlRemoteRepositoryParser.getLinkUrl(HtmlRemoteRepositoryParser.java:173)
        at org.sonatype.nexus.plugins.rrb.parsers.HtmlRemoteRepositoryParser.extractLinks(HtmlRemoteRepositoryParser.java:110)
        at org.sonatype.nexus.plugins.rrb.MavenRepositoryReader.parseResult(MavenRepositoryReader.java:147)
        at org.sonatype.nexus.plugins.rrb.MavenRepositoryReader.extract(MavenRepositoryReader.java:105)
        at org.sonatype.nexus.plugins.rrb.RemoteBrowserResource.get(RemoteBrowserResource.java:138)

This seems similar to this issue:
https://stackoverflow.com/questions/44828352/how-to-solve-the-issue-of-nexus-not-finding-artifacts-from-added-repository-for

I wonder if you could do anything about this from your side?

close > clean on Windows 10 leave cluster log files behind

I see we're doing the right calls:
runner.close();
runner.clean();

so, I have to go in and occasionally blow out a ton of dead es-cluster dirs. clearly, something is holding the logs open.

versions this is observed: 7.8.0, 7.16.3.

thoughts?

...the logs of the test instance shown below.

[2022-02-17T14:41:57,077][INFO ][o.e.n.Node ] stopping ...
[2022-02-17T14:41:57,241][INFO ][o.e.n.Node ] stopped
[2022-02-17T14:41:57,244][INFO ][o.e.n.Node ] closing ...
[2022-02-17T14:41:57,569][INFO ][o.e.n.Node ] closed
[2022-02-17T14:41:57,573][INFO ][stdout ] Closed all nodes.
[2022-02-17T14:42:50,913][INFO ][stdout ] C:\Users\me\AppData\Local\Temp\es-cluster5011564220758749820\node_1\logs\my_1645126760359.log: The process cannot access the file because it is being used by another process.
[2022-02-17T14:42:50,916][INFO ][stdout ] Retring to delete it.
[2022-02-17T14:42:51,933][INFO ][stdout ] C:\Users\me\AppData\Local\Temp\es-cluster5011564220758749820\node_1\logs\my_1645126760359.log: The process cannot access the file because it is being used by another process.
[2022-02-17T14:42:51,937][INFO ][stdout ] Retring to delete it.
[2022-02-17T14:42:52,958][INFO ][stdout ] C:\Users\me\AppData\Local\Temp\es-cluster5011564220758749820\node_1\logs\my_1645126760359.log: The process cannot access the file because it is being used by another process.
[2022-02-17T14:42:52,961][INFO ][stdout ] Retring to delete it.
[2022-02-17T14:42:53,975][INFO ][stdout ] Failed to delete C:\Users\me\AppData\Local\Temp\es-cluster5011564220758749820 in this process.

before and after:

me@___ MINGW64 ~/AppData/local/temp
$ find es-*/ -type f
es-cluster5011564220758749820/node_1/config/elasticsearch.yml
es-cluster5011564220758749820/node_1/config/log4j2.properties
es-cluster5011564220758749820/node_1/data/nodes/0/indices/vqKweT4FQKmDAqZy5WEmow/0/index/segments_2
es-cluster5011564220758749820/node_1/data/nodes/0/indices/vqKweT4FQKmDAqZy5WEmow/0/index/write.lock
es-cluster5011564220758749820/node_1/data/nodes/0/indices/vqKweT4FQKmDAqZy5WEmow/0/translog/translog-2.tlog
es-cluster5011564220758749820/node_1/data/nodes/0/indices/vqKweT4FQKmDAqZy5WEmow/0/translog/translog.ckp
es-cluster5011564220758749820/node_1/data/nodes/0/indices/vqKweT4FQKmDAqZy5WEmow/0/_state/retention-leases-1.st
es-cluster5011564220758749820/node_1/data/nodes/0/indices/vqKweT4FQKmDAqZy5WEmow/0/_state/state-0.st
es-cluster5011564220758749820/node_1/data/nodes/0/indices/vqKweT4FQKmDAqZy5WEmow/_state/state-1.st
es-cluster5011564220758749820/node_1/data/nodes/0/node.lock
es-cluster5011564220758749820/node_1/data/nodes/0/_state/manifest-0.st
es-cluster5011564220758749820/node_1/data/nodes/0/_state/node-0.st
es-cluster5011564220758749820/node_1/data/nodes/0/_state/segments_a
es-cluster5011564220758749820/node_1/data/nodes/0/_state/write.lock
es-cluster5011564220758749820/node_1/data/nodes/0/_state/_5.cfe
es-cluster5011564220758749820/node_1/data/nodes/0/_state/_5.cfs
es-cluster5011564220758749820/node_1/data/nodes/0/_state/_5.si
es-cluster5011564220758749820/node_1/data/nodes/0/_state/_7.cfe
es-cluster5011564220758749820/node_1/data/nodes/0/_state/_7.cfs
es-cluster5011564220758749820/node_1/data/nodes/0/_state/_7.si
es-cluster5011564220758749820/node_1/logs/my_1645126760359.log
es-cluster5011564220758749820/node_1/logs/my_1645126760359_deprecation.json
es-cluster5011564220758749820/node_1/logs/my_1645126760359_deprecation.log
es-cluster5011564220758749820/node_1/logs/my_1645126760359_index_indexing_slowlog.json
es-cluster5011564220758749820/node_1/logs/my_1645126760359_index_indexing_slowlog.log
es-cluster5011564220758749820/node_1/logs/my_1645126760359_index_search_slowlog.json
es-cluster5011564220758749820/node_1/logs/my_1645126760359_index_search_slowlog.log
es-cluster5011564220758749820/node_1/logs/my_1645126760359_server.json

me@___ MINGW64 ~/AppData/local/temp
$ find es-*/ -type f
es-cluster5011564220758749820/node_1/logs/my_1645126760359.log
es-cluster5011564220758749820/node_1/logs/my_1645126760359_deprecation.json
es-cluster5011564220758749820/node_1/logs/my_1645126760359_deprecation.log
es-cluster5011564220758749820/node_1/logs/my_1645126760359_index_indexing_slowlog.json
es-cluster5011564220758749820/node_1/logs/my_1645126760359_index_indexing_slowlog.log
es-cluster5011564220758749820/node_1/logs/my_1645126760359_index_search_slowlog.json
es-cluster5011564220758749820/node_1/logs/my_1645126760359_index_search_slowlog.log
es-cluster5011564220758749820/node_1/logs/my_1645126760359_server.json

Improve clean process

Could not delete files/directories in clean method because the process itself opens them.

Delete-by-query problem in 7.17.1

I try to use the 7.17.1 version and I have an error when doing 'delete-by-query':

Suppressed: org.elasticsearch.client.ResponseException: method [POST], host [http://127.0.0.1:9201], URI [/booking_index/_delete_by_query?slices=1&requests_per_second=-1&wait_for_completion=true&timeout=1m], status line [HTTP/1.1 400 Bad Request]
{"error":{"root_cause":[{"type":"illegal_argument_exception","reason":"request [/booking_index/_delete_by_query] contains unrecognized parameters: [requests_per_second], [slices], [wait_for_completion]"}],"type":"illegal_argument_exception","reason":"request [/booking_index/_delete_by_query] contains unrecognized parameters: [requests_per_second], [slices], [wait_for_completion]"},"status":400}

I use rest-high-level-client 7.17.1 and I tried 7.17.4, but I get the same result.

Here is the code:
DeleteByQueryRequest request = new DeleteByQueryRequest(indexName); request.setQuery(QueryBuilders.matchAllQuery()); elasticSearchClient.deleteByQuery(request, RequestOptions.DEFAULT);

Can you, please, tell me where is the problem with those parameters?
I tried the same query in a docker image and I did not have this problem.
Thanks in advance,
Cristi

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.