@@ -20,6 +20,7 @@ import org.apache.kafka.clients.producer.ProducerRecord
2020import org.apache.kafka.common.serialization.StringSerializer
2121import org.junit.jupiter.api.Test
2222import org.testcontainers.containers.KafkaContainer
23+ import org.testcontainers.containers.wait.strategy.HostPortWaitStrategy
2324import org.testcontainers.utility.DockerImageName
2425import java.sql.SQLTransientConnectionException
2526import java.time.Duration
@@ -28,14 +29,18 @@ import java.time.ZonedDateTime
2829import java.util.concurrent.TimeUnit
2930
3031private val LOGGER = KotlinLogging .logger { }
32+
3133internal class KafkaSubsumsjonBruktDataConsumerTest {
3234 private object Kafka {
3335 val instance by lazy {
34- KafkaContainer (DockerImageName .parse(" confluentinc/cp-kafka" ).withTag(" 5.3.1" )).apply { this .start() }
36+ KafkaContainer (DockerImageName .parse(" confluentinc/cp-kafka" ).withTag(" 5.3.1" )).apply {
37+ this .waitingFor(HostPortWaitStrategy ())
38+ this .start()
39+ }
3540 }
3641 }
37- val inntektId = InntektId (ULID ().nextULID())
3842
43+ val inntektId = InntektId (ULID ().nextULID())
3944 private val bruktInntektMelding = mapOf (
4045 " @event_name" to " brukt_inntekt" ,
4146 " inntektsId" to inntektId.id,
@@ -53,7 +58,6 @@ internal class KafkaSubsumsjonBruktDataConsumerTest {
5358 " type" to " vedtak"
5459 )
5560 )
56-
5761 private val producer by lazy {
5862 KafkaProducer <String , String >(
5963 producerConfig(
@@ -66,6 +70,7 @@ internal class KafkaSubsumsjonBruktDataConsumerTest {
6670 )
6771 }
6872 private val adapter = moshiInstance.adapter<Map <String , Any ?>>(Map ::class .java).lenient()
73+
6974 @Test
7075 fun `Should mark inntekt id as used` () {
7176 runBlocking {
@@ -74,16 +79,15 @@ internal class KafkaSubsumsjonBruktDataConsumerTest {
7479 val config = Config .config.inntektApiConfig.run {
7580 copy(application = application.copy(brokers = Kafka .instance.bootstrapServers, credential = null ))
7681 }
77-
7882 val consumer = KafkaSubsumsjonBruktDataConsumer (config, storeMock).apply {
7983 listen()
8084 }
81-
82- val metaData = producer.send(ProducerRecord (config.inntektBruktDataTopic, " test" , adapter.toJson(bruktInntektMelding)))
83- .get(5 , TimeUnit .SECONDS )
85+ val metaData =
86+ producer.send(ProducerRecord (config.inntektBruktDataTopic, " test" , adapter.toJson(bruktInntektMelding)))
87+ .get(5 , TimeUnit .SECONDS )
8488 LOGGER .info(" Producer produced $bruktInntektMelding with meta $metaData " )
8589
86- TimeUnit .MILLISECONDS .sleep(500 )
90+ TimeUnit .MILLISECONDS .sleep(800 )
8791
8892 verify(exactly = 1 ) {
8993 storeMock.markerInntektBrukt(inntektId)
@@ -100,14 +104,17 @@ internal class KafkaSubsumsjonBruktDataConsumerTest {
100104 val config = Config .config.inntektApiConfig.run {
101105 copy(application = application.copy(brokers = Kafka .instance.bootstrapServers, credential = null ))
102106 }
103-
104107 val consumer = KafkaSubsumsjonBruktDataConsumer (config, storeMock).apply {
105108 listen()
106109 }
107-
108110 val bruktSubsumsjonData = mapOf (" faktum" to mapOf (" manueltGrunnlag" to " 122212" ))
109-
110- val metaData = producer.send(ProducerRecord (config.inntektBruktDataTopic, " test" , adapter.toJson(bruktInntektMeldingManueltGrunnlag)))
111+ val metaData = producer.send(
112+ ProducerRecord (
113+ config.inntektBruktDataTopic,
114+ " test" ,
115+ adapter.toJson(bruktInntektMeldingManueltGrunnlag)
116+ )
117+ )
111118 .get(5 , TimeUnit .SECONDS )
112119 LOGGER .info(" Producer produced $bruktSubsumsjonData with meta $metaData " )
113120
@@ -131,13 +138,16 @@ internal class KafkaSubsumsjonBruktDataConsumerTest {
131138 val config = Config .config.inntektApiConfig.run {
132139 copy(application = application.copy(brokers = Kafka .instance.bootstrapServers, credential = null ))
133140 }
134-
135- val consumer = KafkaSubsumsjonBruktDataConsumer (config = config, inntektStore = storeMock, graceDuration = Duration .ofMillis(1 )).apply {
141+ val consumer = KafkaSubsumsjonBruktDataConsumer (
142+ config = config,
143+ inntektStore = storeMock,
144+ graceDuration = Duration .ofMillis(1 )
145+ ).apply {
136146 listen()
137147 }
138-
139- val metaData = producer.send(ProducerRecord (config.inntektBruktDataTopic, " test" , adapter.toJson(bruktInntektMelding)))
140- .get(5 , TimeUnit .SECONDS )
148+ val metaData =
149+ producer.send(ProducerRecord (config.inntektBruktDataTopic, " test" , adapter.toJson(bruktInntektMelding)))
150+ .get(5 , TimeUnit .SECONDS )
141151 LOGGER .info(" Producer produced $bruktInntektMelding with meta $metaData + should fail" )
142152
143153 TimeUnit .MILLISECONDS .sleep(1500 )
@@ -148,9 +158,11 @@ internal class KafkaSubsumsjonBruktDataConsumerTest {
148158
149159 @Test
150160 fun `Grace period is over` () {
151- val graceperiod1 = KafkaSubsumsjonBruktDataConsumer .Grace (from = ZonedDateTime .now(ZoneOffset .UTC ).minusHours(1 ))
161+ val graceperiod1 =
162+ KafkaSubsumsjonBruktDataConsumer .Grace (from = ZonedDateTime .now(ZoneOffset .UTC ).minusHours(1 ))
152163 graceperiod1.expired() shouldBe false
153- val graceperiod2 = KafkaSubsumsjonBruktDataConsumer .Grace (from = ZonedDateTime .now(ZoneOffset .UTC ).minusHours(4 ))
164+ val graceperiod2 =
165+ KafkaSubsumsjonBruktDataConsumer .Grace (from = ZonedDateTime .now(ZoneOffset .UTC ).minusHours(4 ))
154166 graceperiod2.expired() shouldBe true
155167 }
156168}
0 commit comments