Skip to content

Commit eaeacb0

Browse files
committed
MLE-24523 Getting reverse proxy tests running again
Lots of little improvements to Jenkinsfile too.
1 parent 2760447 commit eaeacb0

File tree

6 files changed

+66
-51
lines changed

6 files changed

+66
-51
lines changed

.copyrightconfig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,4 @@ startyear: 2010
1111
# - Dotfiles already skipped automatically
1212
# Enable by removing the leading '# ' from the next line and editing values.
1313
# filesexcluded: third_party/*, docs/generated/*.md, assets/*.png, scripts/temp_*.py, vendor/lib.js
14-
filesexcluded: .github/*, README.md, Jenkinsfile, gradle/*, docker-compose.yml, *.gradle, gradle.properties, gradlew, gradlew.bat, **/test/resources/**, *.md, pom.xml
14+
filesexcluded: .github/*, README.md, Jenkinsfile, gradle/*, docker-compose.yaml, docker-compose.yml, *.gradle, gradle.properties, gradlew, gradlew.bat, **/test/resources/**, *.md, pom.xml

Jenkinsfile

Lines changed: 56 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
@Library('shared-libraries') _
22

3-
def getJava() {
3+
def getJavaHomePath() {
44
if (env.JAVA_VERSION == "JAVA21") {
55
return "/home/builder/java/jdk-21.0.1"
66
} else {
@@ -38,9 +38,10 @@ def runTests(String image) {
3838
export GRADLE_USER_HOME=$WORKSPACE/$GRADLE_DIR
3939
export PATH=$GRADLE_USER_HOME:$JAVA_HOME/bin:$PATH
4040
cd java-client-api
41-
// Ensure all modules can be built first.
41+
42+
echo "Ensure all subprojects can be built first."
4243
./gradlew clean build -x test
43-
mkdir -p marklogic-client-api/build/test-results/test
44+
4445
./gradlew marklogic-client-api:test || true
4546
'''
4647

@@ -49,7 +50,6 @@ def runTests(String image) {
4950
export GRADLE_USER_HOME=$WORKSPACE/$GRADLE_DIR
5051
export PATH=$GRADLE_USER_HOME:$JAVA_HOME/bin:$PATH
5152
cd java-client-api
52-
mkdir -p ml-development-tools/build/test-results/test
5353
./gradlew ml-development-tools:test || true
5454
'''
5555

@@ -84,28 +84,41 @@ def runTests(String image) {
8484
def runTestsWithReverseProxy(String image) {
8585
setupDockerMarkLogic(image)
8686

87+
sh label: 'run marklogic-client-api tests with reverse proxy', script: '''#!/bin/bash
88+
export JAVA_HOME=$JAVA_HOME_DIR
89+
export GRADLE_USER_HOME=$WORKSPACE/$GRADLE_DIR
90+
export PATH=$GRADLE_USER_HOME:$JAVA_HOME/bin:$PATH
91+
cd java-client-api
92+
93+
echo "Ensure all subprojects can be built first."
94+
./gradlew clean build -x test
95+
96+
echo "Running marklogic-client-api tests with reverse proxy."
97+
./gradlew -PtestUseReverseProxyServer=true runReverseProxyServer marklogic-client-api:test || true
98+
'''
99+
87100
sh label: 'run fragile functional tests with reverse proxy', script: '''#!/bin/bash
88101
export JAVA_HOME=$JAVA_HOME_DIR
89102
export GRADLE_USER_HOME=$WORKSPACE/$GRADLE_DIR
90103
export PATH=$GRADLE_USER_HOME:$JAVA_HOME/bin:$PATH
91104
cd java-client-api
92-
./gradlew -PtestUseReverseProxyServer=true test-app:runReverseProxyServer marklogic-client-api-functionaltests:runFragileTests || true
105+
./gradlew -PtestUseReverseProxyServer=true runReverseProxyServer marklogic-client-api-functionaltests:runFragileTests || true
93106
'''
94107

95108
sh label: 'run fast functional tests with reverse proxy', script: '''#!/bin/bash
96109
export JAVA_HOME=$JAVA_HOME_DIR
97110
export GRADLE_USER_HOME=$WORKSPACE/$GRADLE_DIR
98111
export PATH=$GRADLE_USER_HOME:$JAVA_HOME/bin:$PATH
99112
cd java-client-api
100-
./gradlew -PtestUseReverseProxyServer=true test-app:runReverseProxyServer marklogic-client-api-functionaltests:runFastFunctionalTests || true
113+
./gradlew -PtestUseReverseProxyServer=true runReverseProxyServer marklogic-client-api-functionaltests:runFastFunctionalTests || true
101114
'''
102115

103116
sh label: 'run slow functional tests with reverse proxy', script: '''#!/bin/bash
104117
export JAVA_HOME=$JAVA_HOME_DIR
105118
export GRADLE_USER_HOME=$WORKSPACE/$GRADLE_DIR
106119
export PATH=$GRADLE_USER_HOME:$JAVA_HOME/bin:$PATH
107120
cd java-client-api
108-
./gradlew -PtestUseReverseProxyServer=true test-app:runReverseProxyServer marklogic-client-api-functionaltests:runSlowFunctionalTests || true
121+
./gradlew -PtestUseReverseProxyServer=true runReverseProxyServer marklogic-client-api-functionaltests:runSlowFunctionalTests || true
109122
'''
110123

111124
postProcessTestResults()
@@ -149,43 +162,45 @@ pipeline {
149162

150163
parameters {
151164
booleanParam(name: 'regressions', defaultValue: false, description: 'indicator if build is for regressions')
152-
string(name: 'Email', defaultValue: '', description: 'Who should I say send the email to?')
153-
string(name: 'JAVA_VERSION', defaultValue: 'JAVA8', description: 'Who should I say send the email to?')
165+
string(name: 'JAVA_VERSION', defaultValue: 'JAVA17', description: 'Either JAVA17 or JAVA21')
154166
}
155167

156168
environment {
157-
JAVA_HOME_DIR = getJava()
169+
JAVA_HOME_DIR = getJavaHomePath()
158170
GRADLE_DIR = ".gradle"
159171
DMC_USER = credentials('MLBUILD_USER')
160172
DMC_PASSWORD = credentials('MLBUILD_PASSWORD')
161173
}
162174

163175
stages {
176+
164177
stage('pull-request-tests') {
165178
when {
166179
not {
167180
expression { return params.regressions }
168181
}
169182
}
170183
steps {
171-
setupDockerMarkLogic("ml-docker-db-dev-tierpoint.bed-artifactory.bedford.progress.com/marklogic/marklogic-server-ubi-rootless:11.3.2-ubi-rootless-2.2.2")
184+
setupDockerMarkLogic("ml-docker-db-dev-tierpoint.bed-artifactory.bedford.progress.com/marklogic/marklogic-server-ubi:latest-12")
172185
sh label: 'run marklogic-client-api tests', script: '''#!/bin/bash
173186
export JAVA_HOME=$JAVA_HOME_DIR
174187
export GRADLE_USER_HOME=$WORKSPACE/$GRADLE_DIR
175188
export PATH=$GRADLE_USER_HOME:$JAVA_HOME/bin:$PATH
176189
cd java-client-api
177-
// Ensure all modules can be built first.
190+
191+
echo "Ensure all subprojects can be built first."
178192
./gradlew clean build -x test
179193
180-
// Run a sufficient number of tests to verify the PR.
181-
./gradlew cleanTest marklogic-client-api:test || true
194+
echo "Run a sufficient number of tests to verify the PR."
195+
./gradlew marklogic-client-api:test --tests ReadDocumentPageTest || true
196+
197+
echo "Run a test with the reverse proxy server to ensure it's fine."
198+
./gradlew -PtestUseReverseProxyServer=true runReverseProxyServer marklogic-client-api-functionaltests:test --tests SearchWithPageLengthTest || true
182199
'''
183-
// Omitting this until MLE-24523 can be addressed
184-
// ./gradlew -PtestUseReverseProxyServer=true test-app:runReverseProxyServer marklogic-client-api-functionaltests:runFastFunctionalTests || true
185-
junit '**/build/**/TEST*.xml'
186200
}
187201
post {
188202
always {
203+
junit '**/build/**/TEST*.xml'
189204
updateWorkspacePermissions()
190205
tearDownDocker()
191206
}
@@ -218,36 +233,35 @@ pipeline {
218233
}
219234
}
220235
steps {
221-
runTests("ml-docker-db-dev-tierpoint.bed-artifactory.bedford.progress.com/marklogic/marklogic-server-ubi-rootless:11.3.2-ubi-rootless-2.2.2")
222-
junit '**/build/**/TEST*.xml'
236+
runTests("ml-docker-db-dev-tierpoint.bed-artifactory.bedford.progress.com/marklogic/marklogic-server-ubi:latest-11")
223237
}
224238
post {
225239
always {
240+
junit '**/build/**/TEST*.xml'
226241
updateWorkspacePermissions()
227242
tearDownDocker()
228243
}
229244
}
230245
}
231246

