From 269378e92971254ac5a0fb89d98216942a870d68 Mon Sep 17 00:00:00 2001 From: Mateusz Rzeszutek Date: Wed, 13 Jan 2021 08:17:15 +0100 Subject: [PATCH] Spring Batch instrumentation tests: decisions (#2024) * Spring Batch instrumentation tests: decisions * spotless --- .../test/groovy/SpringBatchApplication.groovy | 34 ++++++++++++++++++ .../src/test/groovy/SpringBatchTest.groovy | 35 +++++++++++++++++++ .../src/test/groovy/jsr/TestDecider.groovy | 16 +++++++++ .../groovy/springbatch/TestDecider.groovy | 18 ++++++++++ .../META-INF/batch-jobs/decisionJob.xml | 16 +++++++++ .../src/test/resources/spring-batch.xml | 17 +++++++++ 6 files changed, 136 insertions(+) create mode 100644 instrumentation/spring/spring-batch-3.0/javaagent/src/test/groovy/jsr/TestDecider.groovy create mode 100644 instrumentation/spring/spring-batch-3.0/javaagent/src/test/groovy/springbatch/TestDecider.groovy create mode 100644 instrumentation/spring/spring-batch-3.0/javaagent/src/test/resources/META-INF/batch-jobs/decisionJob.xml diff --git a/instrumentation/spring/spring-batch-3.0/javaagent/src/test/groovy/SpringBatchApplication.groovy b/instrumentation/spring/spring-batch-3.0/javaagent/src/test/groovy/SpringBatchApplication.groovy index 8f1459f705..4fb8a4283a 100644 --- a/instrumentation/spring/spring-batch-3.0/javaagent/src/test/groovy/SpringBatchApplication.groovy +++ b/instrumentation/spring/spring-batch-3.0/javaagent/src/test/groovy/SpringBatchApplication.groovy @@ -19,6 +19,7 @@ import org.springframework.context.annotation.Bean import org.springframework.context.annotation.Configuration import org.springframework.core.task.AsyncTaskExecutor import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor +import springbatch.TestDecider import springbatch.TestItemProcessor import springbatch.TestItemReader import springbatch.TestItemWriter @@ -157,4 +158,37 @@ class SpringBatchApplication { AsyncTaskExecutor asyncTaskExecutor() { new ThreadPoolTaskExecutor() } + + // job with decisions + @Bean + Job decisionJob() { + jobs.get("decisionJob") + .start(decisionStepStart()) + .next(new TestDecider()) + .on("LEFT").to(decisionStepLeft()) + .on("RIGHT").to(decisionStepRight()) + .end() + .build() + } + + @Bean + Step decisionStepStart() { + steps.get("decisionStepStart") + .tasklet(new TestTasklet()) + .build() + } + + @Bean + Step decisionStepLeft() { + steps.get("decisionStepLeft") + .tasklet(new TestTasklet()) + .build() + } + + @Bean + Step decisionStepRight() { + steps.get("decisionStepRight") + .tasklet(new TestTasklet()) + .build() + } } diff --git a/instrumentation/spring/spring-batch-3.0/javaagent/src/test/groovy/SpringBatchTest.groovy b/instrumentation/spring/spring-batch-3.0/javaagent/src/test/groovy/SpringBatchTest.groovy index 454d154ed5..b83618d045 100644 --- a/instrumentation/spring/spring-batch-3.0/javaagent/src/test/groovy/SpringBatchTest.groovy +++ b/instrumentation/spring/spring-batch-3.0/javaagent/src/test/groovy/SpringBatchTest.groovy @@ -182,6 +182,41 @@ abstract class SpringBatchTest extends AgentTestRunner { } } } + + def "should trace job with decision"() { + when: + runJob("decisionJob") + + then: + assertTraces(1) { + trace(0, 5) { + span(0) { + name "BatchJob decisionJob" + kind INTERNAL + } + span(1) { + name "BatchJob decisionJob.decisionStepStart" + kind INTERNAL + childOf span(0) + } + span(2) { + name "BatchJob decisionJob.decisionStepStart.Chunk" + kind INTERNAL + childOf span(1) + } + span(3) { + name "BatchJob decisionJob.decisionStepLeft" + kind INTERNAL + childOf span(0) + } + span(4) { + name "BatchJob decisionJob.decisionStepLeft.Chunk" + kind INTERNAL + childOf span(3) + } + } + } + } } class JavaConfigBatchJobTest extends SpringBatchTest implements ApplicationConfigTrait { diff --git a/instrumentation/spring/spring-batch-3.0/javaagent/src/test/groovy/jsr/TestDecider.groovy b/instrumentation/spring/spring-batch-3.0/javaagent/src/test/groovy/jsr/TestDecider.groovy new file mode 100644 index 0000000000..4401f1cefd --- /dev/null +++ b/instrumentation/spring/spring-batch-3.0/javaagent/src/test/groovy/jsr/TestDecider.groovy @@ -0,0 +1,16 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package jsr + +import javax.batch.api.Decider +import javax.batch.runtime.StepExecution + +class TestDecider implements Decider { + @Override + String decide(StepExecution[] stepExecutions) throws Exception { + "LEFT" + } +} diff --git a/instrumentation/spring/spring-batch-3.0/javaagent/src/test/groovy/springbatch/TestDecider.groovy b/instrumentation/spring/spring-batch-3.0/javaagent/src/test/groovy/springbatch/TestDecider.groovy new file mode 100644 index 0000000000..b7ab851505 --- /dev/null +++ b/instrumentation/spring/spring-batch-3.0/javaagent/src/test/groovy/springbatch/TestDecider.groovy @@ -0,0 +1,18 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package springbatch + +import org.springframework.batch.core.JobExecution +import org.springframework.batch.core.StepExecution +import org.springframework.batch.core.job.flow.FlowExecutionStatus +import org.springframework.batch.core.job.flow.JobExecutionDecider + +class TestDecider implements JobExecutionDecider { + @Override + FlowExecutionStatus decide(JobExecution jobExecution, StepExecution stepExecution) { + new FlowExecutionStatus("LEFT") + } +} diff --git a/instrumentation/spring/spring-batch-3.0/javaagent/src/test/resources/META-INF/batch-jobs/decisionJob.xml b/instrumentation/spring/spring-batch-3.0/javaagent/src/test/resources/META-INF/batch-jobs/decisionJob.xml new file mode 100644 index 0000000000..3f2a98def8 --- /dev/null +++ b/instrumentation/spring/spring-batch-3.0/javaagent/src/test/resources/META-INF/batch-jobs/decisionJob.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/instrumentation/spring/spring-batch-3.0/javaagent/src/test/resources/spring-batch.xml b/instrumentation/spring/spring-batch-3.0/javaagent/src/test/resources/spring-batch.xml index 539c668212..87987c4c4a 100644 --- a/instrumentation/spring/spring-batch-3.0/javaagent/src/test/resources/spring-batch.xml +++ b/instrumentation/spring/spring-batch-3.0/javaagent/src/test/resources/spring-batch.xml @@ -52,8 +52,25 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file