Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -330,7 +330,7 @@ private void configureExternalElasticsearch() {
}

private void configureManagedElasticsearch() {
ensureCorrectNetworkSetupForManagedMode();
ensureCorrectNetworkSetupForManagedMode(elasticsearch.getNetwork(), getNetwork());

if (getNetwork() == null) {
createAdHocNetwork();
Expand Down Expand Up @@ -379,10 +379,7 @@ private byte[] copyElasticsearchHttpCaCertificateOrThrow() {
}
}

private void ensureCorrectNetworkSetupForManagedMode() {
Network esNetwork = elasticsearch.getNetwork();
Network kbNetwork = this.getNetwork();

static void ensureCorrectNetworkSetupForManagedMode(Network esNetwork, Network kbNetwork) {
if ((esNetwork == null) != (kbNetwork == null)) {
throw new IllegalStateException(
"Managed mode requires either both containers share the same explicit network, " +
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
import java.nio.charset.StandardCharsets;

import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatCode;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.assertj.core.api.Assumptions.assumeThat;

Expand Down Expand Up @@ -132,40 +133,47 @@ void managedModeUsesCustomElasticsearchNetworkAlias() throws Exception {
}
}

@Test
void managedModeAcceptsNoExplicitNetwork() {
assertThatCode(() -> KibanaContainer.ensureCorrectNetworkSetupForManagedMode(null, null))
.doesNotThrowAnyException();
}

@Test
void managedModeAcceptsSharedExplicitNetwork() {
try (Network network = Network.newNetwork()) {
assertThatCode(() -> KibanaContainer.ensureCorrectNetworkSetupForManagedMode(network, network))
.doesNotThrowAnyException();
}
}

@Test
void managedModeRejectsWhenOnlyElasticsearchHasExplicitNetwork() {
Network network = Network.newNetwork();
try (
ElasticsearchContainer es = new ElasticsearchContainer(ELASTICSEARCH_IMAGE_LATEST).withNetwork(network);
KibanaContainer kibana = new KibanaContainer(es)
) {
assertThatThrownBy(kibana::start)
try (Network network = Network.newNetwork()) {
assertThatThrownBy(() -> KibanaContainer.ensureCorrectNetworkSetupForManagedMode(network, null))
.as("managed mode requires Kibana to join the same explicit network as Elasticsearch")
.isInstanceOf(ContainerLaunchException.class)
.satisfies(ex -> {
assertThat(ex.getCause())
.isInstanceOf(IllegalStateException.class)
.hasMessageContaining("explicit network");
});
.isInstanceOf(IllegalStateException.class)
.hasMessageContaining("explicit network");
}
}

@Test
void managedModeRejectsWhenOnlyKibanaHasExplicitNetwork() {
try (Network network = Network.newNetwork()) {
assertThatThrownBy(() -> KibanaContainer.ensureCorrectNetworkSetupForManagedMode(null, network))
.as("managed mode requires Elasticsearch to join the same explicit network as Kibana")
.isInstanceOf(IllegalStateException.class)
.hasMessageContaining("explicit network");
}
}

@Test
void managedModeRejectsWhenNetworksDiffer() {
try (
Network esNetwork = Network.newNetwork();
Network kibanaNetwork = Network.newNetwork();
ElasticsearchContainer es = new ElasticsearchContainer(ELASTICSEARCH_IMAGE_LATEST).withNetwork(esNetwork);
KibanaContainer kibana = new KibanaContainer(es).withNetwork(kibanaNetwork)
) {
assertThatThrownBy(kibana::start)
try (Network esNetwork = Network.newNetwork(); Network kibanaNetwork = Network.newNetwork()) {
assertThatThrownBy(() -> KibanaContainer.ensureCorrectNetworkSetupForManagedMode(esNetwork, kibanaNetwork))
.as("managed mode rejects Kibana and Elasticsearch on different networks")
.isInstanceOf(ContainerLaunchException.class)
.satisfies(ex -> {
assertThat(ex.getCause())
.isInstanceOf(IllegalStateException.class)
.hasMessageContaining("different networks");
});
.isInstanceOf(IllegalStateException.class)
.hasMessageContaining("different networks");
}
}

Expand Down