mirror of
https://github.com/spring-projects/spring-boot.git
synced 2024-08-29 03:06:45 +08:00
Merge branch '2.4.x'
Closes gh-26461
This commit is contained in:
commit
000d84eedd
1
.gitignore
vendored
1
.gitignore
vendored
@ -36,7 +36,6 @@ manifest.yml
|
||||
out
|
||||
overridedb.*
|
||||
target
|
||||
transaction-logs
|
||||
.flattened-pom.xml
|
||||
secrets.yml
|
||||
.gradletasknamecache
|
||||
|
@ -16,6 +16,7 @@
|
||||
|
||||
package org.springframework.boot.autoconfigure.orm.jpa;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
@ -39,6 +40,7 @@ import org.springframework.boot.test.context.assertj.AssertableApplicationContex
|
||||
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
|
||||
import org.springframework.boot.test.context.runner.ContextConsumer;
|
||||
import org.springframework.boot.test.context.runner.WebApplicationContextRunner;
|
||||
import org.springframework.boot.testsupport.BuildOutput;
|
||||
import org.springframework.boot.web.servlet.FilterRegistrationBean;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
@ -71,7 +73,9 @@ abstract class AbstractJpaAutoConfigurationTests {
|
||||
protected AbstractJpaAutoConfigurationTests(Class<?> autoConfiguredClass) {
|
||||
this.autoConfiguredClass = autoConfiguredClass;
|
||||
this.contextRunner = new ApplicationContextRunner()
|
||||
.withPropertyValues("spring.datasource.generate-unique-name=true")
|
||||
.withPropertyValues("spring.datasource.generate-unique-name=true",
|
||||
"spring.jta.log-dir="
|
||||
+ new File(new BuildOutput(getClass()).getRootLocation(), "transaction-logs"))
|
||||
.withUserConfiguration(TestConfiguration.class).withConfiguration(
|
||||
AutoConfigurations.of(DataSourceAutoConfiguration.class, TransactionAutoConfiguration.class,
|
||||
SqlInitializationAutoConfiguration.class, autoConfiguredClass));
|
||||
|
@ -45,6 +45,7 @@ import org.springframework.boot.jta.atomikos.AtomikosDataSourceBean;
|
||||
import org.springframework.boot.jta.atomikos.AtomikosDependsOnBeanFactoryPostProcessor;
|
||||
import org.springframework.boot.jta.atomikos.AtomikosProperties;
|
||||
import org.springframework.boot.test.util.TestPropertyValues;
|
||||
import org.springframework.boot.testsupport.BuildOutput;
|
||||
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
@ -66,6 +67,9 @@ import static org.mockito.Mockito.mock;
|
||||
*/
|
||||
class JtaAutoConfigurationTests {
|
||||
|
||||
private final File atomikosLogs = new File(new BuildOutput(JtaAutoConfigurationTests.class).getRootLocation(),
|
||||
"atomikos-logs");
|
||||
|
||||
private AnnotationConfigApplicationContext context;
|
||||
|
||||
@AfterEach
|
||||
@ -96,7 +100,10 @@ class JtaAutoConfigurationTests {
|
||||
|
||||
@Test
|
||||
void atomikosSanityCheck() {
|
||||
this.context = new AnnotationConfigApplicationContext(JtaProperties.class, AtomikosJtaConfiguration.class);
|
||||
this.context = new AnnotationConfigApplicationContext();
|
||||
TestPropertyValues.of("spring.jta.log-dir:" + this.atomikosLogs).applyTo(this.context);
|
||||
this.context.register(JtaProperties.class, AtomikosJtaConfiguration.class);
|
||||
this.context.refresh();
|
||||
this.context.getBean(AtomikosProperties.class);
|
||||
this.context.getBean(UserTransactionService.class);
|
||||
this.context.getBean(UserTransactionManager.class);
|
||||
@ -123,7 +130,8 @@ class JtaAutoConfigurationTests {
|
||||
void atomikosConnectionFactoryPoolConfiguration() {
|
||||
this.context = new AnnotationConfigApplicationContext();
|
||||
TestPropertyValues.of("spring.jta.atomikos.connectionfactory.minPoolSize:5",
|
||||
"spring.jta.atomikos.connectionfactory.maxPoolSize:10").applyTo(this.context);
|
||||
"spring.jta.atomikos.connectionfactory.maxPoolSize:10", "spring.jta.log-dir:" + this.atomikosLogs)
|
||||
.applyTo(this.context);
|
||||
this.context.register(AtomikosJtaConfiguration.class, PoolConfiguration.class);
|
||||
this.context.refresh();
|
||||
AtomikosConnectionFactoryBean connectionFactory = this.context.getBean(AtomikosConnectionFactoryBean.class);
|
||||
@ -134,8 +142,8 @@ class JtaAutoConfigurationTests {
|
||||
@Test
|
||||
void atomikosDataSourcePoolConfiguration() {
|
||||
this.context = new AnnotationConfigApplicationContext();
|
||||
TestPropertyValues
|
||||
.of("spring.jta.atomikos.datasource.minPoolSize:5", "spring.jta.atomikos.datasource.maxPoolSize:10")
|
||||
TestPropertyValues.of("spring.jta.atomikos.datasource.minPoolSize:5",
|
||||
"spring.jta.atomikos.datasource.maxPoolSize:10", "spring.jta.log-dir:" + this.atomikosLogs)
|
||||
.applyTo(this.context);
|
||||
this.context.register(AtomikosJtaConfiguration.class, PoolConfiguration.class);
|
||||
this.context.refresh();
|
||||
@ -147,8 +155,8 @@ class JtaAutoConfigurationTests {
|
||||
@Test
|
||||
void atomikosCustomizeJtaTransactionManagerUsingProperties() {
|
||||
this.context = new AnnotationConfigApplicationContext();
|
||||
TestPropertyValues
|
||||
.of("spring.transaction.default-timeout:30", "spring.transaction.rollback-on-commit-failure:true")
|
||||
TestPropertyValues.of("spring.transaction.default-timeout:30",
|
||||
"spring.transaction.rollback-on-commit-failure:true", "spring.jta.log-dir:" + this.atomikosLogs)
|
||||
.applyTo(this.context);
|
||||
this.context.register(AtomikosJtaConfiguration.class, TransactionAutoConfiguration.class);
|
||||
this.context.refresh();
|
||||
|
@ -9,6 +9,7 @@ dependencies {
|
||||
implementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-artemis"))
|
||||
implementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-data-jpa"))
|
||||
implementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-jta-atomikos"))
|
||||
implementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support"))
|
||||
if (JavaVersion.current().java9Compatible) {
|
||||
implementation("jakarta.xml.bind:jakarta.xml.bind-api")
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2012-2019 the original author or authors.
|
||||
* Copyright 2012-2021 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@ -16,6 +16,7 @@
|
||||
|
||||
package smoketest.atomikos;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
@ -23,6 +24,7 @@ import org.junit.jupiter.api.extension.ExtendWith;
|
||||
|
||||
import org.springframework.boot.test.system.CapturedOutput;
|
||||
import org.springframework.boot.test.system.OutputCaptureExtension;
|
||||
import org.springframework.boot.testsupport.BuildOutput;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
@ -37,7 +39,8 @@ class SampleAtomikosApplicationTests {
|
||||
|
||||
@Test
|
||||
void testTransactionRollback(CapturedOutput output) throws Exception {
|
||||
SampleAtomikosApplication.main(new String[] {});
|
||||
File logDir = new File(new BuildOutput(getClass()).getRootLocation(), "atomikos-logs");
|
||||
SampleAtomikosApplication.main(new String[] { "--spring.jta.log-dir=" + logDir });
|
||||
assertThat(output).satisfies(numberOfOccurrences("---->", 1));
|
||||
assertThat(output).satisfies(numberOfOccurrences("----> josh", 1));
|
||||
assertThat(output).satisfies(numberOfOccurrences("Count is 1", 2));
|
||||
|
Loading…
Reference in New Issue
Block a user