Merge pull request #47300 from xyraclius
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
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
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
* pr/47300: Polish "Use liquibase schema in LiquibaseEndpoint if it set" Use liquibase schema in LiquibaseEndpoint if it set Closes gh-47300
This commit is contained in:
commit
e8b6ab14bc
|
@ -43,6 +43,7 @@ import org.springframework.util.StringUtils;
|
|||
* {@link Endpoint @Endpoint} to expose liquibase info.
|
||||
*
|
||||
* @author Eddú Meléndez
|
||||
* @author Nabil Fawwaz Elqayyim
|
||||
* @since 2.0.0
|
||||
*/
|
||||
@Endpoint(id = "liquibase")
|
||||
|
@ -79,9 +80,10 @@ public class LiquibaseEndpoint {
|
|||
Database database = null;
|
||||
try {
|
||||
database = factory.findCorrectDatabaseImplementation(connection);
|
||||
String defaultSchema = liquibase.getDefaultSchema();
|
||||
if (StringUtils.hasText(defaultSchema)) {
|
||||
database.setDefaultSchemaName(defaultSchema);
|
||||
String schemaToUse = StringUtils.hasText(liquibase.getLiquibaseSchema())
|
||||
? liquibase.getLiquibaseSchema() : liquibase.getDefaultSchema();
|
||||
if (StringUtils.hasText(schemaToUse)) {
|
||||
database.setDefaultSchemaName(schemaToUse);
|
||||
}
|
||||
database.setDatabaseChangeLogTableName(liquibase.getDatabaseChangeLogTable());
|
||||
database.setDatabaseChangeLogLockTableName(liquibase.getDatabaseChangeLogLockTable());
|
||||
|
|
|
@ -18,7 +18,7 @@ package org.springframework.boot.actuate.liquibase;
|
|||
|
||||
import java.sql.Connection;
|
||||
import java.sql.SQLException;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
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.init.DataSourceScriptDatabaseInitializer;
|
||||
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.ContextConsumer;
|
||||
import org.springframework.boot.testsupport.classpath.resources.WithResource;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
|
@ -65,14 +67,7 @@ class LiquibaseEndpointTests {
|
|||
|
||||
@Test
|
||||
void liquibaseReportIsReturned() {
|
||||
this.contextRunner.withUserConfiguration(Config.class).run((context) -> {
|
||||
Map<String, LiquibaseBeanDescriptor> liquibaseBeans = context.getBean(LiquibaseEndpoint.class)
|
||||
.liquibaseBeans()
|
||||
.getContexts()
|
||||
.get(context.getId())
|
||||
.getLiquibaseBeans();
|
||||
assertThat(liquibaseBeans.get("liquibase").getChangeSets()).hasSize(1);
|
||||
});
|
||||
this.contextRunner.withUserConfiguration(Config.class).run(hasEndpointWithInitializedSchema());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -90,18 +85,41 @@ class LiquibaseEndpointTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
@WithResource(name = "db/create-custom-schema.sql", content = "CREATE SCHEMA CUSTOMSCHEMA;")
|
||||
void invokeWithCustomSchema() {
|
||||
@WithResource(name = "db/create-custom-schema.sql", content = "CREATE SCHEMA ANOTHER_SCHEMA;")
|
||||
void invokeWithCustomDefaultSchemaFailsIfItDoesNotExist() {
|
||||
this.contextRunner.withUserConfiguration(Config.class, DataSourceWithSchemaConfiguration.class)
|
||||
.withPropertyValues("spring.liquibase.default-schema=CUSTOMSCHEMA")
|
||||
.run((context) -> {
|
||||
Map<String, LiquibaseBeanDescriptor> liquibaseBeans = context.getBean(LiquibaseEndpoint.class)
|
||||
.liquibaseBeans()
|
||||
.getContexts()
|
||||
.get(context.getId())
|
||||
.getLiquibaseBeans();
|
||||
assertThat(liquibaseBeans.get("liquibase").getChangeSets()).hasSize(1);
|
||||
});
|
||||
.withPropertyValues("spring.liquibase.default-schema=CUSTOM_DEFAULT_SCHEMA")
|
||||
.run((context) -> assertThat(context).hasFailed()
|
||||
.getFailure()
|
||||
.rootCause()
|
||||
.hasMessageContaining("CUSTOM_DEFAULT_SCHEMA"));
|
||||
}
|
||||
|
||||
@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
|
||||
|
@ -109,14 +127,18 @@ class LiquibaseEndpointTests {
|
|||
this.contextRunner.withUserConfiguration(Config.class)
|
||||
.withPropertyValues("spring.liquibase.database-change-log-lock-table=liquibase_database_changelog_lock",
|
||||
"spring.liquibase.database-change-log-table=liquibase_database_changelog")
|
||||
.run((context) -> {
|
||||
.run(hasEndpointWithInitializedSchema());
|
||||
}
|
||||
|
||||
private ContextConsumer<AssertableApplicationContext> hasEndpointWithInitializedSchema() {
|
||||
return (context) -> {
|
||||
Map<String, LiquibaseBeanDescriptor> liquibaseBeans = context.getBean(LiquibaseEndpoint.class)
|
||||
.liquibaseBeans()
|
||||
.getContexts()
|
||||
.get(context.getId())
|
||||
.getLiquibaseBeans();
|
||||
assertThat(liquibaseBeans.get("liquibase").getChangeSets()).hasSize(1);
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -179,7 +201,7 @@ class LiquibaseEndpointTests {
|
|||
.setName(UUID.randomUUID().toString())
|
||||
.build();
|
||||
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,
|
||||
settings);
|
||||
initializer.initializeDatabase();
|
||||
|
|
Loading…
Reference in New Issue