Beispiel #1
0
        public void FindBestFallBackToFristTest()
        {
            List <PoolChooserPolicyPoolItem> l_Items = new List <PoolChooserPolicyPoolItem>();
            PoolChooserPolicyPoolItem        l_Item  = new PoolChooserPolicyPoolItem();

            l_Item.Start = 0;
            l_Item.End   = 10;
            l_Item.Pool  = new StreamManagerArrayPool("1", 1, 1);
            l_Items.Add(l_Item);
            l_Item       = new PoolChooserPolicyPoolItem();
            l_Item.Start = 11;
            l_Item.End   = 20;
            l_Item.Pool  = new StreamManagerArrayPool("2", 1, 0);
            l_Items.Add(l_Item);
            l_Item       = new PoolChooserPolicyPoolItem();
            l_Item.Start = 21;
            l_Item.End   = 30;
            l_Item.Pool  = new StreamManagerArrayPool("3", 1, 0);
            l_Items.Add(l_Item);

            FreeSpaceAwarePoolChooserPolicy l_Chooser = new FreeSpaceAwarePoolChooserPolicy(l_Items);
            StreamManagerPool l_Pool = l_Chooser.FindBestPool(15, 15);

            Assert.Equal(l_Items[0].Pool, l_Pool);
            Assert.True(l_Chooser.PoolHasFreeBlocks(l_Pool));
        }
Beispiel #2
0
        public void FindBestNoFreeSpaceTest()
        {
            List <PoolChooserPolicyPoolItem> l_Items = new List <PoolChooserPolicyPoolItem>();
            PoolChooserPolicyPoolItem        l_Item  = new PoolChooserPolicyPoolItem();

            l_Item.Start = 0;
            l_Item.End   = 10;
            l_Item.Pool  = new StreamManagerArrayPool("1", 1, 0);
            l_Items.Add(l_Item);
            l_Item       = new PoolChooserPolicyPoolItem();
            l_Item.Start = 11;
            l_Item.End   = 20;
            l_Item.Pool  = new StreamManagerArrayPool("2", 1, 0);
            l_Items.Add(l_Item);
            l_Item       = new PoolChooserPolicyPoolItem();
            l_Item.Start = 21;
            l_Item.End   = 30;
            l_Item.Pool  = new StreamManagerArrayPool("3", 1, 0);
            l_Items.Add(l_Item);

            FreeSpaceAwarePoolChooserPolicy l_Chooser = new FreeSpaceAwarePoolChooserPolicy(l_Items);
            StreamManagerPool l_Pool = l_Chooser.FindBestPool(15, 15);

            Assert.Null(l_Pool);
        }
        public List <PoolChooserPolicyPoolItem> CalcIntervals(List <StreamManagerPool> p_Pools)
        {
            // Sort by BlockSize
            p_Pools.Sort(SortByBlockSize);
            List <PoolChooserPolicyPoolItem> l_Result = new List <PoolChooserPolicyPoolItem>();
            PoolChooserPolicyPoolItem        l_Last   = null;

            foreach (StreamManagerPool l_Pool in p_Pools)
            {
                PoolChooserPolicyPoolItem l_CurrentItem = new PoolChooserPolicyPoolItem();
                l_CurrentItem.Pool = l_Pool;
                l_Result.Add(l_CurrentItem);

                if (l_Last == null)
                {
                    // First Item
                    l_CurrentItem.Start = 0;
                    l_Last = l_CurrentItem;
                    continue;
                }

                int l_SpaceBetween = l_CurrentItem.Pool.GetBlockSize() - l_Last.Pool.GetBlockSize();

                if (l_SpaceBetween == 0)
                {
                    throw new Exception($"Two Pool with Same BlockSize {l_CurrentItem.Pool.GetBlockSize()} found . Auto Interval Config not possible");
                }

                int l_NewStartNear = (int)(l_SpaceBetween * 0.75);

                int l_NewStart = 0;

                for (int i = 0; i < m_MaxBlocksBetween; i++)
                {
                    if (l_NewStart < l_NewStartNear)
                    {
                        l_NewStart = l_NewStart + l_Last.Pool.GetBlockSize();
                    }
                    else
                    {
                        break;
                    }
                }

                l_Last.End          = l_NewStart + l_Last.Pool.GetBlockSize();
                l_CurrentItem.Start = l_Last.End + 1;

                l_Last = l_CurrentItem;
            }

            l_Last.End = Int64.MaxValue;

            return(l_Result);
        }
Beispiel #4
0
        public void IgnoreFreeSpaceTest()
        {
            List <PoolChooserPolicyPoolItem> l_Items = new List <PoolChooserPolicyPoolItem>();
            PoolChooserPolicyPoolItem        l_Item  = new PoolChooserPolicyPoolItem();

            l_Item.Start = 0;
            l_Item.End   = 10;
            l_Item.Pool  = new StreamManagerArrayPool("1", 1, 1);
            l_Items.Add(l_Item);
            l_Item       = new PoolChooserPolicyPoolItem();
            l_Item.Start = 11;
            l_Item.End   = 20;
            l_Item.Pool  = new StreamManagerArrayPool("2", 1, 0);
            l_Items.Add(l_Item);

            IgnoreFreeSpacePoolChooserPolicy l_Chooser = new IgnoreFreeSpacePoolChooserPolicy(l_Items);
            StreamManagerPool l_Pool = l_Chooser.FindBestPool(15, 15);

            Assert.Equal(l_Items[1].Pool, l_Pool);
            Assert.True(l_Chooser.PoolHasFreeBlocks(l_Pool));
        }
Beispiel #5
0
        public void FallBackTest()
        {
            StreamManagerArrayPool l_FallBack = new StreamManagerArrayPool("Fallback", 1, 1);

            List <PoolChooserPolicyPoolItem> l_Items = new List <PoolChooserPolicyPoolItem>();
            PoolChooserPolicyPoolItem        l_Item  = new PoolChooserPolicyPoolItem();

            l_Item.Start = 0;
            l_Item.End   = 10;
            l_Item.Pool  = new StreamManagerArrayPool("1", 1, 1);
            l_Items.Add(l_Item);
            l_Item       = new PoolChooserPolicyPoolItem();
            l_Item.Start = 11;
            l_Item.End   = 20;
            l_Item.Pool  = new StreamManagerArrayPool("2", 1, 0);
            l_Items.Add(l_Item);

            IgnoreFreeSpacePoolChooserPolicy l_Chooser = new IgnoreFreeSpacePoolChooserPolicy(l_Items, l_FallBack);
            StreamManagerPool l_Pool = l_Chooser.FindBestPool(25, 25);

            Assert.Equal(l_FallBack, l_Pool);
            Assert.True(l_Chooser.PoolHasFreeBlocks(l_Pool));
        }