Commit cf415688 authored by Noel Alonso's avatar Noel Alonso
Browse files

Realiza cambios para mejorar tests

parent 43c2ea77
Loading
Loading
Loading
Loading
+0 −15
Original line number Diff line number Diff line
@@ -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;
@@ -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;

@@ -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
+12 −28
Original line number Diff line number Diff line
@@ -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;
@@ -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;
@@ -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;

@@ -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}")
@@ -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());
@@ -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());
@@ -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);
@@ -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());
	}
}
+87 −34
Original line number Diff line number Diff line
@@ -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;

@@ -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());
@@ -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);
@@ -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));
+8 −6
Original line number Diff line number Diff line
@@ -23,6 +23,8 @@ public abstract class AggregateBaseTest {

	Integer mmsi = 1234;

	String tstamp = String.valueOf(new DateTime().getMillis());

	@Before
	public void setUp() {

@@ -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() {