Пример #1
0
        public void Creation()
        {
            var filter  = new FilterSet(new CombinedFilter());
            var request = new QMTileExecutor(Guid.NewGuid(), filter, 0, 0, 0, DisplayMode, false, Guid.NewGuid());

            request.Should().NotBeNull();
        }
Пример #2
0
        public async Task Execute_FailWithNoSiteModel()
        {
            var filter  = new FilterSet(new CombinedFilter());
            var request = new QMTileExecutor(new Guid(), filter, 0, 0, 19, 0, false, Guid.NewGuid());
            var result  = await request.ExecuteAsync();

            result.Should().BeFalse();
        }
Пример #3
0
        public async void Execute_ValidProductionTile_Expected()
        {
            AddClusterComputeGridRouting();
            SetupTest();
            var request = new QMTileExecutor(siteModel.ID, filter, 47317, 12155, 17, DisplayMode, false, Guid.NewGuid());
            await request.ExecuteAsync();

            request.ResultStatus.Should().Be(RequestErrorStatus.OK);
            var QMTileResponse = request.QMTileResponse;

            QMTileResponse.data.Should().HaveCountGreaterOrEqualTo(1000);
        }
Пример #4
0
        public async void Execute_RootTile_Expected()
        {
            AddClusterComputeGridRouting();
            SetupTest();
            var request = new QMTileExecutor(siteModel.ID, filter, 0, 1, 0, DisplayMode, false, Guid.NewGuid());
            await request.ExecuteAsync();

            request.ResultStatus.Should().NotBe(RequestErrorStatus.Unknown);
            var QMTileResponse = request.QMTileResponse;

            QMTileResponse.data.Should().HaveCount(845); // Should return a root tile
        }
Пример #5
0
        public async void Execute_TooFarOut_EmptyTile_Expected()
        {
            AddClusterComputeGridRouting();
            SetupTest();
            var request = new QMTileExecutor(siteModel.ID, filter, 0, 1, 10, DisplayMode, false, Guid.NewGuid());
            await request.ExecuteAsync();

            request.ResultStatus.Should().NotBe(RequestErrorStatus.Unknown);
            var QMTileResponse = request.QMTileResponse;

            QMTileResponse.data.Should().HaveCountGreaterOrEqualTo(172);
            QMTileResponse.data.Should().HaveCountLessOrEqualTo(176);
        }
Пример #6
0
        public async void Execute_FailPipeLineSetup_EmptyTile_Expected()
        {
            AddClusterComputeGridRouting();
            SetupTest();
            // Missing coordinate system
            var request = new QMTileExecutor(siteModel.ID, filter, 47317, 12155, 17, 0, false, Guid.NewGuid());
            await request.ExecuteAsync();

            request.ResultStatus.Should().Be(RequestErrorStatus.OK); // Empty tile expected
            var QMTileResponse = request.QMTileResponse;

            QMTileResponse.data.Should().HaveCountGreaterOrEqualTo(172);
            QMTileResponse.data.Should().HaveCountLessOrEqualTo(176);
        }
Пример #7
0
        public async void Execute_EmptySiteModel_ReturnEmptyTile()
        {
            var siteModel = DITAGFileAndSubGridRequestsWithIgniteFixture.NewEmptyModel();
            var filter    = new FilterSet(new CombinedFilter());
            var request   = new QMTileExecutor(siteModel.ID, filter, 0, 0, 19, DisplayMode, false, Guid.NewGuid());
            await request.ExecuteAsync();

            request.ResultStatus.Should().NotBe(RequestErrorStatus.Unknown);
            var QMTileResponse = request.QMTileResponse;

            //QMTileResponse.data.Should().HaveCount(164); // Should return an empty tile
            // Todo why OS makes a difference for this test
            QMTileResponse.data.Should().HaveCountGreaterOrEqualTo(162);
            QMTileResponse.data.Should().HaveCountLessOrEqualTo(164);
        }
Пример #8
0
        /// <summary>
        /// Quantized Mesh Response.
        /// </summary>
        public QuantizedMeshResponse Invoke(QuantizedMeshRequestArgument arg)
        {
            _log.LogInformation("In QuantizedMeshRequestComputeFunc.Invoke()");

            try
            {
                // Quantized mesh requests can be a significant resource commitment. Ensure TPaaS will be listening...
                PerformTPaaSRequestLivelinessCheck(arg);

                // Supply the TRex ID of the Ignite node currently running this code to permit processing contexts to send
                // subgrid results to it.
                arg.TRexNodeID = TRexNodeID.ThisNodeID(StorageMutability.Immutable);

                _log.LogDebug($"Assigned TRexNodeId from local node is {arg.TRexNodeID}");

                var request = new QMTileExecutor(arg.ProjectID, arg.Filters, arg.X, arg.Y, arg.Z, arg.DisplayMode, arg.HasLighting, arg.TRexNodeID);

                _log.LogInformation("Executing request.Execute()");

                if (!request.ExecuteAsync().WaitAndUnwrapException())
                {
                    _log.LogError("Request execution failed");
                }

                return(request.QMTileResponse);
            }
            catch (Exception e)
            {
                _log.LogError(e, "Exception requesting quantized mesh");
                return(new QuantizedMeshResponse {
                    ResultStatus = Types.RequestErrorStatus.Exception
                });
            }
            finally
            {
                _log.LogDebug("Exiting QuantizedMeshRequestComputeFunc.Invoke()");
            }
        }