Commit 96da778e authored by Ignacio's avatar Ignacio
Browse files

Merge branch 'dev' of gitlab.com:redmic-project/server/vessels into dev

parents 81098c7d a18ec70d
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -67,7 +67,11 @@ public class VesselCommandService implements CommandServiceItfc<VesselDTO> {
		vessel.setName(aisTracking.getName());
		vessel.setCallSign(aisTracking.getCallSign());
		vessel.setImo(aisTracking.getImo());

		if (aisTracking.getA() != null && aisTracking.getB() != null)
			vessel.setLength(aisTracking.getA() + aisTracking.getB());

		if (aisTracking.getC() != null && aisTracking.getD() != null)
			vessel.setBeam(aisTracking.getC() + aisTracking.getD());

		VesselTypeDTO vesselType = new VesselTypeDTO();
+4 −2
Original line number Diff line number Diff line
@@ -18,6 +18,8 @@ oauth.check_token.endpoint=${oauth.server}/api/oauth/check_token
oauth.client.id=clientId
oauth.client.secret=secret

spring.devtools.add-properties=false

spring.profiles.active=@spring.profiles.active@

logging.level.root=info
@@ -26,10 +28,10 @@ logging.level.es.redmic=info

spring.kafka.bootstrap-servers=${spring.kafka.bootstrap-servers}
spring.kafka.consumer.auto-offset-reset=earliest
spring.kafka.listener.ack-mode=record
spring.kafka.listener.log-container-config=true
spring.kafka.listener.client-id=${spring.kafka.client-id}
spring.kafka.consumer.enable-auto-commit=false
spring.kafka.consumer.enable-auto-commit=true
spring.kafka.consumer.auto-commit-interval.seconds=1

spring.kafka.client-id=@project.name@
spring.kafka.consumer.group-id=@project.name@
+88 −0
Original line number Diff line number Diff line
package es.redmic.test.vesselscommands.unit.service;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;

import org.joda.time.DateTime;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.junit.MockitoJUnitRunner;

import es.redmic.brokerlib.avro.geodata.tracking.vessels.AISTrackingDTO;
import es.redmic.test.vesselscommands.integration.vessel.VesselDataUtil;
import es.redmic.vesselscommands.service.VesselCommandService;
import es.redmic.vesselslib.dto.vessel.VesselDTO;
import es.redmic.vesselslib.events.vessel.create.VesselCreatedEvent;

@RunWith(MockitoJUnitRunner.class)
public class CreateVesselFromAis {

	@Test
	public void convertAisToVessel_ReturnVesselDTO_IfAISTrackingDTOIsCorrect() {

		VesselCreatedEvent vesselCreatedEvent = VesselDataUtil.getVesselCreatedEvent(2);

		VesselDTO vessel = vesselCreatedEvent.getVessel();

		AISTrackingDTO dto = new AISTrackingDTO();
		dto.setMmsi(vessel.getMmsi());
		dto.setImo(vessel.getImo());
		dto.setName(vessel.getName());
		dto.setType(Integer.parseInt(vessel.getType().getCode()));
		dto.setCallSign(vessel.getCallSign());
		dto.setTstamp(new DateTime());
		dto.setLatitude(2.1);
		dto.setLongitude(3.2);
		dto.setA(vessel.getLength() / 2);
		dto.setB(vessel.getLength() / 2);
		dto.setC(vessel.getBeam() / 2);
		dto.setD(vessel.getBeam() / 2);
		dto.setCog(2.3);
		dto.setSog(3.4);
		dto.setHeading(221);
		dto.setNavStat(33);
		dto.setEta("00:00 00:00");
		dto.setDest("Santa Cruz de Tenerife");

		VesselDTO result = VesselCommandService.convertTrackToVessel(dto);

		assertEquals(result.getMmsi(), dto.getMmsi());
		assertEquals(result.getName(), dto.getName());
		Double length = dto.getA() + dto.getB();
		assertEquals(result.getLength(), length);
		Double beam = dto.getC() + dto.getD();
		assertEquals(result.getBeam(), beam);

		assertNotNull(result.getType());
		assertEquals(result.getType().getCode(), dto.getType().toString());
		assertEquals(result.getImo(), dto.getImo());
		assertEquals(result.getCallSign(), dto.getCallSign());
	}

	@Test
	public void convertAisToVesselWithNullValues_ReturnVesselDTO_IfAISTrackingDTOIsCorrect() {

		Integer mmsi = 2;

		String name = "prueba";

		AISTrackingDTO dto = new AISTrackingDTO();
		dto.setMmsi(mmsi);
		dto.setName(name);
		dto.setTstamp(new DateTime());
		dto.setLatitude(2.1);
		dto.setLongitude(3.2);

		VesselDTO result = VesselCommandService.convertTrackToVessel(dto);

		assertEquals(result.getMmsi(), dto.getMmsi());
		assertEquals(result.getName(), dto.getName());
		assertNotNull(result.getType());
		assertEquals(result.getType().getCode(), "0");
		assertNull(result.getImo());
		assertNull(result.getLength());
		assertNull(result.getBeam());
		assertNull(result.getCallSign());
	}
}
+109 −0
Original line number Diff line number Diff line
package es.redmic.test.vesselscommands.unit.service;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;

import org.joda.time.DateTime;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.junit.MockitoJUnitRunner;

import es.redmic.brokerlib.avro.geodata.tracking.vessels.AISTrackingDTO;
import es.redmic.test.vesselscommands.integration.vessel.VesselDataUtil;
import es.redmic.vesselscommands.service.VesselTrackingCommandService;
import es.redmic.vesselslib.dto.tracking.VesselTrackingDTO;
import es.redmic.vesselslib.dto.vessel.VesselDTO;
import es.redmic.vesselslib.events.vessel.create.VesselCreatedEvent;

@RunWith(MockitoJUnitRunner.class)
public class CreateVesselTrackingFromAis {

	@InjectMocks
	VesselTrackingCommandService service;

	@Test
	public void convertAisToVesselTracking_ReturnVesselTrackingDTO_IfAISTrackingDTOIsCorrect() {

		VesselCreatedEvent vesselCreatedEvent = VesselDataUtil.getVesselCreatedEvent(2);

		VesselDTO vessel = vesselCreatedEvent.getVessel();

		AISTrackingDTO dto = new AISTrackingDTO();
		dto.setMmsi(vessel.getMmsi());
		dto.setImo(vessel.getImo());
		dto.setName(vessel.getName());
		dto.setType(Integer.parseInt(vessel.getType().getCode()));
		dto.setCallSign(vessel.getCallSign());
		dto.setTstamp(new DateTime());
		dto.setLatitude(2.1);
		dto.setLongitude(3.2);
		dto.setA(vessel.getLength() / 2);
		dto.setB(vessel.getLength() / 2);
		dto.setC(vessel.getBeam() / 2);
		dto.setD(vessel.getBeam() / 2);
		dto.setCog(2.3);
		dto.setSog(3.4);
		dto.setHeading(221);
		dto.setNavStat(33);
		dto.setEta("00:00 00:00");
		dto.setDest("Santa Cruz de Tenerife");

		VesselTrackingDTO result = service.convertTrackToVesselTracking(dto);

		assertTrue(result.getProperties().getDate().isEqual(dto.getTstamp()));
		assertEquals(result.getProperties().getCog(), dto.getCog());
		assertEquals(result.getProperties().getSog(), dto.getSog());
		assertEquals(result.getProperties().getHeading(), dto.getHeading());
		assertEquals(result.getProperties().getNavStat(), dto.getNavStat());
		assertEquals(result.getProperties().getEta(), dto.getEta());
		assertEquals(result.getProperties().getDest(), dto.getDest());

		VesselDTO vesselResult = result.getProperties().getVessel();

		assertEquals(vesselResult.getMmsi(), dto.getMmsi());
		assertEquals(vesselResult.getName(), dto.getName());
		Double length = dto.getA() + dto.getB();
		assertEquals(vesselResult.getLength(), length);
		Double beam = dto.getC() + dto.getD();
		assertEquals(vesselResult.getBeam(), beam);
	}

	@Test
	public void convertAisToVesselTrackingWithNullValues_ReturnVesselTrackingDTO_IfAISTrackingDTOIsCorrect() {

		VesselCreatedEvent vesselCreatedEvent = VesselDataUtil.getVesselCreatedEvent(2);

		VesselDTO vessel = vesselCreatedEvent.getVessel();

		AISTrackingDTO dto = new AISTrackingDTO();
		dto.setMmsi(vessel.getMmsi());
		dto.setName(vessel.getName());
		dto.setTstamp(new DateTime());
		dto.setLatitude(2.1);
		dto.setLongitude(3.2);

		VesselTrackingDTO result = service.convertTrackToVesselTracking(dto);

		assertTrue(result.getProperties().getDate().isEqual(dto.getTstamp()));
		assertNull(result.getProperties().getCog());
		assertNull(result.getProperties().getSog());
		assertNull(result.getProperties().getHeading());
		assertNull(result.getProperties().getNavStat());
		assertNull(result.getProperties().getEta());
		assertNull(result.getProperties().getDest());

		VesselDTO vesselResult = result.getProperties().getVessel();

		assertEquals(vesselResult.getMmsi(), dto.getMmsi());
		assertEquals(vesselResult.getName(), dto.getName());
		assertNotNull(vesselResult.getType());
		assertEquals(vesselResult.getType().getCode(), "0");
		assertNull(vesselResult.getImo());
		assertNull(vesselResult.getLength());
		assertNull(vesselResult.getBeam());
		assertNull(vesselResult.getCallSign());
	}
}
+6 −1
Original line number Diff line number Diff line
@@ -28,7 +28,11 @@ oauth.client.secret=secret

spring.kafka.bootstrap-servers=${spring.kafka.bootstrap-servers}
spring.kafka.consumer.auto-offset-reset=earliest
spring.kafka.listener.log-container-config=true
spring.kafka.listener.client-id=${spring.kafka.client-id}
spring.kafka.consumer.enable-auto-commit=true
spring.kafka.consumer.auto-commit-interval.seconds=1

spring.kafka.client-id=@project.name@
spring.kafka.consumer.group-id=@project.name@
spring.kafka.producer.key-serializer=org.apache.kafka.common.serialization.StringSerializer
@@ -37,7 +41,8 @@ spring.kafka.consumer.key-deserializer=org.apache.kafka.common.serialization.Str
spring.kafka.consumer.value-deserializer=io.confluent.kafka.serializers.KafkaAvroDeserializer

spring.kafka.consumer.max-poll-records=50
spring.kafka.consumer.properties.max.poll.interval.ms=600000
#spring.kafka.consumer.properties.max.poll.interval.ms=600000
spring.kafka.producer.retries=5
spring.kafka.properties.request.timeout.ms=605000
spring.kafka.consumer.heartbeat-interval.seconds=3
spring.kafka.consumer.properties.session.timeout.ms=30000