示例#1
0
        public void Lock_WithDesignEviction_SucceedWithDesignRemoval()
        {
            var siteModel  = DITAGFileAndSubGridRequestsWithIgniteFixture.NewEmptyModel();
            var designUid1 = DITAGFileAndSubGridRequestsWithIgniteFixture.AddDesignToSiteModel(ref siteModel, TestHelper.CommonTestDataPath, TESTFILENAME, true);
            var designUid2 = DITAGFileAndSubGridRequestsWithIgniteFixture.AddDesignToSiteModel(ref siteModel, TestHelper.CommonTestDataPath, TESTFILENAME, true);

            // Create a new design files cache  just a little bit bigger that the size it requires, and reload the design into it
            var files   = new DesignFiles((int)Math.Truncate(SAMPLE_DESIGN_SPACE_USED_IN_CACHE * 1.2), 10);
            var design1 = files.Lock(designUid1, siteModel.ID, SubGridTreeConsts.DefaultCellSize, out var loadResult);

            loadResult.Should().Be(DesignLoadResult.Success);
            design1.Should().NotBeNull();
            design1.DesignUid.Should().Be(designUid1);
            files.DesignsCacheSize.Should().Be(SAMPLE_DESIGN_SPACE_USED_IN_CACHE);

            // Load the second design and verify the first design is evicted and space used is as expected
            // Unlock the first design to allow it to be evicted from the cache
            files.UnLock(designUid1, design1).Should().BeTrue();

            var design2 = files.Lock(designUid2, siteModel.ID, SubGridTreeConsts.DefaultCellSize, out loadResult);

            loadResult.Should().Be(DesignLoadResult.Success);
            design2.Should().NotBeNull();
            design2.DesignUid.Should().Be(designUid2);

            files.DesignsCacheSize.Should().Be(SAMPLE_DESIGN_SPACE_USED_IN_CACHE);
        }
示例#2
0
        public void Creation2()
        {
            const long MAX_SIZE = 1000000;
            const int  MAX_EVICTION_ITERATIONS = 10;

            var files = new DesignFiles(MAX_SIZE, MAX_EVICTION_ITERATIONS);

            files.Should().NotBeNull();
            files.MaxDesignsCacheSize.Should().Be(MAX_SIZE);
            files.MaxWaitIterationsDuringDesignEviction.Should().Be(MAX_EVICTION_ITERATIONS);
        }
示例#3
0
        public void FreeSpace()
        {
            var siteModel = DITAGFileAndSubGridRequestsWithIgniteFixture.NewEmptyModel();
            var designUid = DITAGFileAndSubGridRequestsWithIgniteFixture.AddDesignToSiteModel(ref siteModel, TestHelper.CommonTestDataPath, TESTFILENAME, true);

            var files  = new DesignFiles(SAMPLE_DESIGN_SPACE_USED_IN_CACHE + 1000, 10);
            var design = files.Lock(designUid, siteModel.ID, SubGridTreeConsts.DefaultCellSize, out var loadResult);

            design.Should().NotBeNull();
            loadResult.Should().Be(DesignLoadResult.Success);
            files.FreeSpaceInCache.Should().Be(1000);
        }
示例#4
0
        public void NumDesignsInCache()
        {
            var siteModel = DITAGFileAndSubGridRequestsWithIgniteFixture.NewEmptyModel();
            var designUid = DITAGFileAndSubGridRequestsWithIgniteFixture.AddDesignToSiteModel(ref siteModel, TestHelper.CommonTestDataPath, TESTFILENAME, true);

            var files = new DesignFiles();

            files.Lock(designUid, siteModel.ID, SubGridTreeConsts.DefaultCellSize, out var loadResult);
            loadResult.Should().Be(DesignLoadResult.Success);

            files.NumDesignsInCache().Should().Be(1);
        }
示例#5
0
        public void Lock_SingleDesign_NoContention()
        {
            var siteModel = DITAGFileAndSubGridRequestsWithIgniteFixture.NewEmptyModel();
            var designUid = DITAGFileAndSubGridRequestsWithIgniteFixture.AddDesignToSiteModel(ref siteModel, TestHelper.CommonTestDataPath, TESTFILENAME, true);

            var files  = new DesignFiles();
            var design = files.Lock(designUid, siteModel.ID, SubGridTreeConsts.DefaultCellSize, out var loadResult);

            loadResult.Should().Be(DesignLoadResult.Success);

            design.Should().NotBeNull();
            design.Locked.Should().BeTrue();
        }
示例#6
0
        public void RemoveDesignFromCache(bool removeFromStorage)
        {
            // Calls the method to remove the design from storage
            var mockDesign = new Mock <IDesignBase>();

            mockDesign.Setup(x => x.RemoveFromStorage(It.IsAny <Guid>(), It.IsAny <string>())).Returns(true);
            mockDesign.Setup(x => x.FileName).Returns("TheFileName");

            var siteModel = DITAGFileAndSubGridRequestsWithIgniteFixture.NewEmptyModel();
            var designUid = DITAGFileAndSubGridRequestsWithIgniteFixture.AddDesignToSiteModel(ref siteModel, TestHelper.CommonTestDataPath, TESTFILENAME, true);

            var files  = new DesignFiles();
            var design = files.Lock(designUid, siteModel.ID, SubGridTreeConsts.DefaultCellSize, out var loadResult);

            loadResult.Should().Be(DesignLoadResult.Success);

            var result = files.RemoveDesignFromCache(designUid, mockDesign.Object, siteModel.ID, removeFromStorage);

            result.Should().BeTrue();
            files.NumDesignsInCache().Should().Be(0);

            mockDesign.Verify(x => x.RemoveFromStorage(It.IsAny <Guid>(), It.IsAny <string>()), removeFromStorage ? Times.Once() : Times.Never());
        }
示例#7
0
        public void Creation()
        {
            var files = new DesignFiles();

            files.Should().NotBeNull();
        }