From c76aa2ef0c0eb8ec89aa93d6af9a3f6c4f5c6e34 Mon Sep 17 00:00:00 2001 From: Raja Kolli Date: Tue, 13 Jun 2023 21:20:29 +0530 Subject: [PATCH] moves localstack to testcontainers dev mode (#77) * moving localstack to testcontainers dev mode * adds missing bracket * fixes issue with localstack in gradle project --- generators/server/index.js | 1 - .../app/src/test/java/TestApplication.java | 24 +++++++++++++-- .../java/common/AbstractIntegrationTest.java | 6 ---- .../test/java/common/LocalStackConfig.java | 29 ------------------- .../server/templates/gradle/gradle.properties | 8 +---- 5 files changed, 22 insertions(+), 46 deletions(-) delete mode 100644 generators/server/templates/app/src/test/java/common/LocalStackConfig.java diff --git a/generators/server/index.js b/generators/server/index.js index 6318e486..d2539f2a 100644 --- a/generators/server/index.js +++ b/generators/server/index.js @@ -208,7 +208,6 @@ module.exports = class extends BaseGenerator { 'TestApplication.java' ]; if(configOptions.features.includes("localstack")) { - testJavaTemplates.push('common/LocalStackConfig.java'); testJavaTemplates.push('SqsListenerIntegrationTest.java'); } this.generateTestJavaCode(configOptions, testJavaTemplates); diff --git a/generators/server/templates/app/src/test/java/TestApplication.java b/generators/server/templates/app/src/test/java/TestApplication.java index 25e619ee..b9a55f41 100644 --- a/generators/server/templates/app/src/test/java/TestApplication.java +++ b/generators/server/templates/app/src/test/java/TestApplication.java @@ -13,6 +13,11 @@ <%_ if (databaseType === 'mariadb') { _%> import org.testcontainers.containers.MariaDBContainer; <%_ } _%> +<%_ if (features.includes('localstack')) { _%> +import org.springframework.test.context.DynamicPropertyRegistry; +import org.testcontainers.containers.localstack.LocalStackContainer; +<%_ } _%> +import org.testcontainers.utility.DockerImageName; @TestConfiguration(proxyBeanMethods = false) public class TestApplication { @@ -21,17 +26,30 @@ public class TestApplication { @ServiceConnection <%_ if (databaseType === 'postgresql') { _%> PostgreSQLContainer postgreSQLContainer() { - return new PostgreSQLContainer<>("<%= POSTGRESQL_IMAGE %>"); + return new PostgreSQLContainer<>(DockerImageName.parse("<%= POSTGRESQL_IMAGE %>")); } <%_ } _%> <%_ if (databaseType === 'mysql') { _%> MySQLContainer sqlContainer () { - return new MySQLContainer<>("<%= MYSQL_IMAGE %>"); + return new MySQLContainer<>(DockerImageName.parse("<%= MYSQL_IMAGE %>")); } <%_ } _%> <%_ if (databaseType === 'mariadb') { _%> MariaDBContainer sqlContainer () { - return new MariaDBContainer<>("<%= MARIADB_IMAGE %>"); + return new MariaDBContainer<>(DockerImageName.parse("<%= MARIADB_IMAGE %>")); + } + <%_ } _%> + + <%_ if (features.includes('localstack')) { _%> + @Bean + LocalStackContainer localStackContainer(DynamicPropertyRegistry propertyRegistry) { + LocalStackContainer localStackContainer = + new LocalStackContainer(DockerImageName.parse("<%= LOCALSTACK_IMAGE %>")); + propertyRegistry.add("spring.cloud.aws.endpoint", localStackContainer::getEndpoint); + propertyRegistry.add("spring.cloud.aws.region.static", localStackContainer::getRegion); + propertyRegistry.add("spring.cloud.aws.credentials.access-key", localStackContainer::getAccessKey); + propertyRegistry.add("spring.cloud.aws.credentials.secret-key", localStackContainer::getSecretKey); + return localStackContainer; } <%_ } _%> diff --git a/generators/server/templates/app/src/test/java/common/AbstractIntegrationTest.java b/generators/server/templates/app/src/test/java/common/AbstractIntegrationTest.java index 850a5ab1..f5340ccb 100644 --- a/generators/server/templates/app/src/test/java/common/AbstractIntegrationTest.java +++ b/generators/server/templates/app/src/test/java/common/AbstractIntegrationTest.java @@ -10,16 +10,10 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.context.annotation.Import; import org.springframework.test.context.ActiveProfiles; -<%_ if (features.includes('localstack')) { _%> -import org.springframework.test.context.ContextConfiguration; -<%_ } _%> import org.springframework.test.web.servlet.MockMvc; @ActiveProfiles({PROFILE_TEST}) @SpringBootTest(webEnvironment = RANDOM_PORT) -<%_ if (features.includes('localstack')) { _%> -@ContextConfiguration(initializers = {LocalStackConfig.class}) -<%_ } _%> @AutoConfigureMockMvc @Import(TestApplication.class) public abstract class AbstractIntegrationTest { diff --git a/generators/server/templates/app/src/test/java/common/LocalStackConfig.java b/generators/server/templates/app/src/test/java/common/LocalStackConfig.java deleted file mode 100644 index f0a49b2b..00000000 --- a/generators/server/templates/app/src/test/java/common/LocalStackConfig.java +++ /dev/null @@ -1,29 +0,0 @@ -package <%= packageName %>.common; - -import org.springframework.boot.test.util.TestPropertyValues; -import org.springframework.context.ApplicationContextInitializer; -import org.springframework.context.ConfigurableApplicationContext; -import org.testcontainers.containers.localstack.LocalStackContainer; -import org.testcontainers.utility.DockerImageName; - -public class LocalStackConfig - implements ApplicationContextInitializer { - static final LocalStackContainer localStackContainer = new LocalStackContainer(DockerImageName.parse("<%= LOCALSTACK_IMAGE %>")); - - static { - localStackContainer.start(); - } - - @Override - public void initialize(ConfigurableApplicationContext applicationContext) { - TestPropertyValues.of( - "spring.cloud.aws.endpoint=" - + localStackContainer.getEndpoint(), - "spring.cloud.aws.region.static=" + localStackContainer.getRegion(), - "spring.cloud.aws.credentials.access-key=" - + localStackContainer.getAccessKey(), - "spring.cloud.aws.credentials.secret-key=" - + localStackContainer.getSecretKey()) - .applyTo(applicationContext.getEnvironment()); - } -} diff --git a/generators/server/templates/gradle/gradle.properties b/generators/server/templates/gradle/gradle.properties index b71bca04..e501f308 100644 --- a/generators/server/templates/gradle/gradle.properties +++ b/generators/server/templates/gradle/gradle.properties @@ -15,10 +15,4 @@ spring_dependency_management_version=<%= SPRING_DEP_MNGMNT_VERSION %> logstash_logback_encoder_version=<%= LOGSTASH_LOGBACK_ENCODER %> commons_io_version=<%= COMMONS_IO_VERSION %> springdoc_openapi_version=<%= SPRINGDOC_OPENAPI_VERSION %> -testcontainers_version=<%= TEST_CONTAINERS_VERSION %> - -org.gradle.jvmargs=--add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED \ - --add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED \ - --add-exports jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED \ - --add-exports jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED \ - --add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED \ No newline at end of file +testcontainers.version=<%= TEST_CONTAINERS_VERSION %>