11ext {
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
46}
7+ def muleVersion = ' 4.5.0'
8+ def appDir = " $projectDir /application"
59
610muzzle {
7- extraRepository(' anypoint-releases' , ' https://maven.anypoint.mulesoft.com/api/v2/maven' )
811 extraRepository(' mulesoft-releases' , ' https://repository.mulesoft.org/releases' )
912 extraRepository(' mulesoft-public' , ' https://repository.mulesoft.org/nexus/content/repositories/public' )
1013
1114 pass {
1215 group = ' org.mule.runtime'
1316 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 "
1822 }
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'
2235 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 "
2542 }
2643}
2744
2845apply from : " $rootDir /gradle/java.gradle"
2946
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' )
3849
3950repositories {
40- maven {
41- name " anypoint-releases"
42- url " https://maven.anypoint.mulesoft.com/api/v2/maven"
43- }
4451 maven {
4552 name " mulesoft-releases"
4653 url " https://repository.mulesoft.org/releases"
54+ mavenContent {
55+ releasesOnly()
56+ }
4757 }
4858 maven {
4959 name " mulesoft-public"
5060 url " https://repository.mulesoft.org/nexus/content/repositories/public"
61+ mavenContent {
62+ releasesOnly()
63+ }
5164 }
5265}
5366
5467configurations {
5568 muleServices
69+ mule46Services
70+ latestMuleServices
5671}
5772
5873configurations. 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+ }
6181}
6282
6383sourceSets {
6484 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' )
6692 }
6793}
6894
6995tasks. named(" compileTestGroovy" ). configure {
7096 dependsOn ' mvnPackage' , ' extractMuleServices'
7197}
7298
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+
73112dependencies {
74113 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
76115
116+ testImplementation project(' :dd-java-agent:instrumentation:aws-common' )
77117 testImplementation project(' :dd-java-agent:instrumentation:reactor-core-3.1' )
78118 testImplementation project(' :dd-java-agent:instrumentation:reactive-streams' )
119+ testImplementation project(' :dd-java-agent:instrumentation:grizzly-2' )
79120 testImplementation project(' :dd-java-agent:instrumentation:grizzly-http-2.3.20' )
80121 testImplementation project(' :dd-java-agent:instrumentation:grizzly-client-1.9' )
81122 testImplementation project(' :dd-java-agent:instrumentation:caffeine' )
123+ testImplementation project(' :dd-java-agent:instrumentation:quartz-2' )
124+
82125
83126 testImplementation group : ' org.mule.runtime' , name : ' mule-module-launcher' , version : muleVersion
84127 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
86129 testImplementation group : ' org.mule.runtime' , name : ' mule-module-service' , version : muleVersion
87130 // this is needed for mule to find removed javax.* APIs on Java 11+
88131 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'
93171}
94172
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 {
100175 it. classifier == " mule-service"
101176 } collect { artifact ->
102177 def id = artifact. moduleVersion. id
103- from(zipTree(artifact. file)) {
178+ sync . from(zipTree(artifact. file)) {
104179 into(" ${ id.name} -${ id.version} " )
105180 }
106181 }
182+ sync. into " $muleBaseDir /services"
183+ }
107184
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)
109197}
110198
111199// build the mule application via maven
@@ -118,23 +206,29 @@ tasks.register('mvnPackage', Exec) {
118206 inputs. file(" $appDir /mule-artifact.json" )
119207}
120208
209+
121210// generate a properties file so the test knows where to run mule, and what jar to deploy
122211tasks. 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 {
125225 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
127227 |MuleTestApplicationConstants.jar=$buildDir /target/mule-test-application-$version -mule-application.jar
128228 |MuleTestApplicationConstants.name=mule-test-application-$version -mule-application""" . stripMargin()
129229 }
130230}
131231
132- tasks. named(" test" ). configure {
133- outputs. upToDateWhen {
134- ! mvnPackage. didWork && ! extractMuleServices. didWork
135- }
136- }
137-
138232spotless {
139233 java {
140234 target " **/*.java"
0 commit comments