Пример #1
0
        private void PerformProcessEvent(SiteModelChangeBufferQueueKey key, SiteModelChangeBufferQueueItem value)
        {
            var mockEvent = new Mock <ICacheEntryEvent <ISiteModelChangeBufferQueueKey, ISiteModelChangeBufferQueueItem> >();

            mockEvent.Setup(x => x.EventType).Returns(CacheEntryEventType.Created);
            mockEvent.Setup(x => x.Key).Returns(key);
            mockEvent.Setup(x => x.Value).Returns(value);

            using (var handler = new SiteModelChangeProcessorItemHandler())
            {
                handler.Add(mockEvent.Object);
                handler.QueueCount.Should().Be(1);

                // The handler has an item. Activate it to cause it to exercise ProcessChangeMapUpdateItems()

                handler.Activate();

                int count = 0;
                while (count++ == 0 || handler.QueueCount > 0)
                {
                    var wait = new EventWaitHandle(false, EventResetMode.ManualReset);
                    wait.WaitOne(1000);
                }

                // Check the item was removed from the queue
                handler.QueueCount.Should().Be(0);
            }
        }
Пример #2
0
        private void TestSiteModelAndChangeMap_Ingest(ISiteModel siteModel, ISubGridTreeBitMask changeMap, int finalBitCount)
        {
            var insertUtc = DateTime.UtcNow;
            var key       = new SiteModelChangeBufferQueueKey(siteModel.ID, insertUtc);
            var value     = new SiteModelChangeBufferQueueItem
            {
                ProjectUID = siteModel.ID,
                MachineUid = siteModel.Machines.First().ID,
                InsertUTC  = insertUtc,
                Operation  = SiteModelChangeMapOperation.AddSpatialChanges,
                Origin     = SiteModelChangeMapOrigin.Ingest,
                Content    = changeMap.ToBytes()
            };

            PerformProcessEvent(key, value);

            // Check there is now a change map item for the site model with the given content
            var changeMapProxy  = new SiteModelChangeMapProxy();
            var resultChangeMap = changeMapProxy.Get(key.ProjectUID, value.MachineUid);

            resultChangeMap.Should().NotBeNull();
            resultChangeMap.CountBits().Should().Be(finalBitCount);
        }