Commit 1a8f5199 authored by Andy Wilkinson's avatar Andy Wilkinson

Raise the default version of Mongo to 3.6.5 when using Embedded Mongo

While MongoDB 3.6.7 has been released, 3.6.5 is the latest version that's supported
by the version of Embedded Mongo that we're currently using.

Closes gh-14476
parent 5a2c8b50
...@@ -35,6 +35,7 @@ import de.flapdoodle.embed.mongo.config.RuntimeConfigBuilder; ...@@ -35,6 +35,7 @@ import de.flapdoodle.embed.mongo.config.RuntimeConfigBuilder;
import de.flapdoodle.embed.mongo.config.Storage; import de.flapdoodle.embed.mongo.config.Storage;
import de.flapdoodle.embed.mongo.distribution.Feature; import de.flapdoodle.embed.mongo.distribution.Feature;
import de.flapdoodle.embed.mongo.distribution.IFeatureAwareVersion; import de.flapdoodle.embed.mongo.distribution.IFeatureAwareVersion;
import de.flapdoodle.embed.mongo.distribution.Version;
import de.flapdoodle.embed.mongo.distribution.Versions; import de.flapdoodle.embed.mongo.distribution.Versions;
import de.flapdoodle.embed.process.config.IRuntimeConfig; import de.flapdoodle.embed.process.config.IRuntimeConfig;
import de.flapdoodle.embed.process.config.io.ProcessOutput; import de.flapdoodle.embed.process.config.io.ProcessOutput;
...@@ -125,11 +126,8 @@ public class EmbeddedMongoAutoConfiguration { ...@@ -125,11 +126,8 @@ public class EmbeddedMongoAutoConfiguration {
@Bean @Bean
@ConditionalOnMissingBean @ConditionalOnMissingBean
public IMongodConfig embeddedMongoConfiguration() throws IOException { public IMongodConfig embeddedMongoConfiguration() throws IOException {
IFeatureAwareVersion featureAwareVersion = Versions.withFeatures(
new GenericVersion(this.embeddedProperties.getVersion()),
this.embeddedProperties.getFeatures().toArray(new Feature[0]));
MongodConfigBuilder builder = new MongodConfigBuilder() MongodConfigBuilder builder = new MongodConfigBuilder()
.version(featureAwareVersion); .version(determineVersion());
EmbeddedMongoProperties.Storage storage = this.embeddedProperties.getStorage(); EmbeddedMongoProperties.Storage storage = this.embeddedProperties.getStorage();
if (storage != null) { if (storage != null) {
String databaseDir = storage.getDatabaseDir(); String databaseDir = storage.getDatabaseDir();
...@@ -150,6 +148,20 @@ public class EmbeddedMongoAutoConfiguration { ...@@ -150,6 +148,20 @@ public class EmbeddedMongoAutoConfiguration {
return builder.build(); return builder.build();
} }
private IFeatureAwareVersion determineVersion() {
if (this.embeddedProperties.getFeatures() == null) {
for (Version version : Version.values()) {
if (version.asInDownloadPath()
.equals(this.embeddedProperties.getVersion())) {
return version;
}
}
}
return Versions.withFeatures(
new GenericVersion(this.embeddedProperties.getVersion()),
this.embeddedProperties.getFeatures().toArray(new Feature[0]));
}
private InetAddress getHost() throws UnknownHostException { private InetAddress getHost() throws UnknownHostException {
if (this.properties.getHost() == null) { if (this.properties.getHost() == null) {
return InetAddress.getByAddress(Network.localhostIsIPv6() return InetAddress.getByAddress(Network.localhostIsIPv6()
......
...@@ -16,8 +16,6 @@ ...@@ -16,8 +16,6 @@
package org.springframework.boot.autoconfigure.mongo.embedded; package org.springframework.boot.autoconfigure.mongo.embedded;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set; import java.util.Set;
import de.flapdoodle.embed.mongo.distribution.Feature; import de.flapdoodle.embed.mongo.distribution.Feature;
...@@ -40,15 +38,15 @@ public class EmbeddedMongoProperties { ...@@ -40,15 +38,15 @@ public class EmbeddedMongoProperties {
/** /**
* Version of Mongo to use. * Version of Mongo to use.
*/ */
private String version = "3.2.2"; private String version = "3.6.5";
private final Storage storage = new Storage(); private final Storage storage = new Storage();
/** /**
* Comma-separated list of features to enable. * Comma-separated list of features to enable. Uses the defaults of the configured
* version by default.
*/ */
private Set<Feature> features = new HashSet<>( private Set<Feature> features = null;
Collections.singletonList(Feature.SYNC_DELAY));
public String getVersion() { public String getVersion() {
return this.version; return this.version;
......
...@@ -60,19 +60,20 @@ public class EmbeddedMongoAutoConfigurationTests { ...@@ -60,19 +60,20 @@ public class EmbeddedMongoAutoConfigurationTests {
@Test @Test
public void defaultVersion() { public void defaultVersion() {
assertVersionConfiguration(null, "3.2.2"); assertVersionConfiguration(null, "3.6.5");
} }
@Test @Test
public void customVersion() { public void customVersion() {
assertVersionConfiguration("2.7.1", "2.7.1"); assertVersionConfiguration("3.6.3", "3.6.3");
} }
@Test @Test
public void customFeatures() { public void customFeatures() {
load("spring.mongodb.embedded.features=TEXT_SEARCH, SYNC_DELAY"); load("spring.mongodb.embedded.features=TEXT_SEARCH, SYNC_DELAY, ONLY_WITH_SSL, NO_HTTP_INTERFACE_ARG");
assertThat(this.context.getBean(EmbeddedMongoProperties.class).getFeatures()) assertThat(this.context.getBean(EmbeddedMongoProperties.class).getFeatures())
.contains(Feature.TEXT_SEARCH, Feature.SYNC_DELAY); .containsExactly(Feature.TEXT_SEARCH, Feature.SYNC_DELAY,
Feature.ONLY_WITH_SSL, Feature.NO_HTTP_INTERFACE_ARG);
} }
@Test @Test
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment