This commit is contained in:
bskjon 2025-04-10 02:13:54 +02:00
parent a36db258af
commit 073d0a4d8d
3 changed files with 82 additions and 7 deletions

View File

@ -37,7 +37,8 @@ class ConvertWorkTaskListener: WorkTaskListener() {
return true return true
} }
override fun shouldIProcessAndHandleEvent(incomingEvent: Event, events: List<Event>): Boolean { override fun shouldIProcessAndHandleEvent(incomingEvent: Event, events: List<Event>): Boolean {
if (!super.shouldIProcessAndHandleEvent(incomingEvent, events)) { val mainCheckOk = super.shouldIProcessAndHandleEvent(incomingEvent, events);
if (!mainCheckOk) {
return false return false
} }
@ -49,18 +50,16 @@ class ConvertWorkTaskListener: WorkTaskListener() {
log.info { "Permitting handling of event: ${extractedEvent.data?.outputFile}" } log.info { "Permitting handling of event: ${extractedEvent.data?.outputFile}" }
} }
val startOperation = events.findFirstOf(Events.ProcessStarted)?.dataAs<MediaProcessStartEvent>() val startOperation = events.findFirstOf(Events.ProcessStarted)?.dataAs<StartEventData>()
if (startOperation == null) { if (startOperation == null) {
log.error { "Could not find 'ProcessStarted' event" } log.error { "Could not find 'ProcessStarted' event" }
return false return false
} }
if (startOperation.data?.operations?.isOnly(OperationEvents.CONVERT) == true) { if (incomingEvent.isOfEvent(Events.ProcessStarted)) {
log.info { "StartOperation should only be Convert, ${WGson.toJson(startOperation)}" } return startOperation.operations.isOnly(OperationEvents.CONVERT)
return true
} else {
return shouldIHandleAndProduce
} }
return shouldIHandleAndProduce
} }
override fun onEventsReceived(incomingEvent: ConsumableEvent<Event>, events: List<Event>) { override fun onEventsReceived(incomingEvent: ConsumableEvent<Event>, events: List<Event>) {
val event = incomingEvent.consume() val event = incomingEvent.consume()

View File

@ -0,0 +1,28 @@
package no.iktdev.mediaprocessing.coordinator
import no.iktdev.eventi.data.EventMetadata
import no.iktdev.eventi.data.EventStatus
import no.iktdev.mediaprocessing.shared.common.contract.data.MediaProcessStartEvent
import no.iktdev.mediaprocessing.shared.common.contract.data.StartEventData
import no.iktdev.mediaprocessing.shared.common.contract.dto.OperationEvents
import java.util.UUID
val defaultReferenceId = UUID.randomUUID().toString()
fun defaultStartEvent(): MediaProcessStartEvent {
return MediaProcessStartEvent(
metadata = defaultMetadata(),
data = StartEventData(
operations = listOf(OperationEvents.ENCODE, OperationEvents.EXTRACT, OperationEvents.CONVERT),
file = "DummyTestFile.mkv"
)
)
}
fun defaultMetadata(): EventMetadata {
return EventMetadata(
referenceId = defaultReferenceId,
status = EventStatus.Success,
source = "TestData"
)
}

View File

@ -2,14 +2,62 @@ package no.iktdev.mediaprocessing.coordinator.tasksV2.listeners
import no.iktdev.eventi.data.referenceId import no.iktdev.eventi.data.referenceId
import no.iktdev.mediaprocessing.Files import no.iktdev.mediaprocessing.Files
import no.iktdev.mediaprocessing.coordinator.defaultMetadata
import no.iktdev.mediaprocessing.coordinator.defaultStartEvent
import no.iktdev.mediaprocessing.databaseJsonToEvents import no.iktdev.mediaprocessing.databaseJsonToEvents
import no.iktdev.mediaprocessing.shared.common.contract.Events import no.iktdev.mediaprocessing.shared.common.contract.Events
import no.iktdev.mediaprocessing.shared.common.contract.data.Event
import no.iktdev.mediaprocessing.shared.common.contract.data.StartEventData
import no.iktdev.mediaprocessing.shared.common.contract.dto.OperationEvents
import org.assertj.core.api.Assertions.assertThat import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.DisplayName
import org.junit.jupiter.api.Test import org.junit.jupiter.api.Test
class ConvertWorkTaskListenerTest { class ConvertWorkTaskListenerTest {
@Test
@DisplayName("""
When incoming event is of Start Event, and there is multiple operations,
Validation check should fail
""")
fun validate_shouldIProcessAndHandleEvent1() {
val listener = ConvertWorkTaskListener()
val events = listOf<Event>(defaultStartEvent())
val result = listener.shouldIProcessAndHandleEvent(defaultStartEvent(), events)
assertThat(result).isFalse()
}
@Test
@DisplayName("""
When incoming event is of Start Event but start is missing form list, and there is multiple operations,
Validation check should fail
""")
fun validate_shouldIProcessAndHandleEvent2() {
val listener = ConvertWorkTaskListener()
val result = listener.shouldIProcessAndHandleEvent(defaultStartEvent(), emptyList())
assertThat(result).isFalse()
}
@Test
@DisplayName("""
When incoming event is of Start Event and single operation is Convert,
Validation check should succeed
""")
fun validate_shouldIProcessAndHandleEvent3() {
val listener = ConvertWorkTaskListener()
val startedEvent = defaultStartEvent().copy(
data = StartEventData(
operations = listOf(OperationEvents.CONVERT),
file = "DummyTestFile.ass"
)
)
val events = listOf<Event>(startedEvent)
val result = listener.shouldIProcessAndHandleEvent(startedEvent, events)
assertThat(result).isTrue()
}
@Test @Test
fun validateParsingOfEvents() { fun validateParsingOfEvents() {
val content = Files.MultipleLanguageBased.databaseJsonToEvents() val content = Files.MultipleLanguageBased.databaseJsonToEvents()