232-
// Omitting this until MLE-24523 can be addressed
233-
// stage('regressions-11-reverseProxy') {
234-
// when {
235-
// allOf {
236-
// branch 'develop'
237-
// expression {return params.regressions}
238-
// }
239-
// }
240-
// steps {
241-
// runTestsWithReverseProxy("ml-docker-db-dev-tierpoint.bed-artifactory.bedford.progress.com/marklogic/marklogic-server-ubi:latest-11")
242-
// junit '**/build/**/TEST*.xml'
243-
// }
244-
// post {
245-
// always {
246-
// updateWorkspacePermissions()
247-
// tearDownDocker()
248-
// }
249-
// }
250-
// }
247+
stage('regressions-12-reverseProxy') {
248+
when {
249+
allOf {
250+
branch 'develop'
251+
expression {return params.regressions}
252+
}
253+
}
254+
steps {
255+
runTestsWithReverseProxy("ml-docker-db-dev-tierpoint.bed-artifactory.bedford.progress.com/marklogic/marklogic-server-ubi:latest-12")
256+
}
257+
post {
258+
always {
259+
junit '**/build/**/TEST*.xml'
260+
updateWorkspacePermissions()
261+
tearDownDocker()
262+
}
263+
}
264+
}
251265

252266
stage('regressions-12') {
253267
when {
@@ -257,18 +271,18 @@ pipeline {
257271
}
258272
}
259273
steps {
260-
runTests("ml-docker-db-dev-tierpoint.bed-artifactory.bedford.progress.com/marklogic/marklogic-server-ubi-rootless:12.0.0-ubi-rootless-2.2.0")
261-
junit '**/build/**/TEST*.xml'
274+
runTests("ml-docker-db-dev-tierpoint.bed-artifactory.bedford.progress.com/marklogic/marklogic-server-ubi:latest-12")
262275
}
263276
post {
264277
always {
278+
junit '**/build/**/TEST*.xml'
265279
updateWorkspacePermissions()
266280
tearDownDocker()
267281
}
268282
}
269283
}
270284

271-
stage('regressions-10.0') {
285+
stage('regressions-10') {
272286
when {
273287
allOf {
274288
branch 'develop'
@@ -277,10 +291,10 @@ pipeline {
277291
}
278292
steps {
279293
runTests("ml-docker-db-dev-tierpoint.bed-artifactory.bedford.progress.com/marklogic/marklogic-server-ubi:latest-10")
280-
junit '**/build/**/TEST*.xml'
281294
}
282295
post {
283296
always {
297+
junit '**/build/**/TEST*.xml'
284298
updateWorkspacePermissions()
285299
tearDownDocker()
286300
}

docker-compose.yaml

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,7 @@ services:
1818
- ${MARKLOGIC_LOGS_VOLUME}:/var/opt/MarkLogic/Logs
1919
ports:
2020
- "8000-8002:8000-8002"
21-
- "8010-8014:8010-8014"
22-
- "8022:8022"
23-
- "8054-8059:8054-8059"
24-
- "8093:8093"
21+
- "8010-8015:8010-8015" # Range of ports used by app servers, at least one of which - 8015 - is created by a test.
2522

2623
volumes:
2724
marklogicLogs:

marklogic-client-api-functionaltests/src/test/java/com/marklogic/client/fastfunctest/TestDatabaseClientConnection.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -124,11 +124,10 @@ void invalidPort() {
124124
DatabaseClient client = newDatabaseClientBuilder().withPort(assumedInvalidPort).build();
125125

126126
MarkLogicIOException ex = Assertions.assertThrows(MarkLogicIOException.class, () -> client.checkConnection());
127-
String expected = "Error occurred while calling http://localhost:60123/v1/ping; java.net.ConnectException: " +
128-
"Failed to connect to localhost/127.0.0.1:60123 ; possible reasons for the error include " +
127+
String expected = "Failed to connect to localhost/127.0.0.1:60123 ; possible reasons for the error include " +
129128
"that a MarkLogic app server may not be listening on the port, or MarkLogic was stopped " +
130129
"or restarted during the request; check the MarkLogic server logs for more information.";
131-
assertEquals(expected, ex.getMessage());
130+
assertTrue(ex.getMessage().contains(expected), "Unexpected error: " + ex.getMessage());
132131
}
133132

134133
@Test

marklogic-client-api-functionaltests/src/test/java/com/marklogic/client/functionaltest/BulkIOCallersFnTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public class BulkIOCallersFnTest extends BasicJavaClientREST {
4242
private static String host = null;
4343

4444
private static int modulesPort = 8000;
45-
private static int restTestport = 8093;
45+
private static int restTestport = 8015;
4646
private static String restServerName = "TestDynamicIngest";
4747

4848
private static SecurityContext secContext = null;

test-app/README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,3 +34,8 @@ You can also specify custom mappings via the Gradle task. For example, if you ha
3434
port 8123 and you want to associate a path of "/my/custom/server" to it, you can do:
3535

3636
./gradlew runBlock -PrpsCustomMappings=/my/custom/server,8123
37+
38+
To run one or more tests with the reverse proxy server being started, the tests being run, and then the server being
39+
stopped, do the following (you can see examples of this in the project `Jenkinsfile` as well):
40+
41+
./gradlew -PtestUseReverseProxyServer=true runReverseProxyServer marklogic-client-api:test --tests ReadDocumentPageTest

0 commit comments

Comments
 (0)