Skip to content

Commit 5f16aec

Browse files
committed
Assert compatibility with MongoDB 6.0.
Closes #4138
1 parent 5fc49b1 commit 5f16aec

File tree

5 files changed

+74
-12
lines changed

5 files changed

+74
-12
lines changed

Diff for: Jenkinsfile

+42-1
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,25 @@ pipeline {
5858
}
5959
}
6060
}
61+
stage('Publish JDK (Java 17) + MongoDB 6.0') {
62+
when {
63+
anyOf {
64+
changeset "ci/openjdk17-mongodb-6.0/**"
65+
changeset "ci/pipeline.properties"
66+
}
67+
}
68+
agent { label 'data' }
69+
options { timeout(time: 30, unit: 'MINUTES') }
70+
71+
steps {
72+
script {
73+
def image = docker.build("springci/spring-data-with-mongodb-6.0:${p['java.main.tag']}", "--build-arg BASE=${p['docker.java.main.image']} --build-arg MONGODB=${p['docker.mongodb.6.0.version']} ci/openjdk17-mongodb-6.0/")
74+
docker.withRegistry(p['docker.registry'], p['docker.credentials']) {
75+
image.push()
76+
}
77+
}
78+
}
79+
}
6180
}
6281
}
6382

@@ -100,7 +119,7 @@ pipeline {
100119
}
101120
parallel {
102121

103-
stage("test: mongodb 5.0 (Java 17)") {
122+
stage("test: MongoDB 5.0 (Java 17)") {
104123
agent {
105124
label 'data'
106125
}
@@ -121,6 +140,28 @@ pipeline {
121140
}
122141
}
123142
}
143+
144+
stage("test: MongoDB 6.0 (Java 17)") {
145+
agent {
146+
label 'data'
147+
}
148+
options { timeout(time: 30, unit: 'MINUTES') }
149+
environment {
150+
ARTIFACTORY = credentials("${p['artifactory.credentials']}")
151+
}
152+
steps {
153+
script {
154+
docker.image("harbor-repo.vmware.com/dockerhub-proxy-cache/springci/spring-data-with-mongodb-6.0:${p['java.main.tag']}").inside(p['docker.java.inside.basic']) {
155+
sh 'mkdir -p /tmp/mongodb/db /tmp/mongodb/log'
156+
sh 'mongod --setParameter transactionLifetimeLimitSeconds=90 --setParameter maxTransactionLockRequestTimeoutMillis=10000 --dbpath /tmp/mongodb/db --replSet rs0 --fork --logpath /tmp/mongodb/log/mongod.log &'
157+
sh 'sleep 10'
158+
sh 'mongo --eval "rs.initiate({_id: \'rs0\', members:[{_id: 0, host: \'127.0.0.1:27017\'}]});"'
159+
sh 'sleep 15'
160+
sh 'MAVEN_OPTS="-Duser.name=jenkins -Duser.home=/tmp/jenkins-home" ./mvnw -s settings.xml clean dependency:list test -Duser.name=jenkins -Dsort -U -B'
161+
}
162+
}
163+
}
164+
}
124165
}
125166
}
126167

Diff for: ci/openjdk17-mongodb-6.0/Dockerfile

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
ARG BASE
2+
FROM ${BASE}
3+
# Any ARG statements before FROM are cleared.
4+
ARG MONGODB
5+
6+
ENV TZ=Etc/UTC
7+
ENV DEBIAN_FRONTEND=noninteractive
8+
9+
RUN set -eux && \
10+
sed -i -e 's/archive.ubuntu.com/mirror.one.com/g' /etc/apt/sources.list && \
11+
sed -i -e 's/security.ubuntu.com/mirror.one.com/g' /etc/apt/sources.list && \
12+
sed -i -e 's/http/https/g' /etc/apt/sources.list && \
13+
apt-get update && apt-get install -y apt-transport-https apt-utils gnupg2 wget && \
14+
# MongoDB 6.0 release signing key
15+
wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | apt-key add - && \
16+
# Needed when MongoDB creates a 6.0 folder.
17+
echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/6.0 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-6.0.list && \
18+
echo ${TZ} > /etc/timezone
19+
20+
RUN apt-get update && \
21+
apt-get install -y mongodb-org=${MONGODB} mongodb-org-server=${MONGODB} mongodb-org-shell=${MONGODB} mongodb-org-mongos=${MONGODB} mongodb-org-tools=${MONGODB} && \
22+
apt-get clean && \
23+
rm -rf /var/lib/apt/lists/*

Diff for: ci/pipeline.properties

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ docker.java.main.image=harbor-repo.vmware.com/dockerhub-proxy-cache/library/ecli
77
# Supported versions of MongoDB
88
docker.mongodb.4.4.version=4.4.12
99
docker.mongodb.5.0.version=5.0.6
10+
docker.mongodb.6.0.version=6.0.0
1011

1112
# Supported versions of Redis
1213
docker.redis.6.version=6.2.6

Diff for: spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/AggregationTests.java

+6-9
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717

1818
import static org.springframework.data.domain.Sort.Direction.*;
1919
import static org.springframework.data.mongodb.core.aggregation.Aggregation.*;
20-
import static org.springframework.data.mongodb.core.aggregation.Fields.*;
2120
import static org.springframework.data.mongodb.core.query.Criteria.*;
2221
import static org.springframework.data.mongodb.test.util.Assertions.*;
2322

@@ -42,8 +41,6 @@
4241
import java.util.Scanner;
4342
import java.util.stream.Stream;
4443

45-
import org.apache.commons.logging.Log;
46-
import org.apache.commons.logging.LogFactory;
4744
import org.assertj.core.data.Offset;
4845
import org.bson.Document;
4946
import org.junit.jupiter.api.AfterEach;
@@ -73,6 +70,7 @@
7370
import org.springframework.data.mongodb.core.query.NearQuery;
7471
import org.springframework.data.mongodb.core.query.Query;
7572
import org.springframework.data.mongodb.repository.Person;
73+
import org.springframework.data.mongodb.test.util.EnableIfMongoServerVersion;
7674
import org.springframework.data.mongodb.test.util.MongoTemplateExtension;
7775
import org.springframework.data.mongodb.test.util.MongoTestTemplate;
7876
import org.springframework.data.mongodb.test.util.MongoVersion;
@@ -100,7 +98,6 @@
10098
public class AggregationTests {
10199

102100
private static final String INPUT_COLLECTION = "aggregation_test_collection";
103-
private static final Log LOGGER = LogFactory.getLog(AggregationTests.class);
104101

105102
private static boolean initialized = false;
106103

@@ -318,6 +315,7 @@ void shouldUnwindWithIndex() {
318315
}
319316

320317
@Test // DATAMONGO-1391
318+
@EnableIfMongoServerVersion(isLessThan = "6.0") // $sort does not seem to have an effect on $unwind
321319
void shouldUnwindPreserveEmpty() {
322320

323321
MongoCollection<Document> coll = mongoTemplate.getCollection(INPUT_COLLECTION);
@@ -1375,7 +1373,8 @@ void shouldRetrieveDateTimeFragementsCorrectly() throws Exception {
13751373

13761374
mongoTemplate.dropCollection(ObjectWithDate.class);
13771375

1378-
ZonedDateTime dateTime = ZonedDateTime.of(LocalDateTime.of(LocalDate.of(2014, 2, 7), LocalTime.of(3, 4, 5, 6)), ZoneId.of("UTC"));
1376+
ZonedDateTime dateTime = ZonedDateTime.of(LocalDateTime.of(LocalDate.of(2014, 2, 7), LocalTime.of(3, 4, 5, 6)),
1377+
ZoneId.of("UTC"));
13791378

13801379
ObjectWithDate owd = new ObjectWithDate(Date.from(dateTime.toInstant()));
13811380
mongoTemplate.insert(owd);
@@ -1706,10 +1705,8 @@ void letShouldBeAppliedCorrectly() {
17061705
.forExpression(ConditionalOperators.Cond.when("applyDiscount").then(0.9D).otherwise(1.0D));
17071706

17081707
TypedAggregation<Sales2> agg = Aggregation.newAggregation(Sales2.class,
1709-
Aggregation.project()
1710-
.and(VariableOperators.Let.define(total, discounted).andApply(
1711-
ArithmeticOperators.valueOf("total").multiplyBy("discounted")))
1712-
.as("finalTotal"));
1708+
Aggregation.project().and(VariableOperators.Let.define(total, discounted)
1709+
.andApply(ArithmeticOperators.valueOf("total").multiplyBy("discounted"))).as("finalTotal"));
17131710

17141711
AggregationResults<Document> result = mongoTemplate.aggregate(agg, Document.class);
17151712
assertThat(result.getMappedResults()).contains(new Document("_id", "1").append("finalTotal", 9.450000000000001D),

Diff for: src/main/asciidoc/preface.adoc

+2-2
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,8 @@ See also the https://www.mongodb.com/docs/drivers/java/sync/current/compatibilit
6161

6262
|2022.0
6363
|4.0.x
64-
|4.6.x
65-
|5.0.x
64+
|4.7.x
65+
|6.0.x
6666

6767
|2021.2
6868
|3.4.x

0 commit comments

Comments
 (0)