From 7343754f159864c44ab65c9f187d876d4758a1cd Mon Sep 17 00:00:00 2001
From: Mikhail Polivakha <68962645+Mikhail2048@users.noreply.github.com>
Date: Mon, 30 Oct 2023 20:20:48 +0300
Subject: [PATCH] BAEL-7139 implemented (#15082)
---
spring-boot-modules/spring-boot-3-2/pom.xml | 34 ++++++++-
.../ConditionalOnThreadingUnitTest.java | 70 +++++++++++++++++++
2 files changed, 101 insertions(+), 3 deletions(-)
create mode 100644 spring-boot-modules/spring-boot-3-2/src/test/java/com/baeldung/conditionalonthreading/ConditionalOnThreadingUnitTest.java
diff --git a/spring-boot-modules/spring-boot-3-2/pom.xml b/spring-boot-modules/spring-boot-3-2/pom.xml
index 9e73d8ea32..276659c609 100644
--- a/spring-boot-modules/spring-boot-3-2/pom.xml
+++ b/spring-boot-modules/spring-boot-3-2/pom.xml
@@ -15,6 +15,14 @@
../../parent-boot-3
+
+
+ repository.spring.release
+ Spring GA Repository
+ https://repo.spring.io/milestone
+
+
+
org.springframework.boot
@@ -94,6 +102,17 @@
org.springframework.boot
spring-boot-starter-test
+ 3.2.0-M2
+
+
+ org.junit.jupiter
+ junit-jupiter
+ 5.10.0
+
+
+ org.junit.jupiter
+ junit-jupiter-api
+ 5.10.0
org.postgresql
@@ -175,6 +194,18 @@
+
+
+
+ org.springframework.boot
+ spring-boot-dependencies
+ 3.2.0-M2
+ import
+ pom
+
+
+
+
@@ -244,9 +275,6 @@
org.apache.maven.plugins
maven-compiler-plugin
-
- --enable-preview
-
diff --git a/spring-boot-modules/spring-boot-3-2/src/test/java/com/baeldung/conditionalonthreading/ConditionalOnThreadingUnitTest.java b/spring-boot-modules/spring-boot-3-2/src/test/java/com/baeldung/conditionalonthreading/ConditionalOnThreadingUnitTest.java
new file mode 100644
index 0000000000..ed65769954
--- /dev/null
+++ b/spring-boot-modules/spring-boot-3-2/src/test/java/com/baeldung/conditionalonthreading/ConditionalOnThreadingUnitTest.java
@@ -0,0 +1,70 @@
+package com.baeldung.conditionalonthreading;
+
+import org.assertj.core.api.Assertions;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.condition.EnabledForJreRange;
+import org.junit.jupiter.api.condition.JRE;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnThreading;
+import org.springframework.boot.autoconfigure.thread.Threading;
+import org.springframework.boot.test.context.runner.ApplicationContextRunner;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+public class ConditionalOnThreadingUnitTest {
+
+ ApplicationContextRunner applicationContextRunner = new ApplicationContextRunner()
+ .withUserConfiguration(CurrentConfig.class);
+
+ @Configuration
+ static class CurrentConfig {
+
+ @Bean
+ @ConditionalOnThreading(Threading.PLATFORM)
+ ThreadingType platformBean() {
+ return ThreadingType.PLATFORM;
+ }
+
+ @Bean
+ @ConditionalOnThreading(Threading.VIRTUAL)
+ ThreadingType virtualBean() {
+ return ThreadingType.VIRTUAL;
+ }
+ }
+
+ enum ThreadingType {
+ PLATFORM, VIRTUAL
+ }
+
+ @Test
+ @EnabledForJreRange(max = JRE.JAVA_20)
+ public void whenJava20AndVirtualThreadsEnabled_thenThreadingIsPlatform() {
+ applicationContextRunner.withPropertyValues("spring.threads.virtual.enabled=true").run(context -> {
+ Assertions.assertThat(context.getBean(ThreadingType.class)).isEqualTo(ThreadingType.PLATFORM);
+ });
+ }
+
+ @Test
+ @EnabledForJreRange(max = JRE.JAVA_20)
+ public void whenJava20AndVirtualThreadsDisabled_thenThreadingIsPlatform() {
+ applicationContextRunner.withPropertyValues("spring.threads.virtual.enabled=false").run(context -> {
+ Assertions.assertThat(context.getBean(ThreadingType.class)).isEqualTo(ThreadingType.PLATFORM);
+ });
+ }
+
+ @Test
+ @EnabledForJreRange(min = JRE.JAVA_21)
+ public void whenJava21AndVirtualThreadsEnabled_thenThreadingIsVirtual() {
+ applicationContextRunner.withPropertyValues("spring.threads.virtual.enabled=true").run(context -> {
+ Assertions.assertThat(context.getBean(ThreadingType.class)).isEqualTo(ThreadingType.VIRTUAL);
+ });
+ }
+
+ @Test
+ @EnabledForJreRange(min = JRE.JAVA_21)
+ public void whenJava21AndVirtualThreadsDisabled_thenThreadingIsPlatform() {
+ applicationContextRunner.withPropertyValues("spring.threads.virtual.enabled=false").run(context -> {
+ Assertions.assertThat(context.getBean(ThreadingType.class)).isEqualTo(ThreadingType.PLATFORM);
+ });
+ }
+
+}
\ No newline at end of file