Loading vessels-commands/src/test/java/es/redmic/test/vesselscommands/integration/vessel/CreateVesselFromRestTest.java +0 −15 Original line number Diff line number Diff line Loading @@ -47,13 +47,10 @@ import org.springframework.util.concurrent.ListenableFuture; import es.redmic.brokerlib.avro.common.Event; import es.redmic.brokerlib.listener.SendListener; import es.redmic.test.vesselscommands.integration.KafkaEmbeddedConfig; import es.redmic.test.vesselscommands.integration.vesseltype.VesselTypeDataUtil; import es.redmic.testutils.documentation.DocumentationCommandBaseTest; import es.redmic.vesselscommands.VesselsCommandsApplication; import es.redmic.vesselscommands.handler.VesselCommandHandler; import es.redmic.vesselscommands.handler.VesselTypeCommandHandler; import es.redmic.vesselscommands.statestore.VesselStateStore; import es.redmic.vesselscommands.statestore.VesselTypeStateStore; import es.redmic.vesselslib.dto.vessel.VesselDTO; import es.redmic.vesselslib.events.vessel.create.CreateVesselConfirmedEvent; import es.redmic.vesselslib.events.vessel.create.CreateVesselEvent; Loading Loading @@ -86,14 +83,9 @@ public class CreateVesselFromRestTest extends DocumentationCommandBaseTest { VesselStateStore vesselsStateStore; VesselTypeStateStore vesselTypeStateStore; @Autowired VesselCommandHandler vesselCommandHandler; @Autowired VesselTypeCommandHandler vesselTypeCommandHandler; @Autowired private KafkaTemplate<String, Event> kafkaTemplate; Loading Loading @@ -124,13 +116,6 @@ public class CreateVesselFromRestTest extends DocumentationCommandBaseTest { Whitebox.setInternalState(vesselCommandHandler, "vesselStateStore", vesselsStateStore); vesselTypeStateStore = Mockito.mock(VesselTypeStateStore.class); Whitebox.setInternalState(vesselTypeCommandHandler, "vesselTypeStateStore", vesselTypeStateStore); when(vesselTypeStateStore.getVesselType(VesselTypeDataUtil.PREFIX + "70")) .thenReturn(VesselTypeDataUtil.getCreateEvent("70")); // @formatter:off mockMvc = MockMvcBuilders Loading vessels-commands/src/test/java/es/redmic/test/vesselscommands/integration/vessel/CreateVesselFromTrackingTest.java +12 −28 Original line number Diff line number Diff line Loading @@ -2,7 +2,6 @@ package es.redmic.test.vesselscommands.integration.vessel; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.mockito.Mockito.when; import java.util.concurrent.BlockingQueue; import java.util.concurrent.LinkedBlockingDeque; Loading @@ -11,16 +10,14 @@ import java.util.concurrent.TimeUnit; import javax.annotation.PostConstruct; import org.joda.time.DateTime; import org.junit.Before; import org.junit.BeforeClass; import org.junit.ClassRule; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mockito; import org.powermock.reflect.Whitebox; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.kafka.annotation.KafkaHandler; import org.springframework.kafka.annotation.KafkaListener; import org.springframework.kafka.core.KafkaTemplate; import org.springframework.kafka.support.SendResult; Loading @@ -34,11 +31,8 @@ import org.springframework.util.concurrent.ListenableFuture; import es.redmic.brokerlib.avro.geodata.tracking.vessels.AISTrackingDTO; import es.redmic.brokerlib.listener.SendListener; import es.redmic.test.vesselscommands.integration.KafkaEmbeddedConfig; import es.redmic.test.vesselscommands.integration.vesseltype.VesselTypeDataUtil; import es.redmic.testutils.kafka.KafkaBaseIntegrationTest; import es.redmic.vesselscommands.VesselsCommandsApplication; import es.redmic.vesselscommands.handler.VesselTypeCommandHandler; import es.redmic.vesselscommands.statestore.VesselTypeStateStore; import es.redmic.vesselslib.dto.vessel.VesselDTO; import es.redmic.vesselslib.events.vessel.create.CreateVesselEvent; Loading @@ -48,6 +42,7 @@ import es.redmic.vesselslib.events.vessel.create.CreateVesselEvent; @SpringBootTest(classes = { VesselsCommandsApplication.class }) @ActiveProfiles("test") @DirtiesContext @KafkaListener(topics = "${broker.topic.vessel}", groupId = "test") public class CreateVesselFromTrackingTest extends KafkaBaseIntegrationTest { @Value("${broker.topic.realtime.tracking.vessels}") Loading @@ -62,11 +57,6 @@ public class CreateVesselFromTrackingTest extends KafkaBaseIntegrationTest { protected static BlockingQueue<Object> blockingQueue; VesselTypeStateStore vesselTypeStateStore; @Autowired VesselTypeCommandHandler vesselTypeCommandHandler; @PostConstruct public void CreateVesselFromTrackingTestPostConstruct() throws Exception { createSchemaRegistryRestApp(embeddedKafka.getZookeeperConnectionString(), embeddedKafka.getBrokersAsString()); Loading @@ -78,24 +68,13 @@ public class CreateVesselFromTrackingTest extends KafkaBaseIntegrationTest { blockingQueue = new LinkedBlockingDeque<>(); } @Before public void before() { vesselTypeStateStore = Mockito.mock(VesselTypeStateStore.class); Whitebox.setInternalState(vesselTypeCommandHandler, "vesselTypeStateStore", vesselTypeStateStore); when(vesselTypeStateStore.getVesselType(VesselTypeDataUtil.PREFIX + "70")) .thenReturn(VesselTypeDataUtil.getCreateEvent("70")); } @Test public void createVessel_SendCreateVesselEvent_IfCommandWasSuccess() throws Exception { AISTrackingDTO dto = new AISTrackingDTO(); dto.setMmsi(1); dto.setImo(1); dto.setName("Pedrito 2"); dto.setName("Avatar"); dto.setType(70); dto.setCallSign("1"); dto.setTstamp(new DateTime()); Loading @@ -107,7 +86,7 @@ public class CreateVesselFromTrackingTest extends KafkaBaseIntegrationTest { dto.setD(1.4); ListenableFuture<SendResult<String, AISTrackingDTO>> future = kafkaTemplate .send(REALTIME_TRACKING_VESSELS_TOPIC, dto.getMmsi().toString(), dto); .send(REALTIME_TRACKING_VESSELS_TOPIC, "vessel-mmsi-" + dto.getMmsi(), dto); future.addCallback(new SendListener()); VesselDTO vessel = (VesselDTO) blockingQueue.poll(30, TimeUnit.SECONDS); Loading @@ -121,9 +100,14 @@ public class CreateVesselFromTrackingTest extends KafkaBaseIntegrationTest { assertEquals(vessel.getBeam(), beam); } @KafkaListener(topics = "${broker.topic.vessel}", groupId = "test") public void run(CreateVesselEvent vesselCreatedEvent) { @KafkaHandler public void listen(CreateVesselEvent createEvent) { blockingQueue.offer(createEvent.getVessel()); } @KafkaHandler(isDefault = true) public void defaultEvent(Object def) { blockingQueue.offer(vesselCreatedEvent.getVessel()); } } vessels-commands/src/test/java/es/redmic/test/vesselscommands/integration/vesseltracking/VesselTrackingDataUtil.java +87 −34 Original line number Diff line number Diff line Loading @@ -16,14 +16,20 @@ import es.redmic.vesselslib.dto.tracking.VesselTrackingDTO; import es.redmic.vesselslib.dto.tracking.VesselTrackingPropertiesDTO; import es.redmic.vesselslib.dto.vessel.VesselDTO; import es.redmic.vesselslib.dto.vesseltype.VesselTypeDTO; import es.redmic.vesselslib.events.vessel.create.CreateVesselFailedEvent; import es.redmic.vesselslib.events.vesseltracking.VesselTrackingEventTypes; import es.redmic.vesselslib.events.vesseltracking.create.CreateVesselTrackingConfirmedEvent; import es.redmic.vesselslib.events.vesseltracking.create.CreateVesselTrackingEvent; import es.redmic.vesselslib.events.vesseltracking.create.CreateVesselTrackingFailedEvent; import es.redmic.vesselslib.events.vesseltracking.create.EnrichCreateVesselTrackingEvent; import es.redmic.vesselslib.events.vesseltracking.create.VesselTrackingCreatedEvent; import es.redmic.vesselslib.events.vesseltracking.delete.DeleteVesselTrackingConfirmedEvent; import es.redmic.vesselslib.events.vesseltracking.delete.DeleteVesselTrackingEvent; import es.redmic.vesselslib.events.vesseltracking.delete.DeleteVesselTrackingFailedEvent; import es.redmic.vesselslib.events.vesseltracking.delete.VesselTrackingDeletedEvent; import es.redmic.vesselslib.events.vesseltracking.update.EnrichUpdateVesselTrackingEvent; import es.redmic.vesselslib.events.vesseltracking.update.UpdateVesselTrackingConfirmedEvent; import es.redmic.vesselslib.events.vesseltracking.update.UpdateVesselTrackingEvent; import es.redmic.vesselslib.events.vesseltracking.update.UpdateVesselTrackingFailedEvent; import es.redmic.vesselslib.events.vesseltracking.update.VesselTrackingUpdatedEvent; import es.redmic.vesselslib.unit.utils.VesselDataUtil; Loading @@ -31,26 +37,24 @@ public abstract class VesselTrackingDataUtil { public final static String PREFIX = "vesseltracking-mmsi-tstamp-", USER = "1"; public static CreateVesselTrackingEvent getCreateEvent(Integer MMSI) { String TSTAMP = String.valueOf(new DateTime().getMillis()); public static CreateVesselTrackingEvent getCreateEvent(Integer mmsi, String tstamp) { CreateVesselTrackingEvent event = new CreateVesselTrackingEvent(); event.setAggregateId(PREFIX + MMSI + TSTAMP); event.setAggregateId(PREFIX + mmsi + tstamp); event.setDate(DateTime.now()); event.setId(UUID.randomUUID().toString()); event.setType(VesselTrackingEventTypes.CREATE); event.setVersion(1); event.setUserId(USER); event.setSessionId("sessionIdA"); event.setVesselTracking(getVesselTracking(MMSI, TSTAMP)); event.setVesselTracking(getVesselTracking(mmsi, tstamp)); return event; } public static EnrichCreateVesselTrackingEvent getEnrichCreateVesselTrackingEvent(Integer mmsi) { public static EnrichCreateVesselTrackingEvent getEnrichCreateVesselTrackingEvent(Integer mmsi, String tstamp) { CreateVesselTrackingEvent createEvent = getCreateEvent(mmsi); CreateVesselTrackingEvent createEvent = getCreateEvent(mmsi, tstamp); EnrichCreateVesselTrackingEvent event = new EnrichCreateVesselTrackingEvent().buildFrom(createEvent); event.setVesselTracking(createEvent.getVesselTracking()); Loading @@ -58,91 +62,140 @@ public abstract class VesselTrackingDataUtil { return event; } public static VesselTrackingCreatedEvent getCreateVesselTrackingEvent(Integer mmsi) { public static VesselTrackingCreatedEvent getCreateVesselTrackingEvent(Integer mmsi, String tstamp) { CreateVesselTrackingEvent createEvent = getCreateEvent(mmsi); CreateVesselTrackingEvent createEvent = getCreateEvent(mmsi, tstamp); VesselTrackingCreatedEvent event = new VesselTrackingCreatedEvent().buildFrom(createEvent); event.setVesselTracking(createEvent.getVesselTracking()); return event; } public static VesselTrackingCreatedEvent getVesselTrackingCreatedEvent(Integer mmsi) { public static CreateVesselTrackingConfirmedEvent getCreateVesselTrackingConfirmedEvent(Integer mmsi, String tstamp) { return new CreateVesselTrackingConfirmedEvent().buildFrom(getCreateEvent(mmsi, tstamp)); } public static VesselTrackingCreatedEvent getVesselTrackingCreatedEvent(Integer mmsi, String tstamp) { CreateVesselTrackingEvent createEvent = getCreateEvent(mmsi); CreateVesselTrackingEvent createEvent = getCreateEvent(mmsi, tstamp); VesselTrackingCreatedEvent event = new VesselTrackingCreatedEvent().buildFrom(createEvent); event.setVesselTracking(createEvent.getVesselTracking()); return event; } public static CreateVesselFailedEvent getCreateVesselFailedEvent(Integer mmsi) { public static CreateVesselTrackingFailedEvent getCreateVesselTrackingFailedEvent(Integer mmsi, String tstamp) { CreateVesselFailedEvent createVesselFailedEvent = new CreateVesselFailedEvent().buildFrom(getCreateEvent(mmsi)); CreateVesselTrackingFailedEvent createVesselTrackingFailedEvent = new CreateVesselTrackingFailedEvent() .buildFrom(getCreateEvent(mmsi, tstamp)); createVesselFailedEvent.setExceptionType(ExceptionType.ITEM_ALREADY_EXIST_EXCEPTION.name()); createVesselTrackingFailedEvent.setExceptionType(ExceptionType.ITEM_ALREADY_EXIST_EXCEPTION.name()); Map<String, String> arguments = new HashMap<>(); arguments.put("A", "B"); createVesselFailedEvent.setArguments(arguments); createVesselTrackingFailedEvent.setArguments(arguments); return createVesselFailedEvent; return createVesselTrackingFailedEvent; } // update public static UpdateVesselTrackingEvent getUpdateEvent(Integer MMSI) { String TSTAMP = String.valueOf(new DateTime().getMillis()); public static UpdateVesselTrackingEvent getUpdateEvent(Integer mmsi, String tstamp) { UpdateVesselTrackingEvent event = new UpdateVesselTrackingEvent(); event.setAggregateId(PREFIX + MMSI + TSTAMP); event.setAggregateId(PREFIX + mmsi + tstamp); event.setDate(DateTime.now()); event.setId(UUID.randomUUID().toString()); event.setType(VesselTrackingEventTypes.UPDATE); event.setVersion(2); event.setUserId(USER); event.setSessionId("sessionIdB"); event.setVesselTracking(getVesselTracking(MMSI, TSTAMP)); event.setVesselTracking(getVesselTracking(mmsi, tstamp)); return event; } public static EnrichUpdateVesselTrackingEvent getEnrichUpdateVesselTrackingEvent(Integer mmsi, String tstamp) { UpdateVesselTrackingEvent updateEvent = getUpdateEvent(mmsi, tstamp); EnrichUpdateVesselTrackingEvent event = new EnrichUpdateVesselTrackingEvent().buildFrom(updateEvent); event.setVesselTracking(updateEvent.getVesselTracking()); return event; } public static VesselTrackingUpdatedEvent getVesselTrackingUpdatedEvent(Integer mmsi) { public static UpdateVesselTrackingConfirmedEvent getUpdateVesselTrackingConfirmedEvent(Integer mmsi, String tstamp) { return new UpdateVesselTrackingConfirmedEvent().buildFrom(getUpdateEvent(mmsi, tstamp)); } public static VesselTrackingUpdatedEvent getVesselTrackingUpdatedEvent(Integer mmsi, String tstamp) { UpdateVesselTrackingEvent updateEvent = getUpdateEvent(mmsi); UpdateVesselTrackingEvent updateEvent = getUpdateEvent(mmsi, tstamp); VesselTrackingUpdatedEvent event = new VesselTrackingUpdatedEvent().buildFrom(updateEvent); event.setVesselTracking(updateEvent.getVesselTracking()); return event; } // delete public static UpdateVesselTrackingFailedEvent getUpdateVesselTrackingFailedEvent(Integer mmsi, String tstamp) { UpdateVesselTrackingFailedEvent event = new UpdateVesselTrackingFailedEvent() .buildFrom(getUpdateEvent(mmsi, tstamp)); public static DeleteVesselTrackingEvent getDeleteEvent(Integer MMSI) { event.setExceptionType(ExceptionType.ITEM_NOT_FOUND.name()); Map<String, String> arguments = new HashMap<>(); arguments.put("A", "B"); event.setArguments(arguments); return event; } // delete String TSTAMP = String.valueOf(new DateTime().getMillis()); public static DeleteVesselTrackingEvent getDeleteEvent(Integer mmsi, String tstamp) { DeleteVesselTrackingEvent event = new DeleteVesselTrackingEvent(); event.setAggregateId(PREFIX + MMSI + TSTAMP); event.setAggregateId(PREFIX + mmsi + tstamp); event.setType(VesselTrackingEventTypes.DELETE); event.setVersion(3); event.setUserId(USER); return event; } public static VesselTrackingDeletedEvent getVesselTrackingDeletedEvent(Integer MMSI) { public static DeleteVesselTrackingConfirmedEvent getDeleteVesselTrackingConfirmedEvent(Integer mmsi, String tstamp) { return new DeleteVesselTrackingConfirmedEvent().buildFrom(getDeleteEvent(mmsi, tstamp)); } public static VesselTrackingDeletedEvent getVesselTrackingDeletedEvent(Integer mmsi, String tstamp) { VesselTrackingDeletedEvent event = new VesselTrackingDeletedEvent().buildFrom(getDeleteEvent(mmsi, tstamp)); return event; } public static DeleteVesselTrackingFailedEvent getDeleteVesselTrackingFailedEvent(Integer mmsi, String tstamp) { VesselTrackingDeletedEvent event = new VesselTrackingDeletedEvent().buildFrom(getDeleteEvent(MMSI)); DeleteVesselTrackingFailedEvent event = new DeleteVesselTrackingFailedEvent() .buildFrom(getDeleteEvent(mmsi, tstamp)); event.setExceptionType(ExceptionType.DELETE_ITEM_EXCEPTION.name()); Map<String, String> arguments = new HashMap<>(); // arguments.put("A", "B"); event.setArguments(arguments); return event; } public static VesselTrackingDTO getVesselTracking(Integer MMSI, String TSTAMP) { public static VesselTrackingDTO getVesselTracking(Integer mmsi, String tstamp) { VesselTrackingDTO vesselTracking = new VesselTrackingDTO(); VesselDTO vessel = new VesselDTO(); vessel.setId(VesselDataUtil.PREFIX + MMSI); vessel.setMmsi(Integer.valueOf(MMSI)); vessel.setId(VesselDataUtil.PREFIX + mmsi); vessel.setMmsi(Integer.valueOf(mmsi)); vessel.setName("Avatar"); vessel.setImo(1234); vessel.setBeam(30.2); Loading @@ -158,7 +211,7 @@ public abstract class VesselTrackingDataUtil { vesselType.setName_en("Cargo, all ships of this type"); vessel.setType(vesselType); vesselTracking.setId(PREFIX + MMSI + TSTAMP); vesselTracking.setId(PREFIX + mmsi + tstamp); vesselTracking.setUuid(UUID.randomUUID().toString()); Point geometry = JTSFactoryFinder.getGeometryFactory().createPoint(new Coordinate(44.56433, 37.94388)); Loading vessels-commands/src/test/java/es/redmic/test/vesselscommands/unit/aggregate/vesseltracking/AggregateBaseTest.java +8 −6 Original line number Diff line number Diff line Loading @@ -23,6 +23,8 @@ public abstract class AggregateBaseTest { Integer mmsi = 1234; String tstamp = String.valueOf(new DateTime().getMillis()); @Before public void setUp() { Loading @@ -33,32 +35,32 @@ public abstract class AggregateBaseTest { protected CreateVesselTrackingEvent getCreateVesselTrackingEvent() { return VesselTrackingDataUtil.getCreateEvent(mmsi); return VesselTrackingDataUtil.getCreateEvent(mmsi, tstamp); } protected VesselTrackingCreatedEvent getVesselTrackingCreatedEvent() { return VesselTrackingDataUtil.getVesselTrackingCreatedEvent(mmsi); return VesselTrackingDataUtil.getVesselTrackingCreatedEvent(mmsi, tstamp); } protected UpdateVesselTrackingEvent getUpdateVesselTrackingEvent() { return VesselTrackingDataUtil.getUpdateEvent(mmsi); return VesselTrackingDataUtil.getUpdateEvent(mmsi, tstamp); } protected VesselTrackingUpdatedEvent getVesselTrackingUpdatedEvent() { return VesselTrackingDataUtil.getVesselTrackingUpdatedEvent(mmsi); return VesselTrackingDataUtil.getVesselTrackingUpdatedEvent(mmsi, tstamp); } protected DeleteVesselTrackingEvent getDeleteVesselTrackingEvent() { return VesselTrackingDataUtil.getDeleteEvent(mmsi); return VesselTrackingDataUtil.getDeleteEvent(mmsi, tstamp); } protected VesselTrackingDeletedEvent getVesselTrackingDeletedEvent() { return VesselTrackingDataUtil.getVesselTrackingDeletedEvent(mmsi); return VesselTrackingDataUtil.getVesselTrackingDeletedEvent(mmsi, tstamp); } protected VesselTrackingDTO getVesselTracking() { Loading Loading
vessels-commands/src/test/java/es/redmic/test/vesselscommands/integration/vessel/CreateVesselFromRestTest.java +0 −15 Original line number Diff line number Diff line Loading @@ -47,13 +47,10 @@ import org.springframework.util.concurrent.ListenableFuture; import es.redmic.brokerlib.avro.common.Event; import es.redmic.brokerlib.listener.SendListener; import es.redmic.test.vesselscommands.integration.KafkaEmbeddedConfig; import es.redmic.test.vesselscommands.integration.vesseltype.VesselTypeDataUtil; import es.redmic.testutils.documentation.DocumentationCommandBaseTest; import es.redmic.vesselscommands.VesselsCommandsApplication; import es.redmic.vesselscommands.handler.VesselCommandHandler; import es.redmic.vesselscommands.handler.VesselTypeCommandHandler; import es.redmic.vesselscommands.statestore.VesselStateStore; import es.redmic.vesselscommands.statestore.VesselTypeStateStore; import es.redmic.vesselslib.dto.vessel.VesselDTO; import es.redmic.vesselslib.events.vessel.create.CreateVesselConfirmedEvent; import es.redmic.vesselslib.events.vessel.create.CreateVesselEvent; Loading Loading @@ -86,14 +83,9 @@ public class CreateVesselFromRestTest extends DocumentationCommandBaseTest { VesselStateStore vesselsStateStore; VesselTypeStateStore vesselTypeStateStore; @Autowired VesselCommandHandler vesselCommandHandler; @Autowired VesselTypeCommandHandler vesselTypeCommandHandler; @Autowired private KafkaTemplate<String, Event> kafkaTemplate; Loading Loading @@ -124,13 +116,6 @@ public class CreateVesselFromRestTest extends DocumentationCommandBaseTest { Whitebox.setInternalState(vesselCommandHandler, "vesselStateStore", vesselsStateStore); vesselTypeStateStore = Mockito.mock(VesselTypeStateStore.class); Whitebox.setInternalState(vesselTypeCommandHandler, "vesselTypeStateStore", vesselTypeStateStore); when(vesselTypeStateStore.getVesselType(VesselTypeDataUtil.PREFIX + "70")) .thenReturn(VesselTypeDataUtil.getCreateEvent("70")); // @formatter:off mockMvc = MockMvcBuilders Loading
vessels-commands/src/test/java/es/redmic/test/vesselscommands/integration/vessel/CreateVesselFromTrackingTest.java +12 −28 Original line number Diff line number Diff line Loading @@ -2,7 +2,6 @@ package es.redmic.test.vesselscommands.integration.vessel; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.mockito.Mockito.when; import java.util.concurrent.BlockingQueue; import java.util.concurrent.LinkedBlockingDeque; Loading @@ -11,16 +10,14 @@ import java.util.concurrent.TimeUnit; import javax.annotation.PostConstruct; import org.joda.time.DateTime; import org.junit.Before; import org.junit.BeforeClass; import org.junit.ClassRule; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mockito; import org.powermock.reflect.Whitebox; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.kafka.annotation.KafkaHandler; import org.springframework.kafka.annotation.KafkaListener; import org.springframework.kafka.core.KafkaTemplate; import org.springframework.kafka.support.SendResult; Loading @@ -34,11 +31,8 @@ import org.springframework.util.concurrent.ListenableFuture; import es.redmic.brokerlib.avro.geodata.tracking.vessels.AISTrackingDTO; import es.redmic.brokerlib.listener.SendListener; import es.redmic.test.vesselscommands.integration.KafkaEmbeddedConfig; import es.redmic.test.vesselscommands.integration.vesseltype.VesselTypeDataUtil; import es.redmic.testutils.kafka.KafkaBaseIntegrationTest; import es.redmic.vesselscommands.VesselsCommandsApplication; import es.redmic.vesselscommands.handler.VesselTypeCommandHandler; import es.redmic.vesselscommands.statestore.VesselTypeStateStore; import es.redmic.vesselslib.dto.vessel.VesselDTO; import es.redmic.vesselslib.events.vessel.create.CreateVesselEvent; Loading @@ -48,6 +42,7 @@ import es.redmic.vesselslib.events.vessel.create.CreateVesselEvent; @SpringBootTest(classes = { VesselsCommandsApplication.class }) @ActiveProfiles("test") @DirtiesContext @KafkaListener(topics = "${broker.topic.vessel}", groupId = "test") public class CreateVesselFromTrackingTest extends KafkaBaseIntegrationTest { @Value("${broker.topic.realtime.tracking.vessels}") Loading @@ -62,11 +57,6 @@ public class CreateVesselFromTrackingTest extends KafkaBaseIntegrationTest { protected static BlockingQueue<Object> blockingQueue; VesselTypeStateStore vesselTypeStateStore; @Autowired VesselTypeCommandHandler vesselTypeCommandHandler; @PostConstruct public void CreateVesselFromTrackingTestPostConstruct() throws Exception { createSchemaRegistryRestApp(embeddedKafka.getZookeeperConnectionString(), embeddedKafka.getBrokersAsString()); Loading @@ -78,24 +68,13 @@ public class CreateVesselFromTrackingTest extends KafkaBaseIntegrationTest { blockingQueue = new LinkedBlockingDeque<>(); } @Before public void before() { vesselTypeStateStore = Mockito.mock(VesselTypeStateStore.class); Whitebox.setInternalState(vesselTypeCommandHandler, "vesselTypeStateStore", vesselTypeStateStore); when(vesselTypeStateStore.getVesselType(VesselTypeDataUtil.PREFIX + "70")) .thenReturn(VesselTypeDataUtil.getCreateEvent("70")); } @Test public void createVessel_SendCreateVesselEvent_IfCommandWasSuccess() throws Exception { AISTrackingDTO dto = new AISTrackingDTO(); dto.setMmsi(1); dto.setImo(1); dto.setName("Pedrito 2"); dto.setName("Avatar"); dto.setType(70); dto.setCallSign("1"); dto.setTstamp(new DateTime()); Loading @@ -107,7 +86,7 @@ public class CreateVesselFromTrackingTest extends KafkaBaseIntegrationTest { dto.setD(1.4); ListenableFuture<SendResult<String, AISTrackingDTO>> future = kafkaTemplate .send(REALTIME_TRACKING_VESSELS_TOPIC, dto.getMmsi().toString(), dto); .send(REALTIME_TRACKING_VESSELS_TOPIC, "vessel-mmsi-" + dto.getMmsi(), dto); future.addCallback(new SendListener()); VesselDTO vessel = (VesselDTO) blockingQueue.poll(30, TimeUnit.SECONDS); Loading @@ -121,9 +100,14 @@ public class CreateVesselFromTrackingTest extends KafkaBaseIntegrationTest { assertEquals(vessel.getBeam(), beam); } @KafkaListener(topics = "${broker.topic.vessel}", groupId = "test") public void run(CreateVesselEvent vesselCreatedEvent) { @KafkaHandler public void listen(CreateVesselEvent createEvent) { blockingQueue.offer(createEvent.getVessel()); } @KafkaHandler(isDefault = true) public void defaultEvent(Object def) { blockingQueue.offer(vesselCreatedEvent.getVessel()); } }
vessels-commands/src/test/java/es/redmic/test/vesselscommands/integration/vesseltracking/VesselTrackingDataUtil.java +87 −34 Original line number Diff line number Diff line Loading @@ -16,14 +16,20 @@ import es.redmic.vesselslib.dto.tracking.VesselTrackingDTO; import es.redmic.vesselslib.dto.tracking.VesselTrackingPropertiesDTO; import es.redmic.vesselslib.dto.vessel.VesselDTO; import es.redmic.vesselslib.dto.vesseltype.VesselTypeDTO; import es.redmic.vesselslib.events.vessel.create.CreateVesselFailedEvent; import es.redmic.vesselslib.events.vesseltracking.VesselTrackingEventTypes; import es.redmic.vesselslib.events.vesseltracking.create.CreateVesselTrackingConfirmedEvent; import es.redmic.vesselslib.events.vesseltracking.create.CreateVesselTrackingEvent; import es.redmic.vesselslib.events.vesseltracking.create.CreateVesselTrackingFailedEvent; import es.redmic.vesselslib.events.vesseltracking.create.EnrichCreateVesselTrackingEvent; import es.redmic.vesselslib.events.vesseltracking.create.VesselTrackingCreatedEvent; import es.redmic.vesselslib.events.vesseltracking.delete.DeleteVesselTrackingConfirmedEvent; import es.redmic.vesselslib.events.vesseltracking.delete.DeleteVesselTrackingEvent; import es.redmic.vesselslib.events.vesseltracking.delete.DeleteVesselTrackingFailedEvent; import es.redmic.vesselslib.events.vesseltracking.delete.VesselTrackingDeletedEvent; import es.redmic.vesselslib.events.vesseltracking.update.EnrichUpdateVesselTrackingEvent; import es.redmic.vesselslib.events.vesseltracking.update.UpdateVesselTrackingConfirmedEvent; import es.redmic.vesselslib.events.vesseltracking.update.UpdateVesselTrackingEvent; import es.redmic.vesselslib.events.vesseltracking.update.UpdateVesselTrackingFailedEvent; import es.redmic.vesselslib.events.vesseltracking.update.VesselTrackingUpdatedEvent; import es.redmic.vesselslib.unit.utils.VesselDataUtil; Loading @@ -31,26 +37,24 @@ public abstract class VesselTrackingDataUtil { public final static String PREFIX = "vesseltracking-mmsi-tstamp-", USER = "1"; public static CreateVesselTrackingEvent getCreateEvent(Integer MMSI) { String TSTAMP = String.valueOf(new DateTime().getMillis()); public static CreateVesselTrackingEvent getCreateEvent(Integer mmsi, String tstamp) { CreateVesselTrackingEvent event = new CreateVesselTrackingEvent(); event.setAggregateId(PREFIX + MMSI + TSTAMP); event.setAggregateId(PREFIX + mmsi + tstamp); event.setDate(DateTime.now()); event.setId(UUID.randomUUID().toString()); event.setType(VesselTrackingEventTypes.CREATE); event.setVersion(1); event.setUserId(USER); event.setSessionId("sessionIdA"); event.setVesselTracking(getVesselTracking(MMSI, TSTAMP)); event.setVesselTracking(getVesselTracking(mmsi, tstamp)); return event; } public static EnrichCreateVesselTrackingEvent getEnrichCreateVesselTrackingEvent(Integer mmsi) { public static EnrichCreateVesselTrackingEvent getEnrichCreateVesselTrackingEvent(Integer mmsi, String tstamp) { CreateVesselTrackingEvent createEvent = getCreateEvent(mmsi); CreateVesselTrackingEvent createEvent = getCreateEvent(mmsi, tstamp); EnrichCreateVesselTrackingEvent event = new EnrichCreateVesselTrackingEvent().buildFrom(createEvent); event.setVesselTracking(createEvent.getVesselTracking()); Loading @@ -58,91 +62,140 @@ public abstract class VesselTrackingDataUtil { return event; } public static VesselTrackingCreatedEvent getCreateVesselTrackingEvent(Integer mmsi) { public static VesselTrackingCreatedEvent getCreateVesselTrackingEvent(Integer mmsi, String tstamp) { CreateVesselTrackingEvent createEvent = getCreateEvent(mmsi); CreateVesselTrackingEvent createEvent = getCreateEvent(mmsi, tstamp); VesselTrackingCreatedEvent event = new VesselTrackingCreatedEvent().buildFrom(createEvent); event.setVesselTracking(createEvent.getVesselTracking()); return event; } public static VesselTrackingCreatedEvent getVesselTrackingCreatedEvent(Integer mmsi) { public static CreateVesselTrackingConfirmedEvent getCreateVesselTrackingConfirmedEvent(Integer mmsi, String tstamp) { return new CreateVesselTrackingConfirmedEvent().buildFrom(getCreateEvent(mmsi, tstamp)); } public static VesselTrackingCreatedEvent getVesselTrackingCreatedEvent(Integer mmsi, String tstamp) { CreateVesselTrackingEvent createEvent = getCreateEvent(mmsi); CreateVesselTrackingEvent createEvent = getCreateEvent(mmsi, tstamp); VesselTrackingCreatedEvent event = new VesselTrackingCreatedEvent().buildFrom(createEvent); event.setVesselTracking(createEvent.getVesselTracking()); return event; } public static CreateVesselFailedEvent getCreateVesselFailedEvent(Integer mmsi) { public static CreateVesselTrackingFailedEvent getCreateVesselTrackingFailedEvent(Integer mmsi, String tstamp) { CreateVesselFailedEvent createVesselFailedEvent = new CreateVesselFailedEvent().buildFrom(getCreateEvent(mmsi)); CreateVesselTrackingFailedEvent createVesselTrackingFailedEvent = new CreateVesselTrackingFailedEvent() .buildFrom(getCreateEvent(mmsi, tstamp)); createVesselFailedEvent.setExceptionType(ExceptionType.ITEM_ALREADY_EXIST_EXCEPTION.name()); createVesselTrackingFailedEvent.setExceptionType(ExceptionType.ITEM_ALREADY_EXIST_EXCEPTION.name()); Map<String, String> arguments = new HashMap<>(); arguments.put("A", "B"); createVesselFailedEvent.setArguments(arguments); createVesselTrackingFailedEvent.setArguments(arguments); return createVesselFailedEvent; return createVesselTrackingFailedEvent; } // update public static UpdateVesselTrackingEvent getUpdateEvent(Integer MMSI) { String TSTAMP = String.valueOf(new DateTime().getMillis()); public static UpdateVesselTrackingEvent getUpdateEvent(Integer mmsi, String tstamp) { UpdateVesselTrackingEvent event = new UpdateVesselTrackingEvent(); event.setAggregateId(PREFIX + MMSI + TSTAMP); event.setAggregateId(PREFIX + mmsi + tstamp); event.setDate(DateTime.now()); event.setId(UUID.randomUUID().toString()); event.setType(VesselTrackingEventTypes.UPDATE); event.setVersion(2); event.setUserId(USER); event.setSessionId("sessionIdB"); event.setVesselTracking(getVesselTracking(MMSI, TSTAMP)); event.setVesselTracking(getVesselTracking(mmsi, tstamp)); return event; } public static EnrichUpdateVesselTrackingEvent getEnrichUpdateVesselTrackingEvent(Integer mmsi, String tstamp) { UpdateVesselTrackingEvent updateEvent = getUpdateEvent(mmsi, tstamp); EnrichUpdateVesselTrackingEvent event = new EnrichUpdateVesselTrackingEvent().buildFrom(updateEvent); event.setVesselTracking(updateEvent.getVesselTracking()); return event; } public static VesselTrackingUpdatedEvent getVesselTrackingUpdatedEvent(Integer mmsi) { public static UpdateVesselTrackingConfirmedEvent getUpdateVesselTrackingConfirmedEvent(Integer mmsi, String tstamp) { return new UpdateVesselTrackingConfirmedEvent().buildFrom(getUpdateEvent(mmsi, tstamp)); } public static VesselTrackingUpdatedEvent getVesselTrackingUpdatedEvent(Integer mmsi, String tstamp) { UpdateVesselTrackingEvent updateEvent = getUpdateEvent(mmsi); UpdateVesselTrackingEvent updateEvent = getUpdateEvent(mmsi, tstamp); VesselTrackingUpdatedEvent event = new VesselTrackingUpdatedEvent().buildFrom(updateEvent); event.setVesselTracking(updateEvent.getVesselTracking()); return event; } // delete public static UpdateVesselTrackingFailedEvent getUpdateVesselTrackingFailedEvent(Integer mmsi, String tstamp) { UpdateVesselTrackingFailedEvent event = new UpdateVesselTrackingFailedEvent() .buildFrom(getUpdateEvent(mmsi, tstamp)); public static DeleteVesselTrackingEvent getDeleteEvent(Integer MMSI) { event.setExceptionType(ExceptionType.ITEM_NOT_FOUND.name()); Map<String, String> arguments = new HashMap<>(); arguments.put("A", "B"); event.setArguments(arguments); return event; } // delete String TSTAMP = String.valueOf(new DateTime().getMillis()); public static DeleteVesselTrackingEvent getDeleteEvent(Integer mmsi, String tstamp) { DeleteVesselTrackingEvent event = new DeleteVesselTrackingEvent(); event.setAggregateId(PREFIX + MMSI + TSTAMP); event.setAggregateId(PREFIX + mmsi + tstamp); event.setType(VesselTrackingEventTypes.DELETE); event.setVersion(3); event.setUserId(USER); return event; } public static VesselTrackingDeletedEvent getVesselTrackingDeletedEvent(Integer MMSI) { public static DeleteVesselTrackingConfirmedEvent getDeleteVesselTrackingConfirmedEvent(Integer mmsi, String tstamp) { return new DeleteVesselTrackingConfirmedEvent().buildFrom(getDeleteEvent(mmsi, tstamp)); } public static VesselTrackingDeletedEvent getVesselTrackingDeletedEvent(Integer mmsi, String tstamp) { VesselTrackingDeletedEvent event = new VesselTrackingDeletedEvent().buildFrom(getDeleteEvent(mmsi, tstamp)); return event; } public static DeleteVesselTrackingFailedEvent getDeleteVesselTrackingFailedEvent(Integer mmsi, String tstamp) { VesselTrackingDeletedEvent event = new VesselTrackingDeletedEvent().buildFrom(getDeleteEvent(MMSI)); DeleteVesselTrackingFailedEvent event = new DeleteVesselTrackingFailedEvent() .buildFrom(getDeleteEvent(mmsi, tstamp)); event.setExceptionType(ExceptionType.DELETE_ITEM_EXCEPTION.name()); Map<String, String> arguments = new HashMap<>(); // arguments.put("A", "B"); event.setArguments(arguments); return event; } public static VesselTrackingDTO getVesselTracking(Integer MMSI, String TSTAMP) { public static VesselTrackingDTO getVesselTracking(Integer mmsi, String tstamp) { VesselTrackingDTO vesselTracking = new VesselTrackingDTO(); VesselDTO vessel = new VesselDTO(); vessel.setId(VesselDataUtil.PREFIX + MMSI); vessel.setMmsi(Integer.valueOf(MMSI)); vessel.setId(VesselDataUtil.PREFIX + mmsi); vessel.setMmsi(Integer.valueOf(mmsi)); vessel.setName("Avatar"); vessel.setImo(1234); vessel.setBeam(30.2); Loading @@ -158,7 +211,7 @@ public abstract class VesselTrackingDataUtil { vesselType.setName_en("Cargo, all ships of this type"); vessel.setType(vesselType); vesselTracking.setId(PREFIX + MMSI + TSTAMP); vesselTracking.setId(PREFIX + mmsi + tstamp); vesselTracking.setUuid(UUID.randomUUID().toString()); Point geometry = JTSFactoryFinder.getGeometryFactory().createPoint(new Coordinate(44.56433, 37.94388)); Loading
vessels-commands/src/test/java/es/redmic/test/vesselscommands/unit/aggregate/vesseltracking/AggregateBaseTest.java +8 −6 Original line number Diff line number Diff line Loading @@ -23,6 +23,8 @@ public abstract class AggregateBaseTest { Integer mmsi = 1234; String tstamp = String.valueOf(new DateTime().getMillis()); @Before public void setUp() { Loading @@ -33,32 +35,32 @@ public abstract class AggregateBaseTest { protected CreateVesselTrackingEvent getCreateVesselTrackingEvent() { return VesselTrackingDataUtil.getCreateEvent(mmsi); return VesselTrackingDataUtil.getCreateEvent(mmsi, tstamp); } protected VesselTrackingCreatedEvent getVesselTrackingCreatedEvent() { return VesselTrackingDataUtil.getVesselTrackingCreatedEvent(mmsi); return VesselTrackingDataUtil.getVesselTrackingCreatedEvent(mmsi, tstamp); } protected UpdateVesselTrackingEvent getUpdateVesselTrackingEvent() { return VesselTrackingDataUtil.getUpdateEvent(mmsi); return VesselTrackingDataUtil.getUpdateEvent(mmsi, tstamp); } protected VesselTrackingUpdatedEvent getVesselTrackingUpdatedEvent() { return VesselTrackingDataUtil.getVesselTrackingUpdatedEvent(mmsi); return VesselTrackingDataUtil.getVesselTrackingUpdatedEvent(mmsi, tstamp); } protected DeleteVesselTrackingEvent getDeleteVesselTrackingEvent() { return VesselTrackingDataUtil.getDeleteEvent(mmsi); return VesselTrackingDataUtil.getDeleteEvent(mmsi, tstamp); } protected VesselTrackingDeletedEvent getVesselTrackingDeletedEvent() { return VesselTrackingDataUtil.getVesselTrackingDeletedEvent(mmsi); return VesselTrackingDataUtil.getVesselTrackingDeletedEvent(mmsi, tstamp); } protected VesselTrackingDTO getVesselTracking() { Loading