Merge branch '3.4.x' into 3.5.x
Build and Deploy Snapshot / Build and Deploy Snapshot (push) Waiting to run
Details
Build and Deploy Snapshot / Trigger Docs Build (push) Blocked by required conditions
Details
Build and Deploy Snapshot / Verify (push) Blocked by required conditions
Details
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[toolchain:false version:17], map[id:${{ vars.UBUNTU_MEDIUM || 'ubuntu-latest' }} name:Linux]) (push) Waiting to run
Details
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[toolchain:false version:17], map[id:windows-latest name:Windows]) (push) Waiting to run
Details
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[toolchain:false version:21], map[id:${{ vars.UBUNTU_MEDIUM || 'ubuntu-latest' }} name:Linux]) (push) Waiting to run
Details
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[toolchain:false version:21], map[id:windows-latest name:Windows]) (push) Waiting to run
Details
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[toolchain:true version:24], map[id:${{ vars.UBUNTU_MEDIUM || 'ubuntu-latest' }} name:Linux]) (push) Waiting to run
Details
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[toolchain:true version:24], map[id:windows-latest name:Windows]) (push) Waiting to run
Details
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[toolchain:true version:25], map[id:${{ vars.UBUNTU_MEDIUM || 'ubuntu-latest' }} name:Linux]) (push) Waiting to run
Details
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[toolchain:true version:25], map[id:windows-latest name:Windows]) (push) Waiting to run
Details
Run CodeQL Analysis / run-analysis (push) Waiting to run
Details
Run System Tests / Java ${{ matrix.java.version}} (map[toolchain:false version:17]) (push) Waiting to run
Details
Run System Tests / Java ${{ matrix.java.version}} (map[toolchain:true version:21]) (push) Waiting to run
Details
Build and Deploy Snapshot / Build and Deploy Snapshot (push) Waiting to run
Details
Build and Deploy Snapshot / Trigger Docs Build (push) Blocked by required conditions
Details
Build and Deploy Snapshot / Verify (push) Blocked by required conditions
Details
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[toolchain:false version:17], map[id:${{ vars.UBUNTU_MEDIUM || 'ubuntu-latest' }} name:Linux]) (push) Waiting to run
Details
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[toolchain:false version:17], map[id:windows-latest name:Windows]) (push) Waiting to run
Details
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[toolchain:false version:21], map[id:${{ vars.UBUNTU_MEDIUM || 'ubuntu-latest' }} name:Linux]) (push) Waiting to run
Details
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[toolchain:false version:21], map[id:windows-latest name:Windows]) (push) Waiting to run
Details
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[toolchain:true version:24], map[id:${{ vars.UBUNTU_MEDIUM || 'ubuntu-latest' }} name:Linux]) (push) Waiting to run
Details
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[toolchain:true version:24], map[id:windows-latest name:Windows]) (push) Waiting to run
Details
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[toolchain:true version:25], map[id:${{ vars.UBUNTU_MEDIUM || 'ubuntu-latest' }} name:Linux]) (push) Waiting to run
Details
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[toolchain:true version:25], map[id:windows-latest name:Windows]) (push) Waiting to run
Details
Run CodeQL Analysis / run-analysis (push) Waiting to run
Details
Run System Tests / Java ${{ matrix.java.version}} (map[toolchain:false version:17]) (push) Waiting to run
Details
Run System Tests / Java ${{ matrix.java.version}} (map[toolchain:true version:21]) (push) Waiting to run
Details
Closes gh-47346
This commit is contained in:
commit
30d3889079
|
@ -43,6 +43,7 @@ import org.springframework.util.StringUtils;
|
||||||
* {@link Endpoint @Endpoint} to expose liquibase info.
|
* {@link Endpoint @Endpoint} to expose liquibase info.
|
||||||
*
|
*
|
||||||
* @author Eddú Meléndez
|
* @author Eddú Meléndez
|
||||||
|
* @author Nabil Fawwaz Elqayyim
|
||||||
* @since 2.0.0
|
* @since 2.0.0
|
||||||
*/
|
*/
|
||||||
@Endpoint(id = "liquibase")
|
@Endpoint(id = "liquibase")
|
||||||
|
@ -79,9 +80,10 @@ public class LiquibaseEndpoint {
|
||||||
Database database = null;
|
Database database = null;
|
||||||
try {
|
try {
|
||||||
database = factory.findCorrectDatabaseImplementation(connection);
|
database = factory.findCorrectDatabaseImplementation(connection);
|
||||||
String defaultSchema = liquibase.getDefaultSchema();
|
String schemaToUse = StringUtils.hasText(liquibase.getLiquibaseSchema())
|
||||||
if (StringUtils.hasText(defaultSchema)) {
|
? liquibase.getLiquibaseSchema() : liquibase.getDefaultSchema();
|
||||||
database.setDefaultSchemaName(defaultSchema);
|
if (StringUtils.hasText(schemaToUse)) {
|
||||||
|
database.setDefaultSchemaName(schemaToUse);
|
||||||
}
|
}
|
||||||
database.setDatabaseChangeLogTableName(liquibase.getDatabaseChangeLogTable());
|
database.setDatabaseChangeLogTableName(liquibase.getDatabaseChangeLogTable());
|
||||||
database.setDatabaseChangeLogLockTableName(liquibase.getDatabaseChangeLogLockTable());
|
database.setDatabaseChangeLogLockTableName(liquibase.getDatabaseChangeLogLockTable());
|
||||||
|
|
|
@ -18,7 +18,7 @@ package org.springframework.boot.actuate.liquibase;
|
||||||
|
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.Arrays;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
@ -34,7 +34,9 @@ import org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfigurati
|
||||||
import org.springframework.boot.jdbc.EmbeddedDatabaseConnection;
|
import org.springframework.boot.jdbc.EmbeddedDatabaseConnection;
|
||||||
import org.springframework.boot.jdbc.init.DataSourceScriptDatabaseInitializer;
|
import org.springframework.boot.jdbc.init.DataSourceScriptDatabaseInitializer;
|
||||||
import org.springframework.boot.sql.init.DatabaseInitializationSettings;
|
import org.springframework.boot.sql.init.DatabaseInitializationSettings;
|
||||||
|
import org.springframework.boot.test.context.assertj.AssertableApplicationContext;
|
||||||
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
|
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
|
||||||
|
import org.springframework.boot.test.context.runner.ContextConsumer;
|
||||||
import org.springframework.boot.testsupport.classpath.resources.WithResource;
|
import org.springframework.boot.testsupport.classpath.resources.WithResource;
|
||||||
import org.springframework.context.ApplicationContext;
|
import org.springframework.context.ApplicationContext;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
|
@ -65,14 +67,7 @@ class LiquibaseEndpointTests {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void liquibaseReportIsReturned() {
|
void liquibaseReportIsReturned() {
|
||||||
this.contextRunner.withUserConfiguration(Config.class).run((context) -> {
|
this.contextRunner.withUserConfiguration(Config.class).run(hasEndpointWithInitializedSchema());
|
||||||
Map<String, LiquibaseBeanDescriptor> liquibaseBeans = context.getBean(LiquibaseEndpoint.class)
|
|
||||||
.liquibaseBeans()
|
|
||||||
.getContexts()
|
|
||||||
.get(context.getId())
|
|
||||||
.getLiquibaseBeans();
|
|
||||||
assertThat(liquibaseBeans.get("liquibase").getChangeSets()).hasSize(1);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -90,18 +85,41 @@ class LiquibaseEndpointTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@WithResource(name = "db/create-custom-schema.sql", content = "CREATE SCHEMA CUSTOMSCHEMA;")
|
@WithResource(name = "db/create-custom-schema.sql", content = "CREATE SCHEMA ANOTHER_SCHEMA;")
|
||||||
void invokeWithCustomSchema() {
|
void invokeWithCustomDefaultSchemaFailsIfItDoesNotExist() {
|
||||||
this.contextRunner.withUserConfiguration(Config.class, DataSourceWithSchemaConfiguration.class)
|
this.contextRunner.withUserConfiguration(Config.class, DataSourceWithSchemaConfiguration.class)
|
||||||
.withPropertyValues("spring.liquibase.default-schema=CUSTOMSCHEMA")
|
.withPropertyValues("spring.liquibase.default-schema=CUSTOM_DEFAULT_SCHEMA")
|
||||||
.run((context) -> {
|
.run((context) -> assertThat(context).hasFailed()
|
||||||
Map<String, LiquibaseBeanDescriptor> liquibaseBeans = context.getBean(LiquibaseEndpoint.class)
|
.getFailure()
|
||||||
.liquibaseBeans()
|
.rootCause()
|
||||||
.getContexts()
|
.hasMessageContaining("CUSTOM_DEFAULT_SCHEMA"));
|
||||||
.get(context.getId())
|
}
|
||||||
.getLiquibaseBeans();
|
|
||||||
assertThat(liquibaseBeans.get("liquibase").getChangeSets()).hasSize(1);
|
@Test
|
||||||
});
|
@WithResource(name = "db/create-custom-schema.sql", content = "CREATE SCHEMA CUSTOM_SCHEMA;")
|
||||||
|
void invokeWithCustomDefaultSchema() {
|
||||||
|
this.contextRunner.withUserConfiguration(Config.class, DataSourceWithSchemaConfiguration.class)
|
||||||
|
.withPropertyValues("spring.liquibase.default-schema=CUSTOM_SCHEMA")
|
||||||
|
.run(hasEndpointWithInitializedSchema());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@WithResource(name = "db/create-custom-schema.sql", content = "CREATE SCHEMA ANOTHER_SCHEMA;")
|
||||||
|
void invokeWithLiquibaseSchemaFailsIfItDoesNotExist() {
|
||||||
|
this.contextRunner.withUserConfiguration(Config.class, DataSourceWithSchemaConfiguration.class)
|
||||||
|
.withPropertyValues("spring.liquibase.liquibase-schema=CUSTOM_LIQUIBASE_SCHEMA")
|
||||||
|
.run((context) -> assertThat(context).hasFailed()
|
||||||
|
.getFailure()
|
||||||
|
.rootCause()
|
||||||
|
.hasMessageContaining("CUSTOM_LIQUIBASE_SCHEMA"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@WithResource(name = "db/create-custom-schema.sql", content = "CREATE SCHEMA LIQUIBASE_SCHEMA;")
|
||||||
|
void invokeWithLiquibaseSchema() {
|
||||||
|
this.contextRunner.withUserConfiguration(Config.class, DataSourceWithSchemaConfiguration.class)
|
||||||
|
.withPropertyValues("spring.liquibase.liquibase-schema=LIQUIBASE_SCHEMA")
|
||||||
|
.run(hasEndpointWithInitializedSchema());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -109,14 +127,18 @@ class LiquibaseEndpointTests {
|
||||||
this.contextRunner.withUserConfiguration(Config.class)
|
this.contextRunner.withUserConfiguration(Config.class)
|
||||||
.withPropertyValues("spring.liquibase.database-change-log-lock-table=liquibase_database_changelog_lock",
|
.withPropertyValues("spring.liquibase.database-change-log-lock-table=liquibase_database_changelog_lock",
|
||||||
"spring.liquibase.database-change-log-table=liquibase_database_changelog")
|
"spring.liquibase.database-change-log-table=liquibase_database_changelog")
|
||||||
.run((context) -> {
|
.run(hasEndpointWithInitializedSchema());
|
||||||
Map<String, LiquibaseBeanDescriptor> liquibaseBeans = context.getBean(LiquibaseEndpoint.class)
|
}
|
||||||
.liquibaseBeans()
|
|
||||||
.getContexts()
|
private ContextConsumer<AssertableApplicationContext> hasEndpointWithInitializedSchema() {
|
||||||
.get(context.getId())
|
return (context) -> {
|
||||||
.getLiquibaseBeans();
|
Map<String, LiquibaseBeanDescriptor> liquibaseBeans = context.getBean(LiquibaseEndpoint.class)
|
||||||
assertThat(liquibaseBeans.get("liquibase").getChangeSets()).hasSize(1);
|
.liquibaseBeans()
|
||||||
});
|
.getContexts()
|
||||||
|
.get(context.getId())
|
||||||
|
.getLiquibaseBeans();
|
||||||
|
assertThat(liquibaseBeans.get("liquibase").getChangeSets()).hasSize(1);
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -179,7 +201,7 @@ class LiquibaseEndpointTests {
|
||||||
.setName(UUID.randomUUID().toString())
|
.setName(UUID.randomUUID().toString())
|
||||||
.build();
|
.build();
|
||||||
DatabaseInitializationSettings settings = new DatabaseInitializationSettings();
|
DatabaseInitializationSettings settings = new DatabaseInitializationSettings();
|
||||||
settings.setSchemaLocations(Arrays.asList("classpath:/db/create-custom-schema.sql"));
|
settings.setSchemaLocations(List.of("classpath:/db/create-custom-schema.sql"));
|
||||||
DataSourceScriptDatabaseInitializer initializer = new DataSourceScriptDatabaseInitializer(dataSource,
|
DataSourceScriptDatabaseInitializer initializer = new DataSourceScriptDatabaseInitializer(dataSource,
|
||||||
settings);
|
settings);
|
||||||
initializer.initializeDatabase();
|
initializer.initializeDatabase();
|
||||||
|
|
Loading…
Reference in New Issue