Skip to content

Commit 8d0cf9b

Browse files
authored
[neo4j] Deprecate withLabsPlugins (#8538)
This commit introduces a new method `withPlugins` to also get rid of the _labs_ part and be in line with the `withPlugins(MountableFile plugins)` method.
1 parent 5969b0f commit 8d0cf9b

File tree

4 files changed

+67
-20
lines changed

4 files changed

+67
-20
lines changed

docs/modules/databases/neo4j.md

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -73,13 +73,12 @@ Whole directories work as well:
7373

7474
### Add Neo4j Docker Labs plugins
7575

76-
Add any Neo4j Labs plugin from the [Neo4j Docker Labs plugin list](https://neo4j.com/docs/operations-manual/4.4/docker/operations/#docker-neo4jlabs-plugins).
76+
Add any Neo4j Labs plugin from the [Neo4j 4.4 Docker Labs plugin list](https://neo4j.com/docs/operations-manual/4.4/docker/operations/#docker-neo4jlabs-plugins)
77+
or [Neo4j 5 plugin list](https://neo4j.com/docs/operations-manual/5/configuration/plugins/).
7778

7879
!!! note
79-
At the moment only the plugins available from the list Neo4j Docker 4.4 are supported by type.
80-
If you want to register another supported Neo4j Labs plugin, you have to add it manually
81-
by using the method `withLabsPlugins(String... neo4jLabsPlugins)`.
82-
Please refer to the list of [supported Docker image plugins](https://neo4j.com/docs/operations-manual/current/docker/operations/#docker-neo4jlabs-plugins).
80+
The methods `withLabsPlugins(Neo4jLabsPlugin...)` and `withLabsPlugins(String... plugins)` are deprecated.
81+
Please the method `withPlugins(String... plugins)`.
8382

8483
<!--codeinclude-->
8584
[Configure Neo4j Labs Plugins](../../../modules/neo4j/src/test/java/org/testcontainers/containers/Neo4jContainerTest.java) inside_block:configureLabsPlugins

modules/neo4j/src/main/java/org/testcontainers/containers/Neo4jContainer.java

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -318,9 +318,11 @@ public String getAdminPassword() {
318318

319319
/**
320320
* Registers one or more {@link Neo4jLabsPlugin} for download and server startup.
321-
321+
*
322322
* @param neo4jLabsPlugins The Neo4j plugins that should get started with the server.
323323
* @return This container.
324+
* @deprecated {@link Neo4jLabsPlugin} were deprecated due to naming changes that cannot be solved by this enumeration.
325+
* Please use the {@link Neo4jContainer#withPlugins(String...)} method.
324326
*/
325327
public S withLabsPlugins(Neo4jLabsPlugin... neo4jLabsPlugins) {
326328
List<String> pluginNames = Arrays
@@ -333,13 +335,25 @@ public S withLabsPlugins(Neo4jLabsPlugin... neo4jLabsPlugins) {
333335
}
334336

335337
/**
336-
* Registers one or more {@link Neo4jLabsPlugin} for download and server startup.
338+
* @deprecated Please use {@link Neo4jContainer#withPlugins(String...)} for named plugins.
339+
*/
340+
public S withLabsPlugins(String... neo4jLabsPlugins) {
341+
return this.withPlugins(neo4jLabsPlugins);
342+
}
337343

338-
* @param neo4jLabsPlugins The Neo4j plugins that should get started with the server.
344+
/**
345+
* Registers one or more Neo4j plugins for server startup.
346+
* The plugins are listed here
347+
* <ul>
348+
* <li><a href="https://neo4j.com/docs/operations-manual/5/configuration/plugins/">Neo4j 5</a></li>
349+
* <li><a href="https://neo4j.com/docs/operations-manual/4.4/docker/operations/#docker-neo4jlabs-plugins">Neo4j 4.4</a></li>
350+
* </ul>
351+
*
352+
* @param plugins The Neo4j plugins that should get started with the server.
339353
* @return This container.
340354
*/
341-
public S withLabsPlugins(String... neo4jLabsPlugins) {
342-
this.labsPlugins.addAll(Arrays.asList(neo4jLabsPlugins));
355+
public S withPlugins(String... plugins) {
356+
this.labsPlugins.addAll(Arrays.asList(plugins));
343357
return self();
344358
}
345359

modules/neo4j/src/main/java/org/testcontainers/containers/Neo4jLabsPlugin.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,14 @@
44
* Reflects a plugin from the official Neo4j 4.4.
55
* <a href="https://neo4j.com/docs/operations-manual/4.4/docker/operations/#docker-neo4jlabs-plugins">Neo4j Labs Plugin list</a>.
66
* There might be plugins not supported by your selected version of Neo4j.
7+
*
8+
* @deprecated Please use {@link Neo4jContainer#withLabsPlugins(String...)} with the matching plugin name for your Neo4j version.
9+
* Due to some renaming of the (Docker image) plugin names, there is no naming consistency across versions.
10+
* The plugins are listed here
11+
* <ul>
12+
* <li><a href="https://neo4j.com/docs/operations-manual/5/configuration/plugins/">Neo4j 5</a></li>
13+
* <li><a href="https://neo4j.com/docs/operations-manual/4.4/docker/operations/#docker-neo4jlabs-plugins">Neo4j 4.4</a></li>
14+
* </ul>
715
*/
816
public enum Neo4jLabsPlugin {
917
APOC("apoc"),

modules/neo4j/src/test/java/org/testcontainers/containers/Neo4jContainerTest.java

Lines changed: 36 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -267,8 +267,9 @@ public void shouldRespectCustomWaitStrategy() {
267267
assertThat(neo4jContainer.getWaitStrategy()).isInstanceOf(CustomDummyWaitStrategy.class);
268268
}
269269

270+
// Test for deprecated functionality to be still alive, if `Neo4jLabsPlugin` gets removed, remove this test.
270271
@Test
271-
public void shouldConfigureSingleLabsPlugin() {
272+
public void shouldConfigureSingleLabsPluginByType() {
272273
try (
273274
Neo4jContainer<?> neo4jContainer = new Neo4jContainer<>("neo4j:4.4").withLabsPlugins(Neo4jLabsPlugin.APOC)
274275
) {
@@ -279,13 +280,12 @@ public void shouldConfigureSingleLabsPlugin() {
279280
}
280281
}
281282

283+
// Test for deprecated functionality to be still alive, if `Neo4jLabsPlugin` gets removed, remove this test.
282284
@Test
283-
public void shouldConfigureMultipleLabsPlugins() {
285+
public void shouldConfigureMultipleLabsPluginsByType() {
284286
try (
285-
// configureLabsPlugins {
286287
Neo4jContainer<?> neo4jContainer = new Neo4jContainer<>("neo4j:4.4")
287288
.withLabsPlugins(Neo4jLabsPlugin.APOC, Neo4jLabsPlugin.BLOOM);
288-
// }
289289
) {
290290
// needs to get called explicitly for setup
291291
neo4jContainer.configure();
@@ -295,26 +295,52 @@ public void shouldConfigureMultipleLabsPlugins() {
295295
}
296296
}
297297

298+
// Test for deprecated functionality to be still alive, if `Neo4jContainer#withLabsPlugins` gets removed, remove this test.
298299
@Test
299-
public void shouldConfigureSingleLabsPluginWithString() {
300-
try (Neo4jContainer<?> neo4jContainer = new Neo4jContainer<>("neo4j:4.4").withLabsPlugins("myApoc")) {
300+
public void shouldConfigureSingleLabsPlugin() {
301+
try (Neo4jContainer<?> neo4jContainer = new Neo4jContainer<>("neo4j:4.4").withLabsPlugins("apoc")) {
301302
// needs to get called explicitly for setup
302303
neo4jContainer.configure();
303304

304-
assertThat(neo4jContainer.getEnvMap()).containsEntry("NEO4JLABS_PLUGINS", "[\"myApoc\"]");
305+
assertThat(neo4jContainer.getEnvMap()).containsEntry("NEO4JLABS_PLUGINS", "[\"apoc\"]");
305306
}
306307
}
307308

309+
// Test for deprecated functionality to be still alive, if `Neo4jContainer#withLabsPlugins` gets removed, remove this test.
308310
@Test
309-
public void shouldConfigureMultipleLabsPluginsWithString() {
311+
public void shouldConfigureMultipleLabsPlugins() {
312+
try (Neo4jContainer<?> neo4jContainer = new Neo4jContainer<>("neo4j:4.4").withLabsPlugins("apoc", "bloom");) {
313+
// needs to get called explicitly for setup
314+
neo4jContainer.configure();
315+
316+
assertThat(neo4jContainer.getEnvMap().get("NEO4JLABS_PLUGINS"))
317+
.containsAnyOf("[\"apoc\",\"bloom\"]", "[\"bloom\",\"apoc\"]");
318+
}
319+
}
320+
321+
@Test
322+
public void shouldConfigureSinglePluginByName() {
323+
try (Neo4jContainer<?> neo4jContainer = new Neo4jContainer<>("neo4j:4.4").withPlugins("apoc")) {
324+
// needs to get called explicitly for setup
325+
neo4jContainer.configure();
326+
327+
assertThat(neo4jContainer.getEnvMap()).containsEntry("NEO4JLABS_PLUGINS", "[\"apoc\"]");
328+
}
329+
}
330+
331+
@Test
332+
public void shouldConfigureMultiplePluginsByName() {
310333
try (
311-
Neo4jContainer<?> neo4jContainer = new Neo4jContainer<>("neo4j:4.4").withLabsPlugins("myApoc", "myBloom")
334+
// configureLabsPlugins {
335+
Neo4jContainer<?> neo4jContainer = new Neo4jContainer<>("neo4j:4.4") //
336+
.withPlugins("apoc", "bloom");
337+
// }
312338
) {
313339
// needs to get called explicitly for setup
314340
neo4jContainer.configure();
315341

316342
assertThat(neo4jContainer.getEnvMap().get("NEO4JLABS_PLUGINS"))
317-
.containsAnyOf("[\"myApoc\",\"myBloom\"]", "[\"myBloom\",\"myApoc\"]");
343+
.containsAnyOf("[\"apoc\",\"bloom\"]", "[\"bloom\",\"apoc\"]");
318344
}
319345
}
320346

0 commit comments

Comments
 (0)