Skip to content

Commit

Permalink
Fjern lagring av forespørsel (#753)
Browse files Browse the repository at this point in the history
* Fjern lagring av forespørsel

* Fjern test for flere behov (kun ett behov mulig)
  • Loading branch information
bjerga authored Nov 6, 2024
1 parent 2f92e42 commit 1a2bec6
Show file tree
Hide file tree
Showing 14 changed files with 51 additions and 239 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import no.nav.helsearbeidsgiver.felles.rapidsrivers.registerShutdownLifecycle
import no.nav.helsearbeidsgiver.inntektsmelding.db.river.HentLagretImRiver
import no.nav.helsearbeidsgiver.inntektsmelding.db.river.HentSelvbestemtImRiver
import no.nav.helsearbeidsgiver.inntektsmelding.db.river.LagreEksternImRiver
import no.nav.helsearbeidsgiver.inntektsmelding.db.river.LagreForespoerselRiver
import no.nav.helsearbeidsgiver.inntektsmelding.db.river.LagreImRiver
import no.nav.helsearbeidsgiver.inntektsmelding.db.river.LagreImSkjemaRiver
import no.nav.helsearbeidsgiver.inntektsmelding.db.river.LagreJournalpostIdRiver
Expand All @@ -25,11 +24,10 @@ fun main() {

val imRepo = InntektsmeldingRepository(database.db)
val selvbestemtImRepo = SelvbestemtImRepo(database.db)
val forespoerselRepo = ForespoerselRepository(database.db)

return RapidApplication
.create(System.getenv())
.createDbRivers(imRepo, selvbestemtImRepo, forespoerselRepo)
.createDbRivers(imRepo, selvbestemtImRepo)
.registerShutdownLifecycle {
logger.info("Stoppsignal mottatt, lukker databasetilkobling.")
database.dataSource.close()
Expand All @@ -39,12 +37,8 @@ fun main() {
fun RapidsConnection.createDbRivers(
imRepo: InntektsmeldingRepository,
selvbestemtImRepo: SelvbestemtImRepo,
forespoerselRepo: ForespoerselRepository,
): RapidsConnection =
also {
logger.info("Starter ${LagreForespoerselRiver::class.simpleName}...")
LagreForespoerselRiver(forespoerselRepo).connect(this)

logger.info("Starter ${HentLagretImRiver::class.simpleName}...")
HentLagretImRiver(imRepo).connect(this)

Expand Down

This file was deleted.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ class FeilLytter(
private val sikkerLogger = sikkerLogger()
val behovSomHaandteres =
listOf(
BehovType.LAGRE_FORESPOERSEL,
BehovType.JOURNALFOER,
)
val eventerSomHaandteres =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,17 @@ package no.nav.helsearbeidsgiver.inntektsmelding.feilbehandler.river
import com.github.navikt.tbd_libs.rapids_and_rivers.test_support.TestRapid
import io.kotest.core.spec.style.FunSpec
import io.kotest.matchers.booleans.shouldBeTrue
import io.kotest.matchers.equals.shouldNotBeEqual
import io.kotest.matchers.ints.shouldBeExactly
import io.kotest.matchers.maps.shouldContainExactly
import io.kotest.matchers.shouldBe
import io.kotest.matchers.shouldNotBe
import kotlinx.serialization.json.Json
import kotlinx.serialization.json.JsonElement
import no.nav.hag.utils.bakgrunnsjobb.Bakgrunnsjobb
import no.nav.hag.utils.bakgrunnsjobb.BakgrunnsjobbStatus
import no.nav.hag.utils.bakgrunnsjobb.MockBakgrunnsjobbRepository
import no.nav.helsearbeidsgiver.felles.BehovType
import no.nav.helsearbeidsgiver.felles.EventName
import no.nav.helsearbeidsgiver.felles.Key
import no.nav.helsearbeidsgiver.felles.json.les
import no.nav.helsearbeidsgiver.felles.json.toJson
import no.nav.helsearbeidsgiver.felles.json.toMap
import no.nav.helsearbeidsgiver.felles.rapidsrivers.model.Fail
Expand Down Expand Up @@ -122,31 +119,6 @@ class FeilLytterTest :
repository.findByKjoeretidBeforeAndStatusIn(now.plusMinutes(1), setOf(BakgrunnsjobbStatus.STOPPET), true).size shouldBe 1
}

test("Flere feil i en lang verdikjede (ny feil / nytt behov og ny transaksjon etter en OK rekjøring) skal opprette en ny feil") {
val now = LocalDateTime.now()
val transaksjonId = UUID.randomUUID()
val feilmeldingJournalfoer = lagRapidFeilmelding(BehovType.JOURNALFOER, transaksjonId)
rapid.sendTestMessage(feilmeldingJournalfoer)
repository.findByKjoeretidBeforeAndStatusIn(now.plusMinutes(1), setOf(BakgrunnsjobbStatus.OPPRETTET), true).size shouldBe 1
// nå kjører bakgrunnsjobb, plukker opp feilen og rekjører - det går fint, så feilen kommer ikke på nytt.
// Istedet feiler neste steg - nytt behov fra samme transaksjon
val feilmeldingLagre = lagRapidFeilmelding(BehovType.LAGRE_FORESPOERSEL, transaksjonId)
rapid.sendTestMessage(feilmeldingLagre)
// status på gammel jobb blir ikke oppdatert i denne testen..
repository.findByKjoeretidBeforeAndStatusIn(now.plusMinutes(1), setOf(BakgrunnsjobbStatus.OPPRETTET), true).size shouldBe 2

val utloesendeMelding = repository.findByKjoeretidBeforeAndStatusIn(now.plusMinutes(1), setOf(BakgrunnsjobbStatus.OPPRETTET), true)[1].data
val nyTransaksjonId = Key.UUID.les(UuidSerializer, Json.parseToJsonElement(utloesendeMelding).toMap())
transaksjonId shouldNotBeEqual nyTransaksjonId

val nyFeilmeldingLagre = lagRapidFeilmelding(BehovType.LAGRE_FORESPOERSEL, nyTransaksjonId)
rapid.sendTestMessage(nyFeilmeldingLagre) // !! ny tx, ikke samme igjen!

// Bakgrunnsjobben har blitt oppdatert og går til status FEILET..
repository.findByKjoeretidBeforeAndStatusIn(now.plusMinutes(1), setOf(BakgrunnsjobbStatus.OPPRETTET), true).size shouldBe 1
repository.findByKjoeretidBeforeAndStatusIn(now.plusMinutes(1), setOf(BakgrunnsjobbStatus.FEILET), true).size shouldBe 1
}

test("ved flere feil på samme transaksjon-ID og event, så oppdateres eksisterende jobb") {
val omEttMinutt = LocalDateTime.now().plusMinutes(1)
val forespoerselMottattFail = lagFail(EventName.FORESPOERSEL_MOTTATT)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,6 @@ enum class BehovType {
LAGRE_SELVBESTEMT_IM,
OPPRETT_SELVBESTEMT_SAK,

// Asynkrone endringer
LAGRE_FORESPOERSEL, // TODO slett etter databasen er flyttet

// Asynkrone endringer, men brukt til å prøve igjen ved feil
JOURNALFOER,
DISTRIBUER_IM,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,18 +18,14 @@ import no.nav.helsearbeidsgiver.utils.json.toJson
import no.nav.helsearbeidsgiver.utils.json.toPretty
import no.nav.helsearbeidsgiver.utils.log.logger
import no.nav.helsearbeidsgiver.utils.log.sikkerLogger
import no.nav.helsearbeidsgiver.utils.wrapper.Fnr
import no.nav.helsearbeidsgiver.utils.wrapper.Orgnr
import java.util.UUID

data class Melding(
val notisType: Pri.NotisType,
val transaksjonId: UUID,
val forespoerselId: UUID,
val orgnr: Orgnr,
val fnr: Fnr,
val skalHaPaaminnelse: Boolean,
val forespoerselFraBro: ForespoerselFraBro,
val skalHaPaaminnelse: Boolean,
)

/** Tar imot notifikasjon om at det er kommet en forespørsel om arbeidsgiveropplysninger. */
Expand All @@ -42,10 +38,8 @@ class ForespoerselMottattRiver : PriObjectRiver<Melding>() {
notisType = Pri.Key.NOTIS.krev(Pri.NotisType.FORESPØRSEL_MOTTATT, Pri.NotisType.serializer(), json),
transaksjonId = UUID.randomUUID(),
forespoerselId = Pri.Key.FORESPOERSEL_ID.les(UuidSerializer, json),
orgnr = Pri.Key.ORGNR.les(Orgnr.serializer(), json),
fnr = Pri.Key.FNR.les(Fnr.serializer(), json),
skalHaPaaminnelse = Pri.Key.SKAL_HA_PAAMINNELSE.les(Boolean.serializer(), json),
forespoerselFraBro = Pri.Key.FORESPOERSEL.les(ForespoerselFraBro.serializer(), json),
skalHaPaaminnelse = Pri.Key.SKAL_HA_PAAMINNELSE.les(Boolean.serializer(), json),
)

override fun Melding.haandter(json: Map<Pri.Key, JsonElement>): Map<Key, JsonElement> {
Expand All @@ -58,12 +52,8 @@ class ForespoerselMottattRiver : PriObjectRiver<Melding>() {
Key.DATA to
mapOf(
Key.FORESPOERSEL_ID to forespoerselId.toJson(),
// TODO kan fjernes etter overgangsfase
Key.ORGNRUNDERENHET to orgnr.toJson(),
// TODO kan fjernes etter overgangsfase
Key.FNR to fnr.toJson(),
Key.SKAL_HA_PAAMINNELSE to skalHaPaaminnelse.toJson(Boolean.serializer()),
Key.FORESPOERSEL to forespoerselFraBro.toForespoersel().toJson(Forespoersel.serializer()),
Key.SKAL_HA_PAAMINNELSE to skalHaPaaminnelse.toJson(Boolean.serializer()),
).toJson(),
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,10 +54,8 @@ class ForespoerselMottattRiverTest :
Key.DATA to
mapOf(
Key.FORESPOERSEL_ID to innkommendeMelding.forespoerselId.toJson(),
Key.ORGNRUNDERENHET to innkommendeMelding.orgnr.toJson(),
Key.FNR to innkommendeMelding.fnr.toJson(),
Key.SKAL_HA_PAAMINNELSE to innkommendeMelding.skalHaPaaminnelse.toJson(Boolean.serializer()),
Key.FORESPOERSEL to innkommendeMelding.forespoerselFraBro.toForespoersel().toJson(Forespoersel.serializer()),
Key.SKAL_HA_PAAMINNELSE to innkommendeMelding.skalHaPaaminnelse.toJson(Boolean.serializer()),
).toJson(),
)
}
Expand All @@ -68,24 +66,20 @@ private fun mockInnkommendeMelding(): Melding =
notisType = Pri.NotisType.FORESPØRSEL_MOTTATT,
transaksjonId = UUID.randomUUID(),
forespoerselId = UUID.randomUUID(),
orgnr = Orgnr.genererGyldig(),
fnr = Fnr.genererGyldig(),
skalHaPaaminnelse = true,
forespoerselFraBro = Mock.forespoerselFraBro,
skalHaPaaminnelse = true,
)

private fun Melding.toMap(): Map<Pri.Key, JsonElement> =
mapOf(
Pri.Key.NOTIS to notisType.toJson(Pri.NotisType.serializer()),
Pri.Key.FORESPOERSEL_ID to forespoerselId.toJson(),
Pri.Key.ORGNR to orgnr.toJson(),
Pri.Key.FNR to fnr.toJson(),
Pri.Key.SKAL_HA_PAAMINNELSE to skalHaPaaminnelse.toJson(Boolean.serializer()),
Pri.Key.FORESPOERSEL to forespoerselFraBro.toJson(ForespoerselFraBro.serializer()),
Pri.Key.SKAL_HA_PAAMINNELSE to skalHaPaaminnelse.toJson(Boolean.serializer()),
)

object Mock {
val orgnr = Orgnr.genererGyldig()
private val orgnr = Orgnr.genererGyldig()
val forespoerselFraBro =
ForespoerselFraBro(
orgnr = orgnr,
Expand Down
Loading

0 comments on commit 1a2bec6

Please sign in to comment.