1
1
ext {
2
- // TODO Java 17: Mule 4 doesn't support Java 17
3
- maxJavaVersionForTests = JavaVersion . VERSION_15
2
+ forkedTestMaxJavaVersionForTests = JavaVersion . VERSION_11
3
+ mule46ForkedTestMaxJavaVersionForTests = JavaVersion . VERSION_11
4
+ latestDepForkedTestMinJavaVersionForTests = JavaVersion . VERSION_17
5
+ latestDepForkedTestMaxJavaVersionForTests = JavaVersion . VERSION_17
4
6
}
7
+ def muleVersion = ' 4.5.0'
8
+ def appDir = " $projectDir /application"
5
9
6
10
muzzle {
7
- extraRepository(' anypoint-releases' , ' https://maven.anypoint.mulesoft.com/api/v2/maven' )
8
11
extraRepository(' mulesoft-releases' , ' https://repository.mulesoft.org/releases' )
9
12
extraRepository(' mulesoft-public' , ' https://repository.mulesoft.org/nexus/content/repositories/public' )
10
13
11
14
pass {
12
15
group = ' org.mule.runtime'
13
16
module = ' mule-core'
14
- versions = ' [,]'
15
- assertInverse = true
16
-
17
- excludeDependency ' com.google.code.findbugs:jsr305' // avoid dependency issue with mule-4.5.0
17
+ versions = " [$muleVersion ,)"
18
+ javaVersion = " 17"
19
+ excludeDependency ' om.google.guava:guava'
20
+ excludeDependency ' com.google.code.findbugs:jsr305'
21
+ additionalDependencies + = " org.mule.runtime:mule-tracer-customization-impl:$muleVersion "
18
22
}
19
-
20
- fail {
21
- group = ' org.mule'
23
+ pass {
24
+ group = ' org.mule.runtime'
25
+ module = ' mule-tracer-customization-impl'
26
+ versions = " [$muleVersion ,)"
27
+ javaVersion = " 17"
28
+ excludeDependency ' om.google.guava:guava'
29
+ excludeDependency ' com.google.code.findbugs:jsr305'
30
+ additionalDependencies + = " org.mule.runtime:mule-core:$muleVersion "
31
+ }
32
+ pass {
33
+ name = ' before-4.5.0'
34
+ group = ' org.mule.runtime'
22
35
module = ' mule-core'
23
- versions = ' [3.2.0,)' // First version where muzzle can resolve all dependencies
24
- skipVersions + = " 3.9.5" // bad release
36
+ versions = " [$muleVersion ,)"
37
+ javaVersion = " 17"
38
+ assertInverse true
39
+ excludeDependency ' om.google.guava:guava'
40
+ excludeDependency ' com.google.code.findbugs:jsr305'
41
+ additionalDependencies + = " org.mule.runtime:mule-tracer-customization-impl:$muleVersion "
25
42
}
26
43
}
27
44
28
45
apply from : " $rootDir /gradle/java.gradle"
29
46
30
- def muleVersion = ' 4.2.2'
31
- def muleBaseDir = " $buildDir /mule"
32
- def appDir = " $projectDir /application"
33
- def generatedResourcesDir = " $buildDir /generated-resources/test"
34
-
35
- clean. doFirst {
36
- delete muleBaseDir
37
- }
47
+ addTestSuiteForDir(' mule46ForkedTest' , ' test' )
48
+ addTestSuiteForDir(' latestDepForkedTest' , ' test' )
38
49
39
50
repositories {
40
- maven {
41
- name " anypoint-releases"
42
- url " https://maven.anypoint.mulesoft.com/api/v2/maven"
43
- }
44
51
maven {
45
52
name " mulesoft-releases"
46
53
url " https://repository.mulesoft.org/releases"
54
+ mavenContent {
55
+ releasesOnly()
56
+ }
47
57
}
48
58
maven {
49
59
name " mulesoft-public"
50
60
url " https://repository.mulesoft.org/nexus/content/repositories/public"
61
+ mavenContent {
62
+ releasesOnly()
63
+ }
51
64
}
52
65
}
53
66
54
67
configurations {
55
68
muleServices
69
+ mule46Services
70
+ latestMuleServices
56
71
}
57
72
58
73
configurations. all {
59
- // don't allow mule to do slf4j over log4j
60
- exclude group : ' org.apache.logging.log4j' , module : ' log4j-slf4j-impl'
74
+ exclude group : ' pull-parser' , module : ' pull-parser'
75
+
76
+ resolutionStrategy {
77
+ // avoid bringing in logback based on java 11
78
+ force libs. logback. classic
79
+ force libs. logback. core
80
+ }
61
81
}
62
82
63
83
sourceSets {
64
84
test {
65
- output. dir(generatedResourcesDir, builtBy : ' generateAppResources' )
85
+ output. dir(" $buildDir /generated-resources/test" , builtBy : ' generateAppResources' )
86
+ }
87
+ mule46ForkedTest {
88
+ output. dir(" $buildDir /generated-resources/mule46ForkedTest" , builtBy : ' generateAppResources46' )
89
+ }
90
+ latestDepForkedTest {
91
+ output. dir(" $buildDir /generated-resources/latestDepForkedTest" , builtBy : ' generateAppResourcesLatest' )
66
92
}
67
93
}
68
94
69
95
tasks. named(" compileTestGroovy" ). configure {
70
96
dependsOn ' mvnPackage' , ' extractMuleServices'
71
97
}
72
98
99
+ tasks. named(" compileMule46ForkedTestGroovy" ). configure {
100
+ dependsOn ' mvnPackage' , ' extractMule46Services'
101
+ }
102
+
103
+ tasks. named(" compileLatestDepForkedTestGroovy" ). configure {
104
+ dependsOn ' mvnPackage' , ' extractLatestMuleServices'
105
+ setJavaVersion(it, 17 )
106
+ }
107
+
108
+ tasks. named(" compileLatestDepForkedTestJava" ). configure {
109
+ setJavaVersion(it, 17 )
110
+ }
111
+
73
112
dependencies {
74
113
compileOnly group : ' org.mule.runtime' , name : ' mule-core' , version : muleVersion
75
- testImplementation project( ' :dd-java-agent:instrumentation:aws-common ' )
114
+ compileOnly group : ' org.mule.runtime ' , name : ' mule-tracer-customization-impl ' , version : muleVersion
76
115
116
+ testImplementation project(' :dd-java-agent:instrumentation:aws-common' )
77
117
testImplementation project(' :dd-java-agent:instrumentation:reactor-core-3.1' )
78
118
testImplementation project(' :dd-java-agent:instrumentation:reactive-streams' )
119
+ testImplementation project(' :dd-java-agent:instrumentation:grizzly-2' )
79
120
testImplementation project(' :dd-java-agent:instrumentation:grizzly-http-2.3.20' )
80
121
testImplementation project(' :dd-java-agent:instrumentation:grizzly-client-1.9' )
81
122
testImplementation project(' :dd-java-agent:instrumentation:caffeine' )
123
+ testImplementation project(' :dd-java-agent:instrumentation:quartz-2' )
124
+
82
125
83
126
testImplementation group : ' org.mule.runtime' , name : ' mule-module-launcher' , version : muleVersion
84
127
testImplementation group : ' org.mule.runtime' , name : ' mule-core' , version : muleVersion
85
- testImplementation group : ' org.mule.runtime' , name : ' mule-module-extensions-spring-support' , version : muleVersion
128
+ // testImplementation group: 'org.mule.runtime', name: 'mule-module-extensions-spring-support', version: muleVersion
86
129
testImplementation group : ' org.mule.runtime' , name : ' mule-module-service' , version : muleVersion
87
130
// this is needed for mule to find removed javax.* APIs on Java 11+
88
131
testImplementation group : ' org.mule.runtime' , name : ' mule-module-javaee' , version : muleVersion
89
-
90
- muleServices group : ' org.mule.services' , name : ' mule-service-http' , version : ' 1.4.7' , classifier : ' mule-service'
91
- muleServices group : ' org.mule.services' , name : ' mule-service-scheduler' , version : ' 1.2.4' , classifier : ' mule-service'
92
- muleServices group : ' org.mule.services' , name : ' mule-service-weave' , version : ' 2.2.2' , classifier : ' mule-service'
132
+ testImplementation group : ' org.mule.runtime' , name : ' mule-dwb-api' , version : ' 2.5.0'
133
+ // testImplementation group: 'xml-apis', name: 'xml-apis', version: '1.4.01'
134
+ muleServices group : ' org.mule.services' , name : ' mule-service-http' , version : ' 1.5.21' , classifier : ' mule-service'
135
+ muleServices group : ' org.mule.services' , name : ' mule-service-scheduler' , version : ' 1.5.0' , classifier : ' mule-service'
136
+ muleServices group : ' org.mule.services' , name : ' mule-service-weave' , version : ' 2.5.0' , classifier : ' mule-service'
137
+
138
+ mule46ForkedTestImplementation group : ' org.mule.runtime' , name : ' mule-module-launcher' , version : ' 4.6.0'
139
+ mule46ForkedTestImplementation group : ' org.mule.runtime' , name : ' mule-core' , version : ' 4.6.0'
140
+ mule46ForkedTestImplementation group : ' org.mule.runtime' , name : ' mule-module-extensions-spring-support' , version : ' 4.6.0'
141
+ mule46ForkedTestImplementation group : ' org.mule.runtime' , name : ' mule-module-service' , version : ' 4.6.0'
142
+ // this is needed for mule to find removed javax.* APIs on Java 11+
143
+ mule46ForkedTestImplementation group : ' org.mule.runtime' , name : ' mule-module-javaee' , version : ' 4.6.0'
144
+ mule46Services group : ' org.mule.services' , name : ' mule-service-http' , version : ' 1.5.21' , classifier : ' mule-service'
145
+ mule46Services group : ' org.mule.services' , name : ' mule-service-scheduler' , version : ' 1.5.0' , classifier : ' mule-service'
146
+ mule46Services group : ' org.mule.services' , name : ' mule-service-weave' , version : ' 2.5.0' , classifier : ' mule-service'
147
+
148
+ latestDepForkedTestImplementation group : ' org.mule.runtime' , name : ' mule-module-launcher' , version : ' 4.8.+'
149
+ latestDepForkedTestImplementation group : ' org.mule.runtime' , name : ' mule-core' , version : ' 4.8.+'
150
+ latestDepForkedTestImplementation group : ' org.mule.runtime' , name : ' mule-module-extensions-spring-support' , version : ' 4.8.+'
151
+ latestDepForkedTestImplementation group : ' org.mule.runtime' , name : ' mule-module-service' , version : ' 4.8.+'
152
+ latestDepForkedTestImplementation group : ' org.mule.runtime' , name : ' mule-module-javaee' , version : ' 4.8.+'
153
+
154
+
155
+ // TODO: 4.9.0 is not yet out but it looks like using 4.+ instead of above 4.8.+ brings in 4.9.0-SNAPSHOT artifacts.
156
+ /*
157
+ When testing with them, the mule container does not bootstrap because of:
158
+ None of [protected void java.lang.Object.finalize() throws java.lang.Throwable, public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException, public final void java.lang.Object.wait() throws java.lang.InterruptedException, public final native void java.lang.Object.wait(long) throws java.lang.InterruptedException, public boolean java.lang.Object.equals(java.lang.Object), public java.lang.String java.lang.Object.toString(), public native int java.lang.Object.hashCode(), public final native java.lang.Class java.lang.Object.getClass(), protected native java.lang.Object java.lang.Object.clone() throws java.lang.CloneNotSupportedException, public final native void java.lang.Object.notify(), public final native void java.lang.Object.notifyAll(), public abstract java.lang.Object java.lang.reflect.InvocationHandler.invoke(java.lang.Object,java.lang.reflect.Method,java.lang.Object[]) throws java.lang.Throwable] allows for delegation from public boolean org.springframework.beans.factory.SmartFactoryBean.isEagerInit()
159
+ */
160
+ latestDepForkedTestImplementation group : ' org.mule.runtime' , name : ' mule-extensions-soap-api' , version : ' 1.8.+'
161
+
162
+ latestDepForkedTestImplementation group : ' jakarta.xml.ws' , name : ' jakarta.xml.ws-api' , version : ' 4.0.2'
163
+ // back to the future
164
+ latestDepForkedTestImplementation group : ' javax.xml.bind' , name : ' jaxb-api' , version : ' 2.3.0'
165
+ latestDepForkedTestImplementation group : ' com.sun.xml.bind' , name : ' jaxb-impl' , version : ' 2.3.0'
166
+ latestDepForkedTestImplementation group : ' com.sun.xml.bind' , name : ' jaxb-core' , version : ' 2.3.0'
167
+
168
+ latestMuleServices group : ' org.mule.services' , name : ' mule-service-http' , version : ' 1.+' , classifier : ' mule-service'
169
+ latestMuleServices group : ' org.mule.services' , name : ' mule-service-scheduler' , version : ' 1.+' , classifier : ' mule-service'
170
+ latestMuleServices group : ' org.mule.services' , name : ' mule-service-weave' , version : ' 2.8.1' , classifier : ' mule-service'
93
171
}
94
172
95
- // extract the enabled services into the mule base directory
96
- tasks. register(' extractMuleServices' , Sync ) {
97
- dependsOn configurations. muleServices
98
-
99
- configurations. muleServices. resolvedConfiguration. resolvedArtifacts. findAll {
173
+ def copyMuleArtifacts (String configName , String muleBaseDir , Sync sync ) {
174
+ configurations[configName]. resolvedConfiguration. resolvedArtifacts. findAll {
100
175
it. classifier == " mule-service"
101
176
} collect { artifact ->
102
177
def id = artifact. moduleVersion. id
103
- from(zipTree(artifact. file)) {
178
+ sync . from(zipTree(artifact. file)) {
104
179
into(" ${ id.name} -${ id.version} " )
105
180
}
106
181
}
182
+ sync. into " $muleBaseDir /services"
183
+ }
107
184
108
- into " $muleBaseDir /services"
185
+ // extract the enabled services into the mule base directory
186
+ tasks. register(' extractMuleServices' , Sync ) {
187
+ dependsOn configurations. muleServices
188
+ copyMuleArtifacts(" muleServices" , " $buildDir /mule/test" , it)
189
+ }
190
+ tasks. register(' extractMule46Services' , Sync ) {
191
+ dependsOn configurations. mule46Services
192
+ copyMuleArtifacts(" mule46Services" , " $buildDir /mule/mule46ForkedTest" , it)
193
+ }
194
+ tasks. register(' extractLatestMuleServices' , Sync ) {
195
+ dependsOn configurations. latestMuleServices
196
+ copyMuleArtifacts(" latestMuleServices" , " $buildDir /mule/latestDepForkedTest" , it)
109
197
}
110
198
111
199
// build the mule application via maven
@@ -118,23 +206,29 @@ tasks.register('mvnPackage', Exec) {
118
206
inputs. file(" $appDir /mule-artifact.json" )
119
207
}
120
208
209
+
121
210
// generate a properties file so the test knows where to run mule, and what jar to deploy
122
211
tasks. register(' generateAppResources' ) {
123
- outputs. dir generatedResourcesDir
124
- doLast {
212
+ createAppResourceTask(it, " test" )
213
+ }
214
+ tasks. register(' generateAppResources46' ) {
215
+ createAppResourceTask(it, " mule46ForkedTest" )
216
+ }
217
+ tasks. register(' generateAppResourcesLatest' ) {
218
+ createAppResourceTask(it, " latestDepForkedTest" )
219
+ }
220
+
221
+ def createAppResourceTask (Task task , String name ) {
222
+ def generatedResourcesDir = " $buildDir /generated-resources/$name "
223
+ task. outputs. dir generatedResourcesDir
224
+ task. doLast {
125
225
def generated = new File (generatedResourcesDir, " test-build.properties" )
126
- generated. text = """ |mule.base=$m uleBaseDir
226
+ generated. text = """ |mule.base=$b uildDir /mule/ $n ame
127
227
|MuleTestApplicationConstants.jar=$buildDir /target/mule-test-application-$version -mule-application.jar
128
228
|MuleTestApplicationConstants.name=mule-test-application-$version -mule-application""" . stripMargin()
129
229
}
130
230
}
131
231
132
- tasks. named(" test" ). configure {
133
- outputs. upToDateWhen {
134
- ! mvnPackage. didWork && ! extractMuleServices. didWork
135
- }
136
- }
137
-
138
232
spotless {
139
233
java {
140
234
target " **/*.java"
0 commit comments