summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/integrationTest/kotlin/dev/dnpm/etl/processor/EtlProcessorApplicationTests.kt5
-rw-r--r--src/integrationTest/kotlin/dev/dnpm/etl/processor/services/RequestServiceIntegrationTest.kt3
-rw-r--r--src/main/kotlin/dev/dnpm/etl/processor/services/RequestProcessor.kt110
-rw-r--r--src/test/kotlin/dev/dnpm/etl/processor/services/RequestProcessorTest.kt2
4 files changed, 57 insertions, 63 deletions
diff --git a/src/integrationTest/kotlin/dev/dnpm/etl/processor/EtlProcessorApplicationTests.kt b/src/integrationTest/kotlin/dev/dnpm/etl/processor/EtlProcessorApplicationTests.kt
index 07a201b..6c5b150 100644
--- a/src/integrationTest/kotlin/dev/dnpm/etl/processor/EtlProcessorApplicationTests.kt
+++ b/src/integrationTest/kotlin/dev/dnpm/etl/processor/EtlProcessorApplicationTests.kt
@@ -19,19 +19,22 @@
package dev.dnpm.etl.processor
+import dev.dnpm.etl.processor.output.MtbFileSender
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.extension.ExtendWith
import org.springframework.boot.test.context.SpringBootTest
+import org.springframework.boot.test.mock.mockito.MockBean
import org.springframework.test.context.junit.jupiter.SpringExtension
import org.testcontainers.junit.jupiter.Testcontainers
@Testcontainers
@ExtendWith(SpringExtension::class)
@SpringBootTest
+@MockBean(MtbFileSender::class)
class EtlProcessorApplicationTests : AbstractTestcontainerTest() {
@Test
- fun contextLoads() {
+ fun contextLoadsIfMtbFileSenderConfigured() {
}
}
diff --git a/src/integrationTest/kotlin/dev/dnpm/etl/processor/services/RequestServiceIntegrationTest.kt b/src/integrationTest/kotlin/dev/dnpm/etl/processor/services/RequestServiceIntegrationTest.kt
index d71e011..3af218e 100644
--- a/src/integrationTest/kotlin/dev/dnpm/etl/processor/services/RequestServiceIntegrationTest.kt
+++ b/src/integrationTest/kotlin/dev/dnpm/etl/processor/services/RequestServiceIntegrationTest.kt
@@ -24,12 +24,14 @@ import dev.dnpm.etl.processor.monitoring.Request
import dev.dnpm.etl.processor.monitoring.RequestRepository
import dev.dnpm.etl.processor.monitoring.RequestStatus
import dev.dnpm.etl.processor.monitoring.RequestType
+import dev.dnpm.etl.processor.output.MtbFileSender
import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.extension.ExtendWith
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.test.context.SpringBootTest
+import org.springframework.boot.test.mock.mockito.MockBean
import org.springframework.test.context.junit.jupiter.SpringExtension
import org.springframework.transaction.annotation.Transactional
import org.testcontainers.junit.jupiter.Testcontainers
@@ -40,6 +42,7 @@ import java.util.*
@ExtendWith(SpringExtension::class)
@SpringBootTest
@Transactional
+@MockBean(MtbFileSender::class)
class RequestServiceIntegrationTest : AbstractTestcontainerTest() {
private lateinit var requestRepository: RequestRepository
diff --git a/src/main/kotlin/dev/dnpm/etl/processor/services/RequestProcessor.kt b/src/main/kotlin/dev/dnpm/etl/processor/services/RequestProcessor.kt
index fcb0863..936c1bf 100644
--- a/src/main/kotlin/dev/dnpm/etl/processor/services/RequestProcessor.kt
+++ b/src/main/kotlin/dev/dnpm/etl/processor/services/RequestProcessor.kt
@@ -37,7 +37,7 @@ import java.util.*
@Service
class RequestProcessor(
private val pseudonymizeService: PseudonymizeService,
- private val senders: List<MtbFileSender>,
+ private val sender: MtbFileSender,
private val requestService: RequestService,
private val objectMapper: ObjectMapper,
private val statisticsUpdateProducer: Sinks.Many<Any>
@@ -66,32 +66,26 @@ class RequestProcessor(
val request = MtbFileSender.MtbFileRequest(UUID.randomUUID().toString(), pseudonymized)
- val responses = senders.map {
- val responseStatus = it.send(request)
- if (responseStatus.status == MtbFileSender.ResponseStatus.SUCCESS || responseStatus.status == MtbFileSender.ResponseStatus.WARNING) {
- logger.info(
- "Sent file for Patient '{}' using '{}'",
- pseudonymized.patient.id,
- it.javaClass.simpleName
- )
- } else {
- logger.error(
- "Error sending file for Patient '{}' using '{}'",
- pseudonymized.patient.id,
- it.javaClass.simpleName
- )
- }
- responseStatus
+ val responseStatus = sender.send(request)
+ if (responseStatus.status == MtbFileSender.ResponseStatus.SUCCESS || responseStatus.status == MtbFileSender.ResponseStatus.WARNING) {
+ logger.info(
+ "Sent file for Patient '{}' using '{}'",
+ pseudonymized.patient.id,
+ sender.javaClass.simpleName
+ )
+ } else {
+ logger.error(
+ "Error sending file for Patient '{}' using '{}'",
+ pseudonymized.patient.id,
+ sender.javaClass.simpleName
+ )
}
- val requestStatus = if (responses.map { it.status }.contains(MtbFileSender.ResponseStatus.ERROR)) {
- RequestStatus.ERROR
- } else if (responses.map { it.status }.contains(MtbFileSender.ResponseStatus.WARNING)) {
- RequestStatus.WARNING
- } else if (responses.map { it.status }.contains(MtbFileSender.ResponseStatus.SUCCESS)) {
- RequestStatus.SUCCESS
- } else {
- RequestStatus.UNKNOWN
+ val requestStatus = when (responseStatus.status) {
+ MtbFileSender.ResponseStatus.ERROR -> RequestStatus.ERROR
+ MtbFileSender.ResponseStatus.WARNING -> RequestStatus.WARNING
+ MtbFileSender.ResponseStatus.SUCCESS -> RequestStatus.SUCCESS
+ else -> RequestStatus.UNKNOWN
}
requestService.save(
@@ -104,9 +98,7 @@ class RequestProcessor(
type = RequestType.MTB_FILE,
report = when (requestStatus) {
RequestStatus.ERROR -> Report("Fehler bei der Datenübertragung oder Inhalt nicht verarbeitbar")
- RequestStatus.WARNING -> Report("Warnungen über mangelhafte Daten",
- responses.joinToString("\n") { it.reason })
-
+ RequestStatus.WARNING -> Report("Warnungen über mangelhafte Daten", responseStatus.reason)
RequestStatus.UNKNOWN -> Report("Keine Informationen")
else -> null
}
@@ -132,42 +124,38 @@ class RequestProcessor(
try {
val patientPseudonym = pseudonymizeService.patientPseudonym(patientId)
- val responses = senders.map {
- val responseStatus = it.send(MtbFileSender.DeleteRequest(requestId, patientPseudonym))
- when (responseStatus.status) {
- MtbFileSender.ResponseStatus.SUCCESS -> {
- logger.info(
- "Sent delete for Patient '{}' using '{}'",
- patientPseudonym,
- it.javaClass.simpleName
- )
- }
+ val responseStatus = sender.send(MtbFileSender.DeleteRequest(requestId, patientPseudonym))
+ when (responseStatus.status) {
+ MtbFileSender.ResponseStatus.SUCCESS -> {
+ logger.info(
+ "Sent delete for Patient '{}' using '{}'",
+ patientPseudonym,
+ sender.javaClass.simpleName
+ )
+ }
- MtbFileSender.ResponseStatus.ERROR -> {
- logger.error(
- "Error deleting data for Patient '{}' using '{}'",
- patientPseudonym,
- it.javaClass.simpleName
- )
- }
+ MtbFileSender.ResponseStatus.ERROR -> {
+ logger.error(
+ "Error deleting data for Patient '{}' using '{}'",
+ patientPseudonym,
+ sender.javaClass.simpleName
+ )
+ }
- else -> {
- logger.error(
- "Unknown result on deleting data for Patient '{}' using '{}'",
- patientPseudonym,
- it.javaClass.simpleName
- )
- }
+ else -> {
+ logger.error(
+ "Unknown result on deleting data for Patient '{}' using '{}'",
+ patientPseudonym,
+ sender.javaClass.simpleName
+ )
}
- responseStatus
}
- val overallRequestStatus = if (responses.map { it.status }.contains(MtbFileSender.ResponseStatus.ERROR)) {
- RequestStatus.ERROR
- } else if (responses.map { it.status }.contains(MtbFileSender.ResponseStatus.SUCCESS)) {
- RequestStatus.SUCCESS
- } else {
- RequestStatus.UNKNOWN
+ val requestStatus = when (responseStatus.status) {
+ MtbFileSender.ResponseStatus.ERROR -> RequestStatus.ERROR
+ MtbFileSender.ResponseStatus.WARNING -> RequestStatus.WARNING
+ MtbFileSender.ResponseStatus.SUCCESS -> RequestStatus.SUCCESS
+ else -> RequestStatus.UNKNOWN
}
requestService.save(
@@ -176,9 +164,9 @@ class RequestProcessor(
patientId = patientPseudonym,
pid = patientId,
fingerprint = fingerprint(patientPseudonym),
- status = overallRequestStatus,
+ status = requestStatus,
type = RequestType.DELETE,
- report = when (overallRequestStatus) {
+ report = when (requestStatus) {
RequestStatus.ERROR -> Report("Fehler bei der Datenübertragung oder Inhalt nicht verarbeitbar")
RequestStatus.UNKNOWN -> Report("Keine Informationen")
else -> null
diff --git a/src/test/kotlin/dev/dnpm/etl/processor/services/RequestProcessorTest.kt b/src/test/kotlin/dev/dnpm/etl/processor/services/RequestProcessorTest.kt
index 12d6e29..6e97343 100644
--- a/src/test/kotlin/dev/dnpm/etl/processor/services/RequestProcessorTest.kt
+++ b/src/test/kotlin/dev/dnpm/etl/processor/services/RequestProcessorTest.kt
@@ -67,7 +67,7 @@ class RequestProcessorTest {
requestProcessor = RequestProcessor(
pseudonymizeService,
- listOf(sender),
+ sender,
requestService,
objectMapper,
statisticsUpdateProducer