Spring Batch instrumentation tests: splits (#2017)
This commit is contained in:
parent
179b2257f9
commit
56dd13bfc1
|
@ -13,6 +13,8 @@ dependencies {
|
||||||
library group: 'org.springframework.batch', name: 'spring-batch-core', version: '3.0.0.RELEASE'
|
library group: 'org.springframework.batch', name: 'spring-batch-core', version: '3.0.0.RELEASE'
|
||||||
|
|
||||||
testImplementation group: 'javax.inject', name: 'javax.inject', version: '1'
|
testImplementation group: 'javax.inject', name: 'javax.inject', version: '1'
|
||||||
|
// SimpleAsyncTaskExecutor context propagation
|
||||||
|
testInstrumentation project(':instrumentation:spring:spring-core-2.0:javaagent')
|
||||||
}
|
}
|
||||||
|
|
||||||
tasks.withType(Test) {
|
tasks.withType(Test) {
|
||||||
|
|
|
@ -17,6 +17,8 @@ import org.springframework.batch.item.ItemWriter
|
||||||
import org.springframework.beans.factory.annotation.Autowired
|
import org.springframework.beans.factory.annotation.Autowired
|
||||||
import org.springframework.context.annotation.Bean
|
import org.springframework.context.annotation.Bean
|
||||||
import org.springframework.context.annotation.Configuration
|
import org.springframework.context.annotation.Configuration
|
||||||
|
import org.springframework.core.task.AsyncTaskExecutor
|
||||||
|
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor
|
||||||
import springbatch.TestItemProcessor
|
import springbatch.TestItemProcessor
|
||||||
import springbatch.TestItemReader
|
import springbatch.TestItemReader
|
||||||
import springbatch.TestItemWriter
|
import springbatch.TestItemWriter
|
||||||
|
@ -118,4 +120,41 @@ class SpringBatchApplication {
|
||||||
.tasklet(new TestTasklet())
|
.tasklet(new TestTasklet())
|
||||||
.build()
|
.build()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// split job
|
||||||
|
@Bean
|
||||||
|
Job splitJob() {
|
||||||
|
jobs.get("splitJob")
|
||||||
|
.start(splitFlowStep1())
|
||||||
|
.split(asyncTaskExecutor())
|
||||||
|
.add(splitFlow2())
|
||||||
|
.build()
|
||||||
|
.build()
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
Step splitFlowStep1() {
|
||||||
|
steps.get("splitFlowStep1")
|
||||||
|
.tasklet(new TestTasklet())
|
||||||
|
.build()
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
Flow splitFlow2() {
|
||||||
|
new FlowBuilder<SimpleFlow>("splitFlow2")
|
||||||
|
.start(splitFlowStep2())
|
||||||
|
.build()
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
Step splitFlowStep2() {
|
||||||
|
steps.get("splitFlowStep2")
|
||||||
|
.tasklet(new TestTasklet())
|
||||||
|
.build()
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
AsyncTaskExecutor asyncTaskExecutor() {
|
||||||
|
new ThreadPoolTaskExecutor()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -147,6 +147,41 @@ abstract class SpringBatchTest extends AgentTestRunner {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def "should trace split flow job"() {
|
||||||
|
when:
|
||||||
|
runJob("splitJob")
|
||||||
|
|
||||||
|
then:
|
||||||
|
assertTraces(1) {
|
||||||
|
trace(0, 5) {
|
||||||
|
span(0) {
|
||||||
|
name "BatchJob splitJob"
|
||||||
|
kind INTERNAL
|
||||||
|
}
|
||||||
|
span(1) {
|
||||||
|
name ~/BatchJob splitJob\.splitFlowStep[12]/
|
||||||
|
kind INTERNAL
|
||||||
|
childOf span(0)
|
||||||
|
}
|
||||||
|
span(2) {
|
||||||
|
name ~/BatchJob splitJob\.splitFlowStep[12]\.Chunk/
|
||||||
|
kind INTERNAL
|
||||||
|
childOf span(1)
|
||||||
|
}
|
||||||
|
span(3) {
|
||||||
|
name ~/BatchJob splitJob\.splitFlowStep[12]/
|
||||||
|
kind INTERNAL
|
||||||
|
childOf span(0)
|
||||||
|
}
|
||||||
|
span(4) {
|
||||||
|
name ~/BatchJob splitJob\.splitFlowStep[12]\.Chunk/
|
||||||
|
kind INTERNAL
|
||||||
|
childOf span(3)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class JavaConfigBatchJobTest extends SpringBatchTest implements ApplicationConfigTrait {
|
class JavaConfigBatchJobTest extends SpringBatchTest implements ApplicationConfigTrait {
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<job id="splitJob" xmlns="http://xmlns.jcp.org/xml/ns/javaee" version="1.0">
|
||||||
|
<split id="split">
|
||||||
|
<flow id="splitFlow1">
|
||||||
|
<step id="splitFlowStep1">
|
||||||
|
<batchlet ref="jsr.TestBatchlet"/>
|
||||||
|
</step>
|
||||||
|
</flow>
|
||||||
|
<flow id="splitFlow2">
|
||||||
|
<step id="splitFlowStep2">
|
||||||
|
<batchlet ref="jsr.TestBatchlet"/>
|
||||||
|
</step>
|
||||||
|
</flow>
|
||||||
|
</split>
|
||||||
|
</job>
|
|
@ -3,6 +3,8 @@
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
|
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
|
||||||
|
|
||||||
|
<bean id="asyncTaskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor"/>
|
||||||
|
|
||||||
<bean id="jobRepository"
|
<bean id="jobRepository"
|
||||||
class="org.springframework.batch.core.repository.support.MapJobRepositoryFactoryBean"/>
|
class="org.springframework.batch.core.repository.support.MapJobRepositoryFactoryBean"/>
|
||||||
<bean id="jobLauncher" class="org.springframework.batch.core.launch.support.SimpleJobLauncher">
|
<bean id="jobLauncher" class="org.springframework.batch.core.launch.support.SimpleJobLauncher">
|
||||||
|
|
|
@ -37,6 +37,21 @@
|
||||||
</b:step>
|
</b:step>
|
||||||
</b:flow>
|
</b:flow>
|
||||||
|
|
||||||
|
<b:job id="splitJob">
|
||||||
|
<b:split id="split" task-executor="asyncTaskExecutor">
|
||||||
|
<b:flow>
|
||||||
|
<b:step id="splitFlowStep1">
|
||||||
|
<b:tasklet ref="testTasklet"/>
|
||||||
|
</b:step>
|
||||||
|
</b:flow>
|
||||||
|
<b:flow>
|
||||||
|
<b:step id="splitFlowStep2">
|
||||||
|
<b:tasklet ref="testTasklet"/>
|
||||||
|
</b:step>
|
||||||
|
</b:flow>
|
||||||
|
</b:split>
|
||||||
|
</b:job>
|
||||||
|
|
||||||
<bean id="itemReader" class="springbatch.TestItemReader"/>
|
<bean id="itemReader" class="springbatch.TestItemReader"/>
|
||||||
<bean id="itemProcessor" class="springbatch.TestItemProcessor"/>
|
<bean id="itemProcessor" class="springbatch.TestItemProcessor"/>
|
||||||
<bean id="itemWriter" class="springbatch.TestItemWriter"/>
|
<bean id="itemWriter" class="springbatch.TestItemWriter"/>
|
||||||
|
|
Loading…
Reference in New Issue