# Elasticsearch Java testing framework and plugins

**URL:** <https://discuss.elastic.co/t/elasticsearch-java-testing-framework-and-plugins/84703>\
**Category:** Elasticsearch\
**Created:** [May 5, 2017, 11:26am UTC](https://discuss.elastic.co/t/elasticsearch-java-testing-framework-and-plugins/84703 "2017-05-05T11:26:23Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![joschi](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/joschi/32/44946_2.png) [@joschi](https://discuss.elastic.co/u/joschi)\
**Post date:** [May 5, 2017, 11:26am UTC](https://discuss.elastic.co/t/elasticsearch-java-testing-framework-and-plugins/84703/1 "2017-05-05T11:26:23Z")

</div>

Hi,

how can I run tests within the [Elasticsearch Java testing framework](https://www.elastic.co/guide/en/elasticsearch/reference/current/testing-framework.html) which require a plugin (specifically [lang-painless](https://github.com/elastic/elasticsearch/tree/v5.4.0/modules/lang-painless))?

I want to use Elasticsearch 5.4.0 but couldn't find any artifact of Painless for that version. Is there an official artifact for Painless I can pull in, like the unofficial [org.codelibs.elasticsearch.module : lang-painless : 5.3.2](https://search.maven.org/#artifactdetails%7Corg.codelibs.elasticsearch.module%7Clang-painless%7C5.3.2%7Cjar)?

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [May 5, 2017, 11:56am UTC](https://discuss.elastic.co/t/elasticsearch-java-testing-framework-and-plugins/84703/2 "2017-05-05T11:56:41Z")

</div>

painless is running on the server side. Which means that it must run within an elasticsearch node.  
So you probably want to run integration tests here, right?

---

<div class="post-metadata">

**Author:** ![joschi](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/joschi/32/44946_2.png) [@joschi](https://discuss.elastic.co/u/joschi)\
**Post date:** [May 5, 2017, 12:03pm UTC](https://discuss.elastic.co/t/elasticsearch-java-testing-framework-and-plugins/84703/3 "2017-05-05T12:03:18Z")

</div>

Yes, I want to use `ESIntegTestCase`.

Any hints how I could add plugins there?

The specific project is [Jest](https://github.com/searchbox-io/Jest) and the code for Elasticsearch 5.3.0 is as follows:

> <https://github.com/searchbox-io/Jest/blob/ba06641cc11ae652cf3eeea5e560dd98e2a5be4a/pom.xml#L318-L323>

  

> <https://github.com/searchbox-io/Jest/blob/af2e137311b1ce56ebe233b243b74fa2eed6ace3/jest/src/test/java/io/searchbox/common/AbstractIntegrationTest.java#L45-L48>

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [May 5, 2017, 12:24pm UTC](https://discuss.elastic.co/t/elasticsearch-java-testing-framework-and-plugins/84703/4 "2017-05-05T12:24:54Z")

</div>

I'd start an external elasticsearch cluster.

For example, have a look at the [maven elasticsearch plugin](https://github.com/alexcojocaru/elasticsearch-maven-plugin) which is really nice for that.

---

<div class="post-metadata">

**Author:** ![joschi](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/joschi/32/44946_2.png) [@joschi](https://discuss.elastic.co/u/joschi)\
**Post date:** [May 5, 2017, 12:38pm UTC](https://discuss.elastic.co/t/elasticsearch-java-testing-framework-and-plugins/84703/5 "2017-05-05T12:38:46Z")

</div>

Thanks for your reply!

> [@dadoonet](#):
>
> I'd start an external elasticsearch cluster.

Does `ESIntegTestCase` work with an external Elasticsearch cluster?

If not, that's a change I'd like to avoid for now. Looks like it'll stay on Elasticsearch 5.3.x until there's a (third-party) artifact of `lang-painless` for ES 5.4.0.

It would work, if there was an official artifact for `lang-painless`. 😉

---

<div class="post-metadata">

**Author:** ![joschi](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/joschi/32/44946_2.png) [@joschi](https://discuss.elastic.co/u/joschi)\
**Post date:** [May 5, 2017, 12:48pm UTC](https://discuss.elastic.co/t/elasticsearch-java-testing-framework-and-plugins/84703/6 "2017-05-05T12:48:36Z")

</div>

> [@dadoonet](#):
>
> For example, have a look at the maven elasticsearch plugin which is really nice for that.

As far as I see, that Maven plugin only supports spawning a single Elasticsearch node but not a whole cluster, is that correct?

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [May 5, 2017, 2:26pm UTC](https://discuss.elastic.co/t/elasticsearch-java-testing-framework-and-plugins/84703/7 "2017-05-05T14:26:13Z")

</div>

Correct. May be you can open an issue so they will see if they can support this or not.  
Although it's a corner case IMO as you would just expect that the cluster is acting correctly whatever the number of nodes you have.

I understand that in your case you want to test things like failover or such.

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [June 2, 2017, 2:32pm UTC](https://discuss.elastic.co/t/elasticsearch-java-testing-framework-and-plugins/84703/8 "2017-06-02T14:32:42Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
