Пример #1
0
        public void PutUpdateData_Local_ShouldUpdate()
        {
            var changes = new OsmChange {
                Create = new OsmGeo[] { new Node() }
            };

            _osmLatestFileFetcherExecutor.GetUpdates().Returns(CreateStream(changes));
            SetupContext(IPAddress.Parse("1.2.3.4"), IPAddress.Loopback);

            _controller.PutUpdateData().Wait();

            _databasesUpdaterService.Received(1).Update(Arg.Is <OsmChange>(x => x.Create.Length == changes.Create.Length));
        }
Пример #2
0
        public async Task <IActionResult> PutUpdateData()
        {
            if (!IsRequestLocal())
            {
                return(BadRequest("This operation can't be done from a remote client, please run this from the server"));
            }
            if (!RebuildSemaphore.WaitOne(0))
            {
                return(BadRequest("Can't run update while full update is running"));
            }
            RebuildSemaphore.Release();
            await UpdateSemaphore.WaitAsync();

            try
            {
                _logger.LogInformation("Starting incremental site's databases update");
                using (var updatesStream = await _osmLatestFileFetcherExecutor.GetUpdates())
                {
                    XmlSerializer serializer = new XmlSerializer(typeof(OsmChange));
                    var           changes    = (OsmChange)serializer.Deserialize(updatesStream);
                    await _elasticSearchUpdaterService.Update(changes);
                }
                _logger.LogInformation("Finished incremental site's databases update");
                return(Ok());
            }
            finally
            {
                UpdateSemaphore.Release();
            }
        }
Пример #3
0
        public void GetUpdates_ShouldFetchFile()
        {
            _fetcher.GetUpdates().Wait();

            _processHelper.Received(2).Start(Arg.Any <string>(), Arg.Any <string>(), Arg.Any <string>());
        }