This commit is contained in:
hiondal
2025-02-18 02:28:19 +09:00
parent 6fece3ec00
commit b899d712a5
28 changed files with 1052 additions and 4130 deletions
@@ -8,6 +8,7 @@ import com.unicorn.lifesub.member.dto.LogoutRequest;
import com.unicorn.lifesub.member.repository.jpa.MemberRepository;
import com.unicorn.lifesub.member.test.e2e.config.TestContainerConfig;
import com.unicorn.lifesub.member.test.e2e.support.TestDataManager;
import jakarta.transaction.Transactional;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
@@ -25,6 +26,7 @@ import static org.assertj.core.api.Assertions.assertThat;
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@ActiveProfiles("e2e-test")
@Transactional
class MemberE2ETest extends TestContainerConfig {
@Autowired
@@ -7,13 +7,17 @@ import org.testcontainers.containers.PostgreSQLContainer;
import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers;
import java.time.Duration;
@Testcontainers
public class TestContainerConfig {
@Container
static PostgreSQLContainer<?> postgreSQLContainer = new PostgreSQLContainer<>("postgres:13.2-alpine")
.withDatabaseName("testdb")
.withUsername("test")
.withPassword("test");
.withPassword("test")
.withStartupTimeout(Duration.ofSeconds(60))
.withReuse(true); // 컨테이너 재사용 설정
@DynamicPropertySource
static void registerPgProperties(DynamicPropertyRegistry registry) {
@@ -21,5 +25,14 @@ public class TestContainerConfig {
registry.add("spring.datasource.username", postgreSQLContainer::getUsername);
registry.add("spring.datasource.password", postgreSQLContainer::getPassword);
registry.add("spring.jpa.hibernate.ddl-auto", () -> "create-drop");
// HikariCP 설정
registry.add("spring.datasource.hikari.maximum-pool-size", () -> "5");
registry.add("spring.datasource.hikari.minimum-idle", () -> "2");
registry.add("spring.datasource.hikari.idle-timeout", () -> "30000");
registry.add("spring.datasource.hikari.connection-timeout", () -> "10000");
registry.add("spring.datasource.hikari.max-lifetime", () -> "580000");
registry.add("spring.datasource.hikari.validation-timeout", () -> "3000");
registry.add("spring.datasource.hikari.connection-test-query", () -> "SELECT 1");
}
}
@@ -2,6 +2,7 @@ package com.unicorn.lifesub.member.test.integration.repository;
import com.unicorn.lifesub.member.repository.entity.MemberEntity;
import com.unicorn.lifesub.member.repository.jpa.MemberRepository;
import jakarta.transaction.Transactional;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
@@ -29,6 +30,7 @@ import static org.assertj.core.api.Assertions.assertThat;
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
@Testcontainers
@ActiveProfiles("integration-test")
@Transactional
class MemberRepositoryIntegrationTest {
@Container
static PostgreSQLContainer<?> postgreSQLContainer = new PostgreSQLContainer<>("postgres:13.2-alpine")
@@ -11,6 +11,16 @@ spring:
hibernate:
format_sql: true
dialect: org.hibernate.dialect.PostgreSQLDialect
datasource:
hikari:
maximum-pool-size: 5
minimum-idle: 2
connection-timeout: 10000 # 10초
max-lifetime: 580000 # 약 9.6분 (DB wait_timeout보다 짧게)
idle-timeout: 300000 # 5분
validation-timeout: 3000 # 3초
leak-detection-threshold: 30000
connection-test-query: SELECT 1
# JWT 설정
jwt: