Skip to content

Commit bd5c5c6

Browse files
committed
Adjust Solr start parameters for Solr >= 9.7.0
Fixes #9601
1 parent 6139e5e commit bd5c5c6

File tree

2 files changed

+26
-5
lines changed

2 files changed

+26
-5
lines changed

modules/solr/src/main/java/org/testcontainers/containers/SolrContainer.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import lombok.SneakyThrows;
55
import org.apache.commons.lang3.StringUtils;
66
import org.testcontainers.containers.wait.strategy.LogMessageWaitStrategy;
7+
import org.testcontainers.utility.ComparableVersion;
78
import org.testcontainers.utility.DockerImageName;
89

910
import java.net.URL;
@@ -39,6 +40,9 @@ public class SolrContainer extends GenericContainer<SolrContainer> {
3940

4041
private SolrContainerConfiguration configuration;
4142

43+
// for version-specific adjustments
44+
private final ComparableVersion imageVersion;
45+
4246
/**
4347
* @deprecated use {@link #SolrContainer(DockerImageName)} instead
4448
*/
@@ -63,6 +67,7 @@ public SolrContainer(final DockerImageName dockerImageName) {
6367
.withRegEx(".*o\\.e\\.j\\.s\\.Server Started.*")
6468
.withStartupTimeout(Duration.of(60, ChronoUnit.SECONDS));
6569
this.configuration = new SolrContainerConfiguration();
70+
this.imageVersion = new ComparableVersion(dockerImageName.getVersionPart());
6671
}
6772

6873
public SolrContainer withZookeeper(boolean zookeeper) {
@@ -114,7 +119,11 @@ protected void configure() {
114119
// Configure Zookeeper
115120
if (configuration.isZookeeper()) {
116121
this.addExposedPort(ZOOKEEPER_PORT);
117-
command = "-DzkRun -h localhost";
122+
if (this.imageVersion.isGreaterThanOrEqualTo("9.7.0")) {
123+
command = "-DzkRun --host localhost";
124+
} else {
125+
command = "-DzkRun -h localhost";
126+
}
118127
}
119128

120129
// Apply generated Command

modules/solr/src/test/java/org/testcontainers/containers/SolrContainerTest.java

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,27 @@
66
import org.apache.solr.client.solrj.response.SolrPingResponse;
77
import org.junit.After;
88
import org.junit.Test;
9+
import org.junit.runner.RunWith;
10+
import org.junit.runners.Parameterized;
911
import org.testcontainers.utility.DockerImageName;
1012

1113
import java.io.IOException;
1214

1315
import static org.assertj.core.api.Assertions.assertThat;
1416

17+
@RunWith(Parameterized.class)
1518
public class SolrContainerTest {
1619

17-
private static final DockerImageName SOLR_IMAGE = DockerImageName.parse("solr:8.3.0");
20+
@Parameterized.Parameters(name = "{0}")
21+
public static DockerImageName[] getVersionsToTest() {
22+
return new DockerImageName[] {
23+
DockerImageName.parse("solr:8.11.4"),
24+
DockerImageName.parse("solr:9.8.0")
25+
};
26+
}
27+
28+
@Parameterized.Parameter
29+
public DockerImageName solrImage;
1830

1931
private SolrClient client = null;
2032

@@ -28,7 +40,7 @@ public void stopRestClient() throws IOException {
2840

2941
@Test
3042
public void solrCloudTest() throws IOException, SolrServerException {
31-
try (SolrContainer container = new SolrContainer(SOLR_IMAGE)) {
43+
try (SolrContainer container = new SolrContainer(solrImage)) {
3244
container.start();
3345
SolrPingResponse response = getClient(container).ping("dummy");
3446
assertThat(response.getStatus()).isZero();
@@ -38,7 +50,7 @@ public void solrCloudTest() throws IOException, SolrServerException {
3850

3951
@Test
4052
public void solrStandaloneTest() throws IOException, SolrServerException {
41-
try (SolrContainer container = new SolrContainer(SOLR_IMAGE).withZookeeper(false)) {
53+
try (SolrContainer container = new SolrContainer(solrImage).withZookeeper(false)) {
4254
container.start();
4355
SolrPingResponse response = getClient(container).ping("dummy");
4456
assertThat(response.getStatus()).isZero();
@@ -50,7 +62,7 @@ public void solrStandaloneTest() throws IOException, SolrServerException {
5062
public void solrCloudPingTest() throws IOException, SolrServerException {
5163
// solrContainerUsage {
5264
// Create the solr container.
53-
SolrContainer container = new SolrContainer(SOLR_IMAGE);
65+
SolrContainer container = new SolrContainer(solrImage);
5466

5567
// Start the container. This step might take some time...
5668
container.start();

0 commit comments

Comments
 (0)