[Error] TestContainers: Could not find a valid Docker environment. Please see logs and check configuration
·
JVM/Error
설정 정보OS: MacOS Tahoe 26.1Java Version: eclipse-temurin:25Docker desktop: v4.52.0Testcontainers: v1.21.3Docker CLI: v29.0.1build.gradledependencies{ testImplementation('org.junit.jupiter:junit-jupiter') testImplementation("org.testcontainers:testcontainers-localstack:2.0.2") testImplementation("org.testcontainers:testcontainers-junit-jupiter:2.0.2")}LocalStack Container 를 초기화하는 과정에 에러가 발생했다.@T..
[Java] Primitive 타입보다 VO 를 의존하라
·
JVM/Java
Kafka Record 에 들어갈 Record Key, Record Value 를 OffsetRecord 인터페이스로 추상화했다.OffsetRecord 는 오로지 오프셋을 저장하는 토픽에 쓰인다.예를 들면 이런식이다.Record KeyC:\\Users\M_Faclon\path\a.txtRecord value30/** * Domain interface used by OffsetManager and SourceConnector Producer. * Consists of object unique identifier and offset. * Stored in the Offset topic partition. */public interface OffsetRecord { /** * The unique ke..
[Java] Clean Code - index, array 대신 Iterator
·
JVM/Java
class Args { private String[] args; int currentIndex;}args 를 하나씩 파싱하는 메소드가 필요하다고 해보자,인자를 넘길때마다 이런 형식이 된다.Object parseArgument(String[] args, int index);인자 수는 적으면 적을수록 좋다. 인자가 많을수록 복잡하다. - 클린코드Args 클래스를 Iterator 로 리팩터링해보자.class Args { List args; Iterator currentElement;}이제 args 속 원소를 하나씩 넘길 수 있다.그저 currentElement 만 넘겨주면 된다.Ob..
Clean Code - 테스트는 어디서든 반복 실행 가능해야한다
·
기타/잡동사니
클린코드 9장에 보면 깨끗한 테스트 코드 원칙으로 FIRST 원칙을 소개한다.F: FastI: IndependentR: RepeatableS: Self-ValidatedT: Timely이 중 Repeatable 원칙을 지키지 못하고 있는 실제 사례를 소개하고 어떻게 Reatable 원칙을 지키는 코드로 변모하는지 과정을 공유해보겠다.Repeatble 원칙테스트는 어떤 환경에서도 반복 가능해야한다.그렇지 않으면 테스트를 실행시키지 않을 변명이 생긴다. 게다가 환경이 지원되지 않기에 실제 테스트를 수행하지 못하는 상황에 직면한다.환경에 의존적인 테스트 코드class S3FileRepositoryTest { @DisplayName("Should return when S3 file object path is ..
[Spring] SpringBoot 수동 빈 등록 테스트
·
JVM/Spring
요구 사항아래와 같은 yaml 설정에 따라수동으로 사용할 빈을 등록하고싶다.app: storage: type: 'local' # [local, s3]type 항목에 따라 아래와 같이 사용할 클래스를 스프링 빈에 등록하고자한다.local -> LocalFileLister, LocalFileRepository's3' -> S3FileLister, S3FileRepositoryJava 로 수동 빈 등록 코드를 작성했다.@Configurationpublic class StorageRepositoryConfiguration { @Bean public FileValidator fileValidator(FiltersConfig filtersConfig) { return filtersConfig.toV..
[Spring] ConfigurationProperties POJOs 설계
·
JVM/Spring
File Storage -> Kafka 로 중복 없이 레코드를 전송하는 라이브러리를 만들고 있다.다음과 같이 Configuration yaml 을 디자인했다고 해보자.storage: type: local, s3, blob # here is deciding which storage is used. paths: - 'df' - 'df.log' filters: - type: Exclude expressions: - '*empty*' - type: Extension expressions: - .ndjson - .csv # So, bean injection is decided here s3: bucket: reg..