예제 #1
0
        public void Send(VehiclePlot vehiclePlot)
        {
            var vehiclePlotDto         = _vehiclePlotMapper.ToDto(vehiclePlot);
            var vehiclePlotMessageBody = _vehiclePlotSerializer.Serialize(vehiclePlotDto);

            _messagingService.SendMessage(vehiclePlotMessageBody);
        }
        public void Should_send_vehicle_plot()
        {
            //Arrange
            var vehiclePlot    = new VehiclePlot(1, 0, 0, DateTime.UtcNow, EventCode.IgnitionOn);
            var messageBody    = Encoding.UTF8.GetBytes("test");
            var vehiclePlotDto = new VehiclePlotDto
            {
                VehicleId = 1,
                Latitude  = 0,
                Longitude = 0,
                Timestamp = DateTime.UtcNow,
                EventCode = EventCode.IgnitionOn
            };

            _vehiclePlotMapper.Setup(x => x.ToDto(It.IsAny <VehiclePlot>()))
            .Returns(vehiclePlotDto);

            _vehiclePlotSerializer.Setup(x => x.Serialize(It.IsAny <VehiclePlotDto>()))
            .Returns(messageBody);

            var Sut = new VehiclePlotService(_messagingService.Object, _vehiclePlotMapper.Object, _vehiclePlotSerializer.Object);

            //Act
            Sut.Send(vehiclePlot);

            //Assert
            _vehiclePlotMapper.Verify(x => x.ToDto(vehiclePlot));
            _vehiclePlotSerializer.Verify(x => x.Serialize(vehiclePlotDto));
            _messagingService.Verify(x => x.SendMessage(messageBody));
        }
        public void Should_process_message()
        {
            //Arrange
            var messageBody    = Encoding.UTF8.GetBytes("test");
            var vehiclePlot    = new VehiclePlot(1, 0, 0, DateTime.UtcNow, EventCode.IgnitionOn);
            var vehiclePlotDto = new VehiclePlotDto
            {
                VehicleId = 1
            };

            _vehiclePlotSerializer.Setup(x => x.Deserialize(It.IsAny <byte[]>()))
            .Returns(vehiclePlotDto);

            _vehiclePlotMapper.Setup(x => x.ToModel(It.IsAny <VehiclePlotDto>()))
            .Returns(vehiclePlot);

            _vehiclePlotService.Setup(x => x.InsertAsync(It.IsAny <VehiclePlot>()));

            var Sut = new MessageProcessingService(_vehiclePlotSerializer.Object, _vehiclePlotMapper.Object, _vehiclePlotService.Object, _logger.Object);

            //Act
            Sut.Process(messageBody);

            //Assert
            _vehiclePlotSerializer.Verify(x => x.Deserialize(messageBody));
            _vehiclePlotMapper.Verify(x => x.ToModel(vehiclePlotDto));
            _vehiclePlotService.Verify(x => x.InsertAsync(vehiclePlot));
        }
예제 #4
0
        public void Start(int interval, int vehicleId)
        {
            _interval        = interval;
            _lastVehiclePlot = new VehiclePlot(vehicleId, 0, 0, DateTime.UtcNow, EventCode.IgnitionOff);

            _logger.LogInformation("Starting periodic send of vehicle plot.");
            _timer = new Timer(Tick, null, _interval, Timeout.Infinite);
        }
        public static VehiclePlot GetNextVehiclePlot(VehiclePlot currentVehiclePlot)
        {
            var latitude  = GetRandomDouble();
            var longitude = GetRandomDouble();
            var eventCode = GetRandomEventCode(currentVehiclePlot.EventCode);

            return(new VehiclePlot(currentVehiclePlot.VehicleId, latitude, longitude, DateTime.UtcNow, eventCode));
        }
 public VehiclePlotDto ToDto(VehiclePlot vehiclePlot)
 {
     return(new VehiclePlotDto
     {
         VehicleId = vehiclePlot.VehicleId,
         Latitude = vehiclePlot.Latitude,
         Longitude = vehiclePlot.Longitude,
         Timestamp = vehiclePlot.Timestamp,
         EventCode = vehiclePlot.EventCode
     });
 }
예제 #7
0
        public VehiclePlotDto ToDto(VehiclePlot vehiclePlot)
        {
            var definition = JsonConvert.SerializeObject(vehiclePlot, _jsonSerializerSettings);

            return(new VehiclePlotDto
            {
                Id = vehiclePlot.VehicleId,
                Definition = definition,
                Score = vehiclePlot.Timestamp.ToOADate()
            });
        }
        public void Should_convert_vehicle_plot_to_dto(int vehicleId, double latitude, double longitude, EventCode eventCode)
        {
            //Arrange
            var vehiclePlot        = new VehiclePlot(vehicleId, latitude, longitude, DateTime.UtcNow, eventCode);
            var expectedDefinition = JsonConvert.SerializeObject(vehiclePlot, _jsonSerializerSettings);

            //Act
            var vehiclePlotDto = Sut.ToDto(vehiclePlot);

            //Assert
            vehiclePlotDto.Id.Should().Be(vehiclePlot.VehicleId);
            vehiclePlotDto.Score.Should().Be(vehiclePlot.Timestamp.ToOADate());
            vehiclePlotDto.Definition.Should().Be(expectedDefinition);
        }
예제 #9
0
        public async Task Should_insert_vehicle_plot(int vehicleId, double latitude, double longitude, EventCode eventCode)
        {
            //Arrange
            _vehiclePlotRepository.Setup(x => x.InsertAsync(It.IsAny <VehiclePlot>())).Returns(Task.FromResult(0));

            var Sut         = new VehiclePlotService(_vehiclePlotRepository.Object);
            var vehiclePlot = new VehiclePlot(vehicleId, latitude, longitude, DateTime.UtcNow, eventCode);

            //Act
            await Sut.InsertAsync(vehiclePlot);

            //Assert
            _vehiclePlotRepository.Verify(x => x.InsertAsync(vehiclePlot));
        }
        public void Should_map_vehicle_plot_to_dto(int vehicleId, double latitude, double longitude, EventCode eventCode)
        {
            //Arrange
            var vehiclePlot = new VehiclePlot(vehicleId, latitude, longitude, DateTime.UtcNow, eventCode);

            //Act
            var vehiclePlotDto = Sut.ToDto(vehiclePlot);

            //Assert
            vehiclePlotDto.VehicleId.Should().Be(vehiclePlot.VehicleId);
            vehiclePlotDto.Latitude.Should().Be(vehiclePlot.Latitude);
            vehiclePlotDto.Longitude.Should().Be(vehiclePlot.Longitude);
            vehiclePlotDto.Timestamp.Should().Be(vehiclePlot.Timestamp);
            vehiclePlotDto.EventCode.Should().Be(vehiclePlot.EventCode);
        }
예제 #11
0
        private void Tick(object state)
        {
            try
            {
                var vehiclePlot = VehiclePlotHelper.GetNextVehiclePlot(_lastVehiclePlot);

                _logger.LogInformation($"Sending vehicle plot: {{ vehicleId: {vehiclePlot.VehicleId}, longitude: {vehiclePlot.Longitude}, " +
                                       $"latitude: {vehiclePlot.Latitude}, timestamp: {vehiclePlot.Timestamp}, eventCode: {vehiclePlot.EventCode.ToString()} }}");

                _vehiclePlotService.Send(vehiclePlot);
                _lastVehiclePlot = vehiclePlot;
            }
            finally
            {
                _timer?.Change(_interval, Timeout.Infinite);
            }
        }
예제 #12
0
 public async Task InsertAsync(VehiclePlot vehiclePlot)
 {
     var vehiclePlotDto = _vehiclePlotFactory.ToDto(vehiclePlot);
     await _vehiclePlotDao.InsertAsync(vehiclePlotDto);
 }
예제 #13
0
 public async Task InsertAsync(VehiclePlot vehiclePlot)
 {
     await _vehiclePlotRepository.InsertAsync(vehiclePlot);
 }
 private VehicleJourney CreateVehicleJourney(VehiclePlot vehiclePlot, DateTime?startTime, DateTime?endTime)
 {
     return(new VehicleJourney(vehiclePlot.VehicleId, vehiclePlot.Latitude, vehiclePlot.Longitude, vehiclePlot.Timestamp, vehiclePlot.EventCode, startTime, endTime));
 